picoduck/using-wollipog

Opere sessões Wollipog a partir de uma sessão de agente através da CLI injetada ou do servidor MCP geral do Wollipog.

O que é using-wollipog?

Esta habilidade permite que um agente de IA, como Claude Code, Cursor ou Codex, opere sessões Wollipog diretamente de dentro de sua própria sessão. Ela fornece acesso à linha de comando `wollipog` (quando disponível no PATH) e ao servidor MCP do Wollipog para gerenciar sessões, trabalhar com pull requests, revisões, automações, switches de localização, worktrees e decisões de workflow. É útil para orquestradores de campanha que precisam delegar e monitorar subtarefas, gerenciar artefatos e interagir com políticas de governança sem sair do ambiente do agente. A habilidade suporta operações como criar e monitorar sessões filhas, listar e consumir decisões de workflow, gerenciar worktrees, e interagir com pull requests e revisões, tudo com controle fino de autoridade e isolamento de projeto.

Funciona com✓Claude Code✓Codex CLI✓Cursor
npx skills add https://github.com/picoduck/wollipog/tree/HEAD/skills/using-wollipog

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Usando Wollipog

Para autoridade de campanha, leia Campaign Authority Preflight. Ela cobre modo/fronteira efetiva, proprietários de decisão exatos, portões humanos não resolvidos e upload/divulgação de evidências; não autoriza uma campanha nem altera políticas instaladas.

Use o comando wollipog quando ele estiver no PATH. Uma sessão hospedada pelo Wollipog fornece WOLLIPOG_CONTROL_PLANE_URL, WOLLIPOG_SESSION_ID e um arquivo de token protegido automaticamente; não imprima, copie ou passe esse token na linha de comando.

Comandos principais:

wollipog session list --json
wollipog session get <session-id> --json
wollipog session events <session-id> [--after <seq> [--event-epoch <n>]] [--limit <n>] --json
wollipog session capabilities --runner <id> --agent <id> [--offset <n>] [--limit <n>] [--include-hidden] --json
wollipog session capabilities --runner <id> --agent <id> --model <id> --json
wollipog session create --runner <id> --agent <id> --workspace <id> --prompt <task> [--model <id>] [--effort <level>] --json
wollipog session prompt <session-id> <message> --json
wollipog session wait <session-id> --for input_required,completed,failed,stopped --json
wollipog session stop <session-id> --json
wollipog session unarchive <session-id> --json
wollipog session stop-job <session-id> <job-id> --json
wollipog session release-hold <session-id> <hold-id> --json
wollipog pr wait <number|owner/name#number|host/group/project!iid|url> [--head <sha>] [--timeout <ms>] --json
wollipog pr closures <number|owner/name#number|url> [--intended <issue>]... --json
wollipog pr closures --file <description.md> [--repo <owner/name>] [--intended <issue>]... --json
wollipog review session run --repo <owner/name|gitlab-host/group/project> --pr <number> --head <sha> --brief-file <path> [--full-reason <text>] --json
wollipog review session get <review-session-id> --json
wollipog artifact attach --file <absolute-path> [--name <display-name>] --json
wollipog automation request --proposal '<json>' --json
wollipog automation get <occurrence-id> --json
wollipog automation execute <occurrence-id> --digest <resource-digest> --json
wollipog location-switch request --request '<json>' --json
wollipog location-switch get <occurrence-id> --json
wollipog location-switch execute <occurrence-id> --digest <resource-digest> --json
wollipog worktree create --branch <name> [--base <ref>] --json
wollipog worktree attach --path <absolute-path> --json
wollipog worktree select --path <absolute-path> --json
wollipog worktree discard --path <absolute-path> --json
wollipog worktree delete-refs [--path <absolute-path>] --ref <ref>=<object-id> [--ref ...] --json
wollipog decision request --request-id <id> --resource-key <key> --snapshot '<json>' --json
wollipog decision get <occurrence-id> [--session <descendant-id>] --json
wollipog decision list [--session <descendant-id>] [--limit <1-100>] [--cursor <occurrence-id>] --json
wollipog decision consume <occurrence-id> --snapshot '<json>' [--action '<json>'] --json
wollipog decision reconcile <occurrence-id> --snapshot '<json>' --json
wollipog decision withdraw <occurrence-id> --reason <text> [--session <child-id>] --json

