@polymorphism-tech/morph-spec 4.7.1 → 4.8.1
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/.morph/analytics/threads-log.jsonl +54 -0
- package/.morph/state.json +198 -0
- package/LICENSE +1 -2
- package/README.md +379 -414
- package/bin/morph-spec.js +57 -403
- package/bin/validate.js +2 -26
- package/claude-plugin.json +2 -2
- package/docs/ARCHITECTURE.md +43 -46
- package/docs/CHEATSHEET.md +203 -221
- package/docs/COMMAND-FLOWS.md +319 -289
- package/docs/QUICKSTART.md +2 -8
- package/docs/plans/2026-02-22-claude-docs-morph-alignment-analysis.md +2 -0
- package/docs/plans/2026-02-22-claude-settings.md +2 -0
- package/docs/plans/2026-02-22-morph-cc-alignment-impl.md +2 -0
- package/docs/plans/2026-02-22-morph-spec-next.md +2 -0
- package/docs/plans/2026-02-22-native-alignment-design.md +2 -0
- package/docs/plans/2026-02-22-native-alignment-impl.md +2 -0
- package/docs/plans/2026-02-22-native-enrichment-design.md +2 -0
- package/docs/plans/2026-02-22-native-enrichment.md +2 -0
- package/docs/plans/2026-02-23-ddd-architecture-refactor.md +2 -0
- package/docs/plans/2026-02-23-ddd-nextsteps.md +2 -0
- package/docs/plans/2026-02-23-infra-architect-refactor.md +2 -0
- package/docs/plans/2026-02-23-nextjs-code-review-design.md +2 -1
- package/docs/plans/2026-02-23-nextjs-code-review-impl.md +2 -0
- package/docs/plans/2026-02-23-nextjs-standards-design.md +2 -1
- package/docs/plans/2026-02-23-nextjs-standards-impl.md +2 -0
- package/docs/plans/2026-02-24-cli-radical-simplification.md +592 -0
- package/docs/plans/2026-02-24-framework-failure-points.md +125 -0
- package/docs/plans/2026-02-24-morph-init-design.md +337 -0
- package/docs/plans/2026-02-24-morph-init-impl.md +1269 -0
- package/docs/plans/2026-02-24-tutorial-command-design.md +71 -0
- package/docs/plans/2026-02-24-tutorial-command.md +298 -0
- package/framework/CLAUDE.md +2 -2
- package/framework/commands/morph-proposal.md +3 -3
- package/framework/hooks/README.md +11 -10
- package/framework/hooks/claude-code/notification/approval-reminder.js +2 -0
- package/framework/hooks/claude-code/post-tool-use/dispatch.js +1 -1
- package/framework/hooks/claude-code/pre-tool-use/protect-readonly-files.js +4 -55
- package/framework/hooks/claude-code/session-start/inject-morph-context.js +20 -5
- package/framework/hooks/claude-code/statusline.py +6 -1
- package/framework/hooks/claude-code/stop/validate-completion.js +1 -1
- package/framework/hooks/claude-code/user-prompt/enrich-prompt.js +1 -1
- package/framework/hooks/dev/check-sync-health.js +117 -0
- package/framework/hooks/dev/guard-version-numbers.js +57 -0
- package/framework/hooks/dev/sync-standards-registry.js +60 -0
- package/framework/hooks/dev/sync-template-registry.js +60 -0
- package/framework/hooks/dev/validate-skill-format.js +70 -0
- package/framework/hooks/dev/validate-standard-format.js +73 -0
- package/framework/hooks/shared/payload-utils.js +39 -0
- package/framework/hooks/shared/state-reader.js +25 -1
- package/framework/rules/morph-workflow.md +1 -1
- package/framework/skills/level-0-meta/morph-init/SKILL.md +216 -0
- package/framework/skills/level-0-meta/morph-replicate/SKILL.md +4 -4
- package/framework/skills/level-0-meta/tool-usage-guide/SKILL.md +4 -4
- package/framework/skills/level-0-meta/verification-before-completion/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/phase-clarify/SKILL.md +192 -191
- package/framework/skills/level-1-workflows/phase-codebase-analysis/SKILL.md +181 -180
- package/framework/skills/level-1-workflows/phase-design/SKILL.md +339 -338
- package/framework/skills/level-1-workflows/phase-implement/SKILL.md +254 -253
- package/framework/skills/level-1-workflows/phase-setup/SKILL.md +168 -170
- package/framework/skills/level-1-workflows/phase-tasks/SKILL.md +284 -283
- package/framework/skills/level-1-workflows/phase-uiux/SKILL.md +246 -245
- package/framework/templates/examples/design-system-examples.md +1 -1
- package/framework/templates/ui/FluentDesignTheme.cs +1 -1
- package/framework/templates/ui/MudTheme.cs +1 -1
- package/framework/templates/ui/design-system.css +1 -1
- package/package.json +4 -2
- package/scripts/bump-version.js +248 -0
- package/scripts/install-dev-hooks.js +138 -0
- package/src/commands/agents/index.js +1 -2
- package/src/commands/index.js +13 -16
- package/src/commands/project/doctor.js +100 -14
- package/src/commands/project/index.js +7 -10
- package/src/commands/project/init.js +398 -555
- package/src/commands/project/install-plugin-cmd.js +28 -0
- package/src/commands/project/setup-infra-cmd.js +12 -0
- package/src/commands/project/tutorial.js +115 -0
- package/src/commands/project/update.js +22 -37
- package/src/commands/state/approve.js +213 -221
- package/src/commands/state/index.js +0 -1
- package/src/commands/state/state.js +337 -365
- package/src/commands/templates/index.js +0 -4
- package/src/commands/trust/trust.js +1 -93
- package/src/commands/utils/index.js +1 -5
- package/src/commands/validation/index.js +1 -5
- package/src/core/registry/command-registry.js +11 -285
- package/src/core/state/state-manager.js +5 -2
- package/src/lib/detectors/index.js +81 -87
- package/src/lib/detectors/structure-detector.js +275 -273
- package/src/lib/generators/recap-generator.js +232 -225
- package/src/lib/installers/mcp-installer.js +18 -3
- package/src/scripts/global-install.js +34 -0
- package/src/scripts/install-plugin.js +126 -0
- package/src/scripts/setup-infra.js +203 -0
- package/src/utils/agents-installer.js +10 -1
- package/src/utils/hooks-installer.js +70 -17
- package/CLAUDE.md +0 -77
- package/docs/claude-alignment-report.md +0 -137
- package/docs/examples/order-management/contracts.cs +0 -84
- package/docs/examples/order-management/proposal.md +0 -24
- package/docs/examples/order-management/spec.md +0 -162
- package/src/commands/feature/create-story.js +0 -362
- package/src/commands/feature/index.js +0 -6
- package/src/commands/feature/shard-spec.js +0 -225
- package/src/commands/feature/sprint-status.js +0 -250
- package/src/commands/generation/generate-onboarding.js +0 -169
- package/src/commands/generation/generate.js +0 -276
- package/src/commands/generation/index.js +0 -5
- package/src/commands/learning/capture-pattern.js +0 -121
- package/src/commands/learning/index.js +0 -5
- package/src/commands/learning/search-patterns.js +0 -126
- package/src/commands/mcp/mcp.js +0 -102
- package/src/commands/project/changes.js +0 -66
- package/src/commands/project/cost.js +0 -179
- package/src/commands/project/detect.js +0 -114
- package/src/commands/project/diff.js +0 -278
- package/src/commands/project/revert.js +0 -173
- package/src/commands/project/standards.js +0 -80
- package/src/commands/project/sync.js +0 -167
- package/src/commands/project/update-agents.js +0 -23
- package/src/commands/state/rollback-phase.js +0 -185
- package/src/commands/templates/template-customize.js +0 -87
- package/src/commands/templates/template-list.js +0 -114
- package/src/commands/templates/template-show.js +0 -129
- package/src/commands/templates/template-validate.js +0 -91
- package/src/commands/utils/troubleshoot.js +0 -222
- package/src/commands/validation/analyze-blazor-concurrency.js +0 -193
- package/src/commands/validation/lint-fluent.js +0 -352
- package/src/commands/validation/validate-blazor-state.js +0 -210
- package/src/commands/validation/validate-blazor.js +0 -156
- package/src/commands/validation/validate-css.js +0 -84
- package/src/lib/detectors/conversation-analyzer.js +0 -163
- package/src/lib/learning/index.js +0 -7
- package/src/lib/learning/learning-system.js +0 -520
- package/src/lib/troubleshooting/index.js +0 -8
- package/src/lib/troubleshooting/troubleshoot-grep.js +0 -198
- package/src/lib/troubleshooting/troubleshoot-index.js +0 -144
- package/src/llm/environment-detector.js +0 -43
|
@@ -1,181 +1,182 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: phase-codebase-analysis
|
|
3
|
-
description: MORPH-SPEC Design sub-phase that analyzes existing codebase and database schema, producing schema-analysis.md with real column names, types, relationships, and field mismatches. Use at the start of Design phase before generating contracts.cs to prevent incorrect field names or types.
|
|
4
|
-
user-invocable: false
|
|
5
|
-
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
>
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
- [ ]
|
|
19
|
-
- [ ]
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
> **Ref:** `framework/
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
|
30
|
-
| Obter
|
|
31
|
-
| Obter
|
|
32
|
-
|
|
|
33
|
-
| Encontrar
|
|
34
|
-
|
|
|
35
|
-
|
|
|
36
|
-
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
- Nomes de
|
|
102
|
-
-
|
|
103
|
-
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
Glob: "src/**/*.
|
|
111
|
-
Glob: "src
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
Glob: "
|
|
116
|
-
Glob: "**/
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
-
|
|
124
|
-
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
|
138
|
-
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
- [ ]
|
|
171
|
-
- [ ] Encontrei {N}
|
|
172
|
-
- [ ]
|
|
173
|
-
- [ ]
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
1
|
+
---
|
|
2
|
+
name: phase-codebase-analysis
|
|
3
|
+
description: MORPH-SPEC Design sub-phase that analyzes existing codebase and database schema, producing schema-analysis.md with real column names, types, relationships, and field mismatches. Use at the start of Design phase before generating contracts.cs to prevent incorrect field names or types.
|
|
4
|
+
user-invocable: false
|
|
5
|
+
allowed-tools: Read, Write, Edit, Bash, Glob, Grep
|
|
6
|
+
cliVersion: "4.8.1"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# MORPH Codebase Analysis - Sub-fase de DESIGN
|
|
10
|
+
|
|
11
|
+
> INTERNAL: Automation skill for schema analysis step within Phase 2 (Design).
|
|
12
|
+
> Called by `phase-design.md` Passo 2. Not a standalone user command.
|
|
13
|
+
|
|
14
|
+
Automatiza a análise de código existente para gerar `schema-analysis.md` com dados reais do banco/código.
|
|
15
|
+
|
|
16
|
+
## Pré-requisitos
|
|
17
|
+
|
|
18
|
+
- [ ] FASE 1 (Setup) concluída
|
|
19
|
+
- [ ] Feature tem `proposal.md` aprovado
|
|
20
|
+
- [ ] Contexto do projeto carregado (stack, agentes)
|
|
21
|
+
|
|
22
|
+
## Ferramentas Recomendadas
|
|
23
|
+
|
|
24
|
+
> **Ref:** `framework/skills/level-0-meta/tool-usage-guide/SKILL.md` para guia completo.
|
|
25
|
+
> **Ref:** `framework/standards/integration/mcp/mcp-tools.md` para referência MCP.
|
|
26
|
+
|
|
27
|
+
| Ação | Ferramenta | Alternativa |
|
|
28
|
+
|------|------------|-------------|
|
|
29
|
+
| Listar tabelas do banco | **Supabase MCP** `list_tables()` | **Grep** `.from(` no código |
|
|
30
|
+
| Obter schema de tabela | **Supabase MCP** `get_table_schema()` | **Read** type definitions |
|
|
31
|
+
| Obter relacionamentos FK | **Supabase MCP** `get_relationships()` | **Grep** JOIN/FK patterns |
|
|
32
|
+
| Obter políticas RLS | **Supabase MCP** `query()` | **Read** policy files |
|
|
33
|
+
| Encontrar queries no código | **Grep** `\.from\(` em `*.ts,*.tsx,*.js,*.cs` | — |
|
|
34
|
+
| Encontrar type definitions | **Glob** `src/**/types/**/*.ts` ou `**/Entities/**/*.cs` | — |
|
|
35
|
+
| Ler arquivos encontrados | **Read** cada arquivo | — |
|
|
36
|
+
| Análise multi-arquivo complexa | **Task** (subagent Explore) | Read individual |
|
|
37
|
+
| Gerar schema-analysis.md | **Write** usando template | **Bash** template render |
|
|
38
|
+
|
|
39
|
+
**MCPs desta fase:** Supabase (schema — **PRIORITÁRIO**), Database MCPs genéricos.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Workflow Automatizado
|
|
44
|
+
|
|
45
|
+
### Passo 1: Detectar Método de Análise
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
SE MCP Supabase disponível:
|
|
49
|
+
→ Usar Método A (MCP direto)
|
|
50
|
+
SE MCP Database disponível:
|
|
51
|
+
→ Usar Método A adaptado
|
|
52
|
+
SENÃO:
|
|
53
|
+
→ Usar Método B (análise estática de código)
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Passo 2A: Método MCP (Preferencial)
|
|
57
|
+
|
|
58
|
+
**Ferramentas:** Supabase MCP
|
|
59
|
+
|
|
60
|
+
```javascript
|
|
61
|
+
// 1. Listar todas as tabelas
|
|
62
|
+
const tables = await mcp__supabase__list_tables();
|
|
63
|
+
|
|
64
|
+
// 2. Para cada tabela relevante à feature:
|
|
65
|
+
for (const table of relevantTables) {
|
|
66
|
+
// 2a. Schema completo
|
|
67
|
+
const schema = await mcp__supabase__get_table_schema({ table: table.name });
|
|
68
|
+
// → column_name, data_type, is_nullable, column_default
|
|
69
|
+
|
|
70
|
+
// 2b. Relacionamentos
|
|
71
|
+
const rels = await mcp__supabase__get_relationships({ table: table.name });
|
|
72
|
+
// → foreign_table, foreign_column, constraint_type
|
|
73
|
+
|
|
74
|
+
// 2c. Indexes
|
|
75
|
+
const indexes = await mcp__supabase__query({
|
|
76
|
+
query: `SELECT indexname, indexdef FROM pg_indexes WHERE tablename = '${table.name}'`
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
// 2d. RLS policies (segurança)
|
|
80
|
+
const policies = await mcp__supabase__query({
|
|
81
|
+
query: `SELECT policyname, cmd, qual FROM pg_policies WHERE tablename = '${table.name}'`
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Passo 2B: Método Análise Estática (Fallback)
|
|
87
|
+
|
|
88
|
+
**Ferramentas:** Grep, Glob, Read, Task (subagent para projetos grandes)
|
|
89
|
+
|
|
90
|
+
**Fase B1: Encontrar Queries**
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
Grep: "\.from\(|\.select\(|SELECT |supabase\.|context\.|dbContext\.|DbSet<"
|
|
94
|
+
Type: ts,tsx,js,jsx,cs
|
|
95
|
+
Output: files_with_matches
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Fase B2: Ler Arquivos de Query**
|
|
99
|
+
|
|
100
|
+
Para cada arquivo encontrado, use **Read** para extrair:
|
|
101
|
+
- Nomes de tabelas: `from('leads')`, `DbSet<Lead>`, `FROM leads`
|
|
102
|
+
- Nomes de colunas: `.select('fullname, phonenumber')`, `l.FullName`
|
|
103
|
+
- Tipos de dados: TypeScript interfaces, C# DTOs
|
|
104
|
+
- Relacionamentos: JOIN clauses, navigation properties
|
|
105
|
+
|
|
106
|
+
**Fase B3: Encontrar Type Definitions**
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
# TypeScript/JavaScript:
|
|
110
|
+
Glob: "src/**/types/**/*.ts"
|
|
111
|
+
Glob: "src/**/*.d.ts"
|
|
112
|
+
Glob: "src/**/interfaces/*.ts"
|
|
113
|
+
|
|
114
|
+
# .NET:
|
|
115
|
+
Glob: "**/*Dto.cs"
|
|
116
|
+
Glob: "**/Entities/**/*.cs"
|
|
117
|
+
Glob: "**/Models/**/*.cs"
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**Fase B4: Quando usar Task (subagent)**
|
|
121
|
+
|
|
122
|
+
Use Task subagent **APENAS** quando:
|
|
123
|
+
- Projeto tem 20+ arquivos de query
|
|
124
|
+
- Múltiplos padrões de acesso a dados (Supabase + EF Core + raw SQL)
|
|
125
|
+
- Análise precisa de contexto cruzado entre muitos arquivos
|
|
126
|
+
|
|
127
|
+
Não use Task subagent quando:
|
|
128
|
+
- Projeto tem < 10 arquivos de query (Read direto é mais rápido)
|
|
129
|
+
- Padrão de acesso a dados é uniforme (só Supabase OU só EF Core)
|
|
130
|
+
|
|
131
|
+
### Passo 3: Mapear Inconsistências
|
|
132
|
+
|
|
133
|
+
Crie um mapa de:
|
|
134
|
+
|
|
135
|
+
| Frontend/Código | Banco de Dados | Tipo | Problema |
|
|
136
|
+
|----------------|----------------|------|----------|
|
|
137
|
+
| user.name | users.fullname | string | ❌ MISMATCH |
|
|
138
|
+
| lead.phone | leads.phonenumber | string | ❌ MISMATCH |
|
|
139
|
+
| order.metadata | orders.metadata | JSONB | ⚠️ Type complex |
|
|
140
|
+
|
|
141
|
+
### Passo 4: Gerar `schema-analysis.md`
|
|
142
|
+
|
|
143
|
+
Use o template em `framework/templates/docs/schema-analysis.md`:
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
npx morph-spec template render docs/schema-analysis \
|
|
147
|
+
.morph/features/{feature-name}/1-design/schema-analysis.md \
|
|
148
|
+
'{ "FEATURE_NAME": "{feature-name}", "DATE": "..." }'
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
OU use **Write** tool para criar diretamente com os dados coletados.
|
|
152
|
+
|
|
153
|
+
### Passo 5: Atualizar State
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
npx morph-spec state mark-output {feature-name} schema-analysis
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## Outputs
|
|
162
|
+
|
|
163
|
+
- `.morph/features/{feature}/1-design/schema-analysis.md`
|
|
164
|
+
- State atualizado com output `schemaAnalysis`
|
|
165
|
+
|
|
166
|
+
## CHECKPOINT
|
|
167
|
+
|
|
168
|
+
Antes de prosseguir para contracts.cs, apresente ao usuário:
|
|
169
|
+
|
|
170
|
+
- [ ] Analisei {N} tabelas
|
|
171
|
+
- [ ] Encontrei {N} field name mismatches
|
|
172
|
+
- [ ] Encontrei {N} type mismatches
|
|
173
|
+
- [ ] Mapeei {N} relacionamentos
|
|
174
|
+
- [ ] `schema-analysis.md` criado
|
|
175
|
+
|
|
176
|
+
**Perguntas obrigatórias:**
|
|
177
|
+
1. "O schema analysis está correto?"
|
|
178
|
+
2. "Posso gerar contracts.cs com base nesse schema real?"
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
181
182
|
*MORPH-SPEC by Polymorphism Tech*
|