一键导入
dynamic-workflows
Orquestá manualmente tareas multiagente con los gates y patrones de Ultracode en Claude Code o Pi.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Orquestá manualmente tareas multiagente con los gates y patrones de Ultracode en Claude Code o Pi.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Inicializá `pandi-extensions` cuando haya que preparar un clon nuevo para Pi o Claude Code, desarrollar extensiones con el perfil aislado de Picante, reparar drift detectado por `doctor` o habilitar integraciones opcionales.
Compact the current conversation into a handoff document for another agent to pick up.
Decidí cómo delegar a IA o agentes cuando el trabajo requiera fijar autonomía, distinguir prototipo de producción, programar prompts/context/tools o evaluar un output generado.
Aplicá clean craftsmanship al revisar legibilidad, diagnosticar rigidez, fragilidad, inmovilidad o viscosidad, evaluar la Dependency Rule, justificar límites o abstracciones y gestionar compromisos profesionales bajo presión.
Aplicá diseño empírico al conducir el micro-ritmo de un loop TDD o al supervisar un agente implementador dentro de ese loop.
Gestioná con `gh` los issues y el Project v2 `pandi` al crear o cerrar trabajo, mover items y campos, administrar epics o milestones, o consultar progreso y prioridades.
| name | dynamic-workflows |
| description | Orquestá manualmente tareas multiagente con los gates y patrones de Ultracode en Claude Code o Pi. |
| disable-model-invocation | true |
Primero decidí si conviene orquestar, después diseñá el workflow y recién entonces ejecutalo. Este skill es autocontenido y dual-platform: los conceptos (cuándo orquestar, primitivas, prompting, seguridad) se comparten; la API concreta cambia entre Claude Code (Anthropic) y pi (un runtime que corre sobre Anthropic o OpenAI/Codex). En Referencia de plataforma está la tool, los helpers y la forma de invocación de cada uno.
ultracode orquesta tareas multiagente cuando inline no alcanza (exhaustividad, confianza o escala). Primero gates;
después primitiva o patrón; al final la tool de tu plataforma. Ejemplo mínimo en pi:
dynamic_workflow({ action: "start", name: "task-slug", input: { request: "…" }, concurrency: 4 });
Glosario de nombres (producto vs skill vs tool):
docs/handbooks/glosario-skills.md. Para criterio de delegación (inline
vs orquestar), deferí a ai-assisted-engineering; este skill gobierna el cómo una vez decidido orquestar. Detalle
operativo (fan-out, model tiers, catálogo completo): reference/operational-notes.md.
El catálogo del lado de Claude vive en reference/catalog-prose.es.md (fuente canónica en español);
npm run sync:scaffold-catalog propaga snapshots a reference/scaffold-catalog.md y .claude/workflows/README.md para
el detalle completo por workflow.
Para casi todo, una sola llamada a un agente le gana a un workflow. Recorré estos gates en orden; la mayoría de las tareas terminan temprano.
git ls-files, leer
el diff, grep/glob, listar candidatos). Eso revela la work-list real y su tamaño. Necesitás entender la forma antes
del orchestration step, no antes de la task.| Pedido | Forma |
|---|---|
| "find some bugs", "quick read" | scout → fan-out chico (~3-5 finders) → síntesis liviana |
| "review this plan", "is this safe" | pocos reviewers con perspectivas diversas → synthesis-as-judge |
| "audit thoroughly", "be exhaustive" | pool más grande → chequeo adversarial por finding → judge → repetir mientras aparezcan findings nuevos |
No tomes los defaults bajos como techo. Subí el fan-out para ramas read-only e independientes; mantenelo bajo con side
effects, modelos caros o dependencias secuenciales. Logueá con log() todo cap, sample o clamp. Presupuestá el peor
caso cuando el fan-out dependa de resultados (jurados por finding). Para scopes grandes, evitá schema estricto y
timeouts default (~10 min) sin ajustar — ver
notas operativas.
Seguí como default la guía repo-wide de AGENTS.md / CLAUDE.md. En prompts de workflows, no les pidas a los workers
que "read every file fully" sobre scopes grandes; deciles que primero hagan scout, que paginen archivos grandes con
Read offset/limit cuando haga falta, que superpongan ventanas de código, achiquen ventanas densas y reporten la
cobertura parcial de forma explícita. Para inputs enormes, partí chunks semánticos en agents()/pipeline() o elegí
map-reduce en vez de incrustar un archivo gigante en un prompt.
Elegí por dependencia de datos, no por estética. Resumen:
| Necesidad | Primitiva |
|---|---|
| Un paso independiente por ítem | agents(items, { concurrency }) |
| Stages dependientes por ítem, sin merge global | pipeline(items, ...stages) — default |
| Un paso necesita TODOS los resultados a la vez | parallel([...]) — solo para barreras reales |
| Sub-workflow reutilizable | workflow(name, args) |
| Primera respuesta buena; cancelar el resto | race(thunks, { accept? }) — solo pi |
| Decisión humana a mitad de corrida | ask(question, opts?) — solo pi |
Runtime note: race/ask viven en el runtime pi de dynamic_workflow; no asumas que existen en Workflow de
Claude Code.
Settle semantics: ramas fallidas → null; filtrá nulls y log() cuántas fallaron.
Referencia completa de globals y gotchas: reference/primitives/README.md y
globals en notas operativas.
model (capacidad por token) y effort (budget de razonamiento) son dos diales independientes. Seteá ambos
explícitamente en cada nodo con fan-out; no acoples "modelo barato" con "pensamiento barato". Pisos orientativos:
| Tipo de trabajo | Piso model | Piso effort |
|---|---|---|
| Extracción mecánica, verificada downstream | haiku | low |
| Scout que rankea work-list | haiku | low–medium |
| Review read-only por ítem | sonnet | medium |
| Worker que muta el árbol | sonnet | medium–high |
| Judge / synthesis FINAL | opus | high |
Tablas de tiers, providers pi (Anthropic/Codex), post-mortem #47 y reglas de cache key: notas operativas · model/effort.
Fenceá datos no confiables (pedido, archivos, salida de otros agentes) con delimitadores infalsificables; combiná con
tools read-only y judges conservadores. Usá evidence contracts (NO_FINDINGS, INSUFFICIENT_EVIDENCE),
synthesis-as-judge y prefijos estables para prompt-cache. Detalle: notas operativas.
25 scaffolds en extensions/pandi-dynamic-workflows/scaffolds/; en pi:
dynamic_workflow action=scaffold name=<pattern>. Tabla por familia y mapeo research→scaffold:
notas operativas · catálogo. Vista rápida:
reference/scaffold-catalog.md y
docs/handbooks/workflow-catalog.md.
En Pi, corré el scaffold canónico contract-gate sobre el pedido bruto; la extensión lo usa como workflow read-only.
Cierre: el scaffold devolvió un contrato con tarea, success criteria, supuestos, non-goals, verificación y blockers explícitos.
Si necesita aclaración → devolvé las preguntas bloqueantes a la persona usuaria y STOP.
Cierre: la corrida quedó detenida con sólo las preguntas que impiden routing o implementación.
Si se puede avanzar → usá el prompt reescrito como handoff durable hacia router / workflow-factory / el workflow elegido.
Cierre: el handoff conserva el contrato reescrito y nombra el destino seleccionado.
Propagá el resource plan del gate ({ tier, models, efforts }) al budget de la corrida aguas abajo.
Cierre: el workflow downstream recibe y refleja tier, models y efforts del gate.
Claude Code: tool Workflow; globals agent, parallel, pipeline, workflow, phase, log, args; budget en
args vía helper local node(role) o inline; catálogo ~/.claude/workflows/; depth 1. Invoke mínimo:
Workflow({ name: "router", args: { request: "the task", model: "sonnet", effort: "medium" } });
Obligatorio en Claude: render HTML pre-launch + open, lanzar sin aprobación, re-render con --run al terminar.
Detalle: notas operativas · plataforma.
pi: tool dynamic_workflow; mismos globals de composición más race, ask, bash, filesystem y artifacts; budget
por llamada + personas agentType; depth 2 (→3); resume journaled. Invoke mínimo:
dynamic_workflow({ action: 'start', name: 'task-slug', input: {…}, concurrency: 8, maxAgents: 40 })
Monitor sin polling (completion notice del harness); reporte final con /workflow report o
dynamic_workflow action="report". Comandos: /dynamic-workflow, /ultracode, /deep-research,
/workflow view|runs|resume, /workflows, /workflow patterns|graph.
| Aspecto | Claude Code (Anthropic) | pi (Anthropic o Codex) |
|---|---|---|
| Tool | Workflow | dynamic_workflow |
| Script API | helper globals (agent, parallel, …) | los mismos helper globals (agent, parallel, …) |
| Budget knobs | model · effort (low…max) | model/provider · effort (off|minimal|low|medium|high|xhigh; max→xhigh) |
| Models | haiku/sonnet/opus/fable | ids de Anthropic O openai-codex/gpt-5.x |
| Per-role | helper node(role) / inline / models+efforts | por llamada + personas agentType |
| Catalog | ~/.claude/workflows/ + README (desde catalog-prose.es.md) | dynamic_workflow action=scaffold |
| Depth | 1 | 2 (→3) |
| Preview / results | HTML pre-launch + open, luego re-render con --run al terminar (ambos obligatorios) | /workflow graph, dashboard /workflows, HTML final --run latest |
Basá todo workflow nuevo en el scaffold existente más cercano; nunca reinventes. Preferí workflow-factory
antes que hand-roll. Convenciones: meta.basedOn con procedencia de scaffolds; parseá args defensivamente;
model/effort explícitos por nodo; loops acotados + log(); settle semantics, evidence contracts y fences. En
Claude: renderizá + abrí HTML y lanzá directo. Detalle en
notas operativas · plataforma.