@polymorphism-tech/morph-spec 2.3.0 → 3.0.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 (166) hide show
  1. package/CLAUDE.md +446 -1730
  2. package/README.md +515 -516
  3. package/bin/morph-spec.js +366 -294
  4. package/bin/task-manager.js +429 -368
  5. package/bin/validate.js +369 -268
  6. package/content/.claude/commands/morph-apply.md +221 -158
  7. package/content/.claude/commands/morph-deploy.md +529 -0
  8. package/content/.claude/commands/morph-preflight.md +227 -0
  9. package/content/.claude/commands/morph-proposal.md +122 -101
  10. package/content/.claude/commands/morph-status.md +86 -86
  11. package/content/.claude/commands/morph-troubleshoot.md +122 -0
  12. package/content/.claude/skills/infra/azure-deploy-specialist.md +699 -0
  13. package/content/.claude/skills/level-0-meta/README.md +7 -0
  14. package/content/.claude/skills/level-0-meta/code-review.md +226 -0
  15. package/content/.claude/skills/level-0-meta/morph-checklist.md +117 -0
  16. package/content/.claude/skills/level-0-meta/simulation-checklist.md +77 -0
  17. package/content/.claude/skills/level-1-workflows/README.md +7 -0
  18. package/content/.claude/skills/level-1-workflows/morph-replicate.md +213 -0
  19. package/content/.claude/{commands/morph-clarify.md → skills/level-1-workflows/phase-clarify.md} +131 -184
  20. package/content/.claude/{commands/morph-design.md → skills/level-1-workflows/phase-design.md} +213 -275
  21. package/content/.claude/skills/level-1-workflows/phase-setup.md +106 -0
  22. package/content/.claude/skills/level-1-workflows/phase-tasks.md +164 -0
  23. package/content/.claude/{commands/morph-uiux.md → skills/level-1-workflows/phase-uiux.md} +169 -211
  24. package/content/.claude/skills/level-2-domains/README.md +14 -0
  25. package/content/.claude/skills/level-2-domains/ai-agents/ai-system-architect.md +192 -0
  26. package/content/.claude/skills/{specialists → level-2-domains/architecture}/po-pm-advisor.md +197 -197
  27. package/content/.claude/skills/level-2-domains/architecture/standards-architect.md +156 -0
  28. package/content/.claude/skills/level-2-domains/backend/dotnet-senior.md +287 -0
  29. package/content/.claude/skills/level-2-domains/backend/ef-modeler.md +113 -0
  30. package/content/.claude/skills/level-2-domains/backend/hangfire-orchestrator.md +126 -0
  31. package/content/.claude/skills/level-2-domains/backend/ms-agent-expert.md +109 -0
  32. package/content/.claude/skills/level-2-domains/frontend/blazor-builder.md +210 -0
  33. package/content/.claude/skills/level-2-domains/frontend/nextjs-expert.md +154 -0
  34. package/content/.claude/skills/level-2-domains/frontend/ui-ux-designer.md +191 -0
  35. package/content/.claude/skills/{specialists → level-2-domains/infrastructure}/azure-architect.md +142 -142
  36. package/content/.claude/skills/level-2-domains/infrastructure/bicep-architect.md +126 -0
  37. package/content/.claude/skills/level-2-domains/infrastructure/container-specialist.md +131 -0
  38. package/content/.claude/skills/level-2-domains/infrastructure/devops-engineer.md +119 -0
  39. package/content/.claude/skills/level-2-domains/integrations/asaas-financial.md +130 -0
  40. package/content/.claude/skills/level-2-domains/integrations/azure-identity.md +142 -0
  41. package/content/.claude/skills/level-2-domains/integrations/clerk-auth.md +108 -0
  42. package/content/.claude/skills/level-2-domains/integrations/resend-email.md +119 -0
  43. package/content/.claude/skills/level-2-domains/quality/code-analyzer.md +235 -0
  44. package/content/.claude/skills/level-2-domains/quality/testing-specialist.md +126 -0
  45. package/content/.claude/skills/level-3-technologies/README.md +7 -0
  46. package/content/.claude/skills/level-4-patterns/README.md +7 -0
  47. package/content/.claude/skills/specialists/prompt-engineer.md +189 -0
  48. package/content/.claude/skills/specialists/seo-growth-hacker.md +320 -0
  49. package/content/.morph/config/agents.json +762 -242
  50. package/content/.morph/config/config.template.json +122 -108
  51. package/content/.morph/docs/workflows/design-impl.md +37 -0
  52. package/content/.morph/docs/workflows/enforcement-pipeline.md +668 -0
  53. package/content/.morph/docs/workflows/fast-track.md +29 -0
  54. package/content/.morph/docs/workflows/full-morph.md +76 -0
  55. package/content/.morph/docs/workflows/standard.md +44 -0
  56. package/content/.morph/docs/workflows/ui-refresh.md +39 -0
  57. package/content/.morph/examples/scheduled-reports/decisions.md +158 -0
  58. package/content/.morph/examples/scheduled-reports/proposal.md +95 -0
  59. package/content/.morph/examples/scheduled-reports/spec.md +267 -0
  60. package/content/.morph/hooks/README.md +348 -239
  61. package/content/.morph/hooks/pre-commit-agents.sh +24 -24
  62. package/content/.morph/hooks/task-completed.js +73 -0
  63. package/content/.morph/hooks/teammate-idle.js +68 -0
  64. package/content/.morph/schemas/tasks.schema.json +220 -0
  65. package/content/.morph/standards/agent-framework-blazor-ui.md +359 -0
  66. package/content/.morph/standards/agent-framework-production.md +410 -0
  67. package/content/.morph/standards/agent-framework-setup.md +413 -453
  68. package/content/.morph/standards/agent-framework-workflows.md +349 -0
  69. package/content/.morph/standards/agent-teams-workflow.md +474 -0
  70. package/content/.morph/standards/architecture.md +325 -325
  71. package/content/.morph/standards/azure.md +605 -379
  72. package/content/.morph/standards/dotnet10-migration.md +520 -494
  73. package/content/.morph/templates/CONTEXT-FEATURE.md +276 -0
  74. package/content/.morph/templates/CONTEXT.md +170 -0
  75. package/content/.morph/templates/agent.cs +163 -172
  76. package/content/.morph/templates/clarify-questions.md +159 -0
  77. package/content/.morph/templates/contracts/Commands.cs +74 -0
  78. package/content/.morph/templates/contracts/Entities.cs +25 -0
  79. package/content/.morph/templates/contracts/Queries.cs +74 -0
  80. package/content/.morph/templates/contracts/README.md +74 -0
  81. package/content/.morph/templates/decisions.md +123 -106
  82. package/content/.morph/templates/infra/azure-pipelines-deploy.yml +480 -0
  83. package/content/.morph/templates/infra/deploy-checklist.md +426 -0
  84. package/content/.morph/templates/proposal.md +141 -155
  85. package/content/.morph/templates/recap.md +94 -105
  86. package/content/.morph/templates/simulation.md +353 -0
  87. package/content/.morph/templates/spec.md +149 -148
  88. package/content/.morph/templates/state.template.json +222 -222
  89. package/content/.morph/templates/tasks.md +257 -235
  90. package/content/.morph/templates/ui-components.md +362 -276
  91. package/content/CLAUDE.md +150 -442
  92. package/detectors/structure-detector.js +245 -250
  93. package/docs/README.md +144 -149
  94. package/docs/getting-started.md +301 -302
  95. package/docs/installation.md +361 -361
  96. package/docs/validation-checklist.md +265 -266
  97. package/package.json +80 -80
  98. package/src/commands/advance-phase.js +266 -0
  99. package/src/commands/analyze-blazor-concurrency.js +193 -0
  100. package/src/commands/deploy.js +780 -0
  101. package/src/commands/detect-agents.js +167 -0
  102. package/src/commands/doctor.js +356 -280
  103. package/src/commands/generate-context.js +40 -0
  104. package/src/commands/init.js +258 -245
  105. package/src/commands/lint-fluent.js +352 -0
  106. package/src/commands/rollback-phase.js +185 -0
  107. package/src/commands/session-summary.js +291 -0
  108. package/src/commands/task.js +78 -75
  109. package/src/commands/troubleshoot.js +222 -0
  110. package/src/commands/update.js +192 -159
  111. package/src/commands/validate-blazor-state.js +210 -0
  112. package/src/commands/validate-blazor.js +156 -0
  113. package/src/commands/validate-css.js +84 -0
  114. package/src/commands/validate-phase.js +221 -0
  115. package/src/lib/blazor-concurrency-analyzer.js +288 -0
  116. package/src/lib/blazor-state-validator.js +291 -0
  117. package/src/lib/blazor-validator.js +374 -0
  118. package/src/lib/complexity-analyzer.js +441 -292
  119. package/src/lib/context-generator.js +513 -0
  120. package/src/lib/continuous-validator.js +421 -440
  121. package/src/lib/css-validator.js +352 -0
  122. package/src/lib/decision-constraint-loader.js +109 -0
  123. package/src/lib/design-system-detector.js +187 -0
  124. package/src/lib/design-system-scaffolder.js +299 -0
  125. package/src/lib/hook-executor.js +256 -0
  126. package/src/lib/recap-generator.js +205 -0
  127. package/src/lib/spec-validator.js +258 -0
  128. package/src/lib/standards-context-injector.js +287 -0
  129. package/src/lib/state-manager.js +397 -340
  130. package/src/lib/team-orchestrator.js +322 -0
  131. package/src/lib/troubleshoot-grep.js +194 -0
  132. package/src/lib/troubleshoot-index.js +144 -0
  133. package/src/lib/validation-runner.js +283 -0
  134. package/src/lib/validators/contract-compliance-validator.js +273 -0
  135. package/src/lib/validators/design-system-validator.js +231 -0
  136. package/src/utils/file-copier.js +187 -139
  137. package/content/.claude/commands/morph-costs.md +0 -206
  138. package/content/.claude/commands/morph-setup.md +0 -100
  139. package/content/.claude/commands/morph-tasks.md +0 -319
  140. package/content/.claude/skills/infra/bicep-architect.md +0 -419
  141. package/content/.claude/skills/infra/container-specialist.md +0 -437
  142. package/content/.claude/skills/infra/devops-engineer.md +0 -405
  143. package/content/.claude/skills/integrations/asaas-financial.md +0 -333
  144. package/content/.claude/skills/integrations/azure-identity.md +0 -309
  145. package/content/.claude/skills/integrations/clerk-auth.md +0 -290
  146. package/content/.claude/skills/specialists/ai-system-architect.md +0 -604
  147. package/content/.claude/skills/specialists/cost-guardian.md +0 -110
  148. package/content/.claude/skills/specialists/ef-modeler.md +0 -211
  149. package/content/.claude/skills/specialists/hangfire-orchestrator.md +0 -255
  150. package/content/.claude/skills/specialists/ms-agent-expert.md +0 -263
  151. package/content/.claude/skills/specialists/standards-architect.md +0 -78
  152. package/content/.claude/skills/specialists/ui-ux-designer.md +0 -1100
  153. package/content/.claude/skills/stacks/dotnet-blazor.md +0 -606
  154. package/content/.claude/skills/stacks/dotnet-nextjs.md +0 -402
  155. package/content/.claude/skills/stacks/shopify.md +0 -445
  156. package/content/.morph/config/azure-pricing.json +0 -70
  157. package/content/.morph/config/azure-pricing.schema.json +0 -50
  158. package/content/.morph/hooks/pre-commit-costs.sh +0 -91
  159. package/docs/api/cost-calculator.js.html +0 -513
  160. package/docs/api/design-system-generator.js.html +0 -382
  161. package/docs/api/global.html +0 -5263
  162. package/docs/api/index.html +0 -96
  163. package/docs/api/state-manager.js.html +0 -423
  164. package/src/commands/cost.js +0 -181
  165. package/src/commands/update-pricing.js +0 -206
  166. package/src/lib/cost-calculator.js +0 -429
