Communitygithub.com

grahama1970/align

Alineación de contexto por rondas antes de la ejecución. Útil cuando el humano, el agente del proyecto, WebGPT, scillm, ask, dogpile, memory o project-knowledge pueden tener datos diferentes sobre una tarea; especialmente antes de trabajos ambiguos de diseño, infografía, flujo de producto, implementación de alto riesgo, plan-iterate, project-infographic o revisión múltiple.

¿Qué es align?

El skill **Align** (Alinear) es una puerta de pre-ejecución que fuerza la igualación de contexto entre todos los participantes antes de que comience cualquier trabajo de implementación, diseño o revisión. Está diseñado para resolver el problema común en flujos multiagente donde el humano, el agente del proyecto, WebGPT, el modelo local (via `$scillm`), la memoria (`$memory`), el conocimiento del proyecto (`$project-knowledge`) y los revisores externos (`$ask`/`$dogpile`) tienen hechos diferentes o contradictorios sobre una tarea. Align ejecuta rondas iterativas: en cada ronda, los participantes declaran lo que saben, identifican brechas y contradicciones, y formulan preguntas bloqueantes y no bloqueantes. Las preguntas bloqueantes se enrutan al responsable (humano, agente, memoria, revisor) y se añaden las respuestas a la siguiente ronda. El skill termina con un `alignment_lock.json` que contiene `ready_for_execution: true` o `false`. Solo cuando todas las preguntas bloqueantes están resueltas y el lock indica 'listo', se puede proceder a la ejecución real. Funciona en plataformas como Claude Code, Cursor y Codex, y soporta revisores vía `$scillm` (llamadas directas a modelos) y `$ask` (que a su vez enruta a WebGPT para sesiones autenticadas de ChatGPT). Es crítico para tareas de alto riesgo, diseño ambiguo, infografías, flujos de producto e implementaciones que requieren múltiples revisiones.

Compatible con✓Claude Code~Codex CLI~Cursor✓Antigravity✓Gemini CLI✓OpenCode
npx skills add https://github.com/grahama1970/agent-skills/tree/main/skills/align

Preguntar en tu IA favorita

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

Documentación

¿Qué hace align?

Usa $align para igualar el contexto antes de la acción. Este skill existe para tareas donde el humano, el agente del proyecto, WebGPT, $scillm, $ask, $dogpile, $memory o $project-knowledge pueden tener información diferente. Produce un alignment_lock.json que otros skills pueden usar para ejecutarse.

No uses $align para implementar, renderizar, refactorizar o revisar trabajo final. Es una puerta de pre-ejecución. Ningún código, infografía, dashboard, fase de plan-iterate o renderizado de project-infographic debe comenzar hasta que el lock de alineación indique ready_for_execution: true.

Regla Fundamental

La alineación solo está completa cuando todas las preguntas bloqueantes están respondidas y el lock registra:

  • objetivo acordado
  • no-objetivos acordados
  • contexto de origen
  • hechos de los participantes
  • supuestos y riesgos restantes
  • forma de la salida
  • criterios de aceptación
  • decisión explícita de listo/no listo

Si persiste el desacuerdo, mantén el lock como ready_for_execution: false.

Participantes

Usa solo los participantes relevantes para la tarea:

ParticipanteRol
humanIntención, preferencias, matices del dominio, nivel de aceptación
project_agentEstado local del repositorio, restricciones, siguientes pasos ejecutables
project_knowledgeHistorial duradero del proyecto y notas de transición
memoryLecciones previas y problemas similares resueltos
scillmCrítica directa del modelo a través del proxy LLM localhost
askEntorno de ejecución de ask/oráculo/revisión profunda con artefactos; posee el enrutamiento a WebGPT
dogpileInvestigación externa reciente cuando el contexto local es insuficiente
webgptContexto visible en el navegador/sesión y juicio orientado al humano

Las llamadas a WebGPT deben enrutarse a través de $ask webgpt; $ask ya posee el backend de oráculo WebGPT y usa surf webgpt.submit --no-activate en la pestaña autenticada de ChatGPT del usuario. $align no llama a surf directamente. No envíes solicitudes de WebGPT a través de $scillm; $scillm es para llamadas directas al modelo como gpt-5.5, Gemini, Claude o OpenCode Go. Conserva el id de la pestaña cuando el humano lo proporcione. Usa $dogpile solo cuando la alineación esté bloqueada por falta de conocimiento externo/actual. No lo uses para hechos que $project-knowledge o $memory ya respondan.

