@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.
Files changed (138) hide show
  1. package/.morph/analytics/threads-log.jsonl +54 -0
  2. package/.morph/state.json +198 -0
  3. package/LICENSE +1 -2
  4. package/README.md +379 -414
  5. package/bin/morph-spec.js +57 -403
  6. package/bin/validate.js +2 -26
  7. package/claude-plugin.json +2 -2
  8. package/docs/ARCHITECTURE.md +43 -46
  9. package/docs/CHEATSHEET.md +203 -221
  10. package/docs/COMMAND-FLOWS.md +319 -289
  11. package/docs/QUICKSTART.md +2 -8
  12. package/docs/plans/2026-02-22-claude-docs-morph-alignment-analysis.md +2 -0
  13. package/docs/plans/2026-02-22-claude-settings.md +2 -0
  14. package/docs/plans/2026-02-22-morph-cc-alignment-impl.md +2 -0
  15. package/docs/plans/2026-02-22-morph-spec-next.md +2 -0
  16. package/docs/plans/2026-02-22-native-alignment-design.md +2 -0
  17. package/docs/plans/2026-02-22-native-alignment-impl.md +2 -0
  18. package/docs/plans/2026-02-22-native-enrichment-design.md +2 -0
  19. package/docs/plans/2026-02-22-native-enrichment.md +2 -0
  20. package/docs/plans/2026-02-23-ddd-architecture-refactor.md +2 -0
  21. package/docs/plans/2026-02-23-ddd-nextsteps.md +2 -0
  22. package/docs/plans/2026-02-23-infra-architect-refactor.md +2 -0
  23. package/docs/plans/2026-02-23-nextjs-code-review-design.md +2 -1
  24. package/docs/plans/2026-02-23-nextjs-code-review-impl.md +2 -0
  25. package/docs/plans/2026-02-23-nextjs-standards-design.md +2 -1
  26. package/docs/plans/2026-02-23-nextjs-standards-impl.md +2 -0
  27. package/docs/plans/2026-02-24-cli-radical-simplification.md +592 -0
  28. package/docs/plans/2026-02-24-framework-failure-points.md +125 -0
  29. package/docs/plans/2026-02-24-morph-init-design.md +337 -0
  30. package/docs/plans/2026-02-24-morph-init-impl.md +1269 -0
  31. package/docs/plans/2026-02-24-tutorial-command-design.md +71 -0
  32. package/docs/plans/2026-02-24-tutorial-command.md +298 -0
  33. package/framework/CLAUDE.md +2 -2
  34. package/framework/commands/morph-proposal.md +3 -3
  35. package/framework/hooks/README.md +11 -10
  36. package/framework/hooks/claude-code/notification/approval-reminder.js +2 -0
  37. package/framework/hooks/claude-code/post-tool-use/dispatch.js +1 -1
  38. package/framework/hooks/claude-code/pre-tool-use/protect-readonly-files.js +4 -55
  39. package/framework/hooks/claude-code/session-start/inject-morph-context.js +20 -5
  40. package/framework/hooks/claude-code/statusline.py +6 -1
  41. package/framework/hooks/claude-code/stop/validate-completion.js +1 -1
  42. package/framework/hooks/claude-code/user-prompt/enrich-prompt.js +1 -1
  43. package/framework/hooks/dev/check-sync-health.js +117 -0
  44. package/framework/hooks/dev/guard-version-numbers.js +57 -0
  45. package/framework/hooks/dev/sync-standards-registry.js +60 -0
  46. package/framework/hooks/dev/sync-template-registry.js +60 -0
  47. package/framework/hooks/dev/validate-skill-format.js +70 -0
  48. package/framework/hooks/dev/validate-standard-format.js +73 -0
  49. package/framework/hooks/shared/payload-utils.js +39 -0
  50. package/framework/hooks/shared/state-reader.js +25 -1
  51. package/framework/rules/morph-workflow.md +1 -1
  52. package/framework/skills/level-0-meta/morph-init/SKILL.md +216 -0
  53. package/framework/skills/level-0-meta/morph-replicate/SKILL.md +4 -4
  54. package/framework/skills/level-0-meta/tool-usage-guide/SKILL.md +4 -4
  55. package/framework/skills/level-0-meta/verification-before-completion/SKILL.md +1 -1
  56. package/framework/skills/level-1-workflows/phase-clarify/SKILL.md +192 -191
  57. package/framework/skills/level-1-workflows/phase-codebase-analysis/SKILL.md +181 -180
  58. package/framework/skills/level-1-workflows/phase-design/SKILL.md +339 -338
  59. package/framework/skills/level-1-workflows/phase-implement/SKILL.md +254 -253
  60. package/framework/skills/level-1-workflows/phase-setup/SKILL.md +168 -170
  61. package/framework/skills/level-1-workflows/phase-tasks/SKILL.md +284 -283
  62. package/framework/skills/level-1-workflows/phase-uiux/SKILL.md +246 -245
  63. package/framework/templates/examples/design-system-examples.md +1 -1
  64. package/framework/templates/ui/FluentDesignTheme.cs +1 -1
  65. package/framework/templates/ui/MudTheme.cs +1 -1
  66. package/framework/templates/ui/design-system.css +1 -1
  67. package/package.json +4 -2
  68. package/scripts/bump-version.js +248 -0
  69. package/scripts/install-dev-hooks.js +138 -0
  70. package/src/commands/agents/index.js +1 -2
  71. package/src/commands/index.js +13 -16
  72. package/src/commands/project/doctor.js +100 -14
  73. package/src/commands/project/index.js +7 -10
  74. package/src/commands/project/init.js +398 -555
  75. package/src/commands/project/install-plugin-cmd.js +28 -0
  76. package/src/commands/project/setup-infra-cmd.js +12 -0
  77. package/src/commands/project/tutorial.js +115 -0
  78. package/src/commands/project/update.js +22 -37
  79. package/src/commands/state/approve.js +213 -221
  80. package/src/commands/state/index.js +0 -1
  81. package/src/commands/state/state.js +337 -365
  82. package/src/commands/templates/index.js +0 -4
  83. package/src/commands/trust/trust.js +1 -93
  84. package/src/commands/utils/index.js +1 -5
  85. package/src/commands/validation/index.js +1 -5
  86. package/src/core/registry/command-registry.js +11 -285
  87. package/src/core/state/state-manager.js +5 -2
  88. package/src/lib/detectors/index.js +81 -87
  89. package/src/lib/detectors/structure-detector.js +275 -273
  90. package/src/lib/generators/recap-generator.js +232 -225
  91. package/src/lib/installers/mcp-installer.js +18 -3
  92. package/src/scripts/global-install.js +34 -0
  93. package/src/scripts/install-plugin.js +126 -0
  94. package/src/scripts/setup-infra.js +203 -0
  95. package/src/utils/agents-installer.js +10 -1
  96. package/src/utils/hooks-installer.js +70 -17
  97. package/CLAUDE.md +0 -77
  98. package/docs/claude-alignment-report.md +0 -137
  99. package/docs/examples/order-management/contracts.cs +0 -84
  100. package/docs/examples/order-management/proposal.md +0 -24
  101. package/docs/examples/order-management/spec.md +0 -162
  102. package/src/commands/feature/create-story.js +0 -362
  103. package/src/commands/feature/index.js +0 -6
  104. package/src/commands/feature/shard-spec.js +0 -225
  105. package/src/commands/feature/sprint-status.js +0 -250
  106. package/src/commands/generation/generate-onboarding.js +0 -169
  107. package/src/commands/generation/generate.js +0 -276
  108. package/src/commands/generation/index.js +0 -5
  109. package/src/commands/learning/capture-pattern.js +0 -121
  110. package/src/commands/learning/index.js +0 -5
  111. package/src/commands/learning/search-patterns.js +0 -126
  112. package/src/commands/mcp/mcp.js +0 -102
  113. package/src/commands/project/changes.js +0 -66
  114. package/src/commands/project/cost.js +0 -179
  115. package/src/commands/project/detect.js +0 -114
  116. package/src/commands/project/diff.js +0 -278
  117. package/src/commands/project/revert.js +0 -173
  118. package/src/commands/project/standards.js +0 -80
  119. package/src/commands/project/sync.js +0 -167
  120. package/src/commands/project/update-agents.js +0 -23
  121. package/src/commands/state/rollback-phase.js +0 -185
  122. package/src/commands/templates/template-customize.js +0 -87
  123. package/src/commands/templates/template-list.js +0 -114
  124. package/src/commands/templates/template-show.js +0 -129
  125. package/src/commands/templates/template-validate.js +0 -91
  126. package/src/commands/utils/troubleshoot.js +0 -222
  127. package/src/commands/validation/analyze-blazor-concurrency.js +0 -193
  128. package/src/commands/validation/lint-fluent.js +0 -352
  129. package/src/commands/validation/validate-blazor-state.js +0 -210
  130. package/src/commands/validation/validate-blazor.js +0 -156
  131. package/src/commands/validation/validate-css.js +0 -84
  132. package/src/lib/detectors/conversation-analyzer.js +0 -163
  133. package/src/lib/learning/index.js +0 -7
  134. package/src/lib/learning/learning-system.js +0 -520
  135. package/src/lib/troubleshooting/index.js +0 -8
  136. package/src/lib/troubleshooting/troubleshoot-grep.js +0 -198
  137. package/src/lib/troubleshooting/troubleshoot-index.js +0 -144
  138. package/src/llm/environment-detector.js +0 -43