Para um worktree sujo recusado de um filho de campanha verificado e totalmente arquivado, apenas seu Orquestrador controlador pode usar session unarchive (protocolo 266+ no plano de controle e runner). Isso restaura a visibilidade sem reiniciar ou excluir arquivos. Em seguida, reinicie o filho e peça a ele que preserve e limpe seu trabalho, verifique seu novo relatório final e arquive novamente. A aposentadoria ainda recusa trabalho sujo, não enviado ou não entregue; um runner mais antigo recusa a recuperação explicitamente. Mantenha relatórios de rascunho fora dos worktrees gerenciados.

Sem --after, session events retorna os --limit eventos mais recentes (padrão 30, máximo 100). Para ler um intervalo longo, como tudo o que um filho fez desde um ponto conhecido, avance página por página: comece com --after 0, ou com um seq que você já leu junto com o eventEpoch de onde veio, então repita com --after <lastSeq> --event-epoch <eventEpoch> da página anterior até que hasMore seja falso. historyIncomplete significa que o plano de controle ainda não carregou todo o log, portanto eventos posteriores podem existir: mantenha o lastSeq retornado e tente novamente mais tarde em vez de tratar a página como o fim. Se a chamada falhar porque o histórico de eventos foi substituído, reinicie de --after 0 sem o epoch antigo. Cada evento é uma linha de resumo limitada a 400 caracteres, portanto uma mensagem longa é truncada. A ferramenta MCP get_session_events aceita os mesmos after, limit e eventEpoch.

Cada evento lido permanece paginado enquanto o histórico é hidratado; uma página curta ou vazia incompleta não é o fim do log. Sem --after, um resultado incompleto é a janela em cache mais recente, portanto tente novamente sem --after para a janela mais recente verdadeira quando a hidratação alcançar. Leituras HTTP diretas de GET /api/sessions/:id/events padronizam para 200 eventos quando limit é omitido; use nextAfter e eventEpoch para continuar em vez de tratar uma resposta como o log inteiro. Runners de protocolo-222 usam o leitor limitado durante toda a hidratação. Atualize instalações mais antigas da CLI/MCP antes de atualizar um plano de controle que serve páginas padrão: o fallback de log inteiro de um leitor antigo pode confundir uma primeira página limitada com a janela mais recente. Fallbacks de sessão de agente antigas identificáveis falham com orientação de atualização do runner; chamadas CLI de dispositivo pareado precisam da mesma migração de atualização primeiro porque suas credenciais humanas não identificam a versão do leitor.

session stop-job (MCP stop_background_job) encerra um trabalho em segundo plano inacabado de uma sessão filha pelo seu id, que session get lista como unfinishedBackgroundJobs. Use-o quando um trabalho que nunca termina, como um monitor cuja condição nunca dispara, mantém o resultado de um irmão finalizado ou uma transferência na fila esperando. Apenas esse trabalho termina e é registrado como morto; a conversa da filha, seus outros trabalhos e seus prompts na fila são mantidos. Se o provedor não confirmar a parada a tempo, o trabalho continua em execução; se ele terminar depois, ainda é registrado como sua parada, portanto não repita a solicitação apenas para ser nomeado. session stop e session restart encerram todos os trabalhos em vez disso: uma parada descarta os prompts na fila, enquanto uma reinicialização os mantém e os executa depois. Runners atuais retomam conversas estabelecidas do Claude Code, Codex App Server e Pi; uma sessão nunca executada começa do zero. A capacidade da sessão agentCapabilities.restartResumesConversation informa se sua próxima Reinicialização retoma. Runners mais antigos a omitem e podem começar do zero, portanto a ausência não oferece nenhuma garantia de continuidade. Apenas o proprietário da sessão e seu Orquestrador controlador podem usar stop-job. Quando uma transferência na fila de um filho relata canRelease, session release-hold (MCP release_queue_hold) com o id da retenção de session get encerra todos os trabalhos inacabados de uma só vez, registra cada um como morto por você e executa a transferência e os prompts na fila em ordem sem uma reinicialização; ele tem a mesma autoridade que stop-job e é recusado se a retenção mudou desde que você a leu.