Enrutamiento en Tiempo de Ejecución

                         +-----------------------+
                         |    $align init        |
                         | objetivo, salida, fuentes |
                         +-----------+-----------+
                                     |
                                     v
                   +-----------------+-----------------+
                   |     Ronda N: alignment_brief     |
                   | los participantes declaran hechos,|
                   | brechas, contradicciones y preguntas|
                   +-----------------+-----------------+
                                     |
                   +-----------------+-----------------+
                   | compile-round extrae preguntas   |
                   | Pregunta[bloqueante/no bloqueante]:|
                   +-----------------+-----------------+
                                     |
                  ¿preguntas bloqueantes abiertas?
                         | sí                         | no
                         v                             v
        +----------------+----------------+    +-------+--------+
        | enruta cada pregunta al dueño   |    | lock --ready   |
        | humano/proyecto/memoria/revisor |    | escribe lock   |
        +----------------+----------------+    +----------------+
                         |
                         v
        +----------------+----------------+
        | add-response / answer-question  |
        | actualiza brief, incrementa ronda|
        +----------------+----------------+
                         |
                         v
                    Ronda N+1

Las rutas de revisor son entradas opcionales a una ronda:

                                +----------------+
                                | Brief Ronda N  |
                                +-------+--------+
                                        |
          +-----------------------------+-----------------------------+
          |                             |                             |
          v                             v                             v
+--------------------+       +--------------------+       +--------------------+
| WebGPT vía $ask    |       | $scillm directo    |       | $ask review/oracle |
| prepare-review     |       | prepare-review     |       | prepare-review     |
| --reviewer webgpt  |       | --reviewer scillm  |       | --reviewer ask     |
+---------+----------+       +---------+----------+       +---------+----------+
          |                            |                            |
          v                            v                            v
skills/ask/run.sh ask webgpt    round-N-scillm-request.json   round-N-ask-request.md
--webgpt-tab-id <id>            modelo: gpt-5.5              skills/ask/run.sh ask
          |                     razonamiento_effort: alto    --deep-review
          v                     prompt de personalidad opcional
 $ask -> surf webgpt.submit            |
 --no-activate                          v
          |                 POST localhost:4001/v1/chat/completions
          v
 pestaña autenticada de ChatGPT

Investigación externa/actual:
  prepare-review --reviewer dogpile -> round-N-dogpile-request.md
  Usar solo cuando la falta de hechos externos bloquee la alineación.

Bucle de Ronda

Cada ronda sigue la misma secuencia:

  1. Difundir el brief de alineación actual a los participantes seleccionados.
  2. Cada participante declara cuál cree que es la tarea.
  3. Cada participante enumera hechos que conoce y que otros podrían no conocer.
  4. Cada participante enumera supuestos, contradicciones y preguntas.
  5. Fusionar preguntas en conjuntos bloqueantes y no bloqueantes.
  6. Enrutar preguntas a la parte que pueda responderlas.
  7. Actualizar el brief.
  8. Detenerse solo cuando las preguntas bloqueantes estén resueltas o se alcance el máximo de rondas.

Si se alcanza el máximo de rondas con preguntas bloqueantes abiertas, detenerse con ready_for_execution: false y mostrar la decisión humana más pequeña necesaria.

CLI

Vinculación de pestaña WebGPT (paridad CLI)

Prefiere sin banderas $ask webgpt desde un directorio de trabajo registrado. /ask compone $browser-oracle automáticamente. init y prepare-review persisten las sugerencias de enlace en .align/state.json y emiten las mismas banderas en los round-*-webgpt-ask-command.sh generados.

BanderasCuándo usarlas
(ninguna)cwd tiene registro walk-up + enlace — preferido
--browser-oracle-from <dir>Sobrescribir raíz walk-up (subdirectorio de monorepo)
--webgpt-project <name>Proyecto explícito; salta walk-up de yaml
--webgpt-tab-id <id>Sobrescritura única; salta walk-up
--webgpt-url <url>Resolver por URL de conversación; salta walk-up

Orden de resolución (igual que $ask / $surf): --webgpt-tab-id → --webgpt-url → $browser-oracle walk-up → --webgpt-project → una pestaña chatgpt.com (falla cerrado).