@@ -0,0 +1,216 @@
1
+ ---
2
+ name: morph-init
3
+ description: >
4
+ LLM-powered project initialization. Installs morph-spec infrastructure if
5
+ needed, auto-installs required plugins (superpowers, context7), analyzes any
6
+ project structure intelligently, generates rich context/README.md and
7
+ config.json, and configures MCPs. Use once per project after installing
8
+ @polymorphism-tech/morph-spec. Re-run with /morph-init refresh to update
9
+ context as the project evolves.
10
+ argument-hint: "[refresh]"
11
+ user-invocable: true
12
+ allowed-tools: Read, Write, Edit, Bash, Glob, Grep
13
+ ---
14
+
15
+ # morph-init — LLM-Powered Project Initialization
16
+
17
+ > Run once after `npm install -g @polymorphism-tech/morph-spec`.
18
+ > Re-run as `/morph-init refresh` when your project evolves.
19
+
20
+ ---
21
+
22
+ ## Step 0 — Required Plugins
23
+
24
+ Check for required Claude Code plugins: **superpowers** and **context7**.
25
+
26
+ Read `~/.claude/plugins/installed_plugins.json` and check for:
27
+ - `superpowers@claude-plugins-official`
28
+ - `context7@claude-plugins-official`
29
+
30
+ For each missing plugin, run:
31
+
32
+ ```bash
33
+ morph-spec install-plugin superpowers
34
+ morph-spec install-plugin context7
35
+ ```
36
+
37
+ **If the command succeeds:** `✓ {plugin} installed. Restart Claude Code after /morph-init completes.`
38
+
39
+ **If the command fails:** Show this and **STOP** — do not continue:
40
+
41
+ ```
42
+ ┌─────────────────────────────────────────────────────────────┐
43
+ │ Plugin {plugin} requires manual installation: │
44
+ │ │
45
+ │ 1. Claude Code → Settings (Cmd/Ctrl+,) → Extensions │
46
+ │ 2. Browse → search "{plugin}" → Install │
47
+ │ 3. Restart Claude Code │
48
+ │ 4. Re-run /morph-init │
49
+ └─────────────────────────────────────────────────────────────┘
50
+ ```
51
+
52
+ Both `superpowers` and `context7` are required. Do not continue if either is missing.
53
+
54
+ ---
55
+
56
+ ## Step 1 — Infrastructure
57
+
58
+ Check if `.morph/` exists in the current directory.
59
+
60
+ **If MISSING:**
61
+ ```bash
62
+ morph-spec setup-infra
63
+ ```
64
+ Output confirms: `✓ MORPH-SPEC infrastructure installed.`
65
+
66
+ **If EXISTS and argument is `refresh`:** Continue — will overwrite context and config.
67
+
68
+ **If EXISTS and no argument:**
69
+ Ask: *"MORPH already initialized. Refresh context and config? (y/n)"*
70
+ If `n` → STOP.
71
+
72
+ ---
73
+
74
+ ## Step 2 — Analyze Project
75
+
76
+ Gather evidence to build a stack map. Run these in parallel:
77
+
78
+ | Tool | Pattern | Signal |
79
+ |------|---------|--------|
80
+ | `Glob` | `**/package.json` | Detect next, supabase, clerk, stripe in deps |
81
+ | `Glob` | `**/*.csproj` | .NET projects at any depth |
82
+ | `Glob` | `**/next.config.{js,ts,mjs}` | Next.js in any subdirectory |
83
+ | `Glob` | `**/components.json` | shadcn/ui |
84
+ | `Glob` | `**/docker-compose*.yml` | Container services |
85
+ | `Glob` | `database/migrations/**` | Supabase local dev |
86
+ | `Glob` | `supabase/**` | Supabase project config |
87
+ | `Glob` | `**/*.razor` | Blazor |
88
+ | `Read` | `.env.example` | Env vars reveal integrations |
89
+ | `Read` | `README.md` | Existing project description |
90
+ | `Grep` | `@supabase/supabase-js` | Supabase dep in any package.json |
91
+ | `Grep` | `clerk\|auth0\|nextauth` | Auth provider |
92
+ | `Grep` | `stripe\|asaas` | Payment provider |
93
+
94
+ Read each found `package.json` for dependency names. Build an **evidence map**:
95
+
96
+ ```
97
+ stack: [nextjs, dotnet, ...]
98
+ integrations: [supabase, docker, clerk, ...]
99
+ uiLibrary: shadcn | fluent-ui | mudblazor | null
100
+ monorepo: true | false
101
+ frontendPath: src/frontend (if monorepo)
102
+ backendPath: src/backend (if monorepo)
103
+ ```
104
+
105
+ ---
106
+
107
+ ## Step 3 — Ask Targeted Questions
108
+
109
+ **Rule: only ask what cannot be inferred with ≥90% confidence from files.**
110
+
111
+ Ask at most 3 questions, only those that apply:
112
+
113
+ | # | Question | Condition | Purpose |
114
+ |---|----------|-----------|---------|
115
+ | 1 | *"Em uma frase: qual é o objetivo principal do **[ProjectName]**?"* | Always | README.md Overview |
116
+ | 2 | *"Confirmo: frontend em `{frontendPath}`, backend em `{backendPath}`. Correto?"* | Monorepo detected | Validate paths before persisting |
117
+ | 3 | *"Supabase Cloud (managed) ou self-hosted?"* | Supabase detected | MCP URL configuration |
118
+
119
+ Do **not** ask about technology already confirmed by file evidence.
120
+
121
+ ---
122
+
123
+ ## Step 4 — Generate `context/README.md`
124
+
125
+ Write `.morph/context/README.md`:
126
+
127
+ ```markdown
128
+ # [ProjectName] — Project Context
129
+
130
+ ## Overview
131
+ [Answer from question 1]
132
+
133
+ ## Tech Stack
134
+ | Layer | Technology | Location |
135
+ |------------|-----------|----------|
136
+ [One row per detected layer — frontend, backend, database, UI library, auth, payments]
137
+
138
+ ## Architecture
139
+ [monorepo / single-stack / etc — describe layers and responsibilities]
140
+
141
+ ## Key Integrations
142
+ [Per integration: service → purpose → detected via: evidence file/dep]
143
+
144
+ ## Agent Notes
145
+ [Patterns from eslint/tsconfig/.editorconfig, important paths,
146
+ project-specific conventions for MORPH agents]
147
+ ```
148
+
149
+ ---
150
+
151
+ ## Step 5 — Update `config.json`
152
+
153
+ Read `.morph/config/config.json` and merge into `project`:
154
+
155
+ ```json
156
+ {
157
+ "framework": "global",
158
+ "frameworkVersion": "[current version]",
159
+ "project": {
160
+ "name": "[ProjectName]",
161
+ "description": "[answer from question 1]",
162
+ "stack": "[stacks joined with +, e.g. nextjs+dotnet]",
163
+ "architecture": "[monorepo | single-stack | detected pattern]",
164
+ "uiLibrary": "[detected or null]",
165
+ "integrations": ["supabase", "docker", "clerk"],
166
+ "frontendPath": "[path if monorepo, else omit]",
167
+ "backendPath": "[path if monorepo, else omit]"
168
+ }
169
+ }
170
+ ```
171
+
172
+ ---
173
+
174
+ ## Step 6 — Configure MCPs
175
+
176
+ For each detected integration with an available MCP:
177
+
178
+ **Supabase detected:**
179
+ > *"Configure Supabase MCP now? I'll need `SUPABASE_URL` and `SERVICE_ROLE_KEY`."*
180
+ - YES → collect credentials → add to `.claude/settings.local.json` under `mcpServers`
181
+ - NO → show snippet + `morph-spec mcp setup supabase`
182
+
183
+ **GitHub:**
184
+ > *"Configure GitHub MCP? I'll need a `GITHUB_PERSONAL_ACCESS_TOKEN`."*
185
+ - YES/NO → same pattern
186
+
187
+ Only offer Figma, Docker, Azure if explicitly detected in `.env.example`.
188
+
189
+ ---
190
+
191
+ ## Step 7 — Final Output
192
+
193
+ Before printing the summary, check `~/.claude/settings.local.json` for `env.CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS`. If set to `"1"`, mark Agent Teams as enabled; otherwise show the warning.
194
+
195
+ ```
196
+ ✓ Plugins: superpowers ✓ context7 ✓
197
+ ✓ Infrastructure: .morph/ structure, hooks, agents, rules, skills
198
+ ✓ Agents: [N] total ([T1] orchestrators, [T2] domain leaders, [S] specialists)
199
+ ✓ context/README.md generated
200
+ ✓ config.json updated
201
+ Stack: [stack] | Architecture: [architecture]
202
+ Integrations: [list]
203
+ ✓ MCPs: [configured list]
204
+
205
+ [If CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS = "1":]
206
+ ✓ Agent Teams: enabled
207
+
208
+ [If CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS is NOT set:]
209
+ ⚠ Agent Teams not enabled. Multi-agent workflows require:
210
+ ~/.claude/settings.local.json → {"env": {"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"}}
211
+
212
+ [If any plugin was newly installed:]
213
+ ○ Restart Claude Code to activate newly installed plugins.
214
+
215
+ Next: /morph-proposal [feature-name]
216
+ ```
@@ -77,7 +77,7 @@ Gerar lista de telas para implementar na ordem correta:
77
77
  ### T001: Setup Design System
