CommunityImagengithub.com

grahama1970/ask

Úsalo cuando el usuario solicite consultar la memoria del proyecto, preguntar a un oráculo, usar revisores compatibles con navegador, ejecutar flujos de trabajo Tau de mesa redonda/manejador único, invocar subagentes nativos de Pi desde Pi, ejecutar flujos de trabajo de persona/revisión profunda, generar indicaciones de imagen, verificar el estado del sistema/proyecto a través de habilidades compuestas o ejecutar un DAG de 'ask'. Esta habilidad es el runtime ejecutable /ask; no la reemplaces con un subagente informal, una búsqueda web simple o una revisión escrita a mano; dentro de Pi, los objetivos explícitos de subagentes nativos de Pi se enrutan a través de la herramienta pi-subagents como un tipo de destino Ask.

¿Qué es ask?

La habilidad `grahama1970/ask` es el runtime central y ejecutable para el comando `/ask` dentro del ecosistema de Pi. Actúa como un enrutador y orquestador inteligente, capaz de dirigir las solicitudes del usuario a uno de los cuatro tipos de destino: sesiones de Herdr (agentes en vivo en un panel), llamadas a modelos de API (a través del sistema Tau), modelos web con respaldo de navegador (como webgpt o webclaude a través de los módulos $surf y $browser-oracle) y subagentes nativos de Pi. Su función principal es evitar soluciones improvisadas (como usar `spawn_agent`, búsquedas web simples o resúmenes manuales) para cualquier solicitud que nombre explícitamente `/ask`, un modo de 'ask', un oráculo, una revisión profunda, de pares o un DAG de 'ask'. La habilidad impone reglas estrictas: cada ejecución debe tener un objetivo inmutable explícito, las mesas redondas siempre deben ser concurrentes, los fallos deben registrarse de forma no silenciosa con códigos de error específicos, y los artefactos de ejecución (como archivos JSON de solicitud, estado y eventos) deben conservarse. También incluye un enrutador de modos para seleccionar el patrón de ejecución más preciso, ya sea una sola llamada, una mesa redonda, una competición o un bucle creador-revisor, garantizando que el flujo de trabajo elegido coincida exactamente con la intención del usuario. En resumen, esta habilidad es la puerta de entrada única y autorizada para todas las operaciones complejas de razonamiento, revisión y consulta, ofreciendo un control riguroso y trazabilidad completa.

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

Installed? Explore more Imagen skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

Preguntar en tu IA favorita

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

Documentación

¿Qué hace ask?

Detener Primero

Si el usuario nombra $ask, /ask, un modo ask, oráculo, revisión profunda, revisión de pares, mesa redonda, debate, revisión de brechas CAE o un DAG ask, lee este archivo completo antes de actuar. Luego usa el punto de entrada del runtime real a menos que el usuario solicite explícitamente un plan de respaldo o el runtime no esté disponible y ese respaldo sea reportado.

No sustituyas spawn_agent, una llamada de modelo simple, una búsqueda web simple, un resumen manual o una revisión inventada por $ask.

Punto de Entrada del Runtime

Ejecuta los comandos desde este directorio. La sintaxis de comando de habilidad de Pi como /skill:ask webgpt ¿Cuánto es 2 + 2? es un atajo de primera clase: el manejador de navegador principal (webgpt, webclaude, webkimi, webgemini o webgrok) se enruta a un DAG de manejador de navegador single-call de Tau con --execute --json. Las referencias en línea de habilidades de Pi como $ask webgpt ¿Cuánto es 2 + 2? y la ortografía en lenguaje natural con espacios $ask web gpt ¿Cuánto es 2 + 2? deben tratarse de la misma manera (web gpt se normaliza a webgpt). Esto es solo un atajo de compatibilidad para los usuarios de Pi; no debe usar la ruta de oráculo WebGPT directa eliminada.