Uma campanha de Orquestrador deve usar as ferramentas de gerenciamento como limite de política, não inferir autoridade de seu prompt. Chame get_campaign no início da campanha e depois que um humano alterar a política. Ela retorna o comportamento efetivo, proprietários de decisão tipados, revisão, limites de admissão e proteção, contagens de filhos e acompanhamentos, compatibilidade de revisão de UI e um de waiting_human, active, blocked, verified_complete ou complete_with_handoffs, sem retornar credenciais. Seu behavior contém o Child Harness, Child Model, Child Effort, Follow-Ups e Completion que a próxima criação de filho impõe. Uma pessoa pode alterá-los enquanto a campanha é executada; valores alterados carregam a fonte active_campaign e uma behavior.revision mais alta. Eles se aplicam a filhos criados posteriormente, os filhos existentes mantêm sua própria configuração, e nenhum agente, incluindo o Orquestrador, pode alterá-los.

O papel de Orquestrador padrão é Delegate Implementation: planejar, delegar, monitorar e revisar. Uma solicitação comum cobrindo vários problemas não autoriza uma campanha ou criação de filho a menos que o humano peça explicitamente por orquestração ou delegação. Um pai pode manter artefatos de planejamento permitidos diretamente. Se o humano pedir explicitamente ao pai para implementar, primeiro inspecione atribuições de filho abertas e pull requests em busca de sobreposição, então crie e selecione um worktree Wollipog dedicado para o pai e siga o fluxo de trabalho normal de teste, revisão, evidência de UI, mesclagem e limpeza do repositório. Permissões e governança do provedor ainda se aplicam em todo o processo.

Strict Project Isolation é uma configuração de execução separada controlada por humano. Novas sessões padrão o têm desabilitado. Quando habilitado, os locais do projeto são somente leitura impostos pelo SO, o pai trabalha apenas em espaço de rascunho privado da sessão, e as operações de implementação e self-worktree do pai são recusadas. O bwrap, Seatbelt ou limite de provedor auditado necessário é verificado antes da inicialização. Sessões de Orquestrador existentes sem um campo de política de execução são tratadas como estritas e não podem se relaxar.

Cada criação de filho recebe um bloco de política de campanha derivado do servidor em sua atribuição inicial. Para modelo ou esforço Automático, use get_agent_capabilities e envie o par selecionado na mesma chamada create_session; valores fixos são aplicados pelo servidor. O bloco não é aprovação genérica. Filhos devem usar request_workflow_decision, get_workflow_decision e consume_workflow_decision para perguntas de implementação, mesclagem de PR, exclusão de branch mesclado, publicação de acompanhamento e evidência de UI. Quando essas ferramentas MCP não estiverem disponíveis, use os equivalentes comandos autoescopados wollipog decision request, get e consume acima; a captura exata do recurso e a ação opcional de mesclagem de PR são objetos JSON. A CLI recusa --session para request, consume e reconcile e não expõe operação de resolução. get_workflow_decision somente leitura aceita um sessionId opcional; list_workflow_decisions enumera decisões pendentes e aprovadas com sessionId, limit e cursor opcionais. Omitir o alvo lê a si mesmo. Um Orquestrador pode mirar em um descendente acessível, com acesso a ambas as sessões necessário. Leituras exatas incluem estados terminais; um 404 nunca prova consumo. Siga nextCursor até que esteja ausente. As páginas refletem o estado atual, portanto as decisões resolvidas durante a paginação podem desaparecer; leia uma ocorrência conhecida exatamente quando seu resultado for importante. Leituras e listagens de descendentes exigem protocolo de plano de controle v214. Runners mais antigos sem a ferramenta podem usar uma CLI atualizada ou os endpoints HTTP somente leitura GET /api/sessions/:id/workflow-decisions/:occurrenceId e GET /api/sessions/:id/workflow-decisions?limit=50&cursor=<occurrence-id> com sua credencial de sessão existente onde um token é provisionado. Sessões isoladas de provedor possuem apenas uma chave de relé do runner, que não pode autenticar chamadas HTTP diretas; atualize o runner/CLI para as ferramentas em vez de procurar um token de portador. Planos de controle mais antigos expõem apenas solicitações pendentes através de list_descendant_requests; atualize-os para inspeção autorizada do estado do descendente. Apenas o proprietário atual pode resolver a ocorrência pendente exata.