78
78
  - Criar/atualizar wwwroot/css/design-system.css
79
79
  - Adicionar todas as classes CSS listadas
80
- - Validar com `morph-spec validate-css`
80
+ - Validar com `morph-spec validate`
81
81
 
82
82
  ### T002: {Nome da Tela 1}
83
83
  - Ler: {prototype-path}/{tela1}.html
@@ -92,7 +92,7 @@ Gerar lista de telas para implementar na ordem correta:
92
92
 
93
93
  ### TXXX: Validacao Final
94
94
  - Build completo
95
- - `morph-spec validate-css`
95
+ - `morph-spec validate`
96
96
  - Testar responsividade
97
97
  ```
98
98
 
@@ -130,7 +130,7 @@ Para cada tela, seguir este fluxo:
130
130
 
131
131
  6. **Validar CSS**
132
132
  ```bash
133
- morph-spec validate-css src/MyApp.Web
133
+ morph-spec validate src/MyApp.Web
134
134
  ```
135
135
 
136
136
  ---
@@ -217,4 +217,4 @@ Mapeamento HTML → Blazor:
217
217
 
218
218
  ---
219
219
 
220
- *MORPH-SPEC v2.2.0 by Polymorphism Tech*
220
+ *MORPH-SPEC by Polymorphism Tech*
@@ -59,7 +59,7 @@ allowed-tools: Read, Write, Edit, Bash, Glob, Grep
59
59
  | Read project context | **Read** `.morph/context/README.md` | Single known file |
60
60
  | Read config | **Read** `.morph/config.json` | Single known file |
61
61
  | Find existing features | **Glob** `.morph/features/*/0-proposal/proposal.md` | Pattern search |
62
- | Detect project stack | **Bash** `npx morph-spec detect-agents --json "..."` | CLI command |
62
+ | Detect project stack | **Read** `.morph/framework/agents.json` → match keywords → **Bash** `npx morph-spec state add-agent` | agents.json is the source of truth |
63
63
  | Research external requirement | **WebSearch** | Current information needed |
64
64
  | Render proposal template | **Bash** `npx morph-spec template render docs/proposal ...` | CLI command |
65
65
  | Update state | **Bash** `npx morph-spec state mark-output ...` | CLI command |
@@ -80,7 +80,7 @@ allowed-tools: Read, Write, Edit, Bash, Glob, Grep
80
80
  | Action | Tool | Why |
81
81
  |--------|------|-----|
82
82
  | Verify feature state | **Bash** `npx morph-spec state get {feature}` | CLI command |
83
- | Detect agents + standards | **Bash** `npx morph-spec detect-agents --json "..."` | CLI command, returns JSON with standards |
83
+ | Detect agents + standards | **Read** `.morph/framework/agents.json` → match keywords → **Bash** `npx morph-spec state add-agent {f} {id}` per match | No CLI command read agents.json directly |
84
84
  | Read project context | **Read** `.morph/context/README.md` | Single file |
85
85
  | Read config | **Read** `.morph/config.json` | Single file |
86
86
  | Scan project structure | **Glob** `src/**/*.{ts,tsx,cs}` | Understand codebase layout |
@@ -90,9 +90,9 @@ allowed-tools: Read, Write, Edit, Bash, Glob, Grep
90
90
  **MCPs used:** GitHub (optional — for repo metadata).
91
91
 
92
92
  **Anti-patterns:**
93
- - ❌ Task agent to detect project stack (detect-agents CLI does this)
93
+ - ❌ Calling `detect-agents` CLI (it doesn't exist read `.morph/framework/agents.json` directly)
94
+ - ❌ Task agent to detect project stack (read agents.json and match keywords inline)
94
95
  - ❌ WebSearch for project info (it's local, use Read/Glob)
95
- - ❌ Manual parsing of agents.json (detect-agents handles it)
96
96
 
97
97
  ---
98
98
 
@@ -7,7 +7,7 @@ description: Phase-specific verification checklists and morph-spec validation co
7
7
 
8
8
  > Never claim work is complete without running verification. Evidence before assertions.
9
9
  >
10
- > **Script:** Run `node scripts/check-phase-outputs.mjs <feature> [phase]` to check required output files exist.
10
+ > **Script:** Run `node .claude/skills/verification-before-completion/scripts/check-phase-outputs.mjs <feature> [phase]` to check required output files exist.
11
11
 
12
12
  ## When to Use
13
13