./run.sh tau-dag "<solicitud>" se asigna internamente al subcomando tau-dag run de Typer. ./run.sh team-plan "<solicitud>" --team <preajuste> renderiza un plan multiagente basado en roles y una vista previa congelada del DAG de Tau; la ejecución requiere --execute --live explícito (ver README "Team Orchestration").

cd skills/ask
./run.sh --help
./run.sh webgpt ¿Cuánto es 2 + 2?
./run.sh webgpt --compile-only ¿Cuánto es 2 + 2?
./run.sh ask --help
./run.sh tau-dag run --help

Cada ejecución no trivial debe conservar los artefactos del runtime. El conjunto de artefactos estándar es:

  • <ask_id>.request.json
  • <ask_id>.status.json
  • <ask_id>.events.jsonl
  • Salidas específicas del modo como review.md, review.json, manifiestos DAG o evidencia del navegador

Los artefactos del runtime se ubican por defecto en .ask_artifacts/runs/<ask_id> o en la ruta proporcionada --run-output-root. Para ejecuciones largas, en vivo o generadas, prefiere una raíz respaldada por almacenamiento como /mnt/storage12tb/skills/ask/outputs/.... No confirmes artefactos de ask generados.

Cada llamada de manejador ejecutada (éxito o fallo) se registra en la colección ask_call_log en $memory en el punto de estrangulamiento de ejecución, con manejador, estado, código de fallo y controlled_tab_id/URL de conversación cuando esté presente, más el método probado de la última llamada exitosa (selección de razonamiento, enlace de pestaña, mode de ciclo de vida, comando de despacho con secretos redactados). Los ID de modelo se validan contra el catálogo de SciLLM en vivo en tiempo de compilación (invalid_scillm_model_id BLOQUEADO con las alternativas válidas más cercanas); un asiento de navegador con 3+ fallos consecutivos registrados se marca como conocido-malo antes del despacho con sus códigos de fallo. Verifica un asiento antes de confiar en él: python3 skills/ask/scripts/ask_call_history.py --handler webgemini imprime la última llamada exitosa y los fallos recientes; añade --recommend para el método probado exacto para reutilizar. Un manejador sin éxito registrado es una suposición ciega: primero compila solo o prueba de forma económica. Las ejecuciones históricas se pueden rellenar: python3 skills/ask/scripts/backfill_call_log.py [raíz-de-salidas] ingiere cada recibo de nodo en disco de forma idempotente (clave _key determinista por ejecución+nodo). Cada JSON de resultado de ejecución EJECUTADA (y execution-status.json) también lleva handler_last_success: por asiento, el último método exitoso de la memoria (URL de conversación, pestaña, ciclo de vida/diseño), fallos consecutivos actuales y códigos de fallo a evitar, devueltos en contexto para que el agente del proyecto nunca necesite una búsqueda de historial separada después de consumir una ejecución.

Referencias en Profundidad (leer bajo demanda)

Antes de hacer estoLee
team-plan con un archivo de plan; status --run --projectionreferences/plans-and-status.md
Objetivo explícito de subagente nativo de Pireferences/pi-subagents.md
Convertir salida ask (única/mesa redonda/competencia/sala limpia) en carriles de subagentereferences/lane-handoff.md
herdr list/who/send al panel de otro agentereferences/herdr.md
Elegir entre única vs mesa redonda vs competencia; selectores de modelo/esfuerzoreferences/modes.md
Auditorías de panel, lista de asientos, asientos con límite de velocidad, política de webclaudereferences/seats-and-audits.md
Ejecutar/supervisar cualquier ejecución en vivo (monitoreo, ventanas, matriz de carga, desbloqueo, desviación)references/operations.md
Cualquier fallo de ejecuciónreferences/diagnosis.md
Compilar/ejecutar cualquier DAG de múltiples asientos (mesa redonda/competencia/creador-revisor)references/workflows.md
Cualquier ejecución de manejador de navegadorreferences/browser.md