Configuración: $browser-oracle register + bind + doctor --from <dir>. Consulta las secciones de vinculación de pestaña WebGPT de los SKILL.md de $browser-oracle y $ask.

Ejecuta desde la raíz del repositorio o proyecto que posee la tarea:

skills/align/run.sh init \
  --goal "Crear una solicitud clara de infografía plan-iterate" \
  --output-shape "storyboard derivado de fuente y solicitud de infografía web" \
  --participant human \
  --participant project_agent \
  --participant project_knowledge \
  --participant scillm \
  --participant ask \
  --participant dogpile \
  --participant webgpt
# Prefiere sin banderas desde un directorio registrado, o persiste la raíz walk-up:
#   --browser-oracle-from skills/oc-subagent/personas/mathematics
# Sobrescritura explícita heredada:
#   --webgpt-tab-id 837343529

Registrar respuestas de los participantes:

skills/align/run.sh add-response \
  --participant project_agent \
  --round 1 \
  --text "Tarea: conciliar el flujo de trabajo antes de renderizar. Hecho: el visual anterior falló porque no había un storyboard aprobado. Pregunta[bloqueante]: ¿qué proyecto de muestra exacto debe anclar el visual?"

Compilar la ronda:

skills/align/run.sh compile-round --round 1

Bloquear solo después de que las preguntas bloqueantes estén resueltas:

skills/align/run.sh lock --ready --approved-by human

Generación de Solicitudes de Revisor

prepare-review crea artefactos de solicitud reproducibles para los revisores. No llama al revisor por sí mismo.

skills/align/run.sh prepare-review --round 1 --reviewer scillm
skills/align/run.sh prepare-review --round 1 --reviewer ask
skills/align/run.sh prepare-review --round 1 --reviewer dogpile
skills/align/run.sh prepare-review --round 1 --reviewer webgpt --browser-oracle-from skills/oc-subagent/personas/mathematics
# o: --webgpt-tab-id 837343529

Usa WebGPT cuando la revisión necesite la sesión autenticada de ChatGPT del humano en el navegador o contexto visible en el navegador. Usa $scillm cuando la revisión deba ser una llamada directa y reproducible al modelo, por ejemplo GPT-5.5 con alto razonamiento y un prompt de personalidad/sistema:

skills/align/run.sh prepare-review \
  --round 1 \
  --reviewer scillm \
  --scillm-model gpt-5.5 \
  --reasoning-effort high \
  --persona-prompt "Eres un revisor de alineación de producto escéptico. Concéntrate en supuestos no coincidentes y criterios de aceptación faltantes."

Llamadas recomendadas después de prepare-review:

# revisión directa scillm
.align/reviews/round-001-scillm-command.sh

# revisión profunda ask u oráculo WebGPT
skills/ask/run.sh ask "Revisa la solicitud de alineación en .align/reviews/round-001-ask-request.md" \
  --deep-review --deep-review-target .align/reviews/round-001-ask-request.md

skills/ask/run.sh ask webgpt "Revisa la solicitud de alineación en .align/reviews/round-001-webgpt-request.md" \
  --browser-oracle-from skills/oc-subagent/personas/mathematics --oracle-iterations 1

# investigación dogpile solo si la alineación está bloqueada por hechos externos faltantes
skills/dogpile/run.sh search "hechos necesarios para desbloquear esta alineación" \
  --context-file ".align/reviews/round-001-dogpile-request.md"

Almacena el texto resultante del revisor con add-response. Los recibos de los revisores son entradas para la alineación; no son aprobación de ejecución por sí mismos.

Verificación de Cordura de Composición en Vivo

sanity.sh es la verificación local rápida. Prueba el bucle de rondas, la puerta de preguntas bloqueantes, la generación de solicitudes de revisor y el esquema de bloqueo sin gastar cuota externa.

sanity-live.sh es la puerta E2E obligatoria en el mundo real antes de afirmar que $align está listo como skill compuesto. Es optativo porque llama a sistemas posteriores en vivo:

  • $memory recall --brief a través del skill real de memoria
  • Ingesta de respuesta del agente del proyecto a través de $align add-response
  • $dogpile search con la solicitud de alineación generada como contexto
  • $ask webgpt contra la ruta WebGPT autenticada respaldada por el navegador
  • Creación final de alignment_lock.json solo después de que esos recibos se validen

