@polymorphism-tech/morph-spec 2.4.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.
- package/CLAUDE.md +158 -26
- package/LICENSE +72 -72
- package/bin/detect-agents.js +225 -225
- package/bin/morph-spec.js +8 -0
- package/bin/render-template.js +302 -302
- package/bin/semantic-detect-agents.js +246 -246
- package/bin/validate-agents-skills.js +251 -251
- package/bin/validate-agents.js +69 -69
- package/bin/validate-phase.js +263 -263
- package/content/.azure/README.md +293 -293
- package/content/.azure/docs/azure-devops-setup.md +454 -454
- package/content/.azure/docs/branch-strategy.md +398 -398
- package/content/.azure/docs/local-development.md +515 -515
- package/content/.azure/pipelines/pipeline-variables.yml +34 -34
- package/content/.azure/pipelines/prod-pipeline.yml +319 -319
- package/content/.azure/pipelines/staging-pipeline.yml +234 -234
- package/content/.azure/pipelines/templates/build-dotnet.yml +75 -75
- package/content/.azure/pipelines/templates/deploy-app-service.yml +94 -94
- package/content/.azure/pipelines/templates/deploy-container-app.yml +120 -120
- package/content/.azure/pipelines/templates/infra-deploy.yml +90 -90
- package/content/.claude/commands/morph-archive.md +79 -79
- package/content/.claude/commands/morph-deploy.md +529 -0
- package/content/.claude/commands/morph-infra.md +209 -209
- package/content/.claude/commands/morph-preflight.md +227 -227
- package/content/.claude/commands/morph-troubleshoot.md +122 -122
- package/content/.claude/settings.local.json +15 -15
- package/content/.claude/skills/infra/azure-deploy-specialist.md +699 -0
- package/content/.claude/skills/level-0-meta/README.md +7 -0
- package/content/.claude/skills/{checklists → level-0-meta}/morph-checklist.md +117 -117
- package/content/.claude/skills/level-1-workflows/README.md +7 -0
- package/content/.claude/skills/{workflows → level-1-workflows}/morph-replicate.md +213 -213
- package/content/.claude/skills/{workflows → level-1-workflows}/phase-clarify.md +131 -131
- package/content/.claude/skills/{workflows → level-1-workflows}/phase-design.md +213 -205
- package/content/.claude/skills/{workflows → level-1-workflows}/phase-setup.md +106 -92
- package/content/.claude/skills/{workflows → level-1-workflows}/phase-tasks.md +164 -164
- package/content/.claude/skills/{workflows → level-1-workflows}/phase-uiux.md +169 -138
- package/content/.claude/skills/level-2-domains/README.md +14 -0
- package/content/.claude/skills/{specialists → level-2-domains/quality}/testing-specialist.md +126 -126
- package/content/.claude/skills/level-3-technologies/README.md +7 -0
- package/content/.claude/skills/level-4-patterns/README.md +7 -0
- package/content/.claude/skills/specialists/prompt-engineer.md +189 -0
- package/content/.claude/skills/specialists/seo-growth-hacker.md +320 -0
- package/content/.morph/.morphversion +5 -5
- package/content/.morph/archive/.gitkeep +25 -25
- package/content/.morph/config/agents.json +742 -358
- package/content/.morph/config/config.template.json +33 -0
- package/content/.morph/docs/STORY-DRIVEN-DEVELOPMENT.md +392 -392
- package/content/.morph/docs/workflows/enforcement-pipeline.md +668 -0
- package/content/.morph/examples/api-nextjs/README.md +241 -241
- package/content/.morph/examples/api-nextjs/contracts.ts +307 -307
- package/content/.morph/examples/api-nextjs/spec.md +399 -399
- package/content/.morph/examples/api-nextjs/tasks.md +168 -168
- package/content/.morph/examples/micro-saas/README.md +125 -125
- package/content/.morph/examples/micro-saas/contracts.cs +358 -358
- package/content/.morph/examples/micro-saas/decisions.md +246 -246
- package/content/.morph/examples/micro-saas/spec.md +236 -236
- package/content/.morph/examples/micro-saas/tasks.md +150 -150
- package/content/.morph/examples/multi-agent/README.md +309 -309
- package/content/.morph/examples/multi-agent/contracts.cs +433 -433
- package/content/.morph/examples/multi-agent/spec.md +479 -479
- package/content/.morph/examples/multi-agent/tasks.md +185 -185
- package/content/.morph/examples/scheduled-reports/decisions.md +158 -158
- package/content/.morph/examples/scheduled-reports/proposal.md +95 -95
- package/content/.morph/examples/scheduled-reports/spec.md +267 -267
- package/content/.morph/examples/state-v3.json +188 -188
- package/content/.morph/features/.gitkeep +25 -25
- package/content/.morph/hooks/README.md +158 -0
- package/content/.morph/hooks/pre-commit-all.sh +48 -48
- package/content/.morph/hooks/pre-commit-specs.sh +49 -49
- package/content/.morph/hooks/pre-commit-tests.sh +60 -60
- package/content/.morph/hooks/task-completed.js +73 -0
- package/content/.morph/hooks/teammate-idle.js +68 -0
- package/content/.morph/project.md +160 -160
- package/content/.morph/schemas/agent.schema.json +296 -296
- package/content/.morph/schemas/tasks.schema.json +220 -220
- package/content/.morph/specs/.gitkeep +20 -20
- package/content/.morph/standards/agent-teams-workflow.md +474 -0
- package/content/.morph/standards/coding.md +377 -377
- package/content/.morph/standards/fluent-ui-setup.md +590 -590
- package/content/.morph/standards/migration-guide.md +514 -514
- package/content/.morph/standards/passkeys-auth.md +423 -423
- package/content/.morph/standards/vector-search-rag.md +536 -536
- package/content/.morph/state.json +17 -17
- package/content/.morph/templates/CONTEXT-FEATURE.md +276 -0
- package/content/.morph/templates/CONTEXT.md +170 -0
- package/content/.morph/templates/FluentDesignTheme.cs +149 -149
- package/content/.morph/templates/MudTheme.cs +281 -281
- package/content/.morph/templates/clarify-questions.md +159 -159
- package/content/.morph/templates/component.razor +239 -239
- package/content/.morph/templates/contracts/Commands.cs +74 -74
- package/content/.morph/templates/contracts/Entities.cs +25 -25
- package/content/.morph/templates/contracts/Queries.cs +74 -74
- package/content/.morph/templates/contracts/README.md +74 -74
- package/content/.morph/templates/contracts.cs +217 -217
- package/content/.morph/templates/design-system.css +226 -226
- package/content/.morph/templates/infra/.dockerignore.example +89 -89
- package/content/.morph/templates/infra/Dockerfile.example +82 -82
- package/content/.morph/templates/infra/README.md +286 -286
- package/content/.morph/templates/infra/app-insights.bicep +63 -63
- package/content/.morph/templates/infra/app-service.bicep +164 -164
- package/content/.morph/templates/infra/azure-pipelines-deploy.yml +480 -0
- package/content/.morph/templates/infra/container-app-env.bicep +49 -49
- package/content/.morph/templates/infra/container-app.bicep +156 -156
- package/content/.morph/templates/infra/deploy-checklist.md +426 -426
- package/content/.morph/templates/infra/deploy.ps1 +229 -229
- package/content/.morph/templates/infra/deploy.sh +208 -208
- package/content/.morph/templates/infra/key-vault.bicep +91 -91
- package/content/.morph/templates/infra/main.bicep +189 -189
- package/content/.morph/templates/infra/parameters.dev.json +29 -29
- package/content/.morph/templates/infra/parameters.prod.json +29 -29
- package/content/.morph/templates/infra/parameters.staging.json +29 -29
- package/content/.morph/templates/infra/sql-database.bicep +103 -103
- package/content/.morph/templates/infra/storage.bicep +106 -106
- package/content/.morph/templates/integrations/asaas-client.cs +387 -387
- package/content/.morph/templates/integrations/asaas-webhook.cs +351 -351
- package/content/.morph/templates/integrations/azure-identity-config.cs +288 -288
- package/content/.morph/templates/integrations/clerk-config.cs +258 -258
- package/content/.morph/templates/job.cs +171 -171
- package/content/.morph/templates/migration.cs +83 -83
- package/content/.morph/templates/repository.cs +141 -141
- package/content/.morph/templates/saas/subscription.cs +347 -347
- package/content/.morph/templates/saas/tenant.cs +338 -338
- package/content/.morph/templates/service.cs +139 -139
- package/content/.morph/templates/sprint-status.yaml +68 -68
- package/content/.morph/templates/story.md +143 -143
- package/content/.morph/templates/test.cs +239 -239
- package/content/.morph/templates/ui-design-system.md +286 -286
- package/content/.morph/templates/ui-flows.md +336 -336
- package/content/.morph/templates/ui-mockups.md +133 -133
- package/content/.morph/test-infra/example.bicep +59 -59
- package/content/README.md +79 -79
- package/detectors/config-detector.js +223 -223
- package/detectors/conversation-analyzer.js +163 -163
- package/detectors/index.js +84 -84
- package/detectors/standards-generator.js +275 -275
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-light-webfont.svg +977 -977
- package/docs/api/fonts/Source-Sans-Pro/sourcesanspro-regular-webfont.svg +1048 -1048
- package/docs/api/scripts/collapse.js +38 -38
- package/docs/api/scripts/commonNav.js +28 -28
- package/docs/api/scripts/linenumber.js +25 -25
- package/docs/api/scripts/nav.js +12 -12
- package/docs/api/scripts/polyfill.js +3 -3
- package/docs/api/scripts/prettify/Apache-License-2.0.txt +202 -202
- package/docs/api/scripts/prettify/lang-css.js +2 -2
- package/docs/api/scripts/prettify/prettify.js +28 -28
- package/docs/api/scripts/search.js +98 -98
- package/docs/api/styles/jsdoc.css +776 -776
- package/docs/api/styles/prettify.css +80 -80
- package/docs/examples.md +328 -328
- package/docs/templates.md +418 -418
- package/package.json +1 -1
- package/scripts/postinstall.js +132 -132
- package/src/commands/advance-phase.js +83 -0
- package/src/commands/analyze-blazor-concurrency.js +193 -193
- package/src/commands/create-story.js +351 -351
- package/src/commands/deploy.js +780 -0
- package/src/commands/detect-agents.js +34 -6
- package/src/commands/detect.js +104 -104
- package/src/commands/generate-context.js +40 -0
- package/src/commands/generate.js +149 -149
- package/src/commands/lint-fluent.js +352 -352
- package/src/commands/rollback-phase.js +185 -185
- package/src/commands/session-summary.js +291 -291
- package/src/commands/shard-spec.js +224 -224
- package/src/commands/sprint-status.js +250 -250
- package/src/commands/state.js +333 -333
- package/src/commands/sync.js +167 -167
- package/src/commands/troubleshoot.js +222 -222
- package/src/commands/validate-blazor-state.js +210 -210
- package/src/commands/validate-blazor.js +156 -156
- package/src/commands/validate-css.js +84 -84
- package/src/commands/validate-phase.js +221 -221
- package/src/lib/blazor-concurrency-analyzer.js +288 -288
- package/src/lib/blazor-state-validator.js +291 -291
- package/src/lib/blazor-validator.js +374 -374
- package/src/lib/context-generator.js +513 -0
- package/src/lib/css-validator.js +352 -352
- package/src/lib/design-system-detector.js +187 -0
- package/src/lib/design-system-generator.js +298 -298
- package/src/lib/design-system-scaffolder.js +299 -0
- package/src/lib/hook-executor.js +256 -0
- package/src/lib/learning-system.js +520 -520
- package/src/lib/mockup-generator.js +366 -366
- package/src/lib/spec-validator.js +258 -0
- package/src/lib/standards-context-injector.js +287 -0
- package/src/lib/team-orchestrator.js +322 -0
- package/src/lib/troubleshoot-grep.js +194 -194
- package/src/lib/troubleshoot-index.js +144 -144
- package/src/lib/ui-detector.js +350 -350
- package/src/lib/validation-runner.js +65 -13
- package/src/lib/validators/architecture-validator.js +387 -387
- package/src/lib/validators/design-system-validator.js +231 -0
- package/src/lib/validators/package-validator.js +360 -360
- package/src/lib/validators/ui-contrast-validator.js +422 -422
- package/src/utils/file-copier.js +9 -1
- package/src/utils/logger.js +32 -32
- package/src/utils/version-checker.js +175 -175
- /package/content/.claude/skills/{checklists → level-0-meta}/code-review.md +0 -0
- /package/content/.claude/skills/{checklists → level-0-meta}/simulation-checklist.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/ai-agents}/ai-system-architect.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/architecture}/po-pm-advisor.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/architecture}/standards-architect.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/backend}/dotnet-senior.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/backend}/ef-modeler.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/backend}/hangfire-orchestrator.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/backend}/ms-agent-expert.md +0 -0
- /package/content/.claude/skills/{stacks/dotnet-blazor.md → level-2-domains/frontend/blazor-builder.md} +0 -0
- /package/content/.claude/skills/{stacks/dotnet-nextjs.md → level-2-domains/frontend/nextjs-expert.md} +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/frontend}/ui-ux-designer.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/infrastructure}/azure-architect.md +0 -0
- /package/content/.claude/skills/{infra → level-2-domains/infrastructure}/bicep-architect.md +0 -0
- /package/content/.claude/skills/{infra → level-2-domains/infrastructure}/container-specialist.md +0 -0
- /package/content/.claude/skills/{infra → level-2-domains/infrastructure}/devops-engineer.md +0 -0
- /package/content/.claude/skills/{integrations → level-2-domains/integrations}/asaas-financial.md +0 -0
- /package/content/.claude/skills/{integrations → level-2-domains/integrations}/azure-identity.md +0 -0
- /package/content/.claude/skills/{integrations → level-2-domains/integrations}/clerk-auth.md +0 -0
- /package/content/.claude/skills/{integrations → level-2-domains/integrations}/resend-email.md +0 -0
- /package/content/.claude/skills/{specialists → level-2-domains/quality}/code-analyzer.md +0 -0
|
@@ -1,188 +1,188 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": "3.0.0",
|
|
3
|
-
"project": {
|
|
4
|
-
"name": "FishArt",
|
|
5
|
-
"type": "blazor-server",
|
|
6
|
-
"createdAt": "2024-01-15T10:00:00Z",
|
|
7
|
-
"updatedAt": "2024-01-15T14:30:00Z"
|
|
8
|
-
},
|
|
9
|
-
"features": {
|
|
10
|
-
"scheduled-reports": {
|
|
11
|
-
"status": "in_progress",
|
|
12
|
-
"phase": "implement",
|
|
13
|
-
"activeAgents": [
|
|
14
|
-
"standards-architect",
|
|
15
|
-
"blazor-builder",
|
|
16
|
-
"ef-modeler",
|
|
17
|
-
"hangfire-orchestrator"
|
|
18
|
-
],
|
|
19
|
-
"tasks": [
|
|
20
|
-
{
|
|
21
|
-
"id": "T001",
|
|
22
|
-
"title": "Create ScheduledReport entity",
|
|
23
|
-
"status": "completed",
|
|
24
|
-
"completedAt": "2024-01-15T10:30:00Z",
|
|
25
|
-
"completedBy": "claude",
|
|
26
|
-
"dependencies": [],
|
|
27
|
-
"files": [
|
|
28
|
-
"Domain/Entities/ScheduledReport.cs",
|
|
29
|
-
"Infrastructure/Persistence/Config/ScheduledReportConfig.cs"
|
|
30
|
-
],
|
|
31
|
-
"checkpoint": "CHECKPOINT_001"
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
"id": "T002",
|
|
35
|
-
"title": "Create CreateReportCommand + Handler",
|
|
36
|
-
"status": "completed",
|
|
37
|
-
"completedAt": "2024-01-15T11:15:00Z",
|
|
38
|
-
"completedBy": "claude",
|
|
39
|
-
"dependencies": ["T001"],
|
|
40
|
-
"files": [
|
|
41
|
-
"Application/Commands/CreateReport/CreateReportCommand.cs",
|
|
42
|
-
"Application/Commands/CreateReport/CreateReportHandler.cs"
|
|
43
|
-
]
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
"id": "T003",
|
|
47
|
-
"title": "Create Hangfire job for report generation",
|
|
48
|
-
"status": "completed",
|
|
49
|
-
"completedAt": "2024-01-15T12:00:00Z",
|
|
50
|
-
"completedBy": "claude",
|
|
51
|
-
"dependencies": ["T002"],
|
|
52
|
-
"files": [
|
|
53
|
-
"Infrastructure/Jobs/GenerateReportJob.cs"
|
|
54
|
-
],
|
|
55
|
-
"checkpoint": "CHECKPOINT_002"
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
"id": "T004",
|
|
59
|
-
"title": "Create ReportList component (Blazor)",
|
|
60
|
-
"status": "in_progress",
|
|
61
|
-
"startedAt": "2024-01-15T13:00:00Z",
|
|
62
|
-
"dependencies": ["T001"],
|
|
63
|
-
"files": [
|
|
64
|
-
"Components/Reports/ReportList.razor",
|
|
65
|
-
"Components/Reports/ReportList.razor.cs",
|
|
66
|
-
"Components/Reports/ReportList.razor.css"
|
|
67
|
-
]
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
"id": "T005",
|
|
71
|
-
"title": "Create CreateReportForm component (Blazor)",
|
|
72
|
-
"status": "pending",
|
|
73
|
-
"dependencies": ["T002"],
|
|
74
|
-
"files": [
|
|
75
|
-
"Components/Reports/CreateReportForm.razor",
|
|
76
|
-
"Components/Reports/CreateReportForm.razor.cs",
|
|
77
|
-
"Components/Reports/CreateReportForm.razor.css"
|
|
78
|
-
]
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
"id": "T006",
|
|
82
|
-
"title": "Create API controller for reports",
|
|
83
|
-
"status": "pending",
|
|
84
|
-
"dependencies": ["T002"],
|
|
85
|
-
"files": [
|
|
86
|
-
"API/Controllers/ReportsController.cs"
|
|
87
|
-
]
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
"id": "T007",
|
|
91
|
-
"title": "Add Hangfire dashboard configuration",
|
|
92
|
-
"status": "pending",
|
|
93
|
-
"dependencies": ["T003"],
|
|
94
|
-
"files": [
|
|
95
|
-
"Program.cs"
|
|
96
|
-
]
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
"id": "T008",
|
|
100
|
-
"title": "Create unit tests for CreateReportCommand",
|
|
101
|
-
"status": "pending",
|
|
102
|
-
"dependencies": ["T002"],
|
|
103
|
-
"files": [
|
|
104
|
-
"Tests/Application/Commands/CreateReportCommandTests.cs"
|
|
105
|
-
]
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
"id": "T009",
|
|
109
|
-
"title": "Create integration tests for report generation",
|
|
110
|
-
"status": "pending",
|
|
111
|
-
"dependencies": ["T003", "T006"],
|
|
112
|
-
"files": [
|
|
113
|
-
"Tests/Integration/ReportGenerationTests.cs"
|
|
114
|
-
],
|
|
115
|
-
"checkpoint": "CHECKPOINT_003"
|
|
116
|
-
}
|
|
117
|
-
],
|
|
118
|
-
"progress": {
|
|
119
|
-
"total": 9,
|
|
120
|
-
"completed": 3,
|
|
121
|
-
"inProgress": 1,
|
|
122
|
-
"pending": 5,
|
|
123
|
-
"percentage": 33
|
|
124
|
-
},
|
|
125
|
-
"checkpoints": [
|
|
126
|
-
{
|
|
127
|
-
"id": "CHECKPOINT_001",
|
|
128
|
-
"timestamp": "2024-01-15T10:30:00Z",
|
|
129
|
-
"tasksCompleted": ["T001"],
|
|
130
|
-
"note": "Checkpoint: Create ScheduledReport entity"
|
|
131
|
-
},
|
|
132
|
-
{
|
|
133
|
-
"id": "CHECKPOINT_002",
|
|
134
|
-
"timestamp": "2024-01-15T12:00:00Z",
|
|
135
|
-
"tasksCompleted": ["T003"],
|
|
136
|
-
"note": "Checkpoint: Create Hangfire job for report generation"
|
|
137
|
-
},
|
|
138
|
-
{
|
|
139
|
-
"id": "CHECKPOINT_AUTO_1705326000000",
|
|
140
|
-
"timestamp": "2024-01-15T12:00:00Z",
|
|
141
|
-
"tasksCompleted": ["T001", "T002", "T003"],
|
|
142
|
-
"note": "Auto-checkpoint: 3 tasks completed"
|
|
143
|
-
}
|
|
144
|
-
],
|
|
145
|
-
"outputs": {
|
|
146
|
-
"proposal": {
|
|
147
|
-
"created": true,
|
|
148
|
-
"path": ".morph/project/outputs/scheduled-reports/proposal.md"
|
|
149
|
-
},
|
|
150
|
-
"spec": {
|
|
151
|
-
"created": true,
|
|
152
|
-
"path": ".morph/project/outputs/scheduled-reports/spec.md"
|
|
153
|
-
},
|
|
154
|
-
"contracts": {
|
|
155
|
-
"created": true,
|
|
156
|
-
"path": ".morph/project/outputs/scheduled-reports/contracts.cs"
|
|
157
|
-
},
|
|
158
|
-
"ui-spec": {
|
|
159
|
-
"created": true,
|
|
160
|
-
"path": ".morph/project/outputs/scheduled-reports/ui-spec.md"
|
|
161
|
-
},
|
|
162
|
-
"tasks": {
|
|
163
|
-
"created": true,
|
|
164
|
-
"note": "Tasks are now inline in state.json (schema 3.0.0)"
|
|
165
|
-
},
|
|
166
|
-
"decisions": {
|
|
167
|
-
"created": true,
|
|
168
|
-
"path": ".morph/project/outputs/scheduled-reports/decisions.md"
|
|
169
|
-
}
|
|
170
|
-
},
|
|
171
|
-
"costs": {
|
|
172
|
-
"estimated": 5.50,
|
|
173
|
-
"approved": true,
|
|
174
|
-
"breakdown": {
|
|
175
|
-
"hangfire": 0,
|
|
176
|
-
"storage": 0.02,
|
|
177
|
-
"sql": 4.99,
|
|
178
|
-
"containerApp": 0.49
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
},
|
|
183
|
-
"metadata": {
|
|
184
|
-
"totalFeatures": 1,
|
|
185
|
-
"completedFeatures": 0,
|
|
186
|
-
"totalCostEstimated": 5.50
|
|
187
|
-
}
|
|
188
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"version": "3.0.0",
|
|
3
|
+
"project": {
|
|
4
|
+
"name": "FishArt",
|
|
5
|
+
"type": "blazor-server",
|
|
6
|
+
"createdAt": "2024-01-15T10:00:00Z",
|
|
7
|
+
"updatedAt": "2024-01-15T14:30:00Z"
|
|
8
|
+
},
|
|
9
|
+
"features": {
|
|
10
|
+
"scheduled-reports": {
|
|
11
|
+
"status": "in_progress",
|
|
12
|
+
"phase": "implement",
|
|
13
|
+
"activeAgents": [
|
|
14
|
+
"standards-architect",
|
|
15
|
+
"blazor-builder",
|
|
16
|
+
"ef-modeler",
|
|
17
|
+
"hangfire-orchestrator"
|
|
18
|
+
],
|
|
19
|
+
"tasks": [
|
|
20
|
+
{
|
|
21
|
+
"id": "T001",
|
|
22
|
+
"title": "Create ScheduledReport entity",
|
|
23
|
+
"status": "completed",
|
|
24
|
+
"completedAt": "2024-01-15T10:30:00Z",
|
|
25
|
+
"completedBy": "claude",
|
|
26
|
+
"dependencies": [],
|
|
27
|
+
"files": [
|
|
28
|
+
"Domain/Entities/ScheduledReport.cs",
|
|
29
|
+
"Infrastructure/Persistence/Config/ScheduledReportConfig.cs"
|
|
30
|
+
],
|
|
31
|
+
"checkpoint": "CHECKPOINT_001"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"id": "T002",
|
|
35
|
+
"title": "Create CreateReportCommand + Handler",
|
|
36
|
+
"status": "completed",
|
|
37
|
+
"completedAt": "2024-01-15T11:15:00Z",
|
|
38
|
+
"completedBy": "claude",
|
|
39
|
+
"dependencies": ["T001"],
|
|
40
|
+
"files": [
|
|
41
|
+
"Application/Commands/CreateReport/CreateReportCommand.cs",
|
|
42
|
+
"Application/Commands/CreateReport/CreateReportHandler.cs"
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"id": "T003",
|
|
47
|
+
"title": "Create Hangfire job for report generation",
|
|
48
|
+
"status": "completed",
|
|
49
|
+
"completedAt": "2024-01-15T12:00:00Z",
|
|
50
|
+
"completedBy": "claude",
|
|
51
|
+
"dependencies": ["T002"],
|
|
52
|
+
"files": [
|
|
53
|
+
"Infrastructure/Jobs/GenerateReportJob.cs"
|
|
54
|
+
],
|
|
55
|
+
"checkpoint": "CHECKPOINT_002"
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"id": "T004",
|
|
59
|
+
"title": "Create ReportList component (Blazor)",
|
|
60
|
+
"status": "in_progress",
|
|
61
|
+
"startedAt": "2024-01-15T13:00:00Z",
|
|
62
|
+
"dependencies": ["T001"],
|
|
63
|
+
"files": [
|
|
64
|
+
"Components/Reports/ReportList.razor",
|
|
65
|
+
"Components/Reports/ReportList.razor.cs",
|
|
66
|
+
"Components/Reports/ReportList.razor.css"
|
|
67
|
+
]
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"id": "T005",
|
|
71
|
+
"title": "Create CreateReportForm component (Blazor)",
|
|
72
|
+
"status": "pending",
|
|
73
|
+
"dependencies": ["T002"],
|
|
74
|
+
"files": [
|
|
75
|
+
"Components/Reports/CreateReportForm.razor",
|
|
76
|
+
"Components/Reports/CreateReportForm.razor.cs",
|
|
77
|
+
"Components/Reports/CreateReportForm.razor.css"
|
|
78
|
+
]
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"id": "T006",
|
|
82
|
+
"title": "Create API controller for reports",
|
|
83
|
+
"status": "pending",
|
|
84
|
+
"dependencies": ["T002"],
|
|
85
|
+
"files": [
|
|
86
|
+
"API/Controllers/ReportsController.cs"
|
|
87
|
+
]
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"id": "T007",
|
|
91
|
+
"title": "Add Hangfire dashboard configuration",
|
|
92
|
+
"status": "pending",
|
|
93
|
+
"dependencies": ["T003"],
|
|
94
|
+
"files": [
|
|
95
|
+
"Program.cs"
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"id": "T008",
|
|
100
|
+
"title": "Create unit tests for CreateReportCommand",
|
|
101
|
+
"status": "pending",
|
|
102
|
+
"dependencies": ["T002"],
|
|
103
|
+
"files": [
|
|
104
|
+
"Tests/Application/Commands/CreateReportCommandTests.cs"
|
|
105
|
+
]
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"id": "T009",
|
|
109
|
+
"title": "Create integration tests for report generation",
|
|
110
|
+
"status": "pending",
|
|
111
|
+
"dependencies": ["T003", "T006"],
|
|
112
|
+
"files": [
|
|
113
|
+
"Tests/Integration/ReportGenerationTests.cs"
|
|
114
|
+
],
|
|
115
|
+
"checkpoint": "CHECKPOINT_003"
|
|
116
|
+
}
|
|
117
|
+
],
|
|
118
|
+
"progress": {
|
|
119
|
+
"total": 9,
|
|
120
|
+
"completed": 3,
|
|
121
|
+
"inProgress": 1,
|
|
122
|
+
"pending": 5,
|
|
123
|
+
"percentage": 33
|
|
124
|
+
},
|
|
125
|
+
"checkpoints": [
|
|
126
|
+
{
|
|
127
|
+
"id": "CHECKPOINT_001",
|
|
128
|
+
"timestamp": "2024-01-15T10:30:00Z",
|
|
129
|
+
"tasksCompleted": ["T001"],
|
|
130
|
+
"note": "Checkpoint: Create ScheduledReport entity"
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"id": "CHECKPOINT_002",
|
|
134
|
+
"timestamp": "2024-01-15T12:00:00Z",
|
|
135
|
+
"tasksCompleted": ["T003"],
|
|
136
|
+
"note": "Checkpoint: Create Hangfire job for report generation"
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
"id": "CHECKPOINT_AUTO_1705326000000",
|
|
140
|
+
"timestamp": "2024-01-15T12:00:00Z",
|
|
141
|
+
"tasksCompleted": ["T001", "T002", "T003"],
|
|
142
|
+
"note": "Auto-checkpoint: 3 tasks completed"
|
|
143
|
+
}
|
|
144
|
+
],
|
|
145
|
+
"outputs": {
|
|
146
|
+
"proposal": {
|
|
147
|
+
"created": true,
|
|
148
|
+
"path": ".morph/project/outputs/scheduled-reports/proposal.md"
|
|
149
|
+
},
|
|
150
|
+
"spec": {
|
|
151
|
+
"created": true,
|
|
152
|
+
"path": ".morph/project/outputs/scheduled-reports/spec.md"
|
|
153
|
+
},
|
|
154
|
+
"contracts": {
|
|
155
|
+
"created": true,
|
|
156
|
+
"path": ".morph/project/outputs/scheduled-reports/contracts.cs"
|
|
157
|
+
},
|
|
158
|
+
"ui-spec": {
|
|
159
|
+
"created": true,
|
|
160
|
+
"path": ".morph/project/outputs/scheduled-reports/ui-spec.md"
|
|
161
|
+
},
|
|
162
|
+
"tasks": {
|
|
163
|
+
"created": true,
|
|
164
|
+
"note": "Tasks are now inline in state.json (schema 3.0.0)"
|
|
165
|
+
},
|
|
166
|
+
"decisions": {
|
|
167
|
+
"created": true,
|
|
168
|
+
"path": ".morph/project/outputs/scheduled-reports/decisions.md"
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
"costs": {
|
|
172
|
+
"estimated": 5.50,
|
|
173
|
+
"approved": true,
|
|
174
|
+
"breakdown": {
|
|
175
|
+
"hangfire": 0,
|
|
176
|
+
"storage": 0.02,
|
|
177
|
+
"sql": 4.99,
|
|
178
|
+
"containerApp": 0.49
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
},
|
|
183
|
+
"metadata": {
|
|
184
|
+
"totalFeatures": 1,
|
|
185
|
+
"completedFeatures": 0,
|
|
186
|
+
"totalCostEstimated": 5.50
|
|
187
|
+
}
|
|
188
|
+
}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
# Features em Desenvolvimento
|
|
2
|
-
|
|
3
|
-
Esta pasta contém as features ATIVAS em desenvolvimento.
|
|
4
|
-
|
|
5
|
-
## Estrutura
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
features/
|
|
9
|
-
└── {feature-name}/
|
|
10
|
-
├── proposal.md # Proposta (por que e o quê)
|
|
11
|
-
├── spec.md # Especificação técnica
|
|
12
|
-
├── tasks.md # Checklist de implementação
|
|
13
|
-
├── contracts.cs # Interfaces e DTOs
|
|
14
|
-
├── decisions.md # ADRs
|
|
15
|
-
└── recap.md # Resumo pós-implementação
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## Workflow
|
|
19
|
-
|
|
20
|
-
1. `/morph-proposal {feature}` - Criar nova feature
|
|
21
|
-
2. Revisar e aprovar proposal
|
|
22
|
-
3. `/morph-apply {feature}` - Implementar
|
|
23
|
-
4. `/morph-archive {feature}` - Arquivar quando concluída
|
|
24
|
-
|
|
25
|
-
*Gerado pelo MORPH Framework*
|
|
1
|
+
# Features em Desenvolvimento
|
|
2
|
+
|
|
3
|
+
Esta pasta contém as features ATIVAS em desenvolvimento.
|
|
4
|
+
|
|
5
|
+
## Estrutura
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
features/
|
|
9
|
+
└── {feature-name}/
|
|
10
|
+
├── proposal.md # Proposta (por que e o quê)
|
|
11
|
+
├── spec.md # Especificação técnica
|
|
12
|
+
├── tasks.md # Checklist de implementação
|
|
13
|
+
├── contracts.cs # Interfaces e DTOs
|
|
14
|
+
├── decisions.md # ADRs
|
|
15
|
+
└── recap.md # Resumo pós-implementação
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Workflow
|
|
19
|
+
|
|
20
|
+
1. `/morph-proposal {feature}` - Criar nova feature
|
|
21
|
+
2. Revisar e aprovar proposal
|
|
22
|
+
3. `/morph-apply {feature}` - Implementar
|
|
23
|
+
4. `/morph-archive {feature}` - Arquivar quando concluída
|
|
24
|
+
|
|
25
|
+
*Gerado pelo MORPH Framework*
|
|
@@ -187,4 +187,162 @@ bash -x content/.morph/hooks/pre-commit-costs.sh
|
|
|
187
187
|
|
|
188
188
|
---
|
|
189
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
|
+
|
|
190
348
|
*MORPH-SPEC Framework - Git Hooks*
|