Para uma review_round_extension pendente desnecessária de propriedade humana, o Orquestrador controlador pode, em vez disso, chamar withdraw_descendant_workflow_decision com o sessionId do filho, o occurrenceId exato e um reason não vazio explicando o saque e dando as próximas instruções ao filho (plano de controle v265+). Ele remove apenas essa solicitação, audita o saque do Orquestrador e entrega o motivo através do caminho de retomada durável sem parar ou reiniciar o filho. A decisão lê revoked com proveniência withdrawal; ela não concede aprovação e não pode ser consumida. Decisões aprovadas e categorias não designadas para saque são recusadas. Use get_workflow_decision para o resultado exato; uma solicitação que ainda precisa de uma pessoa permanece deles.

Quando uma decisão pendente ou aprovada não é mais necessária e nunca foi consumida ou armada, aposente-a com withdraw_workflow_decision (decision withdraw) e um reason não vazio (plano de controle v269+); nunca a consuma com uma captura obsoleta para que seja revogada. Omita sessionId para sacar sua própria. Um Orquestrador controlador pode passar o sessionId de seu filho para sacar uma que o Orquestrador possui; uma decisão que uma pessoa possui permanece do solicitante para sacar. O saque não aprova nem consome nada: a decisão lê revoked com withdrawal nomeando a sessão de saque e seu motivo, nunca pode ser consumida depois e não bloqueia mais verify_campaign_child. Um filho ainda esperando por uma decisão pendente é retomado com o motivo; um que já possui uma aprovação não é acordado. Decisões consumidas, um pr_merge armado (reconcilie-o em vez disso) e fechamento de problema de propriedade humana, escopo, admissão de acompanhamento e solicitações de automação são recusados.

Autenticação, segredos, concessões persistentes, mudanças de governança, aumentos de orçamento e proteções de ferramentas permanecem apenas humanos. Autoridade de orçamento separada estabelecida por humanos pode permitir reservas e alocações limitadas de trabalhadores gerenciados; nunca a infira de um nome de campanha ou use um trabalhador não medido para evadir a contabilidade. Uma parada ou reinicialização revoga todas as decisões que a sessão não consumiu. Após uma reinicialização, a sessão recebe uma mensagem [Wollipog Session Restart] nomeando cada ocorrência revogada: não aja com base em uma aprovação anterior dela e solicite novamente o que você ainda precisar. Se um comando exato de mesclagem de PR armado já tiver sido bem-sucedido, mas sua ocorrência aprovada permaneceu não consumida, use reconcile_workflow_decision (ou wollipog decision reconcile) com a captura de recurso inalterada dessa ocorrência. Ele nunca reexecuta o comando. Para um filho do Codex App Server, ele prova a admissão exata concluída, comando do provedor e head de mesclagem da forge; retome a mesma sessão do App Server primeiro. O enfileiramento de um filho do Claude Code não produz recibo de permissão no modo Auto ou Full Access, s

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

Habilidades Relacionadas