@polymorphism-tech/morph-spec 4.8.19 → 4.10.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.
Files changed (214) hide show
  1. package/CLAUDE.md +21 -0
  2. package/README.md +2 -2
  3. package/bin/morph-spec.js +44 -55
  4. package/bin/task-manager.js +133 -20
  5. package/bin/validate.js +67 -33
  6. package/claude-plugin.json +1 -1
  7. package/docs/CHEATSHEET.md +201 -203
  8. package/docs/QUICKSTART.md +2 -2
  9. package/framework/CLAUDE.md +99 -77
  10. package/framework/agents.json +734 -182
  11. package/framework/commands/commit.md +166 -0
  12. package/framework/commands/morph-apply.md +13 -2
  13. package/framework/commands/morph-archive.md +8 -2
  14. package/framework/commands/morph-infra.md +6 -0
  15. package/framework/commands/morph-preflight.md +6 -0
  16. package/framework/commands/morph-proposal.md +56 -7
  17. package/framework/commands/morph-status.md +6 -0
  18. package/framework/commands/morph-troubleshoot.md +6 -0
  19. package/framework/hooks/claude-code/notification/approval-reminder.js +3 -2
  20. package/framework/hooks/claude-code/post-tool-use/context-refresh.js +1 -1
  21. package/framework/hooks/claude-code/post-tool-use/dispatch.js +155 -32
  22. package/framework/hooks/claude-code/post-tool-use/skill-reminder.js +78 -0
  23. package/framework/hooks/claude-code/post-tool-use/validator-feedback.js +8 -17
  24. package/framework/hooks/claude-code/pre-compact/save-morph-context.js +16 -3
  25. package/framework/hooks/claude-code/pre-tool-use/enforce-phase-writes.js +4 -3
  26. package/framework/hooks/claude-code/pre-tool-use/protect-spec-files.js +4 -3
  27. package/framework/hooks/claude-code/pre-tool-use/task-tracking-guard.js +60 -0
  28. package/framework/hooks/claude-code/session-start/inject-morph-context.js +124 -2
  29. package/framework/hooks/claude-code/session-start/post-compact-restore.js +41 -0
  30. package/framework/hooks/claude-code/statusline.py +76 -30
  31. package/framework/hooks/claude-code/stop/validate-completion.js +2 -15
  32. package/framework/hooks/claude-code/user-prompt/enrich-prompt.js +23 -5
  33. package/framework/hooks/claude-code/user-prompt/set-terminal-title.js +14 -6
  34. package/framework/hooks/shared/activity-logger.js +0 -24
  35. package/framework/hooks/shared/compact-restore.js +100 -0
  36. package/framework/hooks/shared/dispatch-helpers.js +116 -0
  37. package/framework/hooks/shared/phase-utils.js +12 -5
  38. package/framework/hooks/shared/skill-reminder-helpers.js +79 -0
  39. package/framework/hooks/shared/stale-task-reset.js +57 -0
  40. package/framework/hooks/shared/state-reader.js +29 -5
  41. package/framework/hooks/shared/worktree-helpers.js +53 -0
  42. package/framework/phases.json +69 -14
  43. package/framework/rules/morph-workflow.md +88 -86
  44. package/framework/skills/level-0-meta/mcp-registry.json +86 -51
  45. package/framework/skills/level-0-meta/{brainstorming → morph-brainstorming}/SKILL.md +14 -17
  46. package/framework/skills/level-0-meta/morph-checklist/SKILL.md +2 -2
  47. package/framework/skills/level-0-meta/{code-review → morph-code-review}/SKILL.md +2 -2
  48. package/framework/skills/level-0-meta/{code-review-nextjs → morph-code-review-nextjs}/SKILL.md +163 -163
  49. package/framework/skills/level-0-meta/{frontend-review → morph-frontend-review}/SKILL.md +9 -9
  50. package/framework/skills/level-0-meta/morph-init/SKILL.md +77 -12
  51. package/framework/skills/level-0-meta/{post-implementation → morph-post-implementation}/SKILL.md +62 -15
  52. package/framework/skills/level-0-meta/morph-replicate/SKILL.md +5 -5
  53. package/framework/skills/level-0-meta/morph-replicate/references/blazor-html-mapping.md +1 -1
  54. package/framework/skills/level-0-meta/{simulation-checklist → morph-simulation-checklist}/SKILL.md +1 -1
  55. package/framework/skills/level-0-meta/{terminal-title → morph-terminal-title}/SKILL.md +2 -2
  56. package/framework/skills/level-0-meta/{tool-usage-guide → morph-tool-usage-guide}/SKILL.md +3 -4
  57. package/framework/skills/level-0-meta/{tool-usage-guide → morph-tool-usage-guide}/references/tools-per-phase.md +7 -7
  58. package/framework/skills/level-0-meta/{verification-before-completion → morph-verification-before-completion}/SKILL.md +2 -2
  59. package/framework/skills/level-0-meta/{verification-before-completion → morph-verification-before-completion}/scripts/check-phase-outputs.mjs +2 -2
  60. package/framework/skills/level-1-workflows/morph-phase-clarify/SKILL.md +238 -0
  61. package/framework/skills/level-1-workflows/{phase-codebase-analysis → morph-phase-codebase-analysis}/SKILL.md +3 -3
  62. package/framework/skills/level-1-workflows/morph-phase-design/SKILL.md +507 -0
  63. package/framework/skills/level-1-workflows/{phase-implement → morph-phase-implement}/SKILL.md +168 -27
  64. package/framework/skills/level-1-workflows/morph-phase-implement/prompts/code-quality-reviewer-prompt.md +50 -0
  65. package/framework/skills/level-1-workflows/morph-phase-implement/prompts/implementer-prompt.md +45 -0
  66. package/framework/skills/level-1-workflows/morph-phase-implement/prompts/spec-reviewer-prompt.md +47 -0
  67. package/framework/skills/level-1-workflows/morph-phase-plan/SKILL.md +254 -0
  68. package/framework/skills/level-1-workflows/{phase-setup → morph-phase-setup}/SKILL.md +50 -3
  69. package/framework/skills/level-1-workflows/{phase-tasks → morph-phase-tasks}/SKILL.md +48 -11
  70. package/framework/skills/level-1-workflows/{phase-tasks → morph-phase-tasks}/scripts/validate-tasks.mjs +3 -3
  71. package/framework/skills/level-1-workflows/{phase-uiux → morph-phase-uiux}/SKILL.md +46 -11
  72. package/framework/skills/level-1-workflows/morph-scope-escalation/SKILL.md +97 -0
  73. package/framework/standards/STANDARDS.json +640 -88
  74. package/framework/standards/infrastructure/vercel/vercel-database.md +106 -0
  75. package/framework/standards/integration/mcp/mcp-tools.md +25 -7
  76. package/framework/templates/REGISTRY.json +1825 -1909
  77. package/framework/templates/context/CONTEXT-FEATURE.md +276 -276
  78. package/framework/templates/docs/onboarding.md +3 -7
  79. package/package.json +2 -7
  80. package/src/commands/agents/dispatch-agents.js +104 -6
  81. package/src/commands/mcp/mcp-setup.js +39 -2
  82. package/src/commands/phase/phase-reset.js +74 -0
  83. package/src/commands/project/doctor.js +34 -51
  84. package/src/commands/project/init.js +1 -1
  85. package/src/commands/project/status.js +2 -2
  86. package/src/commands/project/update.js +381 -365
  87. package/src/commands/project/worktree.js +154 -0
  88. package/src/commands/scope/escalate.js +215 -0
  89. package/src/commands/state/advance-phase.js +132 -68
  90. package/src/commands/state/approve.js +2 -2
  91. package/src/commands/state/index.js +7 -8
  92. package/src/commands/state/phase-runner.js +1 -1
  93. package/src/commands/state/state.js +61 -6
  94. package/src/commands/task/expand.js +100 -0
  95. package/src/commands/tasks/task.js +78 -99
  96. package/src/commands/templates/template-render.js +93 -173
  97. package/src/commands/trust/trust.js +26 -21
  98. package/src/core/paths/output-schema.js +19 -3
  99. package/src/core/state/phase-state-machine.js +7 -4
  100. package/src/core/state/state-manager.js +32 -57
  101. package/src/core/workflows/workflow-detector.js +9 -87
  102. package/src/lib/detectors/claude-config-detector.js +93 -347
  103. package/src/lib/detectors/design-system-detector.js +189 -189
  104. package/src/lib/detectors/index.js +155 -57
  105. package/src/lib/generators/context-generator.js +2 -2
  106. package/src/lib/installers/mcp-installer.js +37 -5
  107. package/src/lib/phase-chain/phase-validator.js +336 -0
  108. package/src/lib/scope/impact-analyzer.js +106 -0
  109. package/src/lib/stack/stack-profile.js +88 -0
  110. package/src/lib/tasks/task-classifier.js +16 -0
  111. package/src/lib/tasks/task-parser.js +1 -1
  112. package/src/lib/tasks/test-runner.js +77 -0
  113. package/src/lib/trust/trust-manager.js +32 -144
  114. package/src/lib/validators/shared/emit-validator-dispatch.js +64 -0
  115. package/src/lib/validators/spec-validator.js +58 -4
  116. package/src/lib/validators/validation-runner.js +23 -11
  117. package/src/scripts/setup-infra.js +255 -224
  118. package/src/utils/agents-installer.js +34 -14
  119. package/src/utils/banner.js +1 -1
  120. package/src/utils/claude-settings-manager.js +1 -1
  121. package/src/utils/file-copier.js +1 -1
  122. package/src/utils/hooks-installer.js +272 -8
  123. package/framework/hooks/dev/check-sync-health.js +0 -117
  124. package/framework/hooks/dev/guard-version-numbers.js +0 -57
  125. package/framework/hooks/dev/sync-standards-registry.js +0 -60
  126. package/framework/hooks/dev/sync-template-registry.js +0 -60
  127. package/framework/hooks/dev/validate-skill-format.js +0 -70
  128. package/framework/hooks/dev/validate-standard-format.js +0 -73
  129. package/framework/skills/level-1-workflows/phase-clarify/SKILL.md +0 -190
  130. package/framework/skills/level-1-workflows/phase-design/SKILL.md +0 -366
  131. package/framework/templates/meta-prompts/hops/hop-retry.md +0 -78
  132. package/framework/templates/meta-prompts/hops/hop-validation.md +0 -97
  133. package/framework/templates/meta-prompts/hops/hop-wrapper.md +0 -36
  134. package/framework/workflows/configs/design-impl.json +0 -49
  135. package/framework/workflows/configs/express.json +0 -45
  136. package/framework/workflows/configs/fast-track.json +0 -42
  137. package/framework/workflows/configs/full-morph.json +0 -79
  138. package/framework/workflows/configs/fusion.json +0 -39
  139. package/framework/workflows/configs/long-running.json +0 -33
  140. package/framework/workflows/configs/spec-only.json +0 -43
  141. package/framework/workflows/configs/ui-refresh.json +0 -49
  142. package/framework/workflows/configs/zero-touch.json +0 -82
  143. package/src/commands/project/index.js +0 -8
  144. package/src/commands/project/monitor.js +0 -295
  145. package/src/commands/project/tutorial.js +0 -115
  146. package/src/commands/state/validate-phase.js +0 -238
  147. package/src/commands/templates/generate-contracts.js +0 -445
  148. package/src/core/index.js +0 -10
  149. package/src/core/orchestrator.js +0 -171
  150. package/src/core/registry/command-registry.js +0 -28
  151. package/src/core/registry/index.js +0 -8
  152. package/src/core/registry/validator-registry.js +0 -204
  153. package/src/core/state/index.js +0 -8
  154. package/src/core/templates/index.js +0 -9
  155. package/src/core/templates/template-data-sources.js +0 -325
  156. package/src/core/templates/template-validator.js +0 -296
  157. package/src/core/workflows/index.js +0 -7
  158. package/src/generator/config-generator.js +0 -206
  159. package/src/generator/templates/config.json.template +0 -40
  160. package/src/generator/templates/project.md.template +0 -67
  161. package/src/lib/agents/micro-agent-factory.js +0 -161
  162. package/src/lib/analysis/complexity-analyzer.js +0 -441
  163. package/src/lib/analysis/index.js +0 -7
  164. package/src/lib/analytics/analytics-engine.js +0 -345
  165. package/src/lib/checkpoints/checkpoint-hooks.js +0 -298
  166. package/src/lib/checkpoints/index.js +0 -7
  167. package/src/lib/context/context-bundler.js +0 -241
  168. package/src/lib/context/context-optimizer.js +0 -212
  169. package/src/lib/context/context-tracker.js +0 -273
  170. package/src/lib/context/core-four-tracker.js +0 -201
  171. package/src/lib/context/mcp-optimizer.js +0 -200
  172. package/src/lib/detectors/config-detector.js +0 -223
  173. package/src/lib/detectors/standards-generator.js +0 -335
  174. package/src/lib/detectors/structure-detector.js +0 -275
  175. package/src/lib/execution/fusion-executor.js +0 -304
  176. package/src/lib/execution/parallel-executor.js +0 -270
  177. package/src/lib/hooks/stop-hook-executor.js +0 -286
  178. package/src/lib/hops/hop-composer.js +0 -221
  179. package/src/lib/monitor/agent-resolver.js +0 -144
  180. package/src/lib/monitor/renderer.js +0 -230
  181. package/src/lib/orchestration/index.js +0 -7
  182. package/src/lib/orchestration/team-orchestrator.js +0 -404
  183. package/src/lib/phase-chain/eligibility-checker.js +0 -243
  184. package/src/lib/threads/thread-coordinator.js +0 -238
  185. package/src/lib/threads/thread-manager.js +0 -317
  186. package/src/lib/tracking/artifact-trail.js +0 -202
  187. package/src/sanitizer/context-sanitizer.js +0 -221
  188. package/src/sanitizer/patterns.js +0 -163
  189. package/src/scanner/project-scanner.js +0 -242
  190. package/src/ui/diff-display.js +0 -91
  191. package/src/ui/interactive-wizard.js +0 -96
  192. package/src/ui/user-review.js +0 -211
  193. package/src/ui/wizard-questions.js +0 -188
  194. package/src/utils/color-utils.js +0 -70
  195. package/src/utils/process-handler.js +0 -97
  196. package/src/writer/file-writer.js +0 -86
  197. /package/framework/skills/level-0-meta/{brainstorming → morph-brainstorming}/references/proposal-example.md +0 -0
  198. /package/framework/skills/level-0-meta/{code-review → morph-code-review}/references/review-example.md +0 -0
  199. /package/framework/skills/level-0-meta/{code-review → morph-code-review}/references/review-guidelines.md +0 -0
  200. /package/framework/skills/level-0-meta/{code-review → morph-code-review}/scripts/scan-csharp.mjs +0 -0
  201. /package/framework/skills/level-0-meta/{code-review-nextjs → morph-code-review-nextjs}/references/review-example-nextjs.md +0 -0
  202. /package/framework/skills/level-0-meta/{code-review-nextjs → morph-code-review-nextjs}/scripts/scan-nextjs.mjs +0 -0
  203. /package/framework/skills/level-0-meta/{frontend-review → morph-frontend-review}/scripts/scan-accessibility.mjs +0 -0
  204. /package/framework/skills/level-0-meta/{post-implementation → morph-post-implementation}/scripts/detect-dev-server.mjs +0 -0
  205. /package/framework/skills/level-0-meta/{post-implementation → morph-post-implementation}/scripts/detect-stack.mjs +0 -0
  206. /package/framework/skills/level-0-meta/{terminal-title → morph-terminal-title}/scripts/set_title.sh +0 -0
  207. /package/framework/skills/level-1-workflows/{phase-clarify → morph-phase-clarify}/references/clarifications-example.md +0 -0
  208. /package/framework/skills/level-1-workflows/{phase-design → morph-phase-design}/references/architecture-analysis-guide.md +0 -0
  209. /package/framework/skills/level-1-workflows/{phase-design → morph-phase-design}/references/spec-authoring-guide.md +0 -0
  210. /package/framework/skills/level-1-workflows/{phase-design → morph-phase-design}/references/spec-example.md +0 -0
  211. /package/framework/skills/level-1-workflows/{phase-implement → morph-phase-implement}/references/recap-example.md +0 -0
  212. /package/framework/skills/level-1-workflows/{phase-implement → morph-phase-implement}/references/vsa-implementation-guide.md +0 -0
  213. /package/framework/skills/level-1-workflows/{phase-tasks → morph-phase-tasks}/references/task-planning-patterns.md +0 -0
  214. /package/framework/skills/level-1-workflows/{phase-tasks → morph-phase-tasks}/references/tasks-example.md +0 -0