Cuatro Tipos de Destino

/ask aborda cuatro tipos de destino pares. Se diferencian en el transporte, no en la categoría:

DestinoEjemploPropietario del transporte
Sesión Herdr — un agente en vivo en un panelmemory, w11:p13$monitor-herdr vía herdr pane run
Llamada de modelo — manejador de modelo/APIgpt-5.5-high, Codex-opus-5-high, deepseek-ai/DeepSeek-V3.2-TEE$tau (SciLLM es interno a Tau)
Modelo web — revisor con respaldo de navegador (pestaña de chat, NO el modelo agéntico; ver la advertencia de webclaude a continuación)webgpt, webclaude, webkimi$surf + $browser-oracle
Subagente nativo de Pi — asesor/trabajador hijo local de Pipi reviewer, subagent general-purpose, local coderHerramienta nativa subagent de pi-subagents

Un agente del proyecto no debería preocuparse por qué lado es navegador, modelo, sesión Herdr o subagente nativo de Pi más allá de nombrar el destino.

Inicio Rápido para Agentes del Proyecto

Comienza aquí cuando el usuario solicite una sola llamada de modelo, una mesa redonda, una competencia o un bucle creador-revisor. Usa una de estas formas; no inventes una ruta de orquestación personalizada.

Intención del usuarioForma del comando
Un manejador responde./run.sh tau-dag "<tarea>" --repo <repo> --target <objetivo> --immutable-goal "<meta>" --handler <manejador-o-modelo> --execute --json
Mesa redonda./run.sh tau-dag "<tarea compartida>" --repo <repo> --target <objetivo> --immutable-goal "<meta>" --dag-template roundtable --handler <a> --handler <b> --topology concurrent --execute --json
Competencia./run.sh compete "<tarea aislada>" --repo <repo> --target <objetivo> --immutable-goal "<meta>" --handler <a> --handler <b> --criterion <criterio> --execute --json
Única (respuestas por asiento, sin consenso)./run.sh one-shot "<pregunta>" --handler <a> --handler <b> --handler <c> — N carriles independientes de llamada única se ejecutan concurrentemente; cada uno devuelve su propia respuesta vinculada a un nonce o un bloqueador nombrado. Las respuestas parciales son DEGRADADAS-pero-utilizables (salida 0 en o por encima de --min-answered); el rechazo por quórum de una mesa redonda nunca se aplica aquí.
Subagente nativo de Pi desde Pisubagent({ action: "list" }), luego subagent({ agent: "<agente>", task: "<tarea>" }) o un workflowScript de abanico. Esto es solo para objetivos explícitos de pi/subagent/local reviewer; no es un reemplazo para los manejadores de Tau/navegador.
Creador luego revisor./run.sh tau-dag "<tarea del creador luego veredicto del revisor>" --repo <repo> --target <objetivo> --immutable-goal "<meta>" --dag-template creator-reviewer --handler <creador> --handler <revisor> --topology sequential --execute --json
Diagnosticar/arreglar/cerrar issues de GitHub./run.sh fix-issues --repo <dueño/nombre> --issue <N> [--issue <M>] [--handler gpt-5.5] [--execute] — recopila cada issue vía gh, diagnostica a través de un manejador de llamada única en vivo en JSON estructurado de causa/arreglo con la puerta de depurador (needs_debugger recomienda $debugger solo cuando la transición fallida es un estado de runtime en proceso que ningún artefacto explica), y falla cerrada: por defecto en seco; --execute cierra un issue SOLO después de que su comando de verificación nombrado (típicamente un fixture de $agentic-evals) realmente pase. Sin verificación → blocked; verificación fallida → verify-failed, el issue permanece abierto. Recibos por issue en outputs/fix-issues/. Puerta: fixtures/fix_issues.json.