Ejecútalo solo cuando la estación de trabajo local tenga memoria, credenciales/búsqueda de dogpile, Chrome y una sesión autenticada de ChatGPT:

ALIGN_LIVE_E2E=1 skills/align/sanity-live.sh

Controles opcionales:

ALIGN_LIVE_E2E=1 \
ALIGN_WEBGPT_TAB_ID=837343529 \
ALIGN_LIVE_OUTPUT_ROOT=/mnt/storage12tb/skills/align/live-e2e \
skills/align/sanity-live.sh

Si no se proporciona ALIGN_WEBGPT_TAB_ID o ALIGN_WEBGPT_PROJECT, la verificación en vivo pasa --webgpt-create-tab a $ask; esto aún requiere una configuración local válida de Chrome/WebGPT. El artefacto de prueba es /mnt/storage12tb/skills/align/live-e2e/<timestamp>/report.json de forma predeterminada. Las verificaciones en vivo omitidas no establecen la preparación.

Diseño de Artefactos

.align/
  alignment_state.json
  alignment_brief.md
  alignment_lock.json
  rounds/
    round-001/
      participant-human.md
      participant-project_agent.md
      participant-scillm.md
      round_summary.md
      questions.json
  reviews/
    round-001-scillm-request.json
    round-001-scillm-command.sh
    round-001-ask-request.md
    round-001-dogpile-request.md
    round-001-webgpt-request.md
    round-001-webgpt-ask-command.sh

/mnt/storage12tb/skills/align/live-e2e/<timestamp>/
  report.json
  memory.stdout
  dogpile.stdout
  webgpt.stdout
  ask-runs/<ask_id>/

Condiciones de Parada

Establece ready_for_execution: true solo cuando:

  • no queden preguntas bloqueantes abiertas
  • el objetivo acordado y los no-objetivos sean explícitos
  • la forma de la salida sea concreta
  • los criterios de aceptación sean comprobables o revisables
  • el contexto de origen esté nombrado
  • el humano o el dueño delegado haya aprobado el lock

Establece ready_for_execution: false cuando:

  • queden preguntas bloqueantes
  • WebGPT, $scillm, $ask o el conocimiento del proyecto contradigan el brief
  • la forma de la salida aún sea abstracta
  • un participante haya expuesto evidencia faltante de origen
  • el siguiente paso solicitado produzca un recibo en lugar de resolver la tarea real

Errores Comunes

  • No uses $align como sustituto de $interview; usa entrevista cuando la información faltante sea puramente preferencia humana o criterios de aceptación.
  • No uses $align como sustituto de $review-code, $review-plan o $plan-iterate; la alineación ocurre antes de esos skills.
  • No resumas WebGPT o $ask manualmente. Usa sus entornos de ejecución reales y almacena rutas de artefactos o texto de revisor.
  • No des por completo un lock de alineación porque un revisor lo aprobó. El agente del proyecto debe fusionar el resultado y resolver las preguntas bloqueantes.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

grahama1970/acceptance-contract

Turn a client brief, zip bundle, directory, or single requirements file into a typed acceptance-contract bundle with extracted requirements, acceptance checks, open questions, an immutable-goal draft, and a create-report-backed decision report. Use when users say acceptance contract, brief to requirements, freeze the goal, create immutable goal, amend immutable goal, build a Battle requirements bundle, or extract requirements from this bundle.

grahama1970/agent-ecosystem

Canonical map and shared contracts for the agent-governance ecosystem: the pi.receipt_envelope.v1 boundary envelope, the component graph, and the rules for which component owns which schema. Use when wiring a skill or extension into the shared receipt world, when asking how shame, triage-error, tau, ask, project-watchdog, ops-herdr, ponytail, and Memory fit together, or when validating an envelope.

grahama1970/agentic-evals

Agentic evaluation of skills using multi-trial fixtures, deterministic command assertions, trajectory checks, safety constraints, and evidence-backed readiness scoring. Use when users ask for agentic evals, multi-trial skill evaluation, skill trajectory validation, or readiness scoring for a skill workflow.

grahama1970/agent-inbox

File-based inter-agent messaging with headless dispatch. Check inbox, send bugs/requests to other projects, automatically spawn headless agents to fix bugs, and track progress via task-monitor.

grahama1970/agents-registry

