CommunityProgramación y desarrollogithub.com

picoduck/using-wollipog

Opera sesiones de Wollipog desde dentro de una sesión de agente mediante la CLI inyectada o el servidor MCP general de Wollipog.

¿Qué es using-wollipog?

Esta habilidad permite que un agente de IA (como Claude Code, Codex o Cursor) controle y gestione sesiones de Wollipog de forma directa, ya sea a través de la línea de comandos `wollipog` o mediante herramientas MCP equivalentes. Es útil para orquestar campañas complejas que requieren supervisión de múltiples sesiones hijo, revisar decisiones de flujo de trabajo, adjuntar artefactos y gestionar worktrees. Soporta plataformas como Claude Code y Codex App Server. La habilidad explica los comandos esenciales, las políticas de aislamiento de proyectos y cómo manejar eventos, trabajos en segundo plano y decisiones de flujo de trabajo, todo dentro de un marco de autorización estricto que separa las responsabilidades humanas y de agente. También detalla cómo los orquestadores pueden delegar implementación, retirar decisiones y manejar reinicios seguros sin perder contexto.

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

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Usando Wollipog

Para la autoridad de campaña, lea Verificación Previa de Autoridad de Campaña. Cubre el modo/límite efectivo, los propietarios de decisiones exactos, los gates humanos no resueltos y la carga/revelación de evidencia; no autoriza una campaña ni cambia las políticas instaladas.

Use el comando wollipog cuando esté en PATH. Una sesión alojada por Wollipog proporciona WOLLIPOG_CONTROL_PLANE_URL, WOLLIPOG_SESSION_ID y un archivo de token protegido automáticamente; no imprima, copie ni pase ese token en la línea de comandos.

Comandos principales:

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 un worktree sucio rechazado de un hijo de campaña verificado y completamente archivado, solo su Orquestador controlador puede usar session unarchive (protocolo 266+ en el plano de control y el runner). Esto restaura la visibilidad sin reiniciar ni eliminar archivos. Luego reinicie el hijo y pídale que preserve y limpie su trabajo, verifique su nuevo informe final y archive de nuevo. El retiro aún rechaza el trabajo sucio, no enviado o no entregado; un runner más antiguo rechaza la recuperación explícitamente. Mantenga los informes de prueba fuera de los worktrees gestionados.

Sin --after, session events devuelve los eventos más nuevos --limit (por defecto 30, máximo 100). Para leer un rango largo, como todo lo que un hijo hizo desde un punto conocido, avance página: comience con --after 0, o con un seq que ya leyó junto con el eventEpoch del que vino, luego repita con --after <lastSeq> --event-epoch <eventEpoch> de la página anterior hasta que hasMore sea falso. historyIncomplete significa que el plano de control aún no ha cargado todo el registro, por lo que pueden existir eventos posteriores: conserve el lastSeq devuelto y vuelva a intentarlo más tarde en lugar de tratar la página como el final. Si la llamada falla porque el historial de eventos fue reemplazado, reinicie desde --after 0 sin la época anterior. Cada evento es una línea de resumen de máximo 400 caracteres, por lo que un mensaje largo se truncará. La herramienta MCP get_session_events toma los mismos after, limit y eventEpoch.

Cada evento leído permanece paginado mientras el historial se hidrata; una página incompleta corta o vacía no es el final del registro. Sin --after, un resultado incompleto es la ventana en caché más nueva, así que vuelva a intentarlo sin --after para obtener la verdadera ventana más nueva una vez que la hidratación se ponga al día. Las lecturas HTTP directas de GET /api/sessions/:id/events por defecto devuelven 200 eventos cuando se omite limit; use nextAfter y eventEpoch para continuar en lugar de tratar una respuesta como todo el registro. Los runners del protocolo 222 usan el lector limitado durante toda la hidratación. Actualice las instalaciones CLI/MCP más antiguas antes de actualizar un plano de control que sirva páginas predeterminadas: la alternativa de registro completo de un lector antiguo puede confundir una primera página limitada con la ventana más nueva. Las alternativas de sesión de agente antiguas identificables fallan con orientación de actualización de runner; las llamadas CLI de dispositivo emparejado necesitan la misma migración de actualización primero porque sus credenciales humanas no identifican la versión del lector.