Los manejadores son pares incluso cuando sus transportes difieren. Los manejadores de navegador (webgpt, webclaude, webkimi, webgemini, webgrok) se ejecutan a través de $surf y $browser-oracle. Los manejadores de API/modelo como gpt-5.5-high, gpt-5.5-xhigh, Codex-opus-5-high o chutes deepseek-ai/DeepSeek-V3.2-TEE son enrutados por Tau. Los agentes del proyecto no deberían preocuparse por qué lado es navegador o API más allá de nombrar el manejador.

Los manejadores son pares ya sea que tengan respaldo de navegador (webgpt, webclaude, webkimi, webgemini, webgrok vía $surf/$browser-oracle) o respaldo de API (gpt-5.5-high, claude-opus-5-high, chutes <proveedor/modelo> vía Tau). Antes de ejecutar cualquier DAG de múltiples asientos: compila primero (omite --execute), muestra el gráfico ASCII impreso al humano y ejecuta solo con confirmación. Ejemplos de modos completos y reglas de selección: references/modes.md. Protocolos completos y tablas de fallo cerrado: references/workflows.md.

No Negociables para Cada Ejecución

  • Se requiere una meta inmutable explícita (--immutable-goal o una línea etiquetada Immutable goal:) para mesa redonda, creador-revisor y competencia; la meta faltante falla la verificación previa con NEEDS_INTERVIEW antes de contactar a cualquier manejador.
  • Las mesas redondas SIEMPRE son --topology concurrent con un paquete idéntico para cada asiento. Los candidatos de competencia están aislados y nunca se ven entre sí.
  • Los DAG ejecutados deben ser monitoreados hasta un veredicto terminal a través de los artefactos de flujo JSON de la ejecución (events.jsonl, dag-progress.json, recibos de nodo, execution-status.json); no los inicies y te vayas.
  • PASS es solo evidencia del revisor/modelo; el cierre local requiere prueba local determinista. DEGRADED/NEEDS_ATTENTION/límites de velocidad son por carril: mantén los asientos utilizables, sigue el paquete de recuperación del carril fallido.
  • Las finalizaciones de API no transmitidas deben pasar una admisión tipificada con finish_reason=stop antes de que su texto pueda contar como evidencia. Las finalizaciones truncadas, filtradas, sin motivo de finalización o mal formadas emiten scillm_response_incomplete; conserva los bytes brutos y los errores de validación de response.meta.json. No repares texto de veredicto parcial ni reintentes automáticamente. Casos retenidos: completion-admission-rejects-truncation (repetición capturada) y completion-admission-live-positive (lectura real del proveedor).
  • Los fallos no son silenciosos: cada carril fallido expone failure_code, un paquete de recuperación y una instrucción next_command/ticket. Ante cualquier fallo, lee references/diagnosis.md y despacha en el recibo propietario antes de teorizar.
  • El enrutamiento directo del oráculo WebGPT ($ask chatgpt, --oracle-backend webgpt, --webgpt-*) falla cerrado; los manejadores de navegador de Tau siguen siendo compatibles.
  • Continuidad de seguimiento: el recibo de nodo / response.meta.json de cada carril de navegador debe llevar controlled_tab_id y la URL de conversación; un id de pestaña nulo es una transferencia fallida. Cuando el humano pueda hacer preguntas aclaratorias o de seguimiento, ejecuta con --browser-tab-lifecycle fresh-keep (o reuse-bound) — el valor predeterminado auto/fresh-temporary CIERRA la ventana después de la ejecución, matando la conversación. Después de la ejecución, reporta el id de pestaña + URL de conversación y enlázalos (skills/browser-oracle/run.sh bind <proyecto> --backend <b> --tab-id <id> --url <url> --manual) para que el seguimiento se dirija a la misma sesión.
  • Puerta de visibilidad de pestaña (observado 2026-09-15, webgemini): algunos proveedores (Gemini confirmado) difieren el envío del compositor mientras la pestaña es un documento oculto; en una ventana compartida solo una pestaña puede estar al frente, por lo que N-1 de N carriles concurrentes siempre están ocultos y se estancan como prompt_too_large_or_stalled ("el prompt permaneció en el compositor después del envío"). Los carriles de navegador concurrentes, por lo tanto, predeterminan ventanas aisladas (una ventana por asiento, colocadas en el escritorio del revisor) para que cada pestaña de carril sea un documento visible; --window-layout shared es optativo. Un compositor estancado que ya ha escrito se puede recuperar: skills/surf/run.sh tab.switch <id> hace visible la pestaña y el envío en cola se despacha. Verifica document.visibilityState antes de reducir los prompts para esta clase de fallo. El método de trabajo verificado por asiento está almacenado en $memory (clave ask_call_log ask:method:webgemini; ver ask_call_history.py --handler webgemini --recommend).
  • webclaude es una pestaña de chat de claude.ai, solo para pruebas — NO es Claude agéntico. Prefiere claude-fable-low, luego claude-opus-4-8-high (ver references/seats-and-audits.md).

