@polymorphism-tech/morph-spec 4.7.0 → 4.7.2

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 (232) hide show
  1. package/.morph/.morphversion +5 -0
  2. package/.morph/analytics/threads-log.jsonl +5 -0
  3. package/.morph/config/config.json +8 -0
  4. package/.morph/framework/agents.json +1815 -0
  5. package/.morph/framework/hooks/README.md +205 -0
  6. package/.morph/framework/hooks/claude-code/notification/approval-reminder.js +54 -0
  7. package/.morph/framework/hooks/claude-code/post-tool-use/dispatch.js +83 -0
  8. package/.morph/framework/hooks/claude-code/post-tool-use/handle-tool-failure.js +42 -0
  9. package/.morph/framework/hooks/claude-code/pre-compact/save-morph-context.js +61 -0
  10. package/.morph/framework/hooks/claude-code/pre-tool-use/enforce-phase-writes.js +71 -0
  11. package/.morph/framework/hooks/claude-code/pre-tool-use/protect-readonly-files.js +58 -0
  12. package/.morph/framework/hooks/claude-code/pre-tool-use/protect-spec-files.js +64 -0
  13. package/.morph/framework/hooks/claude-code/session-start/inject-morph-context.js +94 -0
  14. package/.morph/framework/hooks/claude-code/statusline.py +538 -0
  15. package/.morph/framework/hooks/claude-code/statusline.sh +7 -0
  16. package/.morph/framework/hooks/claude-code/stop/validate-completion.js +88 -0
  17. package/.morph/framework/hooks/claude-code/user-prompt/enrich-prompt.js +91 -0
  18. package/.morph/framework/hooks/git/commit-msg/conventional-commits.sh +33 -0
  19. package/.morph/framework/hooks/git/pre-commit/agents.sh +25 -0
  20. package/.morph/framework/hooks/git/pre-commit/orchestrator.sh +64 -0
  21. package/.morph/framework/hooks/git/pre-commit/specs.sh +50 -0
  22. package/.morph/framework/hooks/git/pre-push/run-tests.sh +44 -0
  23. package/.morph/framework/hooks/shared/hook-response.js +45 -0
  24. package/.morph/framework/hooks/shared/phase-utils.js +129 -0
  25. package/.morph/framework/hooks/shared/state-reader.js +138 -0
  26. package/.morph/framework/hooks/shared/stdin-reader.js +26 -0
  27. package/.morph/framework/standards/STANDARDS.json +933 -0
  28. package/.morph/framework/standards/ai-agents/blazor-ui.md +364 -0
  29. package/.morph/framework/standards/ai-agents/production.md +415 -0
  30. package/.morph/framework/standards/ai-agents/setup.md +418 -0
  31. package/.morph/framework/standards/ai-agents/team-orchestration.md +479 -0
  32. package/.morph/framework/standards/ai-agents/workflows.md +354 -0
  33. package/.morph/framework/standards/architecture/ddd/aggregates.md +120 -0
  34. package/.morph/framework/standards/architecture/ddd/bounded-contexts.md +105 -0
  35. package/.morph/framework/standards/architecture/ddd/complexity-levels.md +108 -0
  36. package/.morph/framework/standards/architecture/ddd/entities.md +99 -0
  37. package/.morph/framework/standards/architecture/ddd/ubiquitous-language.md +58 -0
  38. package/.morph/framework/standards/architecture/ddd/value-objects.md +124 -0
  39. package/.morph/framework/standards/backend/api/minimal-api.md +494 -0
  40. package/.morph/framework/standards/backend/api/rest.md +492 -0
  41. package/.morph/framework/standards/backend/api/validation.md +88 -0
  42. package/.morph/framework/standards/backend/authentication/passkeys.md +428 -0
  43. package/.morph/framework/standards/backend/database/ef-core.md +199 -0
  44. package/.morph/framework/standards/backend/database/migrations.md +393 -0
  45. package/.morph/framework/standards/backend/database/postgresql/database.md +352 -0
  46. package/.morph/framework/standards/backend/database/repository-patterns.md +528 -0
  47. package/.morph/framework/standards/backend/database/vector-search-rag.md +541 -0
  48. package/.morph/framework/standards/backend/dotnet/async.md +366 -0
  49. package/.morph/framework/standards/backend/dotnet/core.md +117 -0
  50. package/.morph/framework/standards/backend/dotnet/di.md +439 -0
  51. package/.morph/framework/standards/backend/dotnet/program-cs-checklist.md +92 -0
  52. package/.morph/framework/standards/backend/integrations/asaas/asaas-api.md +216 -0
  53. package/.morph/framework/standards/backend/integrations/clerk/clerk-auth.md +290 -0
  54. package/.morph/framework/standards/backend/integrations/hangfire/hangfire-jobs.md +350 -0
  55. package/.morph/framework/standards/backend/integrations/resend/resend-email.md +385 -0
  56. package/.morph/framework/standards/context/analytics.md +96 -0
  57. package/.morph/framework/standards/context/bundles.md +110 -0
  58. package/.morph/framework/standards/context/priming.md +78 -0
  59. package/.morph/framework/standards/core/architecture.md +185 -0
  60. package/.morph/framework/standards/core/coding.md +214 -0
  61. package/.morph/framework/standards/core/git-branching-strategy.md +403 -0
  62. package/.morph/framework/standards/core/git.md +185 -0
  63. package/.morph/framework/standards/core/testing.md +295 -0
  64. package/.morph/framework/standards/data/nosql/blob-storage.md +102 -0
  65. package/.morph/framework/standards/data/nosql/cache/redis.md +97 -0
  66. package/.morph/framework/standards/data/nosql/cosmos-db.md +118 -0
  67. package/.morph/framework/standards/data/vector-search/azure-ai-search.md +121 -0
  68. package/.morph/framework/standards/data/vector-search/rag-chunking.md +104 -0
  69. package/.morph/framework/standards/frontend/blazor/design-checklist.md +222 -0
  70. package/.morph/framework/standards/frontend/blazor/fluent-ui-setup.md +595 -0
  71. package/.morph/framework/standards/frontend/blazor/fluent-ui.md +137 -0
  72. package/.morph/framework/standards/frontend/blazor/html-conversion.md +184 -0
  73. package/.morph/framework/standards/frontend/blazor/lifecycle.md +195 -0
  74. package/.morph/framework/standards/frontend/blazor/pitfalls.md +198 -0
  75. package/.morph/framework/standards/frontend/blazor/state.md +191 -0
  76. package/.morph/framework/standards/frontend/design-system/animations.md +151 -0
  77. package/.morph/framework/standards/frontend/design-system/naming.md +64 -0
  78. package/.morph/framework/standards/frontend/nextjs/app-router.md +123 -0
  79. package/.morph/framework/standards/frontend/nextjs/components.md +132 -0
  80. package/.morph/framework/standards/frontend/nextjs/data-fetching.md +126 -0
  81. package/.morph/framework/standards/frontend/nextjs/forms.md +128 -0
  82. package/.morph/framework/standards/frontend/nextjs/naming-conventions.md +67 -0
  83. package/.morph/framework/standards/frontend/nextjs/nextjs-patterns.md +215 -0
  84. package/.morph/framework/standards/frontend/nextjs/project-structure.md +102 -0
  85. package/.morph/framework/standards/frontend/nextjs/state-management.md +72 -0
  86. package/.morph/framework/standards/frontend/nextjs/testing.md +111 -0
  87. package/.morph/framework/standards/infrastructure/azure/azure.md +624 -0
  88. package/.morph/framework/standards/infrastructure/azure/bicep/bicep-patterns.md +422 -0
  89. package/.morph/framework/standards/infrastructure/azure/devops/azure-devops-setup.md +516 -0
  90. package/.morph/framework/standards/infrastructure/azure/devops/local-development.md +520 -0
  91. package/.morph/framework/standards/infrastructure/azure/services/functions.md +486 -0
  92. package/.morph/framework/standards/infrastructure/azure/services/service-bus.md +459 -0
  93. package/.morph/framework/standards/infrastructure/azure/services/storage.md +407 -0
  94. package/.morph/framework/standards/infrastructure/docker/easypanel-deploy.md +196 -0
  95. package/.morph/framework/standards/infrastructure/supabase/mcp-setup.md +252 -0
  96. package/.morph/framework/standards/infrastructure/supabase/supabase-auth.md +176 -0
  97. package/.morph/framework/standards/infrastructure/supabase/supabase-pgvector.md +169 -0
  98. package/.morph/framework/standards/infrastructure/supabase/supabase-rls.md +184 -0
  99. package/.morph/framework/standards/infrastructure/supabase/supabase-storage.md +153 -0
  100. package/.morph/framework/standards/integration/api/graphql.md +91 -0
  101. package/.morph/framework/standards/integration/api/grpc.md +114 -0
  102. package/.morph/framework/standards/integration/api/rest-design.md +95 -0
  103. package/.morph/framework/standards/integration/event-driven/cqrs.md +101 -0
  104. package/.morph/framework/standards/integration/event-driven/event-sourcing.md +124 -0
  105. package/.morph/framework/standards/integration/event-driven/service-bus.md +95 -0
  106. package/.morph/framework/standards/integration/mcp/mcp-tools.md +384 -0
  107. package/.morph/framework/standards/observability/logging.md +131 -0
  108. package/.morph/framework/standards/observability/metrics.md +121 -0
  109. package/.morph/framework/standards/observability/monitoring.md +114 -0
  110. package/.morph/framework/standards/observability/tracing.md +132 -0
  111. package/.morph/framework/standards/workflows/parallel-execution.md +112 -0
  112. package/.morph/framework/standards/workflows/thread-management.md +113 -0
  113. package/.morph/framework/templates/.idea/morph-templates.xml +92 -0
  114. package/.morph/framework/templates/.vscode/morph-templates.code-snippets +186 -0
  115. package/.morph/framework/templates/IDE-SNIPPETS.md +266 -0
  116. package/.morph/framework/templates/README.md +814 -0
  117. package/.morph/framework/templates/REGISTRY.json +1888 -0
  118. package/.morph/framework/templates/code/dotnet/backend/repository.cs +141 -0
  119. package/.morph/framework/templates/code/dotnet/backend/service.cs +139 -0
  120. package/.morph/framework/templates/code/dotnet/contracts/Commands.cs +74 -0
  121. package/.morph/framework/templates/code/dotnet/contracts/Entities.cs +25 -0
  122. package/.morph/framework/templates/code/dotnet/contracts/Queries.cs +74 -0
  123. package/.morph/framework/templates/code/dotnet/contracts/README.md +74 -0
  124. package/.morph/framework/templates/code/dotnet/contracts/api-contracts.cs +173 -0
  125. package/.morph/framework/templates/code/dotnet/contracts/contracts-level1.cs +69 -0
  126. package/.morph/framework/templates/code/dotnet/contracts/contracts-level2.cs +86 -0
  127. package/.morph/framework/templates/code/dotnet/contracts/contracts-level3.cs +41 -0
  128. package/.morph/framework/templates/code/dotnet/database/migration.cs +83 -0
  129. package/.morph/framework/templates/code/dotnet/frontend/component.razor +239 -0
  130. package/.morph/framework/templates/code/dotnet/jobs/agent.cs +163 -0
  131. package/.morph/framework/templates/code/dotnet/jobs/job.cs +171 -0
  132. package/.morph/framework/templates/code/dotnet/test.cs +239 -0
  133. package/.morph/framework/templates/code/sql/rls-policy.sql +57 -0
  134. package/.morph/framework/templates/code/sql/supabase-migration.sql +100 -0
  135. package/.morph/framework/templates/code/sql/supabase-migration.template.sql +113 -0
  136. package/.morph/framework/templates/code/typescript/contracts.ts +168 -0
  137. package/.morph/framework/templates/context/CONTEXT-FEATURE.md +276 -0
  138. package/.morph/framework/templates/context/CONTEXT.md +181 -0
  139. package/.morph/framework/templates/docs/clarifications.md +253 -0
  140. package/.morph/framework/templates/docs/onboarding.md +123 -0
  141. package/.morph/framework/templates/docs/proposal.md +182 -0
  142. package/.morph/framework/templates/docs/schema-analysis.md +119 -0
  143. package/.morph/framework/templates/docs/spec.md +198 -0
  144. package/.morph/framework/templates/docs/ui-components.md +124 -0
  145. package/.morph/framework/templates/docs/ui-design-system.md +76 -0
  146. package/.morph/framework/templates/docs/ui-flows.md +167 -0
  147. package/.morph/framework/templates/docs/ui-mockups.md +98 -0
  148. package/.morph/framework/templates/docs/user-stories.md +34 -0
  149. package/.morph/framework/templates/examples/design-system-examples.md +357 -0
  150. package/.morph/framework/templates/examples/spec-examples.md +90 -0
  151. package/.morph/framework/templates/feature/decisions.md +187 -0
  152. package/.morph/framework/templates/feature/recap.md +146 -0
  153. package/.morph/framework/templates/feature/tasks.md +199 -0
  154. package/.morph/framework/templates/frontend/nextjs/Dockerfile.nextjs.hbs +43 -0
  155. package/.morph/framework/templates/frontend/nextjs/client-component.tsx.hbs +26 -0
  156. package/.morph/framework/templates/frontend/nextjs/env.mjs.hbs +32 -0
  157. package/.morph/framework/templates/frontend/nextjs/feature-form.tsx.hbs +56 -0
  158. package/.morph/framework/templates/frontend/nextjs/page.tsx.hbs +22 -0
  159. package/.morph/framework/templates/frontend/nextjs/tsconfig.json.hbs +26 -0
  160. package/.morph/framework/templates/frontend/nextjs/use-feature.ts.hbs +54 -0
  161. package/.morph/framework/templates/infrastructure/azure/Dockerfile.example +82 -0
  162. package/.morph/framework/templates/infrastructure/azure/README.md +286 -0
  163. package/.morph/framework/templates/infrastructure/azure/app-insights.bicep +63 -0
  164. package/.morph/framework/templates/infrastructure/azure/app-service.bicep +164 -0
  165. package/.morph/framework/templates/infrastructure/azure/container-app-env.bicep +49 -0
  166. package/.morph/framework/templates/infrastructure/azure/container-app.bicep +156 -0
  167. package/.morph/framework/templates/infrastructure/azure/deploy-checklist.md +426 -0
  168. package/.morph/framework/templates/infrastructure/azure/deploy.ps1 +229 -0
  169. package/.morph/framework/templates/infrastructure/azure/deploy.sh +208 -0
  170. package/.morph/framework/templates/infrastructure/azure/key-vault.bicep +91 -0
  171. package/.morph/framework/templates/infrastructure/azure/main.bicep +189 -0
  172. package/.morph/framework/templates/infrastructure/azure/parameters.dev.json +29 -0
  173. package/.morph/framework/templates/infrastructure/azure/parameters.prod.json +29 -0
  174. package/.morph/framework/templates/infrastructure/azure/parameters.staging.json +29 -0
  175. package/.morph/framework/templates/infrastructure/azure/sql-database.bicep +103 -0
  176. package/.morph/framework/templates/infrastructure/azure/storage.bicep +106 -0
  177. package/.morph/framework/templates/infrastructure/docker/Dockerfile.template +58 -0
  178. package/.morph/framework/templates/infrastructure/docker/docker-compose.template.yml +67 -0
  179. package/.morph/framework/templates/infrastructure/docker/dockerfile-api.dockerfile +38 -0
  180. package/.morph/framework/templates/infrastructure/docker/dockerfile-web.dockerfile +48 -0
  181. package/.morph/framework/templates/infrastructure/docker/easypanel.template.json +54 -0
  182. package/.morph/framework/templates/infrastructure/github/README.md +593 -0
  183. package/.morph/framework/templates/infrastructure/github/actions/azure-auth/action.yml.hbs +22 -0
  184. package/.morph/framework/templates/infrastructure/github/actions/docker-build-push/action.yml.hbs +45 -0
  185. package/.morph/framework/templates/infrastructure/github/actions/health-check/action.yml.hbs +27 -0
  186. package/.morph/framework/templates/infrastructure/github/workflows/deploy-azure-app-service.yml.hbs +61 -0
  187. package/.morph/framework/templates/infrastructure/github/workflows/deploy-easypanel.yml.hbs +31 -0
  188. package/.morph/framework/templates/infrastructure/github/workflows/docker-build-push.yml.hbs +59 -0
  189. package/.morph/framework/templates/infrastructure/github/workflows/dotnet-build.yml.hbs +39 -0
  190. package/.morph/framework/templates/integrations/asaas-client.cs +387 -0
  191. package/.morph/framework/templates/integrations/asaas-webhook.cs +351 -0
  192. package/.morph/framework/templates/integrations/azure-identity-config.cs +288 -0
  193. package/.morph/framework/templates/integrations/clerk-config.cs +258 -0
  194. package/.morph/framework/templates/meta-prompts/fusion/fusion-agent.md +76 -0
  195. package/.morph/framework/templates/meta-prompts/fusion/fusion-aggregator.md +100 -0
  196. package/.morph/framework/templates/meta-prompts/hops/hop-retry.md +78 -0
  197. package/.morph/framework/templates/meta-prompts/hops/hop-validation.md +97 -0
  198. package/.morph/framework/templates/meta-prompts/hops/hop-wrapper.md +36 -0
  199. package/.morph/framework/templates/meta-prompts/parallel-workers/parallel-coordinator.md +113 -0
  200. package/.morph/framework/templates/meta-prompts/parallel-workers/parallel-worker.md +80 -0
  201. package/.morph/framework/templates/meta-prompts/squad-leaders/backend-squad.md +90 -0
  202. package/.morph/framework/templates/meta-prompts/squad-leaders/frontend-squad.md +126 -0
  203. package/.morph/framework/templates/meta-prompts/squad-leaders/squad-leader.md +43 -0
  204. package/.morph/framework/templates/meta-prompts/validators/checkpoint-validator.md +107 -0
  205. package/.morph/framework/templates/meta-prompts/validators/pre-commit-validator.md +95 -0
  206. package/.morph/framework/templates/project-structure/dotnet-ddd.md +70 -0
  207. package/.morph/framework/templates/saas/subscription.cs +347 -0
  208. package/.morph/framework/templates/saas/tenant.cs +338 -0
  209. package/.morph/framework/templates/state.template.json +17 -0
  210. package/.morph/framework/templates/ui/FluentDesignTheme.cs +149 -0
  211. package/.morph/framework/templates/ui/MudTheme.cs +281 -0
  212. package/.morph/framework/templates/ui/design-system.css +226 -0
  213. package/.morph/logs/tool-failures.log +17 -0
  214. package/.morph/memory/pre-compact-2026-02-24T17-43-30-049Z.json +16 -0
  215. package/.morph/plans/eager-watching-bunny.md +105 -0
  216. package/.morph/plans/temporal-seeking-nebula.md +45 -0
  217. package/.morph/state.json +48 -0
  218. package/CLAUDE.md +1 -1
  219. package/README.md +119 -99
  220. package/bin/morph-spec.js +0 -9
  221. package/framework/CLAUDE.md +1 -1
  222. package/framework/hooks/README.md +10 -6
  223. package/framework/hooks/claude-code/notification/approval-reminder.js +2 -0
  224. package/framework/hooks/claude-code/post-tool-use/dispatch.js +1 -1
  225. package/framework/hooks/claude-code/stop/validate-completion.js +1 -1
  226. package/framework/hooks/claude-code/user-prompt/enrich-prompt.js +1 -1
  227. package/package.json +1 -1
  228. package/src/commands/project/init.js +15 -42
  229. package/src/commands/project/update.js +22 -37
  230. package/src/lib/installers/mcp-installer.js +18 -3
  231. package/src/utils/hooks-installer.js +5 -15
  232. package/src/commands/project/detect.js +0 -114
