@polymorphism-tech/morph-spec 7.4.0 → 7.5.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/README.md +2 -2
- package/bin/morph-spec.js +18 -0
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +1 -1
- package/docs/QUICKSTART.md +1 -1
- package/framework/CLAUDE.md +9 -4
- package/framework/MORPH.md +4 -4
- package/framework/commands/create-umbraco-lp.md +35 -0
- package/framework/commands/migrate-lp-to-umbraco.md +33 -0
- package/framework/commands/morph-archive.md +17 -27
- package/framework/hooks/claude-code/core/enforce-phase-writes.js +115 -90
- package/framework/hooks/claude-code/core/protect-spec-files.js +32 -30
- package/framework/hooks/claude-code/core/state-sync.js +16 -48
- package/framework/hooks/shared/state-reader.js +74 -8
- package/framework/hooks/shared/state-writer.js +124 -0
- package/framework/rules/morph-task-tracking.md +69 -49
- package/framework/rules/morph-workflow.md +192 -191
- package/framework/skills/core/create-umbraco-lp/SKILL.md +252 -0
- package/framework/skills/core/migrate-lp-to-umbraco/SKILL.md +452 -0
- package/framework/skills/core/morph-apply/SKILL.md +15 -15
- package/framework/skills/core/morph-brainstorming/SKILL.md +5 -5
- package/framework/skills/core/morph-eval/SKILL.md +1 -1
- package/framework/skills/core/morph-implement/SKILL.md +5 -4
- package/framework/skills/core/morph-plan/SKILL.md +6 -6
- package/framework/skills/core/morph-proposal/SKILL.md +8 -7
- package/framework/skills/core/morph-review/SKILL.md +3 -3
- package/framework/skills/core/morph-stack-scan/SKILL.md +1 -1
- package/framework/skills/core/morph-standards/SKILL.md +1 -1
- package/framework/templates/REGISTRY.json +1 -3
- package/framework/templates/context/CONTEXT-FEATURE.md +10 -17
- package/framework/templates/context/CONTEXT.md +181 -180
- package/framework/templates/docs/onboarding.md +122 -118
- package/framework/templates/docs/proposal.md +10 -0
- package/framework/templates/docs/spec.md +228 -228
- package/framework/templates/meta-prompts/parallel-workers/parallel-worker.md +80 -80
- package/framework/templates/meta-prompts/squad-leaders/backend-squad.md +90 -89
- package/framework/templates/meta-prompts/squad-leaders/frontend-squad.md +2 -1
- package/framework/templates/meta-prompts/squad-leaders/squad-leader.md +44 -43
- package/framework/templates/meta-prompts/validators/checkpoint-validator.md +107 -107
- package/package.json +1 -1
- package/src/commands/project/update.js +415 -368
- package/src/commands/project/worktree.js +212 -210
- package/src/commands/state/advance.js +82 -0
- package/src/commands/state/archive.js +111 -0
- package/src/commands/validation/validate-feature.js +229 -105
- package/src/core/state/state-manager.js +238 -66
- package/src/dashboard/scanner/state-scanner.js +35 -8
- package/src/lib/generators/context-generator.js +12 -8
- package/src/utils/file-copier.js +7 -0
|
@@ -4,7 +4,7 @@ description: Orquestra a fase de proposta+plano de uma feature morph-spec. Encad
|
|
|
4
4
|
version: core
|
|
5
5
|
when-to-invoke: ao receber instrução "use /morph-proposal" do usuário, ou ao iniciar uma nova feature
|
|
6
6
|
user-invokable: true
|
|
7
|
-
cliVersion: "7.
|
|
7
|
+
cliVersion: "7.5.0"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# morph-proposal
|
|
@@ -17,7 +17,7 @@ Conduzir uma feature do request inicial até o plano aprovado (Gate 2), sem inte
|
|
|
17
17
|
|
|
18
18
|
- Usuário pede "use /morph-proposal {feature}" ou "vamos planejar {feature}".
|
|
19
19
|
- Início de qualquer feature nova num projeto morph-spec.
|
|
20
|
-
- Em sessões retomadas, antes de continuar uma feature em progresso, verificar via `.morph/
|
|
20
|
+
- Em sessões retomadas, antes de continuar uma feature em progresso, verificar via `.morph/features/{feature-name}/feature.json` (estado autoritativo da feature) se ela já passou pelos Gates.
|
|
21
21
|
|
|
22
22
|
## Argumentos
|
|
23
23
|
|
|
@@ -82,11 +82,12 @@ Escopo: {incluído} | Excluído: {exclusões}
|
|
|
82
82
|
Stack: {compliance}
|
|
83
83
|
```
|
|
84
84
|
|
|
85
|
-
|
|
85
|
+
No caminho manual, o hook `state-sync.js` registra a aprovação automaticamente via PostToolUse quando a `AskUserQuestion` é respondida com "aprovado" (grava o gate no `feature.json` autoritativo, `approvedBy: "manual"`). Em `trust: auto` (sem AskUserQuestion), **aprove via CLI — nunca via Edit à mão de state.json**:
|
|
86
86
|
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
|
|
87
|
+
```
|
|
88
|
+
morph-spec approve {feature} proposal --mode auto
|
|
89
|
+
# ou, para já aprovar o Gate 1 e criar a pasta 2-plan/ num passo só:
|
|
90
|
+
morph-spec advance {feature}
|
|
90
91
|
```
|
|
91
92
|
|
|
92
93
|
### 4. Verificar retomada antes de morph-plan
|
|
@@ -128,7 +129,7 @@ Lógica idêntica ao passo 3 (`shouldPauseGate` + AskUserQuestion ou auto-aprova
|
|
|
128
129
|
- `.morph/features/{feature}/2-plan/spec.md`
|
|
129
130
|
- `.morph/features/{feature}/2-plan/mandate.md`
|
|
130
131
|
- `.morph/features/{feature}/2-plan/tasks.json`
|
|
131
|
-
- Gates 1 e 2
|
|
132
|
+
- Gates 1 e 2 registrados aprovados em `.morph/features/{feature}/feature.json` (autoritativo) — via `morph-spec approve`/`morph-spec advance` em auto, ou via hook state-sync no caminho manual.
|
|
132
133
|
|
|
133
134
|
## Referências
|
|
134
135
|
|
|
@@ -4,7 +4,7 @@ description: Conduz a fase de revisão e produz o review-report.md para o Gate 3
|
|
|
4
4
|
version: core
|
|
5
5
|
when-to-invoke: ao iniciar a fase review, após todas as tasks de tasks.json estarem com status `done`
|
|
6
6
|
user-invokable: true
|
|
7
|
-
cliVersion: "7.
|
|
7
|
+
cliVersion: "7.5.0"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# morph-review
|
|
@@ -88,12 +88,12 @@ e o `recap.md` estar atualizado. Normalmente invocada pela skill orquestradora `
|
|
|
88
88
|
**Recomendação:** Aprovado
|
|
89
89
|
```
|
|
90
90
|
|
|
91
|
-
|
|
91
|
+
No caminho manual, o hook state-sync detecta a aprovação em answers de AskUserQuestion e grava `approvalGates.review = { approved: true, timestamp, approvedBy: "manual" }` no `feature.json` autoritativo da feature. Em auto sem AskUserQuestion, aprove via `morph-spec approve {feature} review --mode auto` — nunca via Edit à mão de state.json.
|
|
92
92
|
|
|
93
93
|
## Output esperado
|
|
94
94
|
- `.morph/features/{feature}/4-review/review-report.md` com scores e recomendação
|
|
95
95
|
- Trace da fase com `phase_summary` preenchido
|
|
96
|
-
- Gate 3
|
|
96
|
+
- Gate 3 registrado aprovado em `.morph/features/{feature}/feature.json` (autoritativo), na forma canônica `{ approved, timestamp, approvedBy }` — via `morph-spec approve` em auto, ou pelo hook state-sync no caminho manual
|
|
97
97
|
|
|
98
98
|
## Referências
|
|
99
99
|
- `.morph/framework/MORPH.md` — seção 5 (Gate 3), seção 1 (papel Evaluator), Trust Mode
|
|
@@ -4,7 +4,7 @@ description: Varre o codebase existente, detecta stack atual, compara com o stac
|
|
|
4
4
|
version: core
|
|
5
5
|
when-to-invoke: ao iniciar uma feature em projeto brownfield (codebase já existente)
|
|
6
6
|
user-invokable: true
|
|
7
|
-
cliVersion: "7.
|
|
7
|
+
cliVersion: "7.5.0"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# morph-stack-scan
|
|
@@ -4,7 +4,7 @@ description: Localiza e carrega um standard específico do STANDARDS.json sob de
|
|
|
4
4
|
version: core
|
|
5
5
|
when-to-invoke: quando precisar consultar um standard específico durante a implementação
|
|
6
6
|
user-invokable: true
|
|
7
|
-
cliVersion: "7.
|
|
7
|
+
cliVersion: "7.5.0"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# morph-standards
|
|
@@ -193,7 +193,6 @@
|
|
|
193
193
|
"COMPLEXITY",
|
|
194
194
|
"CONTRACTS_PATH",
|
|
195
195
|
"CURRENT_TASK",
|
|
196
|
-
"CURRENT_TASK_ID",
|
|
197
196
|
"DECISIONS_PATH",
|
|
198
197
|
"DESCRIPTION",
|
|
199
198
|
"FEATURE_ID",
|
|
@@ -213,8 +212,7 @@
|
|
|
213
212
|
"TASKS_TOTAL",
|
|
214
213
|
"TEAM_LEAD",
|
|
215
214
|
"TIMESTAMP",
|
|
216
|
-
"VALIDATION_TIMESTAMP"
|
|
217
|
-
"VALIDATOR"
|
|
215
|
+
"VALIDATION_TIMESTAMP"
|
|
218
216
|
],
|
|
219
217
|
"stackSpecific": false,
|
|
220
218
|
"engine": "handlebars",
|
|
@@ -229,21 +229,17 @@ No validation runs yet. Validators run automatically via checkpoints.
|
|
|
229
229
|
## Quick Actions
|
|
230
230
|
|
|
231
231
|
### Continue Implementation
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
# Generate recap after task completion
|
|
240
|
-
morph-spec generate recap {{FEATURE_NAME}}
|
|
241
|
-
```
|
|
232
|
+
During the implement phase, track your work with the native `TaskCreate`/`TaskUpdate`
|
|
233
|
+
tools. Persist progress by writing `tasks.json` (`2-plan/tasks.json`), touching ONLY
|
|
234
|
+
the mutable fields `status`, `outputs`, and `notes` — via the `Write` tool or an `Edit`
|
|
235
|
+
that touches only those fields. The plan contract (`title`, `description`,
|
|
236
|
+
`dependencies`, `effort`, `doneCriteria`, `group`) is frozen after Gate 2. The recap is
|
|
237
|
+
written by the implement skill; state syncs automatically via the `state-sync` hook.
|
|
242
238
|
|
|
243
239
|
### Advance Phase
|
|
244
240
|
```bash
|
|
245
|
-
#
|
|
246
|
-
morph-spec
|
|
241
|
+
# Approve the current gate and scaffold the next phase folder in one step
|
|
242
|
+
morph-spec advance {{FEATURE_NAME}}
|
|
247
243
|
|
|
248
244
|
# Validate feature outputs
|
|
249
245
|
morph-spec validate-feature {{FEATURE_NAME}}
|
|
@@ -251,11 +247,8 @@ morph-spec validate-feature {{FEATURE_NAME}}
|
|
|
251
247
|
|
|
252
248
|
### Validation
|
|
253
249
|
```bash
|
|
254
|
-
#
|
|
255
|
-
morph-spec validate {{FEATURE_NAME}}
|
|
256
|
-
|
|
257
|
-
# Run specific validator
|
|
258
|
-
morph-spec validate-{{VALIDATOR}} {{FEATURE_NAME}}
|
|
250
|
+
# Validate this feature's outputs against active standards
|
|
251
|
+
morph-spec validate-feature {{FEATURE_NAME}}
|
|
259
252
|
```
|
|
260
253
|
|
|
261
254
|
---
|
|
@@ -1,180 +1,181 @@
|
|
|
1
|
-
# {{PROJECT_NAME}} - Project Context
|
|
2
|
-
|
|
3
|
-
> Auto-generated by MORPH-SPEC Framework
|
|
4
|
-
> Last updated: {{TIMESTAMP}}
|
|
5
|
-
|
|
6
|
-
## Project Overview
|
|
7
|
-
|
|
8
|
-
**Name:** {{PROJECT_NAME}}
|
|
9
|
-
**Type:** {{PROJECT_TYPE}}
|
|
10
|
-
**Repository:** {{REPOSITORY_URL}}
|
|
11
|
-
|
|
12
|
-
{{PROJECT_DESCRIPTION}}
|
|
13
|
-
|
|
14
|
-
---
|
|
15
|
-
|
|
16
|
-
## Technology Stack
|
|
17
|
-
|
|
18
|
-
### Frontend
|
|
19
|
-
{{#if NEXTJS_ENABLED}}- **Next.js** {{NEXTJS_VERSION}}{{/if}}
|
|
20
|
-
{{#if UI_LIBRARY}}- **UI Library:** {{UI_LIBRARY}}{{/if}}
|
|
21
|
-
|
|
22
|
-
### Backend
|
|
23
|
-
- **.NET** {{DOTNET_VERSION}}
|
|
24
|
-
{{#if EF_VERSION}}- **Entity Framework Core** {{EF_VERSION}}{{/if}}
|
|
25
|
-
{{#if DAPPER_ENABLED}}- **Dapper** (Micro-ORM){{/if}}
|
|
26
|
-
{{#if HANGFIRE_ENABLED}}- **Hangfire** (Background Jobs){{/if}}
|
|
27
|
-
{{#if AGENT_FRAMEWORK_ENABLED}}- **Microsoft Agent Framework** (AI Agents){{/if}}
|
|
28
|
-
|
|
29
|
-
### Database
|
|
30
|
-
{{#if SQL_ENABLED}}- **Azure SQL** ({{SQL_SERVER}}/{{SQL_DATABASE}}){{/if}}
|
|
31
|
-
{{#if NEON_ENABLED}}- **Neon** (PostgreSQL + Connection Pooling)
|
|
32
|
-
- Project: {{NEON_PROJECT_ID}}
|
|
33
|
-
- Region: {{NEON_REGION}}
|
|
34
|
-
{{/if}}
|
|
35
|
-
|
|
36
|
-
### Infrastructure
|
|
37
|
-
{{#if AZURE_ENABLED}}- **Azure** ({{AZURE_LOCATION}})
|
|
38
|
-
{{#if CONTAINER_APPS_ENABLED}}- **Container Apps** ({{CONTAINER_ENV}}){{/if}}
|
|
39
|
-
{{#if OPENAI_ENABLED}}- **Azure OpenAI** ({{OPENAI_MODEL}}){{/if}}
|
|
40
|
-
{{#if MONITORING_ENABLED}}- **Application Insights** ({{APP_INSIGHTS}}){{/if}}
|
|
41
|
-
{{/if}}
|
|
42
|
-
|
|
43
|
-
{{#if EASYPANEL_ENABLED}}- **EasyPanel** (Docker Deployment)
|
|
44
|
-
- API: {{EASYPANEL_API_URL}}
|
|
45
|
-
- Web: {{EASYPANEL_WEB_URL}}
|
|
46
|
-
{{/if}}
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
## Active Features
|
|
51
|
-
|
|
52
|
-
{{#each ACTIVE_FEATURES}}
|
|
53
|
-
### {{name}} ({{phase}})
|
|
54
|
-
**Status:** {{status}}
|
|
55
|
-
**Complexity:** {{complexity}}
|
|
56
|
-
**Active Agents:** {{activeAgents}}
|
|
57
|
-
|
|
58
|
-
{{#if description}}{{description}}{{/if}}
|
|
59
|
-
|
|
60
|
-
**Progress:**
|
|
61
|
-
- Tasks: {{tasks.completed}}/{{tasks.total}}
|
|
62
|
-
- Outputs: {{outputs}}
|
|
63
|
-
|
|
64
|
-
{{/each}}
|
|
65
|
-
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
## Project Standards
|
|
69
|
-
|
|
70
|
-
### Coding Standards
|
|
71
|
-
{{#each PROJECT_STANDARDS}}
|
|
72
|
-
- [{{name}}]({{path}}){{#if description}} - {{description}}{{/if}}
|
|
73
|
-
{{/each}}
|
|
74
|
-
|
|
75
|
-
### Inferred Patterns
|
|
76
|
-
{{#if INFERRED_STANDARDS}}
|
|
77
|
-
{{INFERRED_STANDARDS}}
|
|
78
|
-
{{/if}}
|
|
79
|
-
|
|
80
|
-
---
|
|
81
|
-
|
|
82
|
-
## Active Agents ({{AGENT_COUNT}})
|
|
83
|
-
|
|
84
|
-
### Tier 1: Orchestrators
|
|
85
|
-
{{#each TIER_1_AGENTS}}
|
|
86
|
-
- **{{title}}** (`{{id}}`) {{#if always_active}}[Always Active]{{/if}}
|
|
87
|
-
{{/each}}
|
|
88
|
-
|
|
89
|
-
### Tier 2: Domain Leaders
|
|
90
|
-
{{#each TIER_2_AGENTS}}
|
|
91
|
-
- **{{title}}** (`{{id}}`) - {{domains}}
|
|
92
|
-
{{/each}}
|
|
93
|
-
|
|
94
|
-
### Tier 3: Specialists
|
|
95
|
-
{{#each TIER_3_AGENTS}}
|
|
96
|
-
- **{{title}}** (`{{id}}`) - Reports to `{{reports_to}}`
|
|
97
|
-
{{/each}}
|
|
98
|
-
|
|
99
|
-
---
|
|
100
|
-
|
|
101
|
-
## Agent Teams Status
|
|
102
|
-
|
|
103
|
-
{{#if AGENT_TEAMS_ENABLED}}
|
|
104
|
-
✅ **Enabled** (Display Mode: {{AGENT_TEAMS_DISPLAY_MODE}})
|
|
105
|
-
|
|
106
|
-
**Spawn Thresholds:**
|
|
107
|
-
- Complexity: {{AGENT_TEAMS_THRESHOLDS.complexity}}
|
|
108
|
-
- Estimated Files: ≥ {{AGENT_TEAMS_THRESHOLDS.estimatedFiles}}
|
|
109
|
-
- Active Agents: ≥ {{AGENT_TEAMS_THRESHOLDS.activeAgents}}
|
|
110
|
-
- Multi-Domain: {{AGENT_TEAMS_THRESHOLDS.multiDomain}}
|
|
111
|
-
|
|
112
|
-
{{else}}
|
|
113
|
-
❌ **Disabled** - Use single session with subagents
|
|
114
|
-
{{/if}}
|
|
115
|
-
|
|
116
|
-
---
|
|
117
|
-
|
|
118
|
-
## Recent Checkpoints
|
|
119
|
-
|
|
120
|
-
{{#each RECENT_CHECKPOINTS}}
|
|
121
|
-
### {{timestamp}}
|
|
122
|
-
**Feature:** {{feature}}
|
|
123
|
-
**Phase:** {{phase}}
|
|
124
|
-
**Note:** {{note}}
|
|
125
|
-
|
|
126
|
-
{{#if validation}}
|
|
127
|
-
**Validation:** {{validation.passed}}/{{validation.total}} checks passed
|
|
128
|
-
{{/if}}
|
|
129
|
-
|
|
130
|
-
{{/each}}
|
|
131
|
-
|
|
132
|
-
---
|
|
133
|
-
|
|
134
|
-
{{#if DEVOPS_ENABLED}}
|
|
135
|
-
## DevOps Integration
|
|
136
|
-
|
|
137
|
-
**Organization:** {{DEVOPS_ORG}}
|
|
138
|
-
**Project:** {{DEVOPS_PROJECT}}
|
|
139
|
-
|
|
140
|
-
- **Boards:** {{#if DEVOPS_BOARDS_ENABLED}}Enabled ({{DEVOPS_AREA_PATH}}){{else}}Disabled{{/if}}
|
|
141
|
-
- **Wiki:** {{#if DEVOPS_WIKI_ENABLED}}Enabled ({{DEVOPS_WIKI_NAME}}){{else}}Disabled{{/if}}
|
|
142
|
-
- **Pipelines:** CI: {{DEVOPS_BUILD_PIPELINE}}, CD: {{DEVOPS_RELEASE_PIPELINE}}
|
|
143
|
-
|
|
144
|
-
---
|
|
145
|
-
|
|
146
|
-
{{/if}}
|
|
147
|
-
|
|
148
|
-
## Quick Reference
|
|
149
|
-
|
|
150
|
-
### Workflow Commands
|
|
151
|
-
```bash
|
|
152
|
-
#
|
|
153
|
-
morph-spec
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
#
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
- **
|
|
174
|
-
- **
|
|
175
|
-
- **
|
|
176
|
-
- **
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
1
|
+
# {{PROJECT_NAME}} - Project Context
|
|
2
|
+
|
|
3
|
+
> Auto-generated by MORPH-SPEC Framework
|
|
4
|
+
> Last updated: {{TIMESTAMP}}
|
|
5
|
+
|
|
6
|
+
## Project Overview
|
|
7
|
+
|
|
8
|
+
**Name:** {{PROJECT_NAME}}
|
|
9
|
+
**Type:** {{PROJECT_TYPE}}
|
|
10
|
+
**Repository:** {{REPOSITORY_URL}}
|
|
11
|
+
|
|
12
|
+
{{PROJECT_DESCRIPTION}}
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Technology Stack
|
|
17
|
+
|
|
18
|
+
### Frontend
|
|
19
|
+
{{#if NEXTJS_ENABLED}}- **Next.js** {{NEXTJS_VERSION}}{{/if}}
|
|
20
|
+
{{#if UI_LIBRARY}}- **UI Library:** {{UI_LIBRARY}}{{/if}}
|
|
21
|
+
|
|
22
|
+
### Backend
|
|
23
|
+
- **.NET** {{DOTNET_VERSION}}
|
|
24
|
+
{{#if EF_VERSION}}- **Entity Framework Core** {{EF_VERSION}}{{/if}}
|
|
25
|
+
{{#if DAPPER_ENABLED}}- **Dapper** (Micro-ORM){{/if}}
|
|
26
|
+
{{#if HANGFIRE_ENABLED}}- **Hangfire** (Background Jobs){{/if}}
|
|
27
|
+
{{#if AGENT_FRAMEWORK_ENABLED}}- **Microsoft Agent Framework** (AI Agents){{/if}}
|
|
28
|
+
|
|
29
|
+
### Database
|
|
30
|
+
{{#if SQL_ENABLED}}- **Azure SQL** ({{SQL_SERVER}}/{{SQL_DATABASE}}){{/if}}
|
|
31
|
+
{{#if NEON_ENABLED}}- **Neon** (PostgreSQL + Connection Pooling)
|
|
32
|
+
- Project: {{NEON_PROJECT_ID}}
|
|
33
|
+
- Region: {{NEON_REGION}}
|
|
34
|
+
{{/if}}
|
|
35
|
+
|
|
36
|
+
### Infrastructure
|
|
37
|
+
{{#if AZURE_ENABLED}}- **Azure** ({{AZURE_LOCATION}})
|
|
38
|
+
{{#if CONTAINER_APPS_ENABLED}}- **Container Apps** ({{CONTAINER_ENV}}){{/if}}
|
|
39
|
+
{{#if OPENAI_ENABLED}}- **Azure OpenAI** ({{OPENAI_MODEL}}){{/if}}
|
|
40
|
+
{{#if MONITORING_ENABLED}}- **Application Insights** ({{APP_INSIGHTS}}){{/if}}
|
|
41
|
+
{{/if}}
|
|
42
|
+
|
|
43
|
+
{{#if EASYPANEL_ENABLED}}- **EasyPanel** (Docker Deployment)
|
|
44
|
+
- API: {{EASYPANEL_API_URL}}
|
|
45
|
+
- Web: {{EASYPANEL_WEB_URL}}
|
|
46
|
+
{{/if}}
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Active Features
|
|
51
|
+
|
|
52
|
+
{{#each ACTIVE_FEATURES}}
|
|
53
|
+
### {{name}} ({{phase}})
|
|
54
|
+
**Status:** {{status}}
|
|
55
|
+
**Complexity:** {{complexity}}
|
|
56
|
+
**Active Agents:** {{activeAgents}}
|
|
57
|
+
|
|
58
|
+
{{#if description}}{{description}}{{/if}}
|
|
59
|
+
|
|
60
|
+
**Progress:**
|
|
61
|
+
- Tasks: {{tasks.completed}}/{{tasks.total}}
|
|
62
|
+
- Outputs: {{outputs}}
|
|
63
|
+
|
|
64
|
+
{{/each}}
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Project Standards
|
|
69
|
+
|
|
70
|
+
### Coding Standards
|
|
71
|
+
{{#each PROJECT_STANDARDS}}
|
|
72
|
+
- [{{name}}]({{path}}){{#if description}} - {{description}}{{/if}}
|
|
73
|
+
{{/each}}
|
|
74
|
+
|
|
75
|
+
### Inferred Patterns
|
|
76
|
+
{{#if INFERRED_STANDARDS}}
|
|
77
|
+
{{INFERRED_STANDARDS}}
|
|
78
|
+
{{/if}}
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Active Agents ({{AGENT_COUNT}})
|
|
83
|
+
|
|
84
|
+
### Tier 1: Orchestrators
|
|
85
|
+
{{#each TIER_1_AGENTS}}
|
|
86
|
+
- **{{title}}** (`{{id}}`) {{#if always_active}}[Always Active]{{/if}}
|
|
87
|
+
{{/each}}
|
|
88
|
+
|
|
89
|
+
### Tier 2: Domain Leaders
|
|
90
|
+
{{#each TIER_2_AGENTS}}
|
|
91
|
+
- **{{title}}** (`{{id}}`) - {{domains}}
|
|
92
|
+
{{/each}}
|
|
93
|
+
|
|
94
|
+
### Tier 3: Specialists
|
|
95
|
+
{{#each TIER_3_AGENTS}}
|
|
96
|
+
- **{{title}}** (`{{id}}`) - Reports to `{{reports_to}}`
|
|
97
|
+
{{/each}}
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Agent Teams Status
|
|
102
|
+
|
|
103
|
+
{{#if AGENT_TEAMS_ENABLED}}
|
|
104
|
+
✅ **Enabled** (Display Mode: {{AGENT_TEAMS_DISPLAY_MODE}})
|
|
105
|
+
|
|
106
|
+
**Spawn Thresholds:**
|
|
107
|
+
- Complexity: {{AGENT_TEAMS_THRESHOLDS.complexity}}
|
|
108
|
+
- Estimated Files: ≥ {{AGENT_TEAMS_THRESHOLDS.estimatedFiles}}
|
|
109
|
+
- Active Agents: ≥ {{AGENT_TEAMS_THRESHOLDS.activeAgents}}
|
|
110
|
+
- Multi-Domain: {{AGENT_TEAMS_THRESHOLDS.multiDomain}}
|
|
111
|
+
|
|
112
|
+
{{else}}
|
|
113
|
+
❌ **Disabled** - Use single session with subagents
|
|
114
|
+
{{/if}}
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Recent Checkpoints
|
|
119
|
+
|
|
120
|
+
{{#each RECENT_CHECKPOINTS}}
|
|
121
|
+
### {{timestamp}}
|
|
122
|
+
**Feature:** {{feature}}
|
|
123
|
+
**Phase:** {{phase}}
|
|
124
|
+
**Note:** {{note}}
|
|
125
|
+
|
|
126
|
+
{{#if validation}}
|
|
127
|
+
**Validation:** {{validation.passed}}/{{validation.total}} checks passed
|
|
128
|
+
{{/if}}
|
|
129
|
+
|
|
130
|
+
{{/each}}
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
{{#if DEVOPS_ENABLED}}
|
|
135
|
+
## DevOps Integration
|
|
136
|
+
|
|
137
|
+
**Organization:** {{DEVOPS_ORG}}
|
|
138
|
+
**Project:** {{DEVOPS_PROJECT}}
|
|
139
|
+
|
|
140
|
+
- **Boards:** {{#if DEVOPS_BOARDS_ENABLED}}Enabled ({{DEVOPS_AREA_PATH}}){{else}}Disabled{{/if}}
|
|
141
|
+
- **Wiki:** {{#if DEVOPS_WIKI_ENABLED}}Enabled ({{DEVOPS_WIKI_NAME}}){{else}}Disabled{{/if}}
|
|
142
|
+
- **Pipelines:** CI: {{DEVOPS_BUILD_PIPELINE}}, CD: {{DEVOPS_RELEASE_PIPELINE}}
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
{{/if}}
|
|
147
|
+
|
|
148
|
+
## Quick Reference
|
|
149
|
+
|
|
150
|
+
### Workflow Commands
|
|
151
|
+
```bash
|
|
152
|
+
# Check feature status and pending gates
|
|
153
|
+
morph-spec status {feature}
|
|
154
|
+
morph-spec approval-status {feature}
|
|
155
|
+
|
|
156
|
+
# Approve the current gate and scaffold the next phase folder in one step
|
|
157
|
+
morph-spec advance {feature}
|
|
158
|
+
|
|
159
|
+
# Validate feature outputs
|
|
160
|
+
morph-spec validate-feature {feature}
|
|
161
|
+
|
|
162
|
+
# Archive a finished feature (after Gate 3)
|
|
163
|
+
morph-spec archive {feature}
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
> Feature work starts by asking Claude Code to implement something — the proposal
|
|
167
|
+
> phase is created for you. During the implement phase, task progress is tracked
|
|
168
|
+
> with the native `TaskCreate`/`TaskUpdate` tools and persisted by writing
|
|
169
|
+
> `tasks.json` (only `status`, `outputs`, `notes`); the recap is written by the
|
|
170
|
+
> implement skill. State syncs automatically via the `state-sync` hook.
|
|
171
|
+
|
|
172
|
+
### Key Paths
|
|
173
|
+
- **Outputs:** `.morph/features/{feature}/`
|
|
174
|
+
- **Standards:** `.morph/context/` (project overrides)
|
|
175
|
+
- **Config:** `.morph/config/config.json`
|
|
176
|
+
- **State:** `.morph/state.json`
|
|
177
|
+
- **Templates:** `.morph/framework/templates/`
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
*Generated by MORPH-SPEC Framework v{{MORPH_VERSION}}*
|