session stop-job (MCP stop_background_job) finaliza un trabajo en segundo plano inacabado de una sesión hija por su id, que session get lista como unfinishedBackgroundJobs. Úselo cuando un trabajo que nunca termina, como un monitor cuya condición nunca se dispara, mantiene el resultado de un hermano terminado o una transferencia en cola esperando. Solo ese trabajo termina y se registra como eliminado; la conversación del hijo, sus otros trabajos y sus avisos en cola se conservan. Si el proveedor no confirma la parada a tiempo, el trabajo se deja en ejecución; si termina más tarde, aún se registra como su parada, así que no repita la solicitud solo para ser nombrado. session stop y session restart terminan todos los trabajos en su lugar: una parada descarta los avisos en cola, mientras que un reinicio los conserva y los ejecuta después. Los runners actuales reanudan conversaciones establecidas de Claude Code, Codex App Server y Pi; una sesión que nunca se ejecutó comienza de nuevo. La capacidad de sesión agentCapabilities.restartResumesConversation informa si su próximo Reinicio se reanuda. Los runners más antiguos lo omiten y pueden comenzar de nuevo, por lo que la ausencia no ofrece garantía de continuidad. Solo el propietario de la sesión y su Orquestador controlador pueden usar stop-job. Cuando una transferencia en cola de un hijo informa canRelease, session release-hold (MCP release_queue_hold) con el id de la retención de session get finaliza todos los trabajos inacabados a la vez, registra cada uno como eliminado por usted y ejecuta la transferencia y los avisos en cola en orden sin un reinicio; requiere la misma autoridad que stop-job y se rechaza si la retención cambió desde que la leyó.

Una campaña de Orquestador debe usar las herramientas de gestión como el límite de la política, no inferir autoridad de su aviso. Llame a get_campaign al inicio de la campaña y después de que un humano cambie la política. Devuelve el comportamiento efectivo, los propietarios de decisiones tipificados, la revisión, los límites de admisión y protección, los recuentos de hijos y seguimientos, la compatibilidad de revisión de interfaz de usuario y uno de waiting_human, active, blocked, verified_complete o complete_with_handoffs, sin devolver credenciales. Su behavior contiene el Child Harness, Child Model, Child Effort, Follow-Ups y Completion que la próxima creación de hijo aplica. Una persona puede cambiarlos mientras la campaña se ejecuta; los valores cambiados llevan la fuente active_campaign y una behavior.revision más alta. Se aplican a los hijos creados después, los hijos existentes mantienen su propia configuración y ningún agente, incluido el Orquestador, puede cambiarlos.

El rol de Orquestador por defecto es Implementación Delegada: planificar, delegar, monitorear y revisar. Una solicitud ordinaria que cubra varios problemas no autoriza una campaña o creación de hijo a menos que el humano solicite explícitamente orquestación o delegación. Un padre puede mantener artefactos de planificación permitidos directamente. Si el humano solicita explícitamente al padre que implemente, primero inspeccione las asignaciones de hijos abiertas y las solicitudes de extracción en busca de superposición, luego cree y seleccione un worktree de Wollipog dedicado para el padre y siga el flujo de trabajo normal de pruebas, revisión, evidencia de interfaz de usuario, fusión y limpieza del repositorio. Los permisos del proveedor y la gobernanza aún se aplican en todo momento.

Aislamiento Estricto de Proyecto es una configuración de ejecución separada controlada por humanos. Las nuevas sesiones por defecto lo tienen deshabilitado. Cuando está habilitado, las ubicaciones del proyecto son de solo lectura impuestas por el sistema operativo, el padre trabaja solo en un espacio de prueba privado de la sesión y las operaciones de implementación del padre y de auto-worktree son rechazadas. El límite requerido de bwrap, Seatbelt o proveedor auditado se verifica antes del lanzamiento. Las sesiones de Orquestador existentes sin un campo de política de ejecución se tratan como estrictas y no pueden relajarse.