Generate and query the centralized agent identity registry. Scans .pi/agents/*/AGENTS.md, parses frontmatter, outputs agents-registry.json and optionally syncs to /memory for semantic search.

grahama1970/agent-status

Artifact-driven status surfaces for long-running project-agent work. Maintains status.json, events.jsonl, proof manifests, and a stale-aware STATUS.html so humans can tell where the agent is, what passed, what is still unproven, and what decision or action is next — without dashboard theater.

grahama1970/analytics

Flexible data science analytics for any dataset. Auto-discovers schema, recommends charts, exports to create-figure. Works with JSONL, JSON, CSV from any source.

grahama1970/analyze-chatterbox-emotions

Evaluate generated Chatterbox voice files as voice-quality artifacts: affect match, arousal/valence proxies, pause placement, intelligibility inputs, clipping, loudness, and discontinuity flags. Use when reviewing Chatterbox emotional tags, pauses, Turbo/base affect delivery, Persona Dream utterance renders, or whether generated speech matches an intended product-facing affect.

grahama1970/analyze-elf

Reverse-engineer features from ELF binaries. Extracts CLI commands, state machines, protocols, Zod schemas, and data models. Automatically generates a /create-walkthrough prosecution brief with Mermaid diagrams. Uses /treesitter for AST analysis of bundled JS/TS source.

grahama1970/animation-vocabulary

Reverse-lookup glossary that turns a vague description of a web animation or motion effect into its exact term ("the bouncy thing when a popover opens" → Pop in; "the iOS rubber-band scroll" → Rubber-banding). Use when the user asks "what's it called when…", or describes a motion effect without knowing its name and wants the right word to prompt an AI or designer with. For naming an effect, not designing or building one.

grahama1970/anonymize-data

Anonymize supported CSV, JSON, UTF-8 text, and SQLite files using an explicit policy through the oai-trial project. Use for anonymize data, pseudonymize exports, redact policy literals, or discover and explicitly approve fuzzy name aliases. The skill is a thin CLI/Docker interface, not another engine.

grahama1970/anvil

Heavy-duty "No-Vibes" debugging and hardening orchestrator. Use this for complex, stubborn bugs where `review-code` has failed, or for "Red Teaming" (hardening) a codebase. Runs multiple agents in parallel (Thunderdome) using git worktree isolation.

grahama1970/apple-design

Apple's approach to interface design and fluid, physical motion, translated for the web. Use when building or reviewing gesture-driven UI, spring animations, drag/swipe/sheet interactions, momentum and interruptible transitions, translucent materials and depth, typography (optical sizing, tracking, leading), reduced-motion, or the design foundations (feedback, spatial consistency, restraint) behind Apple-style interfaces.

grahama1970/argue

Multi-persona structured debate orchestrator. Personas research via /dogpile, consult colleagues via /ask, and argue toward nuanced synthesis on complex questions.

grahama1970/arxiv

Search arXiv for papers and extract knowledge into memory. Use `search` to find papers, `learn` to extract knowledge.

grahama1970/ask

Use when the user asks to query project memory, ask an oracle, use supported browser-backed reviewers, run Tau roundtable/single-handler workflows, ask Pi-native subagents from within Pi, run persona/deep-review workflows, generate image prompts, check OS/project health through composed skills, or run an ask DAG. This skill is the executable /ask runtime; do not replace it with an informal subagent, plain web search, or hand-written review; inside Pi, explicit Pi-native subagent targets are routed through the pi-subagents tool as an Ask target type.

grahama1970/assess

Step back and critically reassess project state. Use when asked to "assess", "step back", "fresh eyes", "check alignment", "sanity check", "health check", "prune documentation", or "evaluate what's working". Offers documentation pruning and doc-code alignment analysis. Offer to run after major changes (don't auto-run).

grahama1970/assistant

Shared GPT + classifier inference gateway for persona monitor tasks. Routes validation and classification through a 4-tier cascade: heuristic → classifier → local GPT → scillm.

grahama1970/assistant-lab

Self-improvement workbench for /assistant. All the tools needed to diagnose, train, evaluate, and promote models in a continuous loop. The "warm pond" where /assistant evolves its own inference stack.

grahama1970/batch-quality

Pre-flight validation and quality gates for batch LLM operations. ACTUALLY tests samples through LLM before burning tokens. Uses SPARTA contracts for DuckDB validation queries. Integrates with task-monitor for enforced quality gates.

Skills relacionados