@@ -1,70 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * Dev PreToolUse Hook: Validate Skill Frontmatter Format
5
- *
6
- * Event: PreToolUse | Matcher: Write|Edit
7
- * Scope: Framework codebase only (dev hook)
8
- *
9
- * Validates that SKILL.md files written to framework/skills/ have valid
10
- * YAML frontmatter with required `name:` and `description:` fields.
11
- *
12
- * Only validates on Write (full content). Edit operations pass through.
13
- * Simple regex parsing (no YAML library dependency).
14
- *
15
- * Fail-open: exits 0 on any error.
16
- */
17
-
18
- import { readStdin } from '../shared/stdin-reader.js';
19
- import { getFilePath, getContentToValidate, isWriteOperation } from '../shared/payload-utils.js';
20
- import { block, pass } from '../shared/hook-response.js';
21
-
22
- try {
23
- const payload = await readStdin();
24
- if (!payload) pass();
25
-
26
- const filePath = getFilePath(payload);
27
- if (!filePath) pass();
28
-
29
- // Only check framework/skills/**/SKILL.md
30
- if (!filePath.includes('framework/skills/')) pass();
31
- if (!filePath.endsWith('SKILL.md')) pass();
32
-
33
- // Only validate full Write operations (not Edit patches)
34
- if (!isWriteOperation(payload)) pass();
35
-
36
- const content = getContentToValidate(payload);
37
- if (!content) pass();
38
-
39
- // Check for YAML frontmatter delimiters
40
- const frontmatterMatch = content.match(/^---\r?\n([\s\S]*?)\r?\n---/);
41
- if (!frontmatterMatch) {
42
- block(
43
- `MORPH-SPEC: SKILL.md at '${filePath}' is missing YAML frontmatter.\n` +
44
- 'All skill files must start with --- delimited YAML frontmatter containing name: and description: fields.'
45
- );
46
- }
47
-
48
- const frontmatter = frontmatterMatch[1];
49
- const missing = [];
50
-
51
- if (!/^name:/m.test(frontmatter)) {
52
- missing.push('name:');
53
- }
54
- if (!/^description:/m.test(frontmatter)) {
55
- missing.push('description:');
56
- }
57
-
58
- if (missing.length > 0) {
59
- block(
60
- `MORPH-SPEC: SKILL.md at '${filePath}' is missing required frontmatter fields:\n` +
61
- missing.map(m => ` - ${m}`).join('\n') + '\n\n' +
62
- 'All skill files must have name: and description: in their YAML frontmatter.'
63
- );
64
- }
65
-
66
- pass();
67
- } catch {
68
- // Fail-open
69
- process.exit(0);
70
- }
@@ -1,73 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * Dev PreToolUse Hook: Validate Standard Format
5
- *
6
- * Event: PreToolUse | Matcher: Write|Edit
7
- * Scope: Framework codebase only (dev hook)
8
- *
9
- * Validates that files written to framework/standards/ follow the required format:
10
- * - `> **Scope:**` metadata header
11
- * - `> **Layer:**` metadata header
12
- * - `> **Keywords:**` metadata header
13
- * - Footer: `*MORPH-SPEC by Polymorphism Tech*`
14
- *
15
- * Only validates on Write (full content). Edit operations pass through.
16
- *
17
- * Fail-open: exits 0 on any error.
18
- */
19
-
20
- import { readStdin } from '../shared/stdin-reader.js';
21
- import { getFilePath, getContentToValidate, isWriteOperation } from '../shared/payload-utils.js';
22
- import { block, pass } from '../shared/hook-response.js';
23
-
24
- try {
25
- const payload = await readStdin();
26
- if (!payload) pass();
27
-
28
- const filePath = getFilePath(payload);
29
- if (!filePath) pass();
30
-
31
- // Only check framework/standards/**/*.md
32
- if (!filePath.includes('framework/standards/')) pass();
33
- if (!filePath.endsWith('.md')) pass();
34
-
35
- // Skip non-standard files
36
- const basename = filePath.split('/').pop();
37
- if (basename === 'README.md') pass();
38
- if (basename === 'STANDARDS.json') pass();
39
-
40
- // Only validate full Write operations (not Edit patches)
41
- if (!isWriteOperation(payload)) pass();
42
-
43
- const content = getContentToValidate(payload);
44
- if (!content) pass();
45
-
46
- const missing = [];
47
-
48
- if (!/>\s*\*\*Scope:\*\*/.test(content)) {
49
- missing.push('> **Scope:** metadata header');
50
- }
51
- if (!/>\s*\*\*Layer:\*\*/.test(content)) {
52
- missing.push('> **Layer:** metadata header');
53
- }
54
- if (!/>\s*\*\*Keywords:\*\*/.test(content)) {
55
- missing.push('> **Keywords:** metadata header');
56
- }
57
- if (!/\*MORPH-SPEC by Polymorphism Tech\*/.test(content)) {
58
- missing.push('Footer: *MORPH-SPEC by Polymorphism Tech*');
59
- }
60
-
61
- if (missing.length > 0) {
62
- block(
63
- `MORPH-SPEC: Standard file '${basename}' is missing required format elements:\n` +
64
- missing.map(m => ` - ${m}`).join('\n') + '\n\n' +
65
- 'All framework standards must include Scope/Layer/Keywords metadata headers and the standard footer.'
66
- );
67
- }
68
-
69
- pass();
70
- } catch {
71
- // Fail-open
72
- process.exit(0);
73
- }
@@ -1,190 +0,0 @@
1
- ---
2
- name: phase-clarify
3
- description: MORPH-SPEC Phase 3 (Clarify). Reviews spec.md for ambiguities, generates 3-7 targeted clarification questions, waits for user answers, then updates spec with edge cases and clarification sections. Use after design approval to eliminate spec ambiguities before task breakdown begins.
4
- argument-hint: "[feature-name]"
5
- user-invocable: false
6
- allowed-tools: Read, Write, Edit, Bash, Glob, Grep
7
- cliVersion: "4.8.19"
8
- ---
9
-
10
- # MORPH Clarify - FASE 3
11
-
12
- > INTERNAL: Workflow skill used by /morph-proposal during automated phase orchestration. Not a user command.
13
-
14
- Identifique ambiguidades na especificação e faça perguntas de clarificação para garantir que todos os edge cases estão cobertos.
15
-
16
- ## Pré-requisitos
17
-
18
- - [ ] FASE 2 (Design) concluída
19
- - [ ] `spec.md` aprovado pelo usuário
20
- - [ ] `contracts.cs` definidos
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
- > **Example:** `references/clarifications-example.md` — filled-in clarifications.md showing expected Q&A format.
27
-
28
- | Ação | Ferramenta | Alternativa |
29
- |------|------------|-------------|
30
- | Ler spec.md completo | **Read** spec.md | — |
31
- | Ler contracts.cs | **Read** contracts.cs | — |
32
- | Ler schema-analysis.md | **Read** schema-analysis.md | — |
33
- | Verificar viabilidade de requisito | **Context7 MCP** `query_docs()` | **WebSearch** + **WebFetch** |
34
- | Verificar issues/limitações conhecidas | **GitHub MCP** `search_issues()` | **Bash** `gh issue list --search "..."` |
35
- | Pesquisar edge cases externos | **WebSearch** | — |
36
- | Verificar comportamento UI existente | **Playwright MCP** `browser_navigate()` + `browser_snapshot()` | **WebFetch** URL |
37
- | Atualizar spec com clarificações | **Edit** spec.md | — |
38
- | Criar clarifications.md | **Bash** `npx morph-spec template render docs/clarifications .morph/features/$ARGUMENTS/2-clarify/clarifications.md` | — |
39
- | Atualizar state | **Bash** `npx morph-spec state mark-output $ARGUMENTS clarifications` | — |
40
-
41
- **MCPs desta fase:** Context7 (validar viabilidade), GitHub (issues conhecidas), Playwright (verificar UI existente).
42
-
43
- **Anti-padrões:**
44
- - ❌ Task agent para ler spec (use Read direto)
45
- - ❌ Reescrever spec do zero (use Edit para atualizar seções)
46
- - ❌ Pular cross-reference com schema-analysis.md (crítico para precisão)
47
-
48
- ---
49
-
50
- ## Workflow
51
-
52
- ### Passo 1: Analisar Spec
53
-
54
- Leia `.morph/features/$ARGUMENTS/1-design/spec.md` em detalhes e identifique:
55
-
56
- #### 1.1. Ambiguidades
57
- - Requisitos vagos ou genéricos
58
- - Termos sem definição clara
59
- - Comportamentos não especificados
60
-
61
- #### 1.2. Edge Cases Não Documentados
62
- - O que acontece se...?
63
- - Como lidar com entradas inválidas?
64
- - Comportamento em caso de erro?
65
- - Estados intermediários (loading, empty)
66
-
67
- #### 1.3. Requisitos Conflitantes
68
- - Duas funcionalidades que parecem incompatíveis
69
- - Prioridades não claras (o que vem primeiro?)
70
-
71
- #### 1.4. Dados Faltantes
72
- - Validações de negócio não especificadas
73
- - Limites e constraints (tamanhos, quantidades)
74
- - Formatos de dados (datas, moedas, etc.)
75
-
76
- ### Passo 2: Gerar Perguntas de Clarificação
77
-
78
- Com base na análise, gere **3-7 perguntas** focadas e específicas:
79
-
80
- **Formato de pergunta:**
81
- ```markdown
82
- ### Q{N}: {Categoria} - {Título}
83
-
84
- **Context:** {Por que esta pergunta é importante}
85
-
86
- **Question:** {Pergunta clara e objetiva}
87
-
88
- **Options (if applicable):**
89
- - A) {Opção 1}
90
- - B) {Opção 2}
91
- - C) {Deixar em aberto/usuário decidir}
92
-
93
- **Impact:** {Como a resposta afeta a implementação}
94
- ```
95
-
96
- ### Passo 3: Categorizar Perguntas
97
-
98
- Organize perguntas por categoria:
99
-
100
- | Categoria | Descrição | Exemplos |
101
- |-----------|-----------|----------|
102
- | **Validação** | Regras de negócio, constraints | Limites de tamanho, formatos aceitos |
103
- | **Comportamento** | O que acontece quando... | Error handling, estados vazios |
104
- | **Prioridade** | O que é must-have vs nice-to-have | MVP vs futuras iterações |
105
- | **Integração** | Como interage com sistemas externos | APIs, webhooks, formato de dados |
106
- | **Performance** | Requisitos de velocidade/volume | Quantos registros? Tempo de resposta? |
107
- | **UX** | Experiência do usuário | Feedback visual, mensagens de erro |
108
-
109
- ### Passo 4: Apresentar Perguntas ao Usuário
110
-
111
- Liste todas as perguntas de forma clara e estruturada.
112
-
113
- **IMPORTANTE:** Não prossiga para próxima fase até ter respostas!
114
-
115
- ### Passo 5: Atualizar `spec.md` com Respostas
116
-
117
- Após receber respostas do usuário, atualize o spec com:
118
-
119
- 1. **Seção de Clarificações** no início do spec:
120
- ```markdown
121
- ## Clarifications (FASE 3)
122
-
123
- ### Q1: {Título}
124
- **Answer:** {Resposta do usuário}
125
- **Date:** {YYYY-MM-DD}
126
- ```
127
-
128
- 2. **Atualizar seções relevantes** com detalhes adicionados
129
-
130
- ### CHECKPOINT: Validar Respostas Completas
131
-
132
- **⏸️ PAUSE - Antes de atualizar spec:**
133
-
134
- - [ ] Todas as perguntas foram respondidas pelo usuário?
135
- - [ ] Nenhuma resposta é ambígua ou contraditória?
136
- - [ ] Respostas são consistentes com `contracts.cs` existente?
137
- - [ ] Respostas são consistentes com `schema-analysis.md`?
138
-
139
- **❌ Se alguma checkbox NÃO estiver marcada:**
140
- → Voltar e pedir esclarecimento adicional ao usuário
141
-
142
- **✅ Se TODAS as checkboxes estiverem marcadas:**
143
- → Prosseguir para atualizar spec.md
144
-
145
- ### Passo 6: Validar Edge Cases
146
-
147
- Documente no spec como lidar com cada edge case identificado:
148
-
149
- ```markdown
150
- ## Edge Cases
151
-
152
- ### EC001: {Nome do Edge Case}
153
- **Scenario:** {Quando acontece}
154
- **Expected Behavior:** {Como o sistema deve reagir}
155
- **Implementation Notes:** {Dicas para implementação}
156
- ```
157
-
158
- ### Passo 7: Atualizar State
159
-
160
- ## Outputs Gerados/Atualizados
161
-
162
- - `.morph/features/$ARGUMENTS/1-design/spec.md` - Atualizado com:
163
- - Seção "Clarifications" com perguntas e respostas
164
- - Edge cases documentados
165
- - Requisitos mais específicos
166
- - `.morph/features/$ARGUMENTS/2-clarify/clarifications.md` - Novo arquivo com Q&A estruturado
167
-
168
- ## Critérios de Avanço
169
-
170
- - [x] Perguntas de clarificação identificadas (3-7)
171
- - [x] Perguntas apresentadas ao usuário
172
- - [x] Respostas do usuário recebidas
173
- - [x] `spec.md` atualizado com clarificações
174
- - [x] Edge cases documentados
175
- - [x] State atualizado
176
- - [x] Nenhuma ambiguidade crítica remanescente
177
-
178
- ---
179
-
180
- ## Integração com Superpowers
181
-
182
- > Disponível quando o plugin `superpowers` está instalado.
183
-
184
- | Skill | Quando Usar | Invocação |
185
- |-------|-------------|-----------|
186
- | `systematic-debugging` | Para investigar ambiguidades técnicas complexas | `Skill(superpowers:systematic-debugging)` |
187
-
188
- ---
189
-
190
- Continuar automaticamente para FASE 4 (Tasks) após clarificações resolvidas.
@@ -1,366 +0,0 @@
1
- ---
2
- name: phase-design
3
- description: MORPH-SPEC Phase 2 (Design). Analyzes codebase/schema, then produces spec.md, contracts.cs (contracts-vsa.cs for VSA or contracts-level{N}.cs for DDD), schema-analysis.md, and decisions.md for the feature. Use after setup phase to create a full technical specification with C# contracts based on the real database schema and architecture decision records.
4
- argument-hint: "[feature-name]"
5
- user-invocable: false
6
- allowed-tools: Read, Write, Edit, Bash, Glob, Grep
7
- cliVersion: "4.8.19"
8
- ---
9
-
10
- # MORPH Design - FASE 2
11
-
12
- > INTERNAL: Workflow skill used by /morph-proposal during automated phase orchestration. Not a user command.
13
-
14
- Expanda a proposta em especificação técnica completa, contracts, decisões arquiteturais e estimativa de custos.
15
-
16
- ## Pré-requisitos
17
-
18
- - [ ] FASE 1 (Setup) concluída
19
- - [ ] FASE 1.5 (UI/UX) concluída OU pulada (se não houver front-end)
20
- - [ ] Proposta aprovada pelo usuário
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
- > **Example:** `references/spec-example.md` — filled-in spec.md showing expected output quality.
27
-
28
- | Ação | Ferramenta | Alternativa |
29
- |------|------------|-------------|
30
- | Ler proposal + UI specs | **Read** output files | — |
31
- | Obter dispatch config | **Bash** `npx morph-spec dispatch-agents $ARGUMENTS design` | Agentes a disparar + prompts de task |
32
- | **Dispatch domain-architect** (paralelo) | **Task** subagent com prompt do dispatch config | Análise de complexidade independente |
33
- | **Dispatch tech leads ativos** (paralelo) | **Task** subagents (dotnet-senior, nextjs-expert…) | Validação de arquitetura independente |
34
- | Obter schema do banco | **Supabase MCP** `list_tables()`, `get_table_schema()` | **Grep** queries + **Read** types |
35
- | Obter relacionamentos de FK | **Supabase MCP** `get_relationships()` | **Grep** JOIN/FK no código |
36
- | Obter políticas RLS | **Supabase MCP** `query()` com pg_policies | **Read** arquivos de políticas |
37
- | Encontrar arquivos de query (fallback) | **Grep** `\.from\(` em `*.ts,*.tsx,*.js,*.cs` | — |
38
- | Encontrar definições de tipo (fallback) | **Glob** `src/**/types/**/*.ts` ou `**/Entities/**/*.cs` | — |
39
- | Ler arquivos de query/tipos (fallback) | **Read** cada arquivo encontrado | — |
40
- | Pesquisar biblioteca para ADR | **Context7 MCP** `query_docs()` | **WebSearch** + **WebFetch** |
41
- | Buscar padrões no código | **GitHub MCP** `search_code()` | **Grep** padrões no projeto |
42
- | Renderizar template contracts (VSA) | **Bash** `npx morph-spec template render code/dotnet/contracts/contracts-vsa.cs ...` | — |
43
- | Renderizar template contracts (DDD nível detectado) | **Bash** `npx morph-spec template render code/dotnet/contracts/contracts-level{N}.cs ...` onde N = nível detectado no Passo 1.5 | — |
44
- | Renderizar template spec.md | **Bash** `npx morph-spec template render docs/spec ...` | — |
45
- | Renderizar template decisions.md | **Bash** `npx morph-spec template render docs/decisions ...` | — |
46
- | Criar schema-analysis.md | **Write** no diretório de outputs | — |
47
- | Atualizar state | **Bash** `npx morph-spec state mark-output ...` | — |
48
-
49
- **MCPs desta fase:** Supabase (schema analysis — **PRIORITÁRIO**), Context7 (research), GitHub (code search).
50
-
51
- **Anti-padrões:**
52
- - ❌ Adivinhar nomes de campos sem verificar schema (use MCP ou Grep primeiro!)
53
- - ❌ Task agent para ler um único arquivo spec (use Read direto)
54
- - ❌ WebSearch para schema do banco (use Supabase MCP ou análise de código)
55
- - ❌ Escrever contracts-level{N}.cs do zero (use template render)
56
- - ❌ Executar análise de domínio e análise de schema sequencialmente (são independentes — paralelize!)
57
- - ❌ Fazer análise de domínio inline no contexto principal quando 2+ agentes estão ativos (use Task dispatch)
58
-
59
- ---
60
-
61
- ## ✅ PRÉ-VOO OBRIGATÓRIO (antes de gerar qualquer artefato)
62
-
63
- ### 1. Verificar contexto injetado pelo SessionStart
64
-
65
- O hook já injetou o estado atual. Confirme que você leu:
66
- - Feature ativa, fase, status de approvals
67
- - Task progress e pending gates
68
- - Spec snippet (se disponível)
69
-
70
- ### 2. Ler todos os prerequisitos em PARALELO
71
-
72
- ```
73
- # Uma única chamada, não sequencial:
74
- Read: .morph/features/{feature}/0-proposal/proposal.md
75
- + Read: .morph/config/config.json (→ architecture.style)
76
- + Read: .morph/context/README.md (→ project context)
77
- + Read: framework/agents.json (→ activeAgents do feature)
78
- ```
79
-
80
- ### 3. Avaliar escopo → EnterPlanMode se necessário
81
-
82
- Se QUALQUER uma das condições abaixo for verdadeira:
83
- - [ ] Refactor toca ≥5 arquivos existentes de domínio
84
- - [ ] Estimativa de tasks ≥20
85
- - [ ] Mudança de arquitetura (ex: migrar de DDD Level 1 → Level 2)
86
-
87
- → **USE EnterPlanMode** antes de gerar contratos. Explore o codebase, apresente opções, aguarde aprovação.
88
-
89
- ### 4. Dispatch paralelo de subagents para artefatos independentes
90
-
91
- Os 4 artefatos de design são **independentes entre si**. Dispatch em paralelo:
92
-
93
- ```
94
- # Executar todos ao mesmo tempo (uma mensagem, múltiplos Task tool calls):
95
- Task(subagent=general): gerar spec.md (endpoints, regras de negócio)
96
- Task(subagent=general): gerar contracts-vsa.cs ou contracts-levelN.cs
97
- Task(subagent=general): gerar decisions.md (ADRs)
98
- Task(subagent=general): gerar tasks.md skeleton
99
- ```
100
-
101
- Ou obter config de dispatch:
102
- ```bash
103
- npx morph-spec dispatch-agents {feature} design --table
104
- ```
105
-
106
- ### 5. Criar tasks de sessão para visibilidade
107
-
108
- ```
109
- TaskCreate: "Gerar spec.md" → activeForm: "Gerando spec.md"
110
- TaskCreate: "Gerar contracts.cs" → activeForm: "Gerando contracts.cs"
111
- TaskCreate: "Gerar decisions.md" → activeForm: "Gerando decisions.md"
112
- TaskCreate: "Avanço de fase" → activeForm: "Avançando fase"
113
- ```
114
-
115
- ---
116
-
117
- ## Workflow
118
-
119
- ### Passo 1: Carregar Contexto, Agentes e Dispatch Config
120
-
121
- **Obtenha feature state e dispatch config:**
122
-
123
- ```bash
124
- npx morph-spec state get $ARGUMENTS
125
- npx morph-spec dispatch-agents $ARGUMENTS design
126
- ```
127
-
128
- O primeiro comando retorna `activeAgents`. O segundo retorna os agentes a disparar e seus prompts de task.
129
-
130
- **Leia outputs existentes em paralelo (Read direto):**
131
- 1. `.morph/features/$ARGUMENTS/0-proposal/proposal.md` - Proposta inicial
132
- 2. `.morph/features/$ARGUMENTS/2-ui/*.md` - UI/UX specs (se existirem)
133
-
134
- **Standards context** (carregue para o contexto principal os standards dos agentes ativos):
135
- - Paths dos standards em `agents.json[activeAgent].standards[]`
136
- - Prioridade: `.morph/context/*.md` > `.morph/framework/standards/` > `framework/standards/`
137
- - Architecture standards → guiam Technical Architecture section
138
- - Coding standards → definem contracts-level{N}.cs patterns
139
-
140
- ### Passo 1.5: Análise de Domínio via Task Dispatch
141
-
142
- **⚠️ OBRIGATÓRIO:** Execute antes de gerar qualquer contrato. Use **Task tool** para isolar esta análise do contexto principal.
143
-
144
- > Para os prompts completos de análise de arquitetura, veja `references/architecture-analysis-guide.md`
145
-
146
- O arquiteto ativo (lido do dispatch config no Passo 1) pode ser `domain-architect` (DDD) ou `vsa-architect` (VSA) — o prompt vem do dispatch config retornado por `dispatch-agents`.
147
-
148
- **Paralelização:** Este Task dispatch pode iniciar SIMULTANEAMENTE com o Passo 2 (schema analysis).
149
-
150
- #### Caminho A: `domain-architect` ativo (DDD)
151
-
152
- Use o `taskPrompt` do dispatch config (enriquecido com o conteúdo da proposta). O agente responde às 5 perguntas de complexidade DDD e retorna o nível (1, 2 ou 3) com justificativa.
153
-
154
- **Após receber o resultado:**
155
- - Documente no spec.md (seção `## Domain Complexity`)
156
- - **Para Nível 2+:** Preencha o `## Aggregate Blueprint` no spec.md
157
- - **Para Nível 3:** Adicione `BOUNDED_CONTEXT` como variável ao renderizar o template
158
-
159
- #### Caminho B: `vsa-architect` ativo (VSA)
160
-
161
- Use o `taskPrompt` do dispatch config (enriquecido com o conteúdo da proposta). O agente produz um VSA Blueprint com entity fields, operations, routes, error types e validation rules.
162
-
163
- **Após receber o resultado:** Documente no spec.md (seção `## Architecture Style: Vertical Slice`).
164
-
165
- ---
166
-
167
- ### Passo 2: Analisar Código Existente (CRÍTICO - FAZER ANTES DE CONTRACTS!)
168
-
169
- **⚠️ ATENÇÃO:** Este passo é OBRIGATÓRIO antes de gerar `contracts-level{N}.cs`. Previne geração de DTOs com nomes de campos errados.
170
-
171
- **Delegate para skill dedicada:**
172
-
173
- > **Ref:** `framework/skills/level-1-workflows/phase-codebase-analysis/SKILL.md` — workflow completo de análise de schema (MCP Supabase → fallback análise estática → SCHEMA-ANALYSIS.md → checkpoint de aprovação)
174
-
175
- Execute o workflow de `phase-codebase-analysis.md` para:
176
- 1. Detectar se análise é necessária
177
- 2. Tentar MCP Supabase (preferencial) ou análise estática (fallback)
178
- 3. Mapear field name mismatches e type mismatches
179
- 4. Gerar `schema-analysis.md` com findings reais
180
- 5. Apresentar checkpoint ao usuário e aguardar aprovação
181
-
182
- **Pule se:**
183
- - Feature é 100% nova (sem dependências em código existente)
184
- - Não há banco de dados ou APIs envolvidas
185
-
186
- ### Passo 3: Gerar `spec.md`
187
-
188
- > Para estrutura detalhada de cada seção, veja `references/spec-authoring-guide.md`
189
-
190
- Crie `.morph/features/$ARGUMENTS/1-design/spec.md` com as seções: Overview, Functional Requirements (FR001...), Non-Functional Requirements, Technical Architecture, Data Model, e Infrastructure Requirements (se aplicável).
191
-
192
- ### Passo 4: Gerar `contracts.cs` (BASEADO NO SCHEMA REAL!)
193
-
194
- **⚠️ IMPORTANTE:** Use `schema-analysis.md` (do Passo 2) para gerar DTOs/campos corretos!
195
-
196
- **Selecione o template baseado no arquiteto ativo:**
197
-
198
- | Arquiteto ativo | Template |
199
- |-----------------|---------|
200
- | `vsa-architect` | `code/dotnet/contracts/contracts-vsa.cs` |
201
- | `domain-architect` (Nível 1) | `code/dotnet/contracts/contracts-level1.cs` |
202
- | `domain-architect` (Nível 2) | `code/dotnet/contracts/contracts-level2.cs` |
203
- | `domain-architect` (Nível 3) | `code/dotnet/contracts/contracts-level3.cs` |
204
-
205
- **Renderizar template:**
206
-
207
- ```bash
208
- # Para projetos VSA:
209
- npx morph-spec template render \
210
- dotnet-contracts-vsa \
211
- .morph/features/$ARGUMENTS/1-design/contracts.cs \
212
- '{
213
- "FEATURE_NAME": "$ARGUMENTS",
214
- "NAMESPACE": "{ProjectNamespace}",
215
- "ROUTE": "/api/{kebabCase FEATURE_NAME}s",
216
- "DATE": "{{DATE}}"
217
- }'
218
-
219
- # Para projetos DDD (substituir N pelo nível detectado):
220
- npx morph-spec template render \
221
- code/dotnet/contracts/contracts-level{N}.cs \
222
- .morph/features/$ARGUMENTS/1-design/contracts.cs \
223
- '{
224
- "FEATURE_NAME": "$ARGUMENTS",
225
- "NAMESPACE": "{ProjectNamespace}",
226
- "dtos": [...],
227
- "interfaces": [...],
228
- "enums": [...],
229
- "valueObjects": [...]
230
- }'
231
- ```
232
-
233
- **Após renderizar (VSA):** Preencha os campos marcados com `// placeholder:` no template gerado com os campos reais da entidade, validators e mapeamentos do VSA Blueprint (Passo 1.5 Caminho B).
234
-
235
- **Padrões obrigatórios (DDD — já incluídos no template):**
236
- - Records para DTOs (immutable)
237
- - Interfaces para serviços
238
- - CancellationToken em métodos async
239
- - Nullable reference types habilitados
240
- - **USAR NOMES DE CAMPOS REAIS DO SCHEMA** (NÃO assumir!)
241
- - XML documentation comments
242
- - Value objects para complex types
243
-
244
- **Padrões obrigatórios (VSA — já incluídos no template):**
245
- - Request + Response records no mesmo arquivo do Handler
246
- - `sealed` em handlers, endpoints, validators, records
247
- - `Guid.CreateVersion7()` para IDs
248
- - `result.Match()` nos endpoints
249
- - `{Entity}Errors` estático compartilhado por todos os slices da feature
250
-
251
- **⚠️ CHECKPOINT: Verificar contra schema-analysis.md**
252
- - [ ] Todos os field names correspondem ao schema real?
253
- - [ ] Tipos de dados corretos (JSONB → JsonObject, não string)?
254
- - [ ] Nullability correta (campo opcional no banco → nullable no DTO)?
255
- - [ ] Relacionamentos mapeados corretamente?
256
- - [ ] Template foi renderizado corretamente?
257
-
258
- ### Passo 5: Iniciar `decisions.md`
259
-
260
- **Renderizar template:**
261
-
262
- ```bash
263
- # Use o template de decisions:
264
- Read: .morph/framework/templates/feature/decisions.md
265
-
266
- # OU renderize via CLI:
267
- npx morph-spec template render \
268
- feature/decisions \
269
- .morph/features/$ARGUMENTS/1-design/decisions.md \
270
- '{
271
- "FEATURE_NAME": "$ARGUMENTS",
272
- "DATE": "{{DATE}}",
273
- "decisions": []
274
- }'
275
- ```
276
-
277
- **Template contém estrutura para ADRs (Architecture Decision Records):**
278
- - Status, Context, Decision, Consequences
279
- - Pros/Cons analysis
280
- - Alternatives Considered section
281
- - Date tracking
282
-
283
- **ADRs obrigatórios:**
284
- - Escolha de biblioteca UI (se FASE 1.5 executou)
285
- - Padrões arquiteturais (CQRS, Repository, etc.)
286
- - Recursos Azure (se houver infra)
287
- - Integrações externas (APIs, webhooks, etc.)
288
- - Análise de custos (se houver recursos pagos)
289
-
290
- ### Passo 6: Estimar Custos
291
-
292
- Se houver recursos Azure na spec:
293
-
294
- **Limites configuráveis** (em config.json):
295
- - `costs.limits.freeTierOnly`: $0 (apenas free tier)
296
- - `costs.limits.withApproval`: $10 (requer confirmação do usuário)
297
- - `costs.limits.requiresADR`: $10 (requer ADR documentado)
298
-
299
- Documente custos em `decisions.md` e atualize state:
300
-
301
- ```bash
302
- npx morph-spec state set $ARGUMENTS costs.estimated {X.XX}
303
- npx morph-spec state set $ARGUMENTS costs.approved {true/false}
304
- ```
305
-
306
- ### Passo 7: Atualizar State
307
-
308
- ```bash
309
- npx morph-spec state mark-output $ARGUMENTS schema-analysis
310
- npx morph-spec state mark-output $ARGUMENTS spec
311
- npx morph-spec state mark-output $ARGUMENTS contracts
312
- npx morph-spec state mark-output $ARGUMENTS decisions
313
- ```
314
-
315
- ## Outputs Gerados
316
-
317
- - `.morph/features/$ARGUMENTS/1-design/schema-analysis.md` - **NOVO!** Análise do schema real
318
- - `.morph/features/$ARGUMENTS/1-design/spec.md` - Especificação técnica completa
319
- - `.morph/features/$ARGUMENTS/1-design/contracts.cs` - Interfaces, DTOs, Enums (baseados no schema real!)
320
- - `.morph/features/$ARGUMENTS/1-design/decisions.md` - ADRs (novo ou atualizado)
321
- - State atualizado com custos estimados
322
-
323
- ## PAUSA OBRIGATÓRIA
324
-
325
- Apresente ao usuário 3 ações sugeridas:
326
-
327
- 1. **Aprovar design e continuar para clarificação**
328
- 2. **Ajustar escopo/complexidade** - Revisar spec.md
329
- 3. **Modificar contracts** - Ajustar interfaces/DTOs
330
-
331
- ## Critérios de Avanço
332
-
333
- - [x] `spec.md` completo com todos os requisitos
334
- - [x] `contracts-level{N}.cs` com interfaces e DTOs
335
- - [x] `decisions.md` com ADRs relevantes
336
- - [x] Custos estimados e documentados (se houver infra)
337
- - [x] State atualizado
338
- - [x] Usuário aprovou design
339
-
340
- ---
341
-
342
- ## Integração com Superpowers
343
-
344
- > Disponível quando o plugin `superpowers` está instalado.
345
-
346
- | Skill | Quando Usar | Invocação |
347
- |-------|-------------|-----------|
348
- | `writing-plans` | Após spec aprovado, para estruturar abordagem de implementação | `Skill(superpowers:writing-plans)` |
349
- | `brainstorming` | Para explorar alternativas de arquitetura (use morph-spec version) | Use `brainstorming` (morph-spec version) |
350
-
351
- ---
352
-
353
- ## Outputs desta Fase
354
-
355
- <!-- morph:outputs:design -->
356
- | Output | Caminho |
357
- |--------|---------|
358
- | `schemaAnalysis` | `.morph/features/{feature}/1-design/schema-analysis.md` |
359
- | `spec` | `.morph/features/{feature}/1-design/spec.md` |
360
- | `contracts` | `.morph/features/{feature}/1-design/contracts.cs` |
361
- | `decisions` | `.morph/features/{feature}/1-design/decisions.md` |
362
- <!-- /morph:outputs -->
363
-
364
- ---
365
-
366
- Continuar automaticamente para FASE 3 (Clarify) após aprovação.