@@ -1,239 +1,348 @@
1
- # MORPH-SPEC Git Hooks
2
-
3
- Pre-commit hooks for automatic validation before committing.
4
-
5
- ## Available Hooks
6
-
7
- | Hook | Description | Action |
8
- |------|-------------|--------|
9
- | `pre-commit-agents.sh` | Validates agents.json with JSON Schema | ❌ Blocks commit |
10
- | `pre-commit-costs.sh` | Validates Azure costs don't exceed limits | ❌ Blocks commit |
11
- | `pre-commit-specs.sh` | Validates spec.md has required sections | Blocks commit |
12
- | `pre-commit-tests.sh` | Checks if new code has tests | ⚠️ Warns only |
13
- | `pre-commit-all.sh` | Runs all hooks in sequence | ❌ Blocks if any fail |
14
-
15
- ## Installation
16
-
17
- ### Option 1: Install Individual Hooks
18
-
19
- ```bash
20
- # Install cost validation
21
- ln -s ../../content/.morph/hooks/pre-commit-costs.sh .git/hooks/pre-commit
22
-
23
- # Or symlink all at once
24
- ln -s ../../content/.morph/hooks/pre-commit-all.sh .git/hooks/pre-commit
25
- ```
26
-
27
- ### Option 2: Copy Hooks
28
-
29
- ```bash
30
- # Copy master hook
31
- cp content/.morph/hooks/pre-commit-all.sh .git/hooks/pre-commit
32
- chmod +x .git/hooks/pre-commit
33
- ```
34
-
35
- ### Option 3: Use Existing Hooks
36
-
37
- If you already have `.git/hooks/pre-commit`, add this to the end:
38
-
39
- ```bash
40
- # Run MORPH-SPEC validations
41
- bash content/.morph/hooks/pre-commit-all.sh || exit 1
42
- ```
43
-
44
- ## What Each Hook Does
45
-
46
- ### pre-commit-agents.sh
47
-
48
- **Validates:** `agents.json` configuration
49
-
50
- **Checks:**
51
- - JSON Schema compliance
52
- - Required fields (id, name, emoji, type, etc.)
53
- - Keyword patterns (alphanumeric + hyphens/underscores)
54
- - No duplicate keywords
55
- - autoActivation for specialist agents
56
-
57
- **Example Output:**
58
- ```
59
- 🤖 Validating agent configuration...
60
- Detected changes to agents.json
61
-
62
- === MORPH-SPEC Agent Validator ===
63
-
64
- Version: 1.0.0
65
- Core Agents: 6
66
- Specialist Agents: 4
67
-
68
- ✓ Validation PASSED
69
- ```
70
-
71
- ### pre-commit-costs.sh
72
-
73
- **Validates:** Bicep files for Azure costs
74
-
75
- **Checks:**
76
- - Parses modified `.bicep` files
77
- - Calculates monthly costs
78
- - Blocks if > `requiresADR` limit (default: $10)
79
- - Checks if ADR exists in decisions.md
80
-
81
- **Example Output:**
82
- ```
83
- 💰 Calculating Azure costs...
84
-
85
- ╔════════════════════════════════════════════════╗
86
- sqlDatabase (Basic) $4.99/mo ║
87
- ║ containerApp (Consumption) $0.00/mo ║
88
- ╠════════════════════════════════════════════════╣
89
- ║ Total: $4.99 ║
90
- ║ Requires ADR: NO ║
91
- ╚════════════════════════════════════════════════╝
92
-
93
- Cost validation passed
94
- ```
95
-
96
- ### pre-commit-specs.sh
97
-
98
- **Validates:** `spec.md` files have required sections
99
-
100
- **Checks:**
101
- - `## 📋 Metadata`
102
- - `## 🎯 Overview`
103
- - `## 🏗️ Technical Design`
104
- - `## ✅ Acceptance Criteria`
105
- - Warns if no user stories found
106
-
107
- **Example Output:**
108
- ```
109
- 🔍 Validating spec files...
110
- Checking: .morph/outputs/my-feature/spec.md
111
- ✓ All required sections found
112
- ✓ All spec files are valid
113
- ```
114
-
115
- ### pre-commit-tests.sh
116
-
117
- **Validates:** New C# code has corresponding tests
118
-
119
- **Checks:**
120
- - Finds modified `.cs` files (excluding tests)
121
- - Looks for `*Tests.cs` or `Test*.cs`
122
- - Skips trivial files (DTOs, records, models)
123
- - **Warns only, doesn't block**
124
-
125
- **Example Output:**
126
- ```
127
- 🧪 Checking test coverage...
128
- ✓ Test found for: Services/UserService.cs
129
- ⚠️ No test found for: Services/PaymentService.cs
130
-
131
- ⚠️ WARNING: Some files don't have tests
132
- Override with: git commit --no-verify
133
- ```
134
-
135
- ### pre-commit-all.sh (Master Hook)
136
-
137
- **Runs:** All hooks in sequence
138
-
139
- **Output:**
140
- ```
141
- ╔════════════════════════════════════════════════╗
142
- ║ MORPH-SPEC PRE-COMMIT VALIDATION ║
143
- ╚════════════════════════════════════════════════╝
144
-
145
- ─────────────────────────────────────────────────
146
- 🤖 Validating agent configuration...
147
- ✓ No changes to agents.json
148
-
149
- ─────────────────────────────────────────────────
150
- 💰 Calculating Azure costs...
151
- ✓ No Bicep files modified
152
-
153
- ─────────────────────────────────────────────────
154
- 🔍 Validating spec files...
155
- ✓ No spec files modified
156
-
157
- ─────────────────────────────────────────────────
158
- 🧪 Checking test coverage...
159
- ✓ Test found for: Services/UserService.cs
160
-
161
- ═════════════════════════════════════════════════
162
- ALL PRE-COMMIT VALIDATIONS PASSED
163
- ```
164
-
165
- ## Bypassing Hooks
166
-
167
- If you need to commit without validation (e.g., WIP commit):
168
-
169
- ```bash
170
- git commit --no-verify -m "WIP: work in progress"
171
- ```
172
-
173
- **⚠️ Use sparingly** - hooks exist to prevent errors.
174
-
175
- ## Customizing Hooks
176
-
177
- ### Adjust Cost Limits
178
-
179
- Edit `content/.morph/config/config.json`:
180
-
181
- ```json
182
- {
183
- "costs": {
184
- "limits": {
185
- "requiresADR": 15 // Change from $10 to $15
186
- }
187
- }
188
- }
189
- ```
190
-
191
- ### Disable Specific Hooks
192
-
193
- Edit `.git/hooks/pre-commit` and comment out unwanted hooks:
194
-
195
- ```bash
196
- HOOKS=(
197
- "pre-commit-agents.sh"
198
- # "pre-commit-costs.sh" # Disabled
199
- "pre-commit-specs.sh"
200
- "pre-commit-tests.sh"
201
- )
202
- ```
203
-
204
- ## Troubleshooting
205
-
206
- ### Hook Not Running
207
-
208
- ```bash
209
- # Check if hook exists
210
- ls -la .git/hooks/pre-commit
211
-
212
- # Check if executable
213
- chmod +x .git/hooks/pre-commit
214
-
215
- # Test manually
216
- bash .git/hooks/pre-commit
217
- ```
218
-
219
- ### Hook Fails Unexpectedly
220
-
221
- ```bash
222
- # Run individual hook for debugging
223
- bash content/.morph/hooks/pre-commit-costs.sh
224
-
225
- # Check hook output
226
- bash -x content/.morph/hooks/pre-commit-costs.sh
227
- ```
228
-
229
- ## Benefits
230
-
231
- - ✅ **Prevents Errors:** Catches issues before commit
232
- - ✅ **Enforces Quality:** Requires tests, specs, ADRs
233
- - **Cost Control:** Blocks expensive infrastructure
234
- - ✅ **Fast Feedback:** Fails early in dev workflow
235
- - ✅ **Consistent:** Same validation for entire team
236
-
237
- ---
238
-
239
- *MORPH-SPEC Framework - Git Hooks*
1
+ # MORPH-SPEC Git Hooks
2
+
3
+ Pre-commit hooks for automatic validation before committing.
4
+
5
+ ## Available Hooks
6
+
7
+ | Hook | Description | Action |
8
+ |------|-------------|--------|
9
+ | `pre-commit-agents.sh` | Validates agents.json with JSON Schema | ❌ Blocks commit |
10
+ | `pre-commit-specs.sh` | Validates spec.md has required sections | ❌ Blocks commit |
11
+ | `pre-commit-tests.sh` | Checks if new code has tests | ⚠️ Warns only |
12
+ | `pre-commit-all.sh` | Runs all hooks in sequence | Blocks if any fail |
13
+
14
+ ## Installation
15
+
16
+ ### Option 1: Install Individual Hooks
17
+
18
+ ```bash
19
+ # Symlink all hooks at once
20
+ ln -s ../../content/.morph/hooks/pre-commit-all.sh .git/hooks/pre-commit
21
+ ```
22
+
23
+ ### Option 2: Copy Hooks
24
+
25
+ ```bash
26
+ # Copy master hook
27
+ cp content/.morph/hooks/pre-commit-all.sh .git/hooks/pre-commit
28
+ chmod +x .git/hooks/pre-commit
29
+ ```
30
+
31
+ ### Option 3: Use Existing Hooks
32
+
33
+ If you already have `.git/hooks/pre-commit`, add this to the end:
34
+
35
+ ```bash
36
+ # Run MORPH-SPEC validations
37
+ bash content/.morph/hooks/pre-commit-all.sh || exit 1
38
+ ```
39
+
40
+ ## What Each Hook Does
41
+
42
+ ### pre-commit-agents.sh
43
+
44
+ **Validates:** `agents.json` configuration
45
+
46
+ **Checks:**
47
+ - JSON Schema compliance
48
+ - Required fields (id, name, emoji, type, etc.)
49
+ - Keyword patterns (alphanumeric + hyphens/underscores)
50
+ - No duplicate keywords
51
+ - autoActivation for specialist agents
52
+
53
+ **Example Output:**
54
+ ```
55
+ 🤖 Validating agent configuration...
56
+ Detected changes to agents.json
57
+
58
+ === MORPH-SPEC Agent Validator ===
59
+
60
+ Version: 1.0.0
61
+ Core Agents: 6
62
+ Specialist Agents: 4
63
+
64
+ Validation PASSED
65
+ ```
66
+
67
+ ### pre-commit-specs.sh
68
+
69
+ **Validates:** `spec.md` files have required sections
70
+
71
+ **Checks:**
72
+ - `## 📋 Metadata`
73
+ - `## 🎯 Overview`
74
+ - `## 🏗️ Technical Design`
75
+ - `## ✅ Acceptance Criteria`
76
+ - Warns if no user stories found
77
+
78
+ **Example Output:**
79
+ ```
80
+ 🔍 Validating spec files...
81
+ Checking: .morph/outputs/my-feature/spec.md
82
+ ✓ All required sections found
83
+ All spec files are valid
84
+ ```
85
+
86
+ ### pre-commit-tests.sh
87
+
88
+ **Validates:** New C# code has corresponding tests
89
+
90
+ **Checks:**
91
+ - Finds modified `.cs` files (excluding tests)
92
+ - Looks for `*Tests.cs` or `Test*.cs`
93
+ - Skips trivial files (DTOs, records, models)
94
+ - **Warns only, doesn't block**
95
+
96
+ **Example Output:**
97
+ ```
98
+ 🧪 Checking test coverage...
99
+ ✓ Test found for: Services/UserService.cs
100
+ ⚠️ No test found for: Services/PaymentService.cs
101
+
102
+ ⚠️ WARNING: Some files don't have tests
103
+ Override with: git commit --no-verify
104
+ ```
105
+
106
+ ### pre-commit-all.sh (Master Hook)
107
+
108
+ **Runs:** All hooks in sequence
109
+
110
+ **Output:**
111
+ ```
112
+ ╔════════════════════════════════════════════════╗
113
+ ║ MORPH-SPEC PRE-COMMIT VALIDATION ║
114
+ ╚════════════════════════════════════════════════╝
115
+
116
+ ─────────────────────────────────────────────────
117
+ 🤖 Validating agent configuration...
118
+ ✓ No changes to agents.json
119
+
120
+ ─────────────────────────────────────────────────
121
+ 🔍 Validating spec files...
122
+ No spec files modified
123
+
124
+ ─────────────────────────────────────────────────
125
+ 🧪 Checking test coverage...
126
+ ✓ Test found for: Services/UserService.cs
127
+
128
+ ═════════════════════════════════════════════════
129
+ ALL PRE-COMMIT VALIDATIONS PASSED
130
+ ```
131
+
132
+ ## Bypassing Hooks
133
+
134
+ If you need to commit without validation (e.g., WIP commit):
135
+
136
+ ```bash
137
+ git commit --no-verify -m "WIP: work in progress"
138
+ ```
139
+
140
+ **⚠️ Use sparingly** - hooks exist to prevent errors.
141
+
142
+ ## Customizing Hooks
143
+
144
+ ### Disable Specific Hooks
145
+
146
+ Edit `.git/hooks/pre-commit` and comment out unwanted hooks:
147
+
148
+ ```bash
149
+ HOOKS=(
150
+ "pre-commit-agents.sh"
151
+ "pre-commit-specs.sh"
152
+ "pre-commit-tests.sh"
153
+ )
154
+ ```
155
+
156
+ ## Troubleshooting
157
+
158
+ ### Hook Not Running
159
+
160
+ ```bash
161
+ # Check if hook exists
162
+ ls -la .git/hooks/pre-commit
163
+
164
+ # Check if executable
165
+ chmod +x .git/hooks/pre-commit
166
+
167
+ # Test manually
168
+ bash .git/hooks/pre-commit
169
+ ```
170
+
171
+ ### Hook Fails Unexpectedly
172
+
173
+ ```bash
174
+ # Run individual hook for debugging
175
+ bash content/.morph/hooks/pre-commit-costs.sh
176
+
177
+ # Check hook output
178
+ bash -x content/.morph/hooks/pre-commit-costs.sh
179
+ ```
180
+
181
+ ## Benefits
182
+
183
+ - ✅ **Prevents Errors:** Catches issues before commit
184
+ - ✅ **Enforces Quality:** Requires tests, specs, ADRs
185
+ - **Fast Feedback:** Fails early in dev workflow
186
+ - ✅ **Consistent:** Same validation for entire team
187
+
188
+ ---
189
+
190
+ ## Agent Teams Hooks (Claude Code)
191
+
192
+ **New in MORPH 3.0:** Hooks for Claude Code's experimental Agent Teams feature.
193
+
194
+ ### Available Agent Teams Hooks
195
+
196
+ | Hook | Event | Description | Action |
197
+ |------|-------|-------------|--------|
198
+ | `teammate-idle.js` | TeammateIdle | Validates teammate's work before proceeding | ❌ Blocks if errors |
199
+ | `task-completed.js` | TaskCompleted | Validates task deliverables on completion | ❌ Blocks if errors |
200
+
201
+ ### teammate-idle.js
202
+
203
+ **Triggered:** When a teammate in Agent Teams is idle and waiting for instructions
204
+ **Purpose:** Quality gate to validate recent work before allowing teammate to proceed
205
+ **Validates:** Security, code quality, standards compliance
206
+
207
+ **Usage:**
208
+ ```bash
209
+ node content/.morph/hooks/teammate-idle.js <feature-name> [--dry-run] [--verbose]
210
+ ```
211
+
212
+ **Example:**
213
+ ```bash
214
+ node content/.morph/hooks/teammate-idle.js user-authentication --verbose
215
+ ```
216
+
217
+ **Output:**
218
+ ```
219
+ 🔔 TeammateIdle Hook Triggered
220
+ Feature: user-authentication
221
+ Event: Teammate is idle, validating recent work...
222
+
223
+ 🎯 Executing TeammateIdle hook for feature: user-authentication
224
+ Validators: security-expert
225
+
226
+ 🔍 Running security-expert validators...
227
+
228
+ ✅ TeammateIdle hook: All validators passed
229
+ ```
230
+
231
+ **Configuration:**
232
+
233
+ Validators are configured in `agents.json` for Tier 4 agents:
234
+
235
+ ```json
236
+ {
237
+ "security-expert": {
238
+ "tier": 4,
239
+ "role": "validator",
240
+ "relationships": {
241
+ "runs_in": "hooks",
242
+ "hook_triggers": ["TeammateIdle", "TaskCompleted"]
243
+ },
244
+ "hook_behavior": {
245
+ "validates": [
246
+ "SQL injection (string concatenation in queries)",
247
+ "Hardcoded secrets (API keys, passwords, connection strings)",
248
+ "XSS (@Html.Raw usage in Razor/Blazor)"
249
+ ],
250
+ "severity": "error",
251
+ "blocks_on_fail": true
252
+ }
253
+ }
254
+ }
255
+ ```
256
+
257
+ ### task-completed.js
258
+
259
+ **Triggered:** When a task is marked as completed
260
+ **Purpose:** Quality gate to validate task deliverables before marking done
261
+ **Validates:** All active validators for the feature
262
+
263
+ **Usage:**
264
+ ```bash
265
+ node content/.morph/hooks/task-completed.js <feature-name> <task-id> [--dry-run] [--verbose]
266
+ ```
267
+
268
+ **Example:**
269
+ ```bash
270
+ node content/.morph/hooks/task-completed.js user-authentication T003 --verbose
271
+ ```
272
+
273
+ **Output:**
274
+ ```
275
+ 🔔 TaskCompleted Hook Triggered
276
+ Feature: user-authentication
277
+ Task: T003
278
+ Event: Task marked complete, validating deliverables...
279
+
280
+ 🎯 Executing TaskCompleted hook for feature: user-authentication
281
+ Validators: security-expert
282
+
283
+ 🔍 Running security-expert validators...
284
+
285
+ ❌ TaskCompleted hook: Validation FAILED
286
+
287
+ 🚫 ERRORS (blocking):
288
+ security-expert → security
289
+ • Hardcoded secret detected: API key in appsettings.json (appsettings.json:15)
290
+ • SQL injection risk: String concatenation in UserService.cs (UserService.cs:42)
291
+
292
+ ⛔ Hook execution BLOCKED - fix errors before proceeding
293
+
294
+ 💡 TIP: Fix the errors above before the task can be marked complete.
295
+ ```
296
+
297
+ ### Integration with Claude Code
298
+
299
+ When Agent Teams is enabled (`CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1`), these hooks run automatically:
300
+
301
+ 1. **TeammateIdle**: When a teammate finishes work and waits
302
+ 2. **TaskCompleted**: When `morph-spec task done` is called
303
+
304
+ **Claude Code Settings:**
305
+ ```json
306
+ {
307
+ "hooks": {
308
+ "TeammateIdle": "node content/.morph/hooks/teammate-idle.js {feature}",
309
+ "TaskCompleted": "node content/.morph/hooks/task-completed.js {feature} {taskId}"
310
+ }
311
+ }
312
+ ```
313
+
314
+ ### Dry Run Mode
315
+
316
+ Test hooks without blocking:
317
+
318
+ ```bash
319
+ # See what would run without executing
320
+ node content/.morph/hooks/teammate-idle.js my-feature --dry-run
321
+
322
+ # Output:
323
+ # 🔍 DRY RUN - Would execute:
324
+ # - security-expert (severity: error)
325
+ # • SQL injection (string concatenation in queries)
326
+ # • Hardcoded secrets (API keys, passwords, connection strings)
327
+ # • XSS (@Html.Raw usage in Razor/Blazor)
328
+ ```
329
+
330
+ ### Hook Behavior Configuration
331
+
332
+ | Field | Description | Values |
333
+ |-------|-------------|--------|
334
+ | `validates` | Array of validation checks | Descriptive strings |
335
+ | `severity` | Error level | `"error"` (blocks) \| `"warning"` (warns only) |
336
+ | `blocks_on_fail` | Block on failure | `true` (default) \| `false` |
337
+
338
+ ### Exit Codes
339
+
340
+ | Code | Meaning |
341
+ |------|---------|
342
+ | 0 | All validators passed |
343
+ | 1 | Validation failed and blocked |
344
+ | 2 | Configuration error (missing feature, etc.) |
345
+
346
+ ---
347
+
348
+ *MORPH-SPEC Framework - Git Hooks*
@@ -1,24 +1,24 @@
1
- #!/bin/bash
2
- # MORPH-SPEC Pre-Commit Hook: Agent Configuration Validation
3
- # Uses validate-agents.js to check agents.json
4
-
5
- echo "🤖 Validating agent configuration..."
6
-
7
- # Check if agents.json is being modified
8
- if git diff --cached --name-only | grep -q 'agents\.json$'; then
9
- echo "Detected changes to agents.json"
10
-
11
- # Run validator
12
- if ! node bin/validate-agents.js; then
13
- echo ""
14
- echo "❌ COMMIT BLOCKED: agents.json validation failed"
15
- echo " Fix errors above before committing"
16
- exit 1
17
- fi
18
-
19
- echo "✓ agents.json is valid"
20
- else
21
- echo "✓ No changes to agents.json"
22
- fi
23
-
24
- exit 0
1
+ #!/bin/bash
2
+ # MORPH-SPEC Pre-Commit Hook: Agent Configuration Validation
3
+ # Uses validate-agents.js to check agents.json
4
+
5
+ echo "🤖 Validating agent configuration..."
6
+
7
+ # Check if agents.json is being modified
8
+ if git diff --cached --name-only | grep -q 'agents\.json$'; then
9
+ echo "Detected changes to agents.json"
10
+
11
+ # Run validator
12
+ if ! npx morph-spec validate-agents-skills; then
13
+ echo ""
14
+ echo "❌ COMMIT BLOCKED: agents.json validation failed"
15
+ echo " Fix errors above before committing"
16
+ exit 1
17
+ fi
18
+
19
+ echo "✓ agents.json is valid"
20
+ else
21
+ echo "✓ No changes to agents.json"
22
+ fi
23
+
24
+ exit 0