@@ -0,0 +1,105 @@
1
+ # Plan: Fix Statusline Not Being Installed
2
+
3
+ ## Context
4
+
5
+ `morph-spec init` is supposed to install the global statusline to `~/.claude/` so
6
+ it appears in every Claude Code session. Two bugs exist:
7
+
8
+ 1. **`update.js` never calls `installGlobalStatusline`** — running `morph-spec update`
9
+ leaves the statusline missing or stale, and there is no path for existing users to
10
+ get it without running `init` from scratch.
11
+ 2. **No success confirmation in `init.js` output** — after a successful installation the
12
+ "Files installed:" list never mentions `~/.claude/statusline.sh`, so users assume
13
+ it was skipped (especially since failures are silently swallowed by a bare `catch {}`).
14
+
15
+ Root cause confirmed by: reading `update.js` (no `installGlobalStatusline` import or call)
16
+ and `init.js` lines 462–505 (success block omits statusline entry). Tests for
17
+ `installGlobalStatusline` in isolation pass; there is no integration test covering the
18
+ init/update flow.
19
+
20
+ ---
21
+
22
+ ## Critical Files
23
+
24
+ | File | Change |
25
+ |------|--------|
26
+ | `src/commands/project/update.js` | Add `installGlobalStatusline` import + call |
27
+ | `src/commands/project/init.js` | Add `✓ ~/.claude/statusline.sh` to success output |
28
+ | `test/hooks/hooks-installer.test.js` | Already has good coverage — no change needed |
29
+ | `test/commands/init.test.js` | Add `statusline-installation` describe suite |
30
+
31
+ ---
32
+
33
+ ## Implementation Steps
34
+
35
+ ### 1. `update.js` — Add statusline installation
36
+
37
+ **File:** `src/commands/project/update.js`
38
+
39
+ **Import change** (line 27 — extend existing destructure):
40
+ ```js
41
+ import { installClaudeHooks, installGlobalStatusline } from '../../utils/claude-settings-manager.js';
42
+ ```
43
+
44
+ **Call** — insert after the CLAUDE.md sync block (after line 280, before "Update Claude
45
+ Code hooks" at line 282):
46
+ ```js
47
+ // Sync statusline globally to ~/.claude/
48
+ updateSpinner.text = 'Syncing statusline to ~/.claude/...';
49
+ const HOOKS_SRC = join(__dirname, '..', '..', '..', 'framework', 'hooks', 'claude-code');
50
+ try {
51
+ await installGlobalStatusline(HOOKS_SRC);
52
+ } catch {
53
+ // Non-critical: global dir may not be writable in all environments
54
+ logger.dim(' ⚠ Could not install statusline globally (non-critical)');
55
+ }
56
+ ```
57
+
58
+ **Success output** — add line after `.claude/CLAUDE.md` entry (around line 324):
59
+ ```js
60
+ logger.dim(' ✓ ~/.claude/statusline.sh (global statusline synced)');
61
+ ```
62
+
63
+ Note: `update.js` already uses `__dirname` (defined at line 6 via `fileURLToPath`),
64
+ so use `__dirname` instead of `import.meta.dirname` to stay consistent with the file.
65
+
66
+ ---
67
+
68
+ ### 2. `init.js` — Add statusline to success output
69
+
70
+ **File:** `src/commands/project/init.js`
71
+
72
+ After line 505 (`logger.dim(' ✓ .claude/agents/...')`), add:
73
+ ```js
74
+ logger.dim(' ✓ ~/.claude/statusline.sh (global statusline installed)');
75
+ ```
76
+
77
+ This line is unconditional — the installation is always attempted and the message
78
+ reflects the intent (mirrors how skills/agents are always listed even without a flag).
79
+
80
+ ---
81
+
82
+ ### 3. `test/commands/init.test.js` — Add statusline integration test suite
83
+
84
+ Add a new `describe('statusline-installation')` block that:
85
+ - Calls `installGlobalStatusline` directly with a `globalClaudeDirOverride` temp dir
86
+ and the real `framework/hooks/claude-code` source path
87
+ - Asserts `statusline.sh` and `statusline.py` were copied
88
+ - Asserts `settings.json` has a `statusLine` key pointing to `statusline.sh`
89
+
90
+ This mirrors the pattern used by the `rules-installation` suite.
91
+
92
+ ---
93
+
94
+ ## Verification
95
+
96
+ ```bash
97
+ # Run full test suite — must stay green (678+ pass, 0 fail)
98
+ node --test --test-concurrency=1
99
+
100
+ # Smoke test update path
101
+ node bin/morph-spec.js update --skip-detection --skip-mcp 2>&1 | grep -i statusline
102
+
103
+ # Manually verify ~/.claude/statusline.sh exists and settings.json has statusLine key
104
+ node -e "const s = require('fs').readFileSync(require('os').homedir()+'/.claude/settings.json','utf8'); console.log(JSON.parse(s).statusLine)"
105
+ ```
@@ -0,0 +1,45 @@
1
+ # Plan: Remove `detect` command and fix `init` for PowerShell execution
2
+
3
+ ## Context
4
+
5
+ `morph-spec init` is run from PowerShell (not inside Claude Code), so `detectClaudeCode()` always returns false, making step 13 a dead code branch that shows a confusing warning. `morph-spec detect` is registered but provides no additional value beyond what `init` already does with `detectProject()`. `--wizard` is referenced in messages but was never registered as a CLI option. This plan removes the dead code and makes `init` self-sufficient.
6
+
7
+ ## What changes
8
+
9
+ ### 1. Delete `src/commands/project/detect.js`
10
+ The command is obsolete — its functionality (stack/arch detection + saving to `.morph/project/context/`) is superseded by the `detectProject()` call already inside `init` at step 11c.
11
+
12
+ ### 2. `bin/morph-spec.js`
13
+ - Remove `import { detectCommand }` (line 14)
14
+ - Remove the `.command('detect')` block (lines 131–136)
15
+
16
+ ### 3. `src/commands/project/init.js`
17
+ - Remove imports: `AutoContextOrchestrator` (line 21), `detectClaudeCode` (line 22)
18
+ - **Remove step 13 entirely** (lines 509–540) — the entire `if (!options.skipDetection && detectClaudeCode())` / `else if` / `else` block
19
+ - Fix context README.md template (line 110): remove `Run \`morph-spec detect\`` sentence, replace with `Edit this file to describe your project context.`
20
+ - Fix Next Steps (line 470): remove `logger.step(1, 'Run detection: morph-spec detect')`, renumber remaining steps (step 1 → "Review .morph/config/config.json", step 2 → "Open project in VS Code with Claude Code", step 3 → "Start your first feature:")
21
+
22
+ ### 4. `src/commands/project/update.js`
23
+ - Remove imports: `AutoContextOrchestrator`, `detectClaudeCode` (lines ~3–4 in that file)
24
+ - Remove the `if (!options.skipDetection && detectClaudeCode())` / `else if` / `else` block (lines 331–363)
25
+
26
+ ## Files to modify
27
+ - `bin/morph-spec.js`
28
+ - `src/commands/project/init.js`
29
+ - `src/commands/project/update.js`
30
+
31
+ ## Files to delete
32
+ - `src/commands/project/detect.js`
33
+
34
+ ## Files NOT changed
35
+ - `test/integration/wizard-fallback.test.js` — tests `mapAnswersToConfig()` from `wizard-questions.js`, unrelated to detect command; still passes
36
+ - `test/commands/init.test.js` — no references to detect/wizard/detectClaudeCode; unaffected
37
+ - `src/core/orchestrator.js`, `src/ui/wizard-questions.js`, `src/llm/environment-detector.js` — left in place (may be used elsewhere); just remove imports/usage from init+update
38
+ - `src/lib/detectors/index.js` + `detectProject()` — **kept** in init (step 11c); this is the static file-based stack detection that works without Claude Code
39
+
40
+ ## Verification
41
+ 1. `node bin/morph-spec.js --help` — `detect` command should no longer appear
42
+ 2. `node bin/morph-spec.js init --help` — no `--skip-detection` or `--wizard` references
43
+ 3. `node bin/morph-spec.js update --help` — same
44
+ 4. Run test suite: `npm test` — should still pass 678 tests (no tests reference detect/wizard in init.test.js)
45
+ 5. Manual: run `morph-spec init` from PowerShell in a test project — should complete without the "Claude Code not detected" warning
@@ -0,0 +1,48 @@
1
+ {
2
+ "version": "4.0.0",
3
+ "features": {
4
+ "override-feature": {
5
+ "status": "in_progress",
6
+ "phase": "implement",
7
+ "tasks": {
8
+ "total": 20,
9
+ "completed": 30
10
+ },
11
+ "checkpoints": [
12
+ {
13
+ "passed": true
14
+ },
15
+ {
16
+ "passed": true
17
+ },
18
+ {
19
+ "passed": false
20
+ },
21
+ {
22
+ "passed": false
23
+ },
24
+ {
25
+ "passed": false
26
+ },
27
+ {
28
+ "passed": false
29
+ },
30
+ {
31
+ "passed": false
32
+ },
33
+ {
34
+ "passed": false
35
+ },
36
+ {
37
+ "passed": false
38
+ },
39
+ {
40
+ "passed": false
41
+ }
42
+ ],
43
+ "trustConfig": {}
44
+ }
45
+ },
46
+ "threads": {},
47
+ "metadata": {}
48
+ }
package/CLAUDE.md CHANGED
@@ -56,7 +56,7 @@
56
56
  proposal → setup → [uiux] → design → clarify → tasks → implement → [sync]
57
57
  ```
58
58
 
59
- Use `morph-spec state show {feature}` to see current phase and pending approval gates.
59
+ Use `morph-spec status {feature}` to see current phase and pending approval gates.
60
60
 
61
61
  ---
62
62
 
package/README.md CHANGED
@@ -2,8 +2,8 @@
2
2
 
3
3
  > Spec-driven development framework for multi-stack projects. Turns feature requests into implementation-ready code through structured, AI-orchestrated phases.
4
4
 
5
- **Package:** `@polymorphism-tech/morph-spec`
6
- **Version:** 4.6.0
5
+ **Package:** `@polymorphism-tech/morph-spec`
6
+ **Version:** 4.7.2
7
7
  **Requires:** Node.js 18+, Claude Code
8
8
 
9
9
  ---
@@ -28,30 +28,32 @@ It integrates natively with Claude Code: skills become slash commands, agents be
28
28
 
29
29
  Install the CLI globally:
30
30
 
31
- ```bash```
31
+ ```bash
32
32
  npm install -g @polymorphism-tech/morph-spec
33
- ``````
33
+ ```
34
34
 
35
35
  Then initialize in your project:
36
36
 
37
- ```bash```
37
+ ```bash
38
38
  morph-spec init
39
- ``````
39
+ ```
40
40
 
41
41
  Or use the interactive wizard:
42
42
 
43
- ```bash```
43
+ ```bash
44
44
  morph-spec init --wizard
45
- ``````
45
+ ```
46
46
 
47
47
  ### Init options
48
48
 
49
- | Flag | Description |
50
- |------|-------------|
51
- | `--wizard` | Interactive step-by-step setup |
49
+
50
+ | Flag | Description |
51
+ | ------------------ | ----------------------------------------- |
52
+ | `--wizard` | Interactive step-by-step setup |
52
53
  | `--skip-detection` | Skip auto-detection of stack and patterns |
53
- | `--force` | Overwrite existing installation |
54
- | `--skip-mcp` | Skip MCP configuration prompt |
54
+ | `--force` | Overwrite existing installation |
55
+ | `--skip-mcp` | Skip MCP configuration prompt |
56
+
55
57
 
56
58
  After init, open the project in Claude Code. The framework activates automatically via `.claude/settings.local.json`.
57
59
 
@@ -59,7 +61,7 @@ After init, open the project in Claude Code. The framework activates automatical
59
61
 
60
62
  ## Project structure (after init)
61
63
 
62
- ``````
64
+ ```
63
65
  your-project/
64
66
  ├── CLAUDE.md # AI instructions for this project
65
67
  ├── .morph/
@@ -84,7 +86,7 @@ your-project/
84
86
  ├── agents/ # Native subagents (37 agents)
85
87
  ├── rules/ # Path-scoped standards rules
86
88
  └── settings.local.json # Hooks configuration (11 hooks)
87
- ``````
89
+ ```
88
90
 
89
91
  ---
90
92
 
@@ -92,21 +94,23 @@ your-project/
92
94
 
93
95
  Features move through structured phases. Some are optional depending on feature type.
94
96
 
95
- ``````
97
+ ```
96
98
  proposal → setup → [uiux] → design → clarify → tasks → implement → [sync]
97
- ``````
99
+ ```
98
100
 
99
101
  Phases in brackets are optional. `uiux` applies to UI-heavy features. `sync` is a post-implementation reconciliation step.
100
102
 
101
103
  ### Phase outputs
102
104
 
103
- | Phase | Directory | Key files |
104
- |-------|-----------|-----------|
105
- | Proposal | `0-proposal/` | `proposal.md` |
106
- | Design | `1-design/` | `spec.md`, `contracts.cs`, `decisions.md` |
107
- | UI/UX | `2-ui/` | `design-system.md`, `mockups.md`, `components.md`, `flows.md` |
108
- | Tasks | `3-tasks/` | `tasks.md` |
109
- | Implement | `4-implement/` | `recap.md` |
105
+
106
+ | Phase | Directory | Key files |
107
+ | --------- | -------------- | ------------------------------------------------------------- |
108
+ | Proposal | `0-proposal/` | `proposal.md` |
109
+ | Design | `1-design/` | `spec.md`, `contracts.cs`, `decisions.md` |
110
+ | UI/UX | `2-ui/` | `design-system.md`, `mockups.md`, `components.md`, `flows.md` |
111
+ | Tasks | `3-tasks/` | `tasks.md` |
112
+ | Implement | `4-implement/` | `recap.md` |
113
+
110
114
 
111
115
  ### Approval gates
112
116
 
@@ -115,9 +119,9 @@ Phases in brackets are optional. `uiux` applies to UI-heavy features. `sync` is
115
119
 
116
120
  Check gate status:
117
121
 
118
- ```bash```
122
+ ```bash
119
123
  morph-spec state show {feature}
120
- ``````
124
+ ```
121
125
 
122
126
  ---
123
127
 
@@ -125,12 +129,14 @@ morph-spec state show {feature}
125
129
 
126
130
  These commands are available inside Claude Code after init.
127
131
 
128
- | Command | Description |
129
- |---------|-------------|
132
+
133
+ | Command | Description |
134
+ | --------------------------- | --------------------------------------------------------- |
130
135
  | `/morph-proposal {feature}` | Full spec pipeline (phases 0-4, pauses at approval gates) |
131
- | `/morph-apply {feature}` | Implement approved feature (phase 5) |
132
- | `/morph-status` | Feature status dashboard |
133
- | `/morph-preflight` | Pre-implementation validation |
136
+ | `/morph-apply {feature}` | Implement approved feature (phase 5) |
137
+ | `/morph-status` | Feature status dashboard |
138
+ | `/morph-preflight` | Pre-implementation validation |
139
+
134
140
 
135
141
  ---
136
142
 
@@ -138,7 +144,7 @@ These commands are available inside Claude Code after init.
138
144
 
139
145
  ### Project management
140
146
 
141
- ```bash```
147
+ ```bash
142
148
  morph-spec init # Initialize MORPH in current project
143
149
  morph-spec init --wizard # Interactive wizard setup
144
150
  morph-spec init --skip-detection # Skip stack auto-detection
@@ -150,11 +156,11 @@ morph-spec update --templates # Update templates only
150
156
  morph-spec update --standards # Update standards only
151
157
  morph-spec doctor # Check installation health
152
158
  morph-spec detect # Detect stack, architecture, patterns
153
- ``````
159
+ ```
154
160
 
155
161
  ### Feature workflow
156
162
 
157
- ```bash```
163
+ ```bash
158
164
  morph-spec state list # List all features and their states
159
165
  morph-spec state get {feature} # Get feature state
160
166
  morph-spec state set {feature} {key} {value}
@@ -166,11 +172,11 @@ morph-spec task next {feature} # Preview next task
166
172
  morph-spec status {feature} # Feature status dashboard
167
173
  morph-spec diff {feature} # Spec changes since last snapshot
168
174
  morph-spec rollback {feature} # Rollback feature to previous phase
169
- ``````
175
+ ```
170
176
 
171
177
  ### Validation and standards
172
178
 
173
- ```bash```
179
+ ```bash
174
180
  morph-spec validate # Run all validators
175
181
  morph-spec validate {validator} # Run specific validator
176
182
  morph-spec standards --list # List all 74 registered standards
@@ -178,15 +184,15 @@ morph-spec standards --list --category {name}
178
184
  morph-spec standards --search {query} # Search by name, tag, or ID
179
185
  morph-spec standards --show {id} # Print standard content
180
186
  morph-spec standards --json # Output as JSON
181
- ``````
187
+ ```
182
188
 
183
189
  ### Utilities
184
190
 
185
- ```bash```
191
+ ```bash
186
192
  morph-spec cost {bicep-file} # Estimate Azure resource costs
187
193
  morph-spec troubleshoot {keywords} # Search known issues and solutions
188
194
  morph-spec state checkpoint {feature} # Save state checkpoint
189
- ``````
195
+ ```
190
196
 
191
197
  ---
192
198
 
@@ -196,19 +202,23 @@ morph-spec includes 37 agents organized in 4 tiers. Tier 1-2 agents are installe
196
202
 
197
203
  ### Tier 1 — Orchestrators (3)
198
204
 
199
- | Agent | Role | Active |
200
- |-------|------|--------|
201
- | `standards-architect` | Chief Architect — enforces standards across all phases | Always |
202
- | `ai-system-architect` | AI/Agent system design and orchestration | On-demand |
203
- | `po-pm-advisor` | Product and project advisory | On-demand |
205
+
206
+ | Agent | Role | Active |
207
+ | --------------------- | ------------------------------------------------------ | --------- |
208
+ | `standards-architect` | Chief Architect enforces standards across all phases | Always |
209
+ | `ai-system-architect` | AI/Agent system design and orchestration | On-demand |
210
+ | `po-pm-advisor` | Product and project advisory | On-demand |
211
+
204
212
 
205
213
  ### Tier 2 — Domain Leaders (3)
206
214
 
207
- | Agent | Squad | Active |
208
- |-------|-------|--------|
209
- | `dotnet-senior` | Backend squad lead | Always |
210
- | `azure-architect` | Infrastructure squad lead | Always |
211
- | `ui-designer` | UI/UX squad lead | On-demand |
215
+
216
+ | Agent | Squad | Active |
217
+ | ----------------- | ------------------------- | --------- |
218
+ | `dotnet-senior` | Backend squad lead | Always |
219
+ | `azure-architect` | Infrastructure squad lead | Always |
220
+ | `ui-designer` | UI/UX squad lead | On-demand |
221
+
212
222
 
213
223
  ### Tier 3 — Specialists (26)
214
224
 
@@ -224,13 +234,15 @@ Organized into squads:
224
234
 
225
235
  ### Tier 4 — Validators (5)
226
236
 
227
- | Agent | Validates |
228
- |-------|-----------|
229
- | `security-expert` | Security vulnerabilities and compliance |
230
- | `architecture-expert` | Architectural decisions and constraints |
231
- | `packages-validator` | Package versions and compatibility |
232
- | `design-system-validator` | Design system adherence |
233
- | `blazor-concurrency-validator` | Blazor thread safety and concurrency |
237
+
238
+ | Agent | Validates |
239
+ | ------------------------------ | --------------------------------------- |
240
+ | `security-expert` | Security vulnerabilities and compliance |
241
+ | `architecture-expert` | Architectural decisions and constraints |
242
+ | `packages-validator` | Package versions and compatibility |
243
+ | `design-system-validator` | Design system adherence |
244
+ | `blazor-concurrency-validator` | Blazor thread safety and concurrency |
245
+
234
246
 
235
247
  ---
236
248
 
@@ -238,22 +250,25 @@ Organized into squads:
238
250
 
239
251
  11 Claude Code hooks are installed into `.claude/settings.local.json` across 8 event types:
240
252
 
241
- | Event | Hook | Purpose |
242
- |-------|------|---------|
243
- | `SessionStart` | `inject-morph-context.js` | Injects active feature spec into context (3000 char max) |
244
- | `UserPromptSubmit` | `protect-spec-files.js` | Guards spec files at approval gates |
245
- | `PreToolUse` | Bash guard (prompt type) | Detects destructive patterns inline |
246
- | `PreToolUse` | `validate-feature-phase.js` | Validates phase transitions |
247
- | `PostToolUse` | `track-output-creation.js` | Tracks feature output files as they are written |
248
- | `PostToolUse` | `checkpoint-trigger.js` | Auto-checkpoints every 3 completed tasks |
249
- | `PostToolUseFailure` | `handle-tool-failure.js` | Logs failures to `.morph/logs/tool-failures.log` |
250
- | `Stop` | `session-summary.js` | Writes session summary on stop |
251
- | `PreCompact` | `compact-context.js` | Preserves critical context before compaction |
252
- | `Notification` | `morph-notify.js` | Routes approval gate notifications |
253
+
254
+ | Event | Hook | Purpose |
255
+ | -------------------- | --------------------------- | -------------------------------------------------------- |
256
+ | `SessionStart` | `inject-morph-context.js` | Injects active feature spec into context (3000 char max) |
257
+ | `UserPromptSubmit` | `protect-spec-files.js` | Guards spec files at approval gates |
258
+ | `PreToolUse` | Bash guard (prompt type) | Detects destructive patterns inline |
259
+ | `PreToolUse` | `validate-feature-phase.js` | Validates phase transitions |
260
+ | `PostToolUse` | `track-output-creation.js` | Tracks feature output files as they are written |
261
+ | `PostToolUse` | `checkpoint-trigger.js` | Auto-checkpoints every 3 completed tasks |
262
+ | `PostToolUseFailure` | `handle-tool-failure.js` | Logs failures to `.morph/logs/tool-failures.log` |
263
+ | `Stop` | `session-summary.js` | Writes session summary on stop |
264
+ | `PreCompact` | `compact-context.js` | Preserves critical context before compaction |
265
+ | `Notification` | `morph-notify.js` | Routes approval gate notifications |
266
+
253
267
 
254
268
  Protected files (via `permissions.deny`):
269
+
255
270
  - `.morph/state.json` — never edited directly, CLI only
256
- - `.morph/framework/**` — read-only framework content
271
+ - `.morph/framework/`** — read-only framework content
257
272
 
258
273
  ---
259
274
 
@@ -261,26 +276,30 @@ Protected files (via `permissions.deny`):
261
276
 
262
277
  Path-scoped rules are installed to `.claude/rules/` and activate automatically based on file patterns:
263
278
 
264
- | Rule file | Applies to |
265
- |-----------|-----------|
266
- | `morph-workflow.md` | Always active — spec-first mandate, phase commands |
267
- | `csharp-standards.md` | `**/*.cs`, `**/*.csproj` |
268
- | `frontend-standards.md` | `**/*.razor`, `**/*.tsx`, `**/*.ts`, `**/*.css` |
269
- | `testing-standards.md` | `tests/**`, `**/*.test.*`, `**/*.spec.*`, `**/*Tests.cs` |
270
- | `infrastructure-standards.md` | `**/*.bicep`, `**/Dockerfile`, `**/pipelines/**` |
279
+
280
+ | Rule file | Applies to |
281
+ | ----------------------------- | -------------------------------------------------------- |
282
+ | `morph-workflow.md` | Always active — spec-first mandate, phase commands |
283
+ | `csharp-standards.md` | `**/*.cs`, `**/*.csproj` |
284
+ | `frontend-standards.md` | `**/*.razor`, `**/*.tsx`, `**/*.ts`, `**/*.css` |
285
+ | `testing-standards.md` | `tests/`**, `**/*.test.*`, `**/*.spec.*`, `**/*Tests.cs` |
286
+ | `infrastructure-standards.md` | `**/*.bicep`, `**/Dockerfile`, `**/pipelines/**` |
287
+
271
288
 
272
289
  ---
273
290
 
274
291
  ## Stack support
275
292
 
276
- | Technology | Support |
277
- |------------|---------|
278
- | .NET 10 / ASP.NET Core | Full — C# contracts, EF Core, CQRS, Minimal API |
279
- | Blazor (WebAssembly / Server / MAUI Hybrid) | Full — components, concurrency, design system |
280
- | Next.js / React / TypeScript | Full — components, routing, state management |
281
- | Azure (Bicep) | Full — IaC templates, cost estimation, pipelines |
282
- | GitHub Actions | Full — CI/CD workflow templates |
283
- | Supabase | Supported via MCP integration |
293
+
294
+ | Technology | Support |
295
+ | ------------------------------------------- | ------------------------------------------------ |
296
+ | .NET 10 / ASP.NET Core | Full — C# contracts, EF Core, CQRS, Minimal API |
297
+ | Blazor (WebAssembly / Server / MAUI Hybrid) | Full — components, concurrency, design system |
298
+ | Next.js / React / TypeScript | Full — components, routing, state management |
299
+ | Azure (Bicep) | Full — IaC templates, cost estimation, pipelines |
300
+ | GitHub Actions | Full CI/CD workflow templates |
301
+ | Supabase | Supported via MCP integration |
302
+
284
303
 
285
304
  TypeScript strict mode is enforced by default. See `.morph/framework/standards/` for all coding standards.
286
305
 
@@ -290,9 +309,9 @@ TypeScript strict mode is enforced by default. See `.morph/framework/standards/`
290
309
 
291
310
  To update the framework files in an existing project:
292
311
 
293
- ```bash```
312
+ ```bash
294
313
  morph-spec update
295
- ``````
314
+ ```
296
315
 
297
316
  This re-syncs `.morph/framework/`, `.claude/skills/`, `.claude/agents/`, `.claude/rules/`, and `CLAUDE.md` with the installed package version. Your `.morph/config/config.json`, `.morph/context/`, and feature outputs are not touched.
298
317
 
@@ -305,8 +324,9 @@ After updating, run `morph-spec doctor` to confirm the installation is healthy.
305
324
  **Never skip phases.** Every feature starts with a proposal. No code is written until the design is approved and a task list exists.
306
325
 
307
326
  **Never edit protected files directly:**
327
+
308
328
  - `.morph/state.json` — use `morph-spec state set`
309
- - `.morph/framework/**` — read-only, updated by `morph-spec update`
329
+ - `.morph/framework/`** — read-only, updated by `morph-spec update`
310
330
 
311
331
  **Always document decisions.** Each feature has a `1-design/decisions.md`. Architectural choices go there, not in commit messages.
312
332
 
@@ -320,24 +340,24 @@ After updating, run `morph-spec doctor` to confirm the installation is healthy.
320
340
 
321
341
  If you are using nvm-windows or a Node version manager, the global bin path may not be on `PATH` in your shell. Use `npx` instead:
322
342
 
323
- ```bash```
343
+ ```bash
324
344
  npx @polymorphism-tech/morph-spec init
325
- ``````
345
+ ```
326
346
 
327
347
  Or add the npm global bin to your PATH:
328
348
 
329
- ```bash```
349
+ ```bash
330
350
  npm config get prefix
331
351
  # Add {prefix}/bin to your PATH
332
- ``````
352
+ ```
333
353
 
334
354
  ### `morph-spec doctor` reports issues
335
355
 
336
356
  Run doctor to see all checks:
337
357
 
338
- ```bash```
358
+ ```bash
339
359
  morph-spec doctor
340
- ``````
360
+ ```
341
361
 
342
362
  Common fixes:
343
363
 
@@ -353,14 +373,14 @@ Windows may block global npm installs without elevated permissions. Options:
353
373
  1. Run terminal as Administrator (not recommended long-term)
354
374
  2. Change npm global prefix to a user-writable directory:
355
375
 
356
- ```bat```
376
+ ```bat
357
377
  mkdir %APPDATA%\npm-global
358
378
  npm config set prefix %APPDATA%\npm-global
359
379
  :: Add %APPDATA%\npm-global to your PATH
360
380
  npm install -g @polymorphism-tech/morph-spec
361
- ``````
381
+ ```
362
382
 
363
- 3. Use `npx` for all CLI invocations
383
+ 1. Use `npx` for all CLI invocations
364
384
 
365
385
  ### Hook not triggering on SessionStart
366
386
 
@@ -372,12 +392,12 @@ Ensure `.claude/settings.local.json` is not gitignored in your project. The file
372
392
 
373
393
  The framework ships 74 registered standards across 11 categories. Browse them:
374
394
 
375
- ```bash```
395
+ ```bash
376
396
  morph-spec standards --list
377
397
  morph-spec standards --list --category csharp
378
398
  morph-spec standards --search "strict mode"
379
399
  morph-spec standards --show typescript-strict
380
- ``````
400
+ ```
381
401
 
382
402
  Standards are stored in `.morph/framework/standards/STANDARDS.json` and sourced from `.morph/framework/standards/`.
383
403
 
@@ -391,4 +411,4 @@ Code generated by morph-spec (contracts, templates, implementation output) belon
391
411
 
392
412
  ---
393
413
 
394
- *morph-spec v4.6.0 by [Polymorphism Tech](https://polymorphism.tech)*
414
+ *morph-spec v4.7.0 by [Polymorphism Tech](https://polymorphism.tech)*
package/bin/morph-spec.js CHANGED
@@ -11,7 +11,6 @@ import { initCommand } from '../src/commands/project/init.js';
11
11
  import { updateCommand } from '../src/commands/project/update.js';
12
12
  import { updateAgentsCommand } from '../src/commands/project/update-agents.js';
13
13
  import { doctorCommand } from '../src/commands/project/doctor.js';
14
- import { detectCommand } from '../src/commands/project/detect.js';
15
14
 
16
15
  import { syncCommand } from '../src/commands/project/sync.js';
17
16
  import { statusCommand } from '../src/commands/project/status.js';
@@ -127,14 +126,6 @@ program
127
126
  .option('--reset', 'Remove morph-managed entries from .claude/settings.local.json')
128
127
  .action(doctorCommand);
129
128
 
130
- program
131
- .command('detect')
132
- .description('Detect project stack, architecture, and patterns')
133
- .option('-p, --path <path>', 'Project path (default: current directory)')
134
- .option('-v, --verbose', 'Show detailed detection results')
135
- .option('--no-save', 'Do not save results to .morph/project/')
136
- .action(detectCommand);
137
-
138
129
  program
139
130
  .command('sync')
140
131
  .description('Sync standards from feature decisions')