@polymorphism-tech/morph-spec 4.22.0 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +57 -71
- package/README.md +2 -2
- package/bin/morph-spec.js +224 -491
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +1 -1
- package/docs/QUICKSTART.md +1 -1
- package/framework/CLAUDE.md +55 -38
- package/framework/MORPH.md +244 -0
- package/framework/agents.json +127 -1198
- package/framework/commands/morph-apply.md +56 -240
- package/framework/commands/morph-archive.md +48 -85
- package/framework/commands/morph-preflight.md +7 -7
- package/framework/commands/morph-proposal.md +35 -191
- package/framework/commands/morph-status.md +19 -50
- package/framework/commands/morph-troubleshoot.md +2 -2
- package/framework/evals/rubrics/README.md +44 -0
- package/framework/evals/rubrics/architecture.md +46 -0
- package/framework/evals/rubrics/code-quality.md +50 -0
- package/framework/evals/rubrics/contracts.md +47 -0
- package/framework/evals/rubrics/test-coverage.md +50 -0
- package/framework/evals/scenarios/dotnet-crud.yaml +42 -0
- package/framework/evals/scenarios/nextjs-auth.yaml +38 -0
- package/framework/evals/suites/standard.yaml +5 -0
- package/framework/evals/trace-schema.md +67 -0
- package/framework/hooks/claude-code/core/README.md +3 -0
- package/framework/hooks/claude-code/core/denylist.json +14 -0
- package/framework/hooks/claude-code/{pre-tool-use → core}/enforce-phase-writes.js +5 -5
- package/framework/hooks/claude-code/core/post-edit-typecheck.js +69 -0
- package/framework/hooks/claude-code/core/pre-bash-denylist.js +29 -0
- package/framework/hooks/claude-code/{pre-tool-use → core}/protect-spec-files.js +4 -6
- package/framework/hooks/claude-code/{stop → core}/validate-completion.js +13 -82
- package/framework/hooks/shared/phase-utils.js +20 -31
- package/framework/hooks/shared/state-reader.js +4 -5
- package/framework/{skills/level-0-meta/mcp-registry.json → mcp/registry.json} +254 -243
- package/framework/phases.json +41 -115
- package/framework/rubrics/eval-rubric.json +66 -0
- package/framework/skills/README.md +39 -64
- package/framework/skills/core/README.md +3 -0
- package/framework/skills/core/morph-brainstorming/SKILL.md +102 -0
- package/framework/skills/core/morph-eval/SKILL.md +57 -0
- package/framework/skills/core/morph-implement/SKILL.md +83 -0
- package/framework/skills/core/morph-plan/SKILL.md +64 -0
- package/framework/skills/core/morph-review/SKILL.md +62 -0
- package/framework/skills/core/morph-stack-scan/SKILL.md +109 -0
- package/framework/skills/core/morph-standards/SKILL.md +49 -0
- package/framework/templates/CLAUDE.md.core.guide.md +29 -0
- package/framework/templates/CLAUDE.md.core.template +22 -0
- package/framework/templates/REGISTRY.json +4 -4
- package/framework/workflows/configs/fast-track.json +5 -10
- package/framework/workflows/configs/full.json +4 -8
- package/framework/workflows/configs/quick.json +32 -0
- package/framework/workflows/configs/standard.json +57 -64
- package/package.json +7 -6
- package/src/commands/mcp/mcp-setup.js +58 -31
- package/src/commands/project/doctor.js +69 -70
- package/src/commands/project/init.js +26 -5
- package/src/commands/project/status.js +18 -19
- package/src/commands/state/approve.js +1 -1
- package/src/commands/validation/validate-feature.js +18 -112
- package/src/core/paths/output-schema.js +133 -152
- package/src/core/state/phase-state-machine.js +10 -24
- package/src/core/state/state-manager.js +17 -17
- package/src/core/workflows/workflow-detector.js +214 -31
- package/src/core/workflows/workflow-router.js +204 -0
- package/src/dashboard/app/pages/AgentMap.jsx +32 -33
- package/src/dashboard/app/pages/LiveState.jsx +1 -1
- package/src/dashboard/app/pages/PhasePipeline.jsx +2 -4
- package/src/dashboard/app/pages/SkillsLibrary.jsx +2 -3
- package/src/dashboard/app/pages/Workflows.jsx +2 -2
- package/src/dashboard/scanner/agents-scanner.js +30 -35
- package/src/lib/agents/metrics-aggregator.js +1 -1
- package/src/lib/agents/output-collector.js +7 -9
- package/src/lib/context/context-builder.js +289 -0
- package/src/lib/detectors/claude-config-detector.js +19 -3
- package/src/lib/generators/context-generator.js +20 -42
- package/src/lib/generators/index.js +1 -0
- package/src/lib/generators/mandate-generator.js +512 -0
- package/src/lib/generators/metadata-extractor.js +1 -1
- package/src/lib/generators/recap-generator.js +3 -4
- package/src/lib/installers/mcp-installer.js +300 -92
- package/src/lib/phase-chain/phase-validator.js +36 -40
- package/src/lib/stack/stack-profile.js +74 -91
- package/src/lib/tasks/task-parser.js +1 -1
- package/src/lib/tasks/wave-resolver.js +353 -0
- package/src/lib/validators/checkpoint-persistence.js +2 -2
- package/src/lib/validators/content/cross-phase-validator.js +281 -0
- package/src/lib/validators/content/index.js +1 -0
- package/src/lib/validators/shared/emit-validator-dispatch.js +6 -56
- package/src/scripts/global-install.js +2 -27
- package/src/utils/agents-installer.js +224 -447
- package/src/utils/claude-settings-manager.js +57 -15
- package/src/utils/file-copier.js +1 -0
- package/src/utils/hooks-installer.js +15 -117
- package/src/utils/skills-installer.js +12 -18
- package/bin/detect-agents.js +0 -226
- package/bin/task-manager.js +0 -1036
- package/framework/agents/README.md +0 -13
- package/framework/agents/ai-agents/ai-system-architect.md +0 -194
- package/framework/agents/ai-agents/vector-search-expert.md +0 -247
- package/framework/agents/architecture/architecture-expert.md +0 -98
- package/framework/agents/architecture/morph-spec-architect.md +0 -66
- package/framework/agents/architecture/packages-validator.md +0 -89
- package/framework/agents/architecture/security-expert.md +0 -79
- package/framework/agents/architecture/seo-growth-hacker.md +0 -168
- package/framework/agents/architecture/standards-architect.md +0 -153
- package/framework/agents/backend/dotnet-senior.md +0 -163
- package/framework/agents/backend/ef-modeler.md +0 -119
- package/framework/agents/backend/hangfire-orchestrator.md +0 -133
- package/framework/agents/backend/ms-agent-expert.md +0 -55
- package/framework/agents/backend/neon-expert.md +0 -379
- package/framework/agents/frontend/css-specialist.md +0 -89
- package/framework/agents/frontend/design-system-validator.md +0 -100
- package/framework/agents/frontend/gsap-animator.md +0 -131
- package/framework/agents/frontend/nextjs-component-validator.md +0 -97
- package/framework/agents/frontend/nextjs-expert.md +0 -201
- package/framework/agents/frontend/ui-designer.md +0 -259
- package/framework/agents/infrastructure/infra-architect.md +0 -215
- package/framework/agents/integrations/asaas-financial.md +0 -138
- package/framework/agents/integrations/neon-auth.md +0 -151
- package/framework/agents/integrations/resend-email.md +0 -127
- package/framework/hooks/claude-code/post-tool-use/agent-complete.js +0 -122
- package/framework/hooks/claude-code/post-tool-use/dispatch.js +0 -363
- package/framework/hooks/claude-code/post-tool-use/handle-tool-failure.js +0 -78
- package/framework/hooks/claude-code/post-tool-use/validator-feedback.js +0 -194
- package/framework/hooks/claude-code/pre-compact/save-morph-context.js +0 -199
- package/framework/hooks/claude-code/pre-tool-use/task-tracking-guard.js +0 -55
- package/framework/hooks/claude-code/session-start/inject-morph-context.js +0 -323
- package/framework/hooks/claude-code/session-start/post-compact-restore.js +0 -41
- package/framework/hooks/claude-code/session-start/resume-context.js +0 -77
- package/framework/hooks/claude-code/teammate-idle/teammate-idle.js +0 -90
- package/framework/hooks/claude-code/user-prompt/enrich-prompt.js +0 -114
- package/framework/hooks/shared/compact-restore.js +0 -123
- package/framework/hooks/shared/dispatch-helpers.js +0 -147
- package/framework/hooks/shared/skill-reminder-helpers.js +0 -79
- package/framework/hooks/shared/stale-task-reset.js +0 -57
- package/framework/hooks/shared/worktree-helpers.js +0 -75
- package/framework/skills/level-0-meta/README.md +0 -7
- package/framework/skills/level-0-meta/morph-agent-teams/SKILL.md +0 -472
- package/framework/skills/level-0-meta/morph-brainstorming/SKILL.md +0 -174
- package/framework/skills/level-0-meta/morph-brainstorming/references/proposal-example.md +0 -138
- package/framework/skills/level-0-meta/morph-checklist/SKILL.md +0 -145
- package/framework/skills/level-0-meta/morph-code-review/SKILL.md +0 -250
- package/framework/skills/level-0-meta/morph-code-review/references/review-example.md +0 -164
- package/framework/skills/level-0-meta/morph-code-review/references/review-guidelines.md +0 -100
- package/framework/skills/level-0-meta/morph-code-review/scripts/scan-csharp.mjs +0 -151
- package/framework/skills/level-0-meta/morph-code-review-nextjs/SKILL.md +0 -165
- package/framework/skills/level-0-meta/morph-code-review-nextjs/references/review-example-nextjs.md +0 -254
- package/framework/skills/level-0-meta/morph-code-review-nextjs/scripts/scan-nextjs.mjs +0 -189
- package/framework/skills/level-0-meta/morph-frontend-review/SKILL.md +0 -344
- package/framework/skills/level-0-meta/morph-frontend-review/scripts/scan-accessibility.mjs +0 -376
- package/framework/skills/level-0-meta/morph-gemini-image/SKILL.md +0 -290
- package/framework/skills/level-0-meta/morph-init/SKILL.md +0 -537
- package/framework/skills/level-0-meta/morph-parallel-dispatch/SKILL.md +0 -225
- package/framework/skills/level-0-meta/morph-post-implementation/SKILL.md +0 -401
- package/framework/skills/level-0-meta/morph-post-implementation/scripts/detect-dev-server.mjs +0 -153
- package/framework/skills/level-0-meta/morph-post-implementation/scripts/detect-stack.mjs +0 -234
- package/framework/skills/level-0-meta/morph-simulation-checklist/SKILL.md +0 -106
- package/framework/skills/level-0-meta/morph-tool-usage-guide/SKILL.md +0 -243
- package/framework/skills/level-0-meta/morph-tool-usage-guide/references/tools-per-phase.md +0 -169
- package/framework/skills/level-0-meta/morph-verification-before-completion/SKILL.md +0 -148
- package/framework/skills/level-0-meta/morph-verification-before-completion/scripts/check-phase-outputs.mjs +0 -110
- package/framework/skills/level-1-workflows/README.md +0 -7
- package/framework/skills/level-1-workflows/morph-phase-codebase-analysis/SKILL.md +0 -269
- package/framework/skills/level-1-workflows/morph-phase-design/SKILL.md +0 -453
- package/framework/skills/level-1-workflows/morph-phase-design/references/architecture-analysis-guide.md +0 -44
- package/framework/skills/level-1-workflows/morph-phase-design/references/spec-authoring-guide.md +0 -55
- package/framework/skills/level-1-workflows/morph-phase-design/references/spec-example.md +0 -253
- package/framework/skills/level-1-workflows/morph-phase-implement/.morph/logs/activity.json +0 -38
- package/framework/skills/level-1-workflows/morph-phase-implement/SKILL.md +0 -634
- package/framework/skills/level-1-workflows/morph-phase-implement/prompts/code-quality-reviewer-prompt.md +0 -50
- package/framework/skills/level-1-workflows/morph-phase-implement/prompts/implementer-prompt.md +0 -54
- package/framework/skills/level-1-workflows/morph-phase-implement/prompts/spec-reviewer-prompt.md +0 -47
- package/framework/skills/level-1-workflows/morph-phase-implement/references/recap-example.md +0 -132
- package/framework/skills/level-1-workflows/morph-phase-implement/references/vsa-implementation-guide.md +0 -92
- package/framework/skills/level-1-workflows/morph-phase-plan/SKILL.md +0 -257
- package/framework/skills/level-1-workflows/morph-phase-tasks/.morph/logs/activity.json +0 -14
- package/framework/skills/level-1-workflows/morph-phase-tasks/SKILL.md +0 -291
- package/framework/skills/level-1-workflows/morph-phase-tasks/references/task-planning-patterns.md +0 -143
- package/framework/skills/level-1-workflows/morph-phase-tasks/references/tasks-example.md +0 -404
- package/framework/skills/level-1-workflows/morph-phase-tasks/scripts/validate-tasks.mjs +0 -112
- package/framework/skills/level-1-workflows/morph-phase-uiux/SKILL.md +0 -995
- package/framework/skills/level-1-workflows/morph-scope-escalation/SKILL.md +0 -147
- package/framework/squad-templates/backend-only.json +0 -47
- package/framework/squad-templates/frontend-only.json +0 -56
- package/framework/squad-templates/full-stack.json +0 -74
- package/src/commands/agents/agent-metrics.js +0 -174
- package/src/commands/agents/audit-dispatch.js +0 -82
- package/src/commands/agents/detect-agents.js +0 -275
- package/src/commands/agents/dispatch-agents.js +0 -461
- package/src/commands/agents/index.js +0 -13
- package/src/commands/agents/manage-agents.js +0 -352
- package/src/commands/agents/project-metrics.js +0 -74
- package/src/commands/phase/phase-reset.js +0 -74
- package/src/commands/scope/escalate.js +0 -217
- package/src/commands/state/advance-phase.js +0 -600
- package/src/commands/state/phase-runner.js +0 -215
- package/src/commands/state/state.js +0 -444
- package/src/commands/task/expand.js +0 -100
- package/src/commands/tasks/index.js +0 -4
- package/src/commands/tasks/task.js +0 -105
- package/src/commands/templates/index.js +0 -5
- package/src/commands/templates/template-render.js +0 -93
- package/src/commands/trust/trust.js +0 -118
- package/src/lib/agents/agents-manager.js +0 -349
- package/src/lib/build/build-runner.js +0 -99
- package/src/lib/checkpoints/checkpoint-hooks.js +0 -111
- package/src/lib/contracts/sprint-contract-generator.js +0 -137
- package/src/lib/scope/impact-analyzer.js +0 -106
- package/src/lib/trust/trust-manager.js +0 -157
- package/src/utils/tier-helpers.js +0 -24
- /package/framework/hooks/claude-code/{post-tool-use → core}/loop-detect.js +0 -0
package/claude-plugin.json
CHANGED
package/docs/CHEATSHEET.md
CHANGED
package/docs/QUICKSTART.md
CHANGED
package/framework/CLAUDE.md
CHANGED
|
@@ -1,38 +1,55 @@
|
|
|
1
|
-
# MORPH-SPEC Runtime Instructions
|
|
2
|
-
|
|
3
|
-
> by Polymorphism Tech — Spec-driven development
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
|
30
|
-
|
|
31
|
-
| `/morph-
|
|
32
|
-
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
1
|
+
# MORPH-SPEC Runtime Instructions
|
|
2
|
+
|
|
3
|
+
> by Polymorphism Tech — Spec-driven development harness for Claude Code
|
|
4
|
+
|
|
5
|
+
## Como começar cada sessão
|
|
6
|
+
|
|
7
|
+
1. Leia `.morph/framework/MORPH.md` — o charter NLH com papéis, fases, gates e skills.
|
|
8
|
+
2. Leia `.morph/state.json` — identifique a feature `in_progress` e a fase atual.
|
|
9
|
+
3. Assuma o papel correspondente (Orchestrator/Specialist/Evaluator) e continue o trabalho. Não aguarde instrução do usuário se há trabalho pendente entre gates.
|
|
10
|
+
|
|
11
|
+
Se não houver feature ativa, pergunte ao usuário qual feature trabalhar.
|
|
12
|
+
|
|
13
|
+
## Regras críticas
|
|
14
|
+
|
|
15
|
+
**NUNCA:**
|
|
16
|
+
- Pular para código sem proposal aprovado (Gate 1) e plano aprovado (Gate 2).
|
|
17
|
+
- Modificar `spec.md`, `mandate.md`, `tasks.md` depois do Gate 2 — eles estão congelados.
|
|
18
|
+
- Listar perguntas em texto simples — sempre use a tool `AskUserQuestion` (1-4 perguntas por chamada).
|
|
19
|
+
- Usar `Guid.NewGuid()`, classes não-sealed sem justificativa, exceptions como fluxo de controle, Repository pattern.
|
|
20
|
+
|
|
21
|
+
**SEMPRE:**
|
|
22
|
+
- Auto-advance entre tarefas durante a fase implement — não pause sem ambiguidade bloqueante.
|
|
23
|
+
- Apresentar gates com o template fixo definido em MORPH.md / morph-plan.
|
|
24
|
+
- Registrar decisões não triviais em `decisions.md`.
|
|
25
|
+
- Aplicar `morph-eval` após cada tarefa; silêncio em score ≥ 8 é o sinal correto.
|
|
26
|
+
|
|
27
|
+
## Slash commands
|
|
28
|
+
|
|
29
|
+
| Comando | Propósito |
|
|
30
|
+
|---------|-----------|
|
|
31
|
+
| `/morph-proposal {feature}` | Entendimento de negócio + plano (Gates 1 e 2) |
|
|
32
|
+
| `/morph-apply {feature}` | Execução autônoma + review (Gate 3) |
|
|
33
|
+
| `/morph-status [feature]` | Status da feature ativa (ou a especificada) |
|
|
34
|
+
| `/morph-archive {feature}` | Arquiva feature concluída (após Gate 3) |
|
|
35
|
+
| `/morph-preflight` | Validação pré-deploy (specs, contratos, testes, infra) |
|
|
36
|
+
| `/morph-troubleshoot [erro]` | Diagnóstico de erros .NET/Next.js com root-cause analysis |
|
|
37
|
+
|
|
38
|
+
## Skills core (em `.claude/skills/`)
|
|
39
|
+
|
|
40
|
+
| Skill | Quando usar |
|
|
41
|
+
|-------|-------------|
|
|
42
|
+
| `morph-brainstorming` | Entender negócio, escanear stack, produzir proposal.md |
|
|
43
|
+
| `morph-stack-scan` | Detectar desvios de stack em projeto brownfield |
|
|
44
|
+
| `morph-plan` | Produzir spec.md + mandate.md + tasks.md |
|
|
45
|
+
| `morph-implement` | Executar uma tarefa com auto-advance entre tasks |
|
|
46
|
+
| `morph-eval` | Aplicar rubricas e produzir score 0-10 |
|
|
47
|
+
| `morph-review` | Produzir review-report.md (Gate 3) |
|
|
48
|
+
| `morph-standards` | Localizar standard sob demanda |
|
|
49
|
+
|
|
50
|
+
## Personas (em `.claude/agents/`)
|
|
51
|
+
|
|
52
|
+
7 personas de domínio dispatchávels via Agent tool:
|
|
53
|
+
`dotnet-senior`, `ef-modeler`, `maf-expert`, `nextjs-expert`, `ui-designer`, `infra-engineer`, `evaluator`.
|
|
54
|
+
|
|
55
|
+
*MORPH-SPEC v5 by Polymorphism Tech*
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
# MORPH.md — Natural Language Harness
|
|
2
|
+
|
|
3
|
+
> Leia este documento uma vez no início de cada sessão.
|
|
4
|
+
> Ele define papéis, fases, outputs, standards, gates e skills do morph-spec.
|
|
5
|
+
> Não procure instruções em hooks — o harness vive aqui.
|
|
6
|
+
>
|
|
7
|
+
> **Depois de ler:** leia `.morph/state.json` para identificar a feature ativa e a fase atual. Se o arquivo existir e houver uma feature `in_progress`, assuma o papel correspondente à fase e continue o trabalho sem esperar instrução. Se não houver feature ativa, pergunte ao usuário qual feature trabalhar ou se é uma feature nova.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 0. Contrato de Autonomia
|
|
12
|
+
|
|
13
|
+
Entre gates, você opera com autonomia total. O dev valida. Você executa.
|
|
14
|
+
|
|
15
|
+
| Situação | O que você faz |
|
|
16
|
+
|-----------------------------------------------------------------------|-------------------------------------------------------------------------------|
|
|
17
|
+
| Gate 1 / 2 / 3 aprovado | Avançar para próxima fase imediatamente |
|
|
18
|
+
| Tarefa completada na fase implement | Iniciar a próxima tarefa do tasks.md sem aguardar instrução |
|
|
19
|
+
| Ambiguidade de escopo coberta pelo mandate | Resolver conservadoramente e registrar em decisions.md |
|
|
20
|
+
| Ambiguidade bloqueante (requisito ausente ou contraditório) | UMA pergunta via AskUserQuestion |
|
|
21
|
+
| Sub-agent com auto-score ≥ 7 | Integrar ao recap.md e continuar |
|
|
22
|
+
| Sub-agent com auto-score < 7 | Aplicar morph-eval antes de aceitar |
|
|
23
|
+
| Build/typecheck quebra | Corrigir antes de marcar tarefa como done |
|
|
24
|
+
| Score morph-eval ≥ 8 | Silêncio (aprovação implícita), próxima tarefa |
|
|
25
|
+
| Score morph-eval entre 6 e 7.9 | Feedback priorizado, continuar |
|
|
26
|
+
| Score morph-eval < 6 | Escalar ao usuário via review-report |
|
|
27
|
+
|
|
28
|
+
**Regra de ouro:** Dúvida que não bloqueia o progresso → resolver e registrar. Dúvida que bloqueia → uma pergunta, máximo.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Stack baked-in
|
|
33
|
+
|
|
34
|
+
O harness conhece o stack por padrão. Não pergunte sobre tecnologia a menos que haja ambiguidade real.
|
|
35
|
+
|
|
36
|
+
| Camada | Stack |
|
|
37
|
+
|------------|--------------------------------------------------------------------------------------------------|
|
|
38
|
+
| Backend | .NET 10 + VSA (feature-folder: handler + validator + endpoint + errors + tests) |
|
|
39
|
+
| ORM/DB | EF Core + Neon (Postgres) |
|
|
40
|
+
| IDs | `Guid.CreateVersion7()` (nunca `Guid.NewGuid()`) |
|
|
41
|
+
| Classes | `sealed` por padrão |
|
|
42
|
+
| Erros | Result pattern com `result.Match()` (nunca exceptions como fluxo) |
|
|
43
|
+
| IA | Microsoft Agent Framework (MAF) — quando houver agentes |
|
|
44
|
+
| Frontend | Next.js App Router + Tailwind + Framer Motion + Shadcn |
|
|
45
|
+
| Jobs async | Hangfire — apenas quando há razão real |
|
|
46
|
+
|
|
47
|
+
Padrões proibidos automaticamente injetados no mandate:
|
|
48
|
+
- `Guid.NewGuid()` → `Guid.CreateVersion7()`
|
|
49
|
+
- Classes não-sealed sem justificativa
|
|
50
|
+
- Exceptions como fluxo de controle
|
|
51
|
+
- Repository pattern / `IRepository<T>` (VSA usa handlers diretos no DbContext)
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## 1. Papéis
|
|
56
|
+
|
|
57
|
+
O morph-spec opera com três papéis que você assume conforme o contexto da tarefa:
|
|
58
|
+
|
|
59
|
+
**Orchestrator** — ativo na abertura de uma feature e nas transições de fase.
|
|
60
|
+
Responsabilidades: ler o mandato, entender o escopo, propor o plano de ataque, identificar dependências entre tarefas, garantir que gates sejam respeitados antes de avançar.
|
|
61
|
+
Anti-padrão: o Orchestrator não escreve código. Se você está no papel de Orchestrator e percebe que começou a implementar algo, pare — você transitou de papel sem intenção, e o plano provavelmente ainda não está fechado.
|
|
62
|
+
|
|
63
|
+
**Specialist** — ativo durante a fase de implementação.
|
|
64
|
+
Responsabilidades: executar tarefas do tasks.md em ordem, consultar standards relevantes antes de cada tarefa, registrar decisões e desvios no decisions.md, manter o recap.md atualizado ao final de cada tarefa.
|
|
65
|
+
Anti-padrão: o Specialist não cria novas tarefas. Descobertas de escopo durante a implementação vão para o decisions.md com flag "escopo expandido" — o Orchestrator avalia se o tasks.md precisa ser atualizado.
|
|
66
|
+
|
|
67
|
+
**Evaluator** — ativo após uma tarefa ou fase ser concluída.
|
|
68
|
+
Responsabilidades: aplicar as rubricas em `framework/evals/rubrics/`, produzir score 0-10, emitir feedback priorizado quando score < 8, escalar para revisão humana quando score < 6.
|
|
69
|
+
Anti-padrão: o Evaluator não reescreve o código que avaliou. Se o score está abaixo de 6, o relatório vai para o humano — não para uma segunda rodada de tentativa automática.
|
|
70
|
+
|
|
71
|
+
Os papéis não são exclusivos — numa sessão longa você transita entre Orchestrator e Specialist conforme as tarefas avançam. A transição deve ser explícita: antes de mudar de papel, conclua o que estava fazendo ou registre o estado corrente no recap.md.
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## 2. Fases
|
|
76
|
+
|
|
77
|
+
O fluxo padrão de uma feature tem quatro fases. Cada fase tem uma pasta dedicada em `.morph/features/{feature}/`.
|
|
78
|
+
|
|
79
|
+
| Fase | Pasta | Gate | O que termina a fase |
|
|
80
|
+
|-------------|----------------|-------------------|-----------------------------------------------|
|
|
81
|
+
| proposal | `0-proposal/` | Aprovação humana | `proposal.md` aprovado e commitado |
|
|
82
|
+
| plan | `2-plan/` | Aprovação humana | `spec.md`, `mandate.md`, `tasks.md` aprovados |
|
|
83
|
+
| implement | `3-implement/` | Nenhum | Todas as tarefas do tasks.md com status Done |
|
|
84
|
+
| review | `4-review/` | Aprovação humana | `review-report.md` aprovado e commitado |
|
|
85
|
+
|
|
86
|
+
A fase `1-ui/` (design system, mockups, flows) é opcional — aplica-se apenas a features com componentes de UI novos e deve ser explicitamente requisitada pelo usuário.
|
|
87
|
+
|
|
88
|
+
Não avance de fase sem o gate correspondente ter sido confirmado.
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## 3. Contratos de Output
|
|
93
|
+
|
|
94
|
+
Cada fase produz artefatos específicos que devem ser salvos nos caminhos exatos abaixo.
|
|
95
|
+
Não invente caminhos alternativos.
|
|
96
|
+
|
|
97
|
+
### Proposal (`0-proposal/`)
|
|
98
|
+
|
|
99
|
+
- `proposal.md` — descrição da feature, problema que resolve, escopo, critérios de aceite, riscos. Um bom proposal.md tem no máximo 2 páginas: se está crescendo além disso, o escopo provavelmente precisa ser cortado antes de avançar.
|
|
100
|
+
|
|
101
|
+
### Plan (`2-plan/`)
|
|
102
|
+
|
|
103
|
+
- `spec.md` — especificação técnica detalhada: arquitetura, componentes, integrações, fluxos de dados, edge cases identificados. Um bom spec.md permite que qualquer desenvolvedor comece a implementar sem fazer perguntas básicas. Um spec.md fraco lista tecnologias mas não explica como os componentes se conectam.
|
|
104
|
+
|
|
105
|
+
- `mandate.md` — contrato de implementação: stack exata, standards obrigatórios (com links), patterns explicitamente proibidos, checklist de done com critérios verificáveis. O mandate.md é lido no início de cada tarefa de implementação — deve ser específico o suficiente para resolver ambiguidades sem consultar o Orchestrator.
|
|
106
|
+
|
|
107
|
+
- `tasks.md` — lista ordenada de tarefas com IDs únicos (T1, T2...), dependências explícitas entre tarefas, estimativa de esforço, critério de done verificável por tarefa. Cada entrada no recap.md deve referenciar um ID do tasks.md.
|
|
108
|
+
|
|
109
|
+
- `decisions.md` — log de decisões técnicas: qual era a alternativa, por que foi descartada, quem decidiu. Criado quando surgir a primeira decisão não trivial. Não é obrigatório — só existe se houver decisões que precisam de rastreabilidade.
|
|
110
|
+
|
|
111
|
+
### Implement (`3-implement/`)
|
|
112
|
+
|
|
113
|
+
- `recap.md` — atualizado ao fim de cada tarefa: ID da tarefa, o que foi feito, arquivos modificados, problemas encontrados e como foram resolvidos, standard consultado. Se não há nada a registrar em alguma dessas categorias, escreva "nenhum" — um recap vazio é pior do que um recap mínimo.
|
|
114
|
+
|
|
115
|
+
### Review (`4-review/`)
|
|
116
|
+
|
|
117
|
+
- `review-report.md` — relatório de revisão: scores por dimensão (arquitetura, contratos, qualidade, cobertura), feedback priorizado (bloqueantes primeiro, melhorias depois), aprovação ou rejeição com critérios explícitos. Um review-report.md que só diz "aprovado" sem scores não satisfaz o gate.
|
|
118
|
+
|
|
119
|
+
### Traces (`.morph/traces/`)
|
|
120
|
+
|
|
121
|
+
Cada sessão de trabalho produz um trace JSON em `.morph/traces/YYYY-MM-DD-{feature}-{phase}.json`.
|
|
122
|
+
O trace registra tarefas, scores de eval, standards consultados e sub-agents despachados.
|
|
123
|
+
O formato canônico está em `framework/evals/trace-schema.md` (criado na issue #17).
|
|
124
|
+
Traces são ignorados pelo git (`.gitignore`) e servem para análise do harness — não fazem parte da entrega da feature.
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## 4. Como consultar Standards
|
|
129
|
+
|
|
130
|
+
Standards nunca devem ser carregados todos de uma vez. Consulte sob demanda, por tarefa.
|
|
131
|
+
|
|
132
|
+
O índice de standards fica em `framework/standards/STANDARDS.json`. Cada entrada tem `id`, `name`, `path`, `category`, `tags`.
|
|
133
|
+
|
|
134
|
+
**Fluxo de consulta:**
|
|
135
|
+
|
|
136
|
+
1. Antes de iniciar uma tarefa, identifique de 1 a 3 standards relevantes pelo `id` ou `tags`.
|
|
137
|
+
2. Leia apenas o arquivo `.md` daquele standard específico — o path está no campo `path` do JSON.
|
|
138
|
+
3. Aplique o standard durante a implementação. Se precisar de contexto adicional, leia mais um standard.
|
|
139
|
+
4. Registre no recap.md qual standard foi consultado e como foi aplicado.
|
|
140
|
+
|
|
141
|
+
**Nunca** carregue todos os standards no início da sessão. Isso custa tokens sem benefício — você não sabe quais serão relevantes antes de começar.
|
|
142
|
+
|
|
143
|
+
**Como identificar o standard certo:** filtre por `category` primeiro (ex: "architecture", "contracts", "testing"), depois por `tags` (ex: "dotnet", "nextjs", "blazor"). Se dois standards parecem relevantes e há conflito, adote o mais específico ao stack do projeto — e registre o conflito no decisions.md.
|
|
144
|
+
|
|
145
|
+
O agente responsável por um domínio está listado em `framework/agents.json`. Consulte o campo `persona` do agente para entender o ponto de vista que você deve adotar ao aplicar os standards daquele domínio. A persona define o nível de rigor esperado: um agente de arquitetura tem critérios mais rígidos do que um agente de suporte mensal.
|
|
146
|
+
|
|
147
|
+
**Quando não há standard adequado:** registre no decisions.md que nenhum standard cobre o caso, descreva o critério que você adotou e sinalize para revisão futura. Não invente um standard — padrões não documentados são dívida técnica disfarçada.
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## 5. Gates de Aprovação
|
|
152
|
+
|
|
153
|
+
Gates são pontos obrigatórios de pausa. Não avance sem confirmação humana explícita.
|
|
154
|
+
|
|
155
|
+
**Gate 1 — Proposta aprovada**
|
|
156
|
+
Condição: o usuário leu e aprovou o `proposal.md`.
|
|
157
|
+
Como ativar: apresente o proposal, aguarde resposta explícita ("aprovado", "pode avançar", "lgtm" ou equivalente).
|
|
158
|
+
Nunca assuma aprovação silenciosa. Se o usuário responder com uma pergunta, responda a pergunta e reapresente o gate.
|
|
159
|
+
Sinal de gate aberto: resposta que confirma que pode avançar para o planejamento.
|
|
160
|
+
|
|
161
|
+
**Gate 2 — Plano aprovado**
|
|
162
|
+
Condição: o usuário leu e aprovou `spec.md`, `mandate.md` e `tasks.md`.
|
|
163
|
+
Como ativar: use o template de apresentação do Gate 2 em `framework/skills/core/morph-plan/SKILL.md` passo 5. Apresente o gate completo — spec em uma frase, mandate resumido, tasks com estimativa, decisões de arquitetura se houver.
|
|
164
|
+
Se o usuário pedir ajustes, aplique e reapresente o gate completo antes de avançar.
|
|
165
|
+
Sinal de gate aberto: aprovação explícita de todos os três artefatos, ou "pode implementar".
|
|
166
|
+
Atenção: aprovação parcial ("o spec está bom") não abre o gate — todos os três precisam ser confirmados.
|
|
167
|
+
|
|
168
|
+
**Gate 3 — Review aprovado**
|
|
169
|
+
Condição: o usuário leu e aprovou o `review-report.md`.
|
|
170
|
+
Como ativar: apresente o relatório com scores e feedback. Se houver itens bloqueantes (score < 6), não apresente o gate — corrija primeiro, reavalite, então apresente o relatório final.
|
|
171
|
+
Sinal de gate aberto: aprovação do review-report.md com ciência dos scores.
|
|
172
|
+
|
|
173
|
+
**Comportamento padrão fora de gate:** trabalhe com autonomia total. Gates só existem nestes três pontos. Não pause para confirmação no meio de implementação a menos que encontre uma ambiguidade de escopo que o mandate não cobre — nesse caso, registre a ambiguidade no decisions.md, resolva da forma mais conservadora possível, e sinalize na entrega da tarefa.
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## 6. Sub-agents
|
|
178
|
+
|
|
179
|
+
Despache um sub-agent quando a tarefa atende a pelo menos um dos critérios abaixo:
|
|
180
|
+
|
|
181
|
+
- Duração estimada > 5 minutos
|
|
182
|
+
- Mais de 3 tentativas de correção falharam no mesmo problema
|
|
183
|
+
- Análise de arquivo com mais de 500 linhas
|
|
184
|
+
- Tarefa repetitiva com mais de 3 instâncias do mesmo padrão
|
|
185
|
+
- Risco de "contaminar" o contexto principal com detalhes de baixo nível irrelevantes para o fluxo
|
|
186
|
+
|
|
187
|
+
**O que passar ao sub-agent:**
|
|
188
|
+
- Especificação da tarefa (do tasks.md)
|
|
189
|
+
- Path do standard relevante (apenas um)
|
|
190
|
+
- Lista de arquivos que ele precisa ler ou modificar
|
|
191
|
+
- Critério de done claro e verificável
|
|
192
|
+
|
|
193
|
+
**O que NÃO passar ao sub-agent:**
|
|
194
|
+
- Histórico da conversa principal
|
|
195
|
+
- Contexto de outras tarefas não relacionadas
|
|
196
|
+
- Outputs de ferramentas não pertinentes à tarefa
|
|
197
|
+
|
|
198
|
+
**O que receber de volta:**
|
|
199
|
+
- O que foi feito (2-3 frases)
|
|
200
|
+
- Arquivos modificados (lista)
|
|
201
|
+
- Problemas encontrados e como foram resolvidos
|
|
202
|
+
- Auto-score 0-10 com justificativa em uma linha
|
|
203
|
+
|
|
204
|
+
O sub-agent deve ser autossuficiente com o que você passou. Se precisar de mais contexto para começar, a tarefa não estava bem especificada — refine antes de despachar.
|
|
205
|
+
|
|
206
|
+
**Quando NÃO despachar sub-agent:**
|
|
207
|
+
- Tarefas curtas onde o overhead de contexto do dispatch custa mais do que a economia de contexto principal.
|
|
208
|
+
- Quando o feedback do sub-agent precisaria ser discutido em tempo real — dispatch é assíncrono.
|
|
209
|
+
- Quando a tarefa envolve mudanças de arquitetura que o Orchestrator precisa validar antes de executar.
|
|
210
|
+
|
|
211
|
+
**Após receber o retorno do sub-agent:** leia o auto-score. Se for < 7, aplique a skill morph-eval no resultado antes de aceitar. Se for >= 7 e sem itens bloqueantes, integre o resultado ao recap.md e siga para a próxima tarefa.
|
|
212
|
+
|
|
213
|
+
O padrão de dispatch e o template de prompt para sub-agents estão detalhados em `framework/skills/core/morph-implement/SKILL.md`.
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## 7. Skills disponíveis
|
|
218
|
+
|
|
219
|
+
Skills são documentos de instrução que você invoca sob demanda. Eles ficam em `framework/skills/core/`.
|
|
220
|
+
Não invoque uma skill fora do momento indicado.
|
|
221
|
+
|
|
222
|
+
| Skill | Path | Quando invocar |
|
|
223
|
+
|-----------------------|----------------------------------------------------|-------------------------------------------------------------|
|
|
224
|
+
| morph-brainstorming | `framework/skills/core/morph-brainstorming/SKILL.md` | Ao receber um novo request de feature (antes de morph-plan) |
|
|
225
|
+
| morph-stack-scan | `framework/skills/core/morph-stack-scan/SKILL.md` | Em projetos existentes, para detectar desvios de stack |
|
|
226
|
+
| morph-plan | `framework/skills/core/morph-plan/SKILL.md` | Ao iniciar a fase de planejamento |
|
|
227
|
+
| morph-implement | `framework/skills/core/morph-implement/SKILL.md` | Ao iniciar cada tarefa de implementação |
|
|
228
|
+
| morph-eval | `framework/skills/core/morph-eval/SKILL.md` | Após concluir uma tarefa ou fase |
|
|
229
|
+
| morph-review | `framework/skills/core/morph-review/SKILL.md` | Ao iniciar a fase de revisão |
|
|
230
|
+
| morph-standards | `framework/skills/core/morph-standards/SKILL.md` | Quando precisar localizar ou aplicar um standard específico |
|
|
231
|
+
|
|
232
|
+
Cada skill contém instruções de execução passo a passo. Leia, siga, não desvie sem justificativa registrada no recap.md.
|
|
233
|
+
|
|
234
|
+
Apenas o conjunto `framework/skills/core/` é instalado. As legacy trees `level-0-meta/` e `level-1-workflows/` foram removidas em v5 — o conteúdo útil foi consolidado em core.
|
|
235
|
+
|
|
236
|
+
Nenhuma skill deve ser invocada proativamente por um hook ou script automático. Skills são instrumentos do modelo — você decide quando a situação pede o nível de rigor que a skill fornece.
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
> **Nota de autoria:** Este documento deve ser revisado e mantido pelo time de engenharia.
|
|
241
|
+
> Alterações de comportamento do harness exigem atualização aqui, não em hooks ou scripts.
|
|
242
|
+
> Versão inicial criada em 2026-04-24. Próxima revisão recomendada após o ciclo completo com NLH.
|
|
243
|
+
>
|
|
244
|
+
> Para histórico de decisões sobre este documento, consulte os commits do arquivo e o `harness-token-audit.md` na raiz do repositório.
|