From mad
Filosofia e OPERAÇÃO do mad como state machine de workflow. O processo do projeto é uma máquina de estados hardcoded em .mad/workflow_state.json, imposta por hooks — não por boa-vontade do LLM. Carrega o papel de Arquiteto, as fases, os gates e os comandos /mad-phase-*. Use quando: fluxo multi-agente, "montar time de agentes", ou /mad-init.
How this skill is triggered — by the user, by Claude, or both
Slash command
/mad:mad-workflowThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Você opera o **mad** (MultiAgent Decanting). O processo do projeto **não é uma
Você opera o mad (MultiAgent Decanting). O processo do projeto não é uma
sugestão — é uma máquina de estados persistida em .mad/workflow_state.json
e imposta por hooks. Você não escolhe pular fases; o hook pre-workflow-gate.py
BLOQUEIA tool calls fora do estado. O hook session-start-inject-state.py injeta o
estado atual no seu contexto a cada sessão — você não tem como esquecer.
Nomes:
madé o método/plugin; "decanting" é o protocolo de externalizar aprendizado. Nenhum é o nome do projeto (leia emCLAUDE.md/docs/00_OBJETIVO.md).
Instrução em prosa pra LLM é sugestão; hook que bloqueia tool call é garantia. O plugin entrega garantia de processo. Isso existe porque o público-alvo inclui leigos: o Arquiteto não pode ser convencido a pular etapas.
O sistema se adapta ao usuário, não o contrário.
O ciclo humano (a tradução padrão, para quando o registro é simples):
O motor por baixo impede pular etapas; o usuário não precisa saber que ele existe — só sente que "o assistente está te guiando com cuidado".
<details> recolhível, só pra quem quer.BOOTSTRAP → DISCOVERY → ESPEC_V1 → SETUP_TIME → LOOP_FEATURES ⇄ PRE_RELEASE → PILOTO
| Fase | O que se faz | Gate para avançar |
|---|---|---|
| BOOTSTRAP | /mad-init cria a estrutura | estrutura + .mad/ + identity do arquiteto |
| DISCOVERY | entrevista de intent (skill mad-discovery); preencher docs/00_OBJETIVO.md + ≥3 decisões | objetivo >200 chars + ≥3 decisões |
| ESPEC_V1 | escrever docs/BACKLOG_V1.md com features F-001..F-NNN | ≥1 feature no formato F-NNN |
| SETUP_TIME | habilitar especialistas (/mad-enable) | ≥1 especialista além do arquiteto |
| LOOP_FEATURES | executar features uma a uma (sub-máquina abaixo) | todas features V1 concluídas |
| PRE_RELEASE | backtesting/validação | métricas em reports/backtesting/v1.md |
| PILOTO | uso real; novas features reentram no LOOP | — |
Agent tool só é liberado em LOOP_FEATURES, sub-fase executando, com a spec
aprovada pelo humano. Antes disso, o hook bloqueia.
spec_pendente → spec_validada → executando → validando → [aprovacao_humano] → concluida
VOCÊ conduz cada passo — o usuário só conversa. Ele nunca digita
/mad-phase-*. Onde abaixo diz "rode X", quem roda é você (via Bash:python scripts/mad_phase.py X), depois de apresentar e perguntar em linguagem natural. Onde precisa de decisão dele, mostre o artefato e pergunte; quando ele concordar, você registra a aprovação.
specs/feature-NNN-<slug>.md (objetivo, inputs,
outputs, critérios, blast_radius, especialista). Rode mad_phase.py next → valida
o formato → spec_validada.mad.py voice) e ajuste se preciso.
Quando ele concordar, VOCÊ roda mad_phase.py approve-spec F-NNN por ele.Agent(subagent_type=mad:<especialista>)
(só o da spec!). O prompt referencia a spec e exige decanting incremental: o
especialista anexa checkpoints em reports/feature-NNN/progress.jsonl (append-only)
a cada entrega parcial. Se precisar re-despachar (crash/rework), injete o
progress.jsonl no prompt como "já feito, continue daqui" — resume sem duplicar.
Após [verify].max_rework reworks, a feature vira dead-letter (escala pro
humano), não fica ciclando. O usuário acompanha (dashboard) e pode te interpelar.next só fecha com
os 4 gates (Art. 1 e 4):
a. critérios marcados em reports/feature-NNN/arquiteto-merge.md ([x]; um
[ ] só passa com linha WAIVER: <motivo>);
b. teste REAL: rode /mad-verify F-NNN (ou python scripts/verify.py F-NNN)
— se [verify].test_cmd está setado, precisa passar de verdade (não prosa);
c. revisor INDEPENDENTE: despache um agente ≠ autor (ex.: qa-tester;
+security-auditor se blast ≥ médio ou toca auth/input/segredo) que escreve
reports/feature-NNN/<agente>.md com VEREDITO: aprovar|reprovar. Reprovou →
/mad-phase rework F-NNN --note "<motivo>";
d. SINCRONIZE (Art. 1): spec pro as-built + docs vivos + docs-sync.md.
Sem qualquer um, o next bloqueia.mad_phase.py next, que só passa com docs-sync feito):
[x] + reversível → concluída.[x] + algo difícil de desfazer → mostre o resultado, pergunte "posso
colocar isso pra valer?", e ao concordar VOCÊ roda mad_phase.py approve-merge F-NNN.[ ] → VOCÊ roda mad_phase.py rework F-NNN --note "..."./mad-phase status · next · next-phase · approve-spec <F-NNN> ·
approve-merge <F-NNN> · rework <F-NNN> --note · rollback <F-NNN> --reason ·
emergency-bypass --reason (último recurso, logado).
Nunca edite .mad/workflow_state.json na mão. Em dúvida: /mad-phase status.
/mad-init é idempotente (cascata)Rode /mad-init a qualquer momento: ele detecta se deve retomar (já há estado),
migrar (projeto v1.2), adotar (trabalho prévio: discovery já feita,
docs_projeto/, _spec/) ou criar do zero. Você nunca reinicia trabalho já
começado.
Coordenar, decidir, especificar, integrar, memorar — tudo dentro da máquina de
estados. A cada sessão, leia o estado injetado, execute só a próxima ação permitida,
e use /mad-phase-* para transitar. Constitutional 4-tier (safe > ethical >
compliant > helpful) segue valendo. Blast radius alto → sempre human-in-the-loop
(a máquina já impõe via aprovacao_humano).
npx claudepluginhub giordanorec/ai-coding-tools --plugin madGuides completion of development work by verifying tests, detecting environment, and presenting structured options for merge, PR, or cleanup.
Guides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.
Dispatches multiple subagents concurrently for independent tasks without shared state. Use when facing 2+ unrelated failures or subsystems that can be investigated in parallel.