Enrutador de Modos

Usa el modo más específico que coincida con la solicitud del usuario.

SolicitudPatrón de runtimeDetalles requeridos
Pregunta con respaldo de memoria./run.sh ask "<pregunta>" --jsonIncluye el alcance cuando sea relevante.
Respuesta de oráculo./run.sh ask "<pregunta>" --oracle ... --jsonElige backend/modelo/persona explícitamente cuando se solicite.
Atajo de manejador de navegador Pi./run.sh webgpt ¿Cuánto es 2 + 2? desde /skill:ask webgpt ¿Cuánto es 2 + 2?Reescribe a Tau single-call con --handler webgpt --execute --json; usa --compile-only para emitir el DAG sin transporte de navegador en vivo.
Manejador único nombrado./run.sh tau-dag "<solicitud>" --handler <manejador-o-modelo> --jsonLos manejadores de navegador usan $surf; los manejadores que no son de navegador son nombres de modelo $scillm enrutados por Tau. Añade --execute para transporte en vivo.
Objetivo de subagente nativo de PiHerramienta nativa subagent de Pi, después de subagent({ action: "list" })Solo cuando se ejecuta dentro de Pi y el usuario nombra explícitamente pi, subagent, pi-subagent, local reviewer o local coder. Las solicitudes de navegador/modelo/Tau Ask no usan esta ruta.
Mesa redonda con múltiples manejadores./run.sh tau-dag "<solicitud>" --handler webclaude --handler gpt-5.5 ... --topology concurrent --execute --jsonLa mesa redonda es de prompt a DAG de Tau. Los manejadores de navegador obtienen una ventana nueva propiedad de Ask por defecto. Conserva browser-tab-lifecycle.json, dag.json, especificaciones de comando, recibos de manejador y recibos de unión.
Competición / bakeoff./run.sh compete "<tarea>" --handler webgpt --handler webclaude --handler gpt-5.5-high --criterion deterministic-proof --execute --jsonCandidatos aislados más tarjeta de puntuación de competencia y solicitud de continuación del ganador. Los manejadores de navegador/API son pares. El agente del proyecto debe verificar las características localmente antes de la promoción.
Bucle creador-revisor./run.sh tau-dag "<tarea del creador> ... <veredicto del revisor>" --repo <repo> --target <objetivo> --immutable-goal "<meta>" --dag-template creator-reviewer --handler <creador> --handler <revisor> --topology sequential --execute --jsonSecuencial obligatorio. La meta inmutable es obligatoria.

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/align

Round-based context alignment before execution. Use when the human, project agent, WebGPT, scillm, ask, dogpile, memory, or project-knowledge may each hold different facts about a task; especially before ambiguous design, infographic, product workflow, high-stakes implementation, plan-iterate, project-infographic, or multi-review work.

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/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