Cada creación de hijo recibe un bloque de política de campaña derivado del servidor en su asignación inicial. Para modelo o esfuerzo Automático, use get_agent_capabilities y envíe el par seleccionado en la misma llamada create_session; los valores fijos son aplicados por el servidor. El bloque no es una aprobación general. Los hijos deben usar request_workflow_decision, get_workflow_decision y consume_workflow_decision para preguntas de implementación, fusión de PR, eliminación de rama fusionada, publicación de seguimiento y evidencia de interfaz de usuario. Cuando esas herramientas MCP no están disponibles, use los comandos equivalentes de wollipog decision request, get y consume de ámbito propio; la instantánea de recurso exacta y la acción opcional de fusión de PR son objetos JSON. La CLI rechaza --session para solicitud, consumir y reconciliar y no expone ninguna operación de resolución. get_workflow_decision de solo lectura acepta un sessionId opcional; list_workflow_decisions enumera las decisiones pendientes y aprobadas con sessionId, limit y cursor opcionales. Omitir el objetivo lee a sí mismo. Un Orquestador puede apuntar a un descendiente accesible, con acceso a ambas sesiones requerido. Las lecturas exactas incluyen estados terminales; un 404 nunca prueba el consumo. Siga nextCursor hasta que esté ausente. Las páginas reflejan el estado actual, por lo que las decisiones resueltas durante la paginación pueden desaparecer; lea una ocurrencia conocida exactamente cuando su resultado es importante. Las lecturas y listados de descendientes requieren el protocolo de plano de control v214. Los runners más antiguos sin la herramienta pueden usar una CLI actualizada o los endpoints HTTP de solo lectura GET /api/sessions/:id/workflow-decisions/:occurrenceId y GET /api/sessions/:id/workflow-decisions?limit=50&cursor=<occurrence-id> con su credencial de sesión existente donde se proporciona un token. Las sesiones aisladas por proveedor contienen solo una clave de relay de runner, que no puede autenticar llamadas HTTP directas; actualice el runner/CLI para las herramientas en lugar de buscar un token portador. Los planos de control más antiguos exponen solo solicitudes pendientes a través de list_descendant_requests; actualícelos para una inspección autorizada del estado del descendiente. Solo el propietario actual puede resolver la ocurrencia pendiente exacta.

Para una review_round_extension pendiente innecesaria propiedad de un humano, el Orquestador controlador puede llamar en su lugar a withdraw_descendant_workflow_decision con el sessionId del hijo, el occurrenceId exacto y un reason no vacío que explique el retiro y dé las próximas instrucciones al hijo (plano de control v265+). Elimina solo esa solicitud, audita el retiro del Orquestador y entrega el motivo a través de la ruta de reanudación duradera sin detener ni reiniciar al hijo. La decisión se lee como revoked con procedencia withdrawal; no concede ninguna aprobación y no puede ser consumida. Las decisiones aprobadas y las categorías no designadas para retiro son rechazadas. Use get_workflow_decision para el resultado exacto; una solicitud que aún necesita una persona sigue siendo de esa persona.

Cuando una decisión pendiente o aprobada ya no es necesaria y nunca fue consumida o armada, retírela con withdraw_workflow_decision (decision withdraw) y un reason no vacío (plano de control v269+); nunca la consuma con una instantánea obsoleta para que sea revocada. Omita sessionId para retirar la suya propia. Un Orquestador controlador puede pasar el sessionId de su hijo para retirar una que el Orquestador posee; una decisión que una persona posee sigue siendo del solicitante para retirarla. La retirada no aprueba ni consume nada: la decisión se lee como revoked con withdrawal nombrando la sesión retiradora y su motivo, nunca se puede consumir después, y ya no bloquea verify_campaign_child. Un hijo que aún espera una decisión pendiente se reanuda con el motivo; uno que ya tiene una aprobación no se despierta. Las decisiones consumidas, un pr_merge armado (reconcílelo en su lugar) y el cierre de incidencias propiedad de personas, alcance, admisión de seguimiento y solicitudes de automatización son rechazados.

La autenticación, secretos, concesiones persistentes, cambios de gobernanza, aumentos de presupuesto y protecciones de herramientas siguen siendo solo para humanos. La autoridad presupuestaria separada establecida por humanos puede permitir reservas y asignaciones limitadas de trabajadores gestionados; nunca lo infiera de un nombre de campaña ni use un trabajador sin medición para evadir la contabilidad. Una parada o reinicio revoca cada decisión que la sesión no ha consumido. Después de un reinicio, la sesión recibe un mensaje [Wollipog Session Restart] nombrando cada ocurrencia revocada: no actúe sobre una aprobación anterior de la misma y solicite de nuevo lo que aún necesita. Si un comando exacto de fusión de PR armado ya tuvo éxito pero su ocurrencia aprobada permaneció sin consumir, use reconcile_workflow_decision (o wollipog decision reconcile) con la instantánea de recurso sin cambios de esa ocurrencia. Nunca vuelve a ejecutar el comando. Para un hijo de Codex App Server, prueba la admisión exacta completada, el comando del proveedor y la cabeza de fusión; reanude primero la misma sesión de App Server. La puesta en cola de un hijo de Claude Code no produce recibo de permiso en modo automático o de Acceso Completo, s

… [truncado para la traducción]

Individual skills in this repo

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

Skills relacionados