@polymorphism-tech/morph-spec 9.4.0 → 9.6.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 +1 -1
- package/README.md +2 -2
- package/bin/morph-spec.js +1 -0
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +1 -1
- package/docs/QUICKSTART.md +1 -1
- package/framework/MORPH.md +23 -33
- package/framework/agents.json +6 -7
- package/framework/docs/CLI.md +12 -8
- package/framework/hooks/README.md +2 -2
- package/framework/hooks/claude-code/__pycache__/statusline.cpython-313.pyc +0 -0
- package/framework/hooks/claude-code/core/comment-guard.js +1 -0
- package/framework/hooks/claude-code/core/denylist.json +63 -1
- package/framework/hooks/claude-code/core/enforce-phase-writes.js +0 -8
- package/framework/hooks/claude-code/core/gate-guard.js +0 -8
- package/framework/hooks/claude-code/core/heavy-gate.js +5 -3
- package/framework/hooks/claude-code/core/loop-detect.js +0 -3
- package/framework/hooks/claude-code/core/pre-bash-denylist.js +2 -1
- package/framework/hooks/claude-code/core/protect-spec-files.js +0 -7
- package/framework/hooks/claude-code/core/validate-completion.js +0 -4
- package/framework/hooks/claude-code/core/worktree-context.js +0 -2
- package/framework/hooks/claude-code/statusline.py +3 -44
- package/framework/hooks/shared/build-check.js +12 -19
- package/framework/hooks/shared/comment-rules.js +11 -1
- package/framework/hooks/shared/feature-locator.js +7 -5
- package/framework/hooks/shared/heavy-command.js +12 -0
- package/framework/hooks/shared/heavy-config.js +28 -1
- package/framework/hooks/shared/heavy-slots.js +41 -5
- package/framework/hooks/shared/hook-response.js +0 -4
- package/framework/hooks/shared/payload-utils.js +1 -35
- package/framework/hooks/shared/phase-utils.js +0 -12
- package/framework/hooks/shared/slice-progress.js +0 -2
- package/framework/hooks/shared/state-reader.js +0 -19
- package/framework/hooks/shared/telemetry-logger.js +1 -1
- package/framework/rules/frontend-standards.md +1 -2
- package/framework/rules/nextjs-standards.md +9 -8
- package/framework/schemas/config.schema.json +12 -1
- package/framework/skills/core/create-umbraco-lp/SKILL.md +1 -1
- package/framework/skills/core/migrate-lp-to-umbraco/SKILL.md +1 -1
- package/framework/skills/core/morph-apply/SKILL.md +1 -1
- package/framework/skills/core/morph-hotfix/SKILL.md +1 -1
- package/framework/skills/core/morph-machine/SKILL.md +2 -2
- package/framework/skills/core/morph-media/SKILL.md +1 -1
- package/framework/skills/core/morph-plan/SKILL.md +2 -2
- package/framework/skills/core/morph-review/SKILL.md +1 -1
- package/framework/skills/core/morph-standards/SKILL.md +1 -1
- package/framework/skills/core/morph-uiux/SKILL.md +1 -1
- package/framework/standards/STANDARDS.json +32 -29
- package/framework/standards/STANDARDS.meta.json +13 -15
- package/framework/standards/architecture/code-comments.md +1 -1
- package/framework/standards/frontend/admin-app/data-table.md +1 -3
- package/framework/standards/frontend/admin-app/page-structure.md +8 -4
- package/framework/standards/frontend/nextjs/app-router.md +3 -4
- package/framework/standards/frontend/nextjs/components.md +2 -15
- package/framework/standards/frontend/nextjs/data-fetching.md +2 -3
- package/framework/standards/frontend/nextjs/lint.md +141 -0
- package/framework/standards/frontend/nextjs/motion-patterns.md +2 -7
- package/framework/standards/frontend/nextjs/naming-conventions.md +1 -2
- package/framework/standards/frontend/nextjs/nextjs-patterns.md +5 -7
- package/framework/standards/frontend/nextjs/project-structure.md +3 -2
- package/framework/standards/frontend/nextjs/state-management.md +6 -7
- package/framework/standards/infrastructure/docker/local-compose-isolation.md +1 -0
- package/framework/templates/README.md +4 -4
- package/framework/templates/REGISTRY.json +21 -309
- package/framework/templates/frontend/nextjs/feature-form.tsx.hbs +54 -56
- package/package.json +3 -2
- package/src/commands/e2e/e2e.js +3 -0
- package/src/commands/project/env.js +3 -3
- package/src/commands/project/heavy.js +10 -3
- package/src/commands/project/worktree.js +2 -1
- package/src/commands/state/finish.js +17 -3
- package/src/commands/validation/mutate.js +2 -2
- package/src/commands/validation/verify.js +3 -0
- package/src/core/paths/output-schema.js +0 -9
- package/src/core/state/feature-identity.js +0 -2
- package/src/core/state/state-manager.js +1 -169
- package/src/core/templates/template-renderer.js +0 -23
- package/src/dashboard/app/lib/format.js +0 -7
- package/src/dashboard/app/lib/phases.js +0 -7
- package/src/dashboard/scanner/activity-scanner.js +0 -4
- package/src/lib/ai/ai-project-scan.js +1 -6
- package/src/lib/e2e/compose-env.js +26 -3
- package/src/lib/graph/graphify-runtime.js +0 -1
- package/src/lib/heavy/gate.js +23 -4
- package/src/lib/heavy/live-stacks.js +64 -0
- package/src/lib/mutation/snapshot.js +1 -5
- package/src/lib/risk-detector.js +9 -6
- package/src/lib/stack/stack-profile.js +0 -4
- package/src/lib/stack/stack-scan.js +15 -4
- package/src/lib/tasks/eval-node.js +1 -7
- package/src/lib/validators/validation-runner.js +0 -43
- package/src/lib/validators/verify-runner.js +18 -2
- package/src/lib/worktree/docker-audit.js +7 -3
- package/src/lib/worktree/env-allocator.js +27 -5
- package/src/lib/worktree/ignored-triage.js +8 -0
- package/src/utils/agents-installer.js +12 -19
- package/src/utils/claude-settings-manager.js +0 -28
- package/src/utils/file-copier.js +0 -53
- package/framework/hooks/shared/activity-logger.js +0 -131
- package/framework/standards/frontend/design-system/naming.md +0 -68
- package/src/commands/validation/index.js +0 -2
- package/src/lib/validators/code-budget/index.js +0 -2
- package/src/lib/validators/contracts/index.js +0 -1
- package/src/lib/validators/nextjs/index.js +0 -1
- package/src/lib/validators/packages/index.js +0 -1
- package/src/lib/validators/reuse/index.js +0 -2
|
@@ -2,50 +2,25 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft-07/schema#",
|
|
3
3
|
"version": "2.0.0",
|
|
4
4
|
"description": "Template Registry for MORPH-SPEC Framework - Technology-based organization for multi-stack reusability",
|
|
5
|
-
"lastUpdated": "2026-02-27",
|
|
6
|
-
"migration": "v1 → v2: Migrated all templates to framework/, organized by technology (code/dotnet/, infrastructure/azure/, etc.) instead of by stack. This enables future stacks (vue-firebase, angular-mongodb) to reuse existing technology templates.",
|
|
7
5
|
"kinds": {
|
|
8
|
-
"template": "Rendered to an output file. Rich shape: id, name, path, category, phase, outputName (+
|
|
6
|
+
"template": "Rendered to an output file. Rich shape: id, name, path, category, phase, outputName (+ placeholders).",
|
|
9
7
|
"fragment": "A reference snippet read as an example, never rendered. Minimal shape: id, path, category, stack, description.",
|
|
10
8
|
"project": "A whole compilable project registered as ONE unit — its files are not consumable one by one. Minimal shape: id, path, category, stack, description; `path` ends in \"/\" because it is a DIRECTORY. Every tracked file under it counts as registered (validate-framework.js Check 12), and a project directory with no tracked file is an error."
|
|
11
9
|
},
|
|
12
|
-
"categories": [
|
|
13
|
-
"documentation",
|
|
14
|
-
"code",
|
|
15
|
-
"infrastructure",
|
|
16
|
-
"context",
|
|
17
|
-
"examples",
|
|
18
|
-
"integration",
|
|
19
|
-
"saas",
|
|
20
|
-
"ui"
|
|
21
|
-
],
|
|
22
|
-
"technologies": [
|
|
23
|
-
"dotnet",
|
|
24
|
-
"typescript",
|
|
25
|
-
"sql",
|
|
26
|
-
"github-actions",
|
|
27
|
-
"docker",
|
|
28
|
-
"handlebars"
|
|
29
|
-
],
|
|
30
10
|
"templates": [
|
|
31
11
|
{
|
|
32
12
|
"id": "plan",
|
|
33
13
|
"kind": "template",
|
|
34
14
|
"name": "Feature Plan",
|
|
35
15
|
"path": "docs/plan.md",
|
|
36
|
-
"location": "framework",
|
|
37
16
|
"category": "documentation",
|
|
38
17
|
"phase": "plan",
|
|
39
|
-
"required": true,
|
|
40
18
|
"description": "Single source of a feature: problem, scenarios (Cn with proof), decisions (ADRs), reuse, slices (Fn) and errata — parsed by morph-spec plan-check into checks.json",
|
|
41
19
|
"outputName": "plan.md",
|
|
42
20
|
"placeholders": [
|
|
43
21
|
"FEATURE_NAME"
|
|
44
22
|
],
|
|
45
|
-
"stackSpecific": false,
|
|
46
|
-
"engine": "handlebars",
|
|
47
23
|
"deprecated": false,
|
|
48
|
-
"technology": "handlebars",
|
|
49
24
|
"validatePlaceholders": true
|
|
50
25
|
},
|
|
51
26
|
{
|
|
@@ -53,17 +28,12 @@
|
|
|
53
28
|
"kind": "template",
|
|
54
29
|
"name": "Architecture Context",
|
|
55
30
|
"path": "context/ARCHITECTURE.md",
|
|
56
|
-
"location": "framework",
|
|
57
31
|
"category": "context",
|
|
58
32
|
"phase": "plan",
|
|
59
|
-
"required": false,
|
|
60
33
|
"description": "Auto-scanned architecture context with entities, endpoints, pages, components, integrations, database tables, and package versions",
|
|
61
34
|
"outputName": "ARCHITECTURE.md",
|
|
62
35
|
"placeholders": [],
|
|
63
|
-
"stackSpecific": false,
|
|
64
|
-
"engine": "handlebars",
|
|
65
36
|
"deprecated": false,
|
|
66
|
-
"technology": "handlebars",
|
|
67
37
|
"validatePlaceholders": true
|
|
68
38
|
},
|
|
69
39
|
{
|
|
@@ -71,17 +41,12 @@
|
|
|
71
41
|
"kind": "template",
|
|
72
42
|
"name": "Design System Examples",
|
|
73
43
|
"path": "examples/design-system-examples.md",
|
|
74
|
-
"location": "framework",
|
|
75
44
|
"category": "examples",
|
|
76
45
|
"phase": null,
|
|
77
|
-
"required": false,
|
|
78
46
|
"description": "Example design system definitions",
|
|
79
47
|
"outputName": null,
|
|
80
48
|
"placeholders": [],
|
|
81
|
-
"stackSpecific": false,
|
|
82
|
-
"engine": null,
|
|
83
49
|
"deprecated": false,
|
|
84
|
-
"technology": null,
|
|
85
50
|
"validatePlaceholders": true
|
|
86
51
|
},
|
|
87
52
|
{
|
|
@@ -89,20 +54,12 @@
|
|
|
89
54
|
"kind": "template",
|
|
90
55
|
"name": ".NET Unit Test",
|
|
91
56
|
"path": "code/dotnet/test.cs",
|
|
92
|
-
"location": "framework",
|
|
93
57
|
"category": "code",
|
|
94
58
|
"phase": "implement",
|
|
95
|
-
"required": false,
|
|
96
59
|
"description": "xUnit test template with AAA pattern",
|
|
97
60
|
"outputName": "{FeatureName}Tests.cs",
|
|
98
61
|
"placeholders": [],
|
|
99
|
-
"stackSpecific": false,
|
|
100
|
-
"engine": "handlebars",
|
|
101
62
|
"deprecated": false,
|
|
102
|
-
"technology": "dotnet",
|
|
103
|
-
"applicableStacks": [
|
|
104
|
-
"nextjs-neon"
|
|
105
|
-
],
|
|
106
63
|
"validatePlaceholders": true
|
|
107
64
|
},
|
|
108
65
|
{
|
|
@@ -110,22 +67,14 @@
|
|
|
110
67
|
"kind": "template",
|
|
111
68
|
"name": "EF Core Migration",
|
|
112
69
|
"path": "code/dotnet/database/migration.cs",
|
|
113
|
-
"location": "framework",
|
|
114
70
|
"category": "code",
|
|
115
71
|
"phase": "implement",
|
|
116
|
-
"required": false,
|
|
117
72
|
"description": "EF Core migration template with Up/Down methods",
|
|
118
73
|
"outputName": "{Timestamp}_{FeatureName}.cs",
|
|
119
74
|
"placeholders": [
|
|
120
75
|
"NAMESPACE"
|
|
121
76
|
],
|
|
122
|
-
"stackSpecific": false,
|
|
123
|
-
"engine": "handlebars",
|
|
124
77
|
"deprecated": false,
|
|
125
|
-
"technology": "dotnet",
|
|
126
|
-
"applicableStacks": [
|
|
127
|
-
"nextjs-neon"
|
|
128
|
-
],
|
|
129
78
|
"validatePlaceholders": true
|
|
130
79
|
},
|
|
131
80
|
{
|
|
@@ -133,20 +82,12 @@
|
|
|
133
82
|
"kind": "template",
|
|
134
83
|
"name": "Hangfire Background Job",
|
|
135
84
|
"path": "code/dotnet/jobs/job.cs",
|
|
136
|
-
"location": "framework",
|
|
137
85
|
"category": "code",
|
|
138
86
|
"phase": "implement",
|
|
139
|
-
"required": false,
|
|
140
87
|
"description": "Hangfire background job template with retry logic",
|
|
141
88
|
"outputName": "{FeatureName}Job.cs",
|
|
142
89
|
"placeholders": [],
|
|
143
|
-
"stackSpecific": false,
|
|
144
|
-
"engine": "handlebars",
|
|
145
90
|
"deprecated": false,
|
|
146
|
-
"technology": "dotnet",
|
|
147
|
-
"applicableStacks": [
|
|
148
|
-
"nextjs-neon"
|
|
149
|
-
],
|
|
150
91
|
"validatePlaceholders": true
|
|
151
92
|
},
|
|
152
93
|
{
|
|
@@ -154,22 +95,14 @@
|
|
|
154
95
|
"kind": "template",
|
|
155
96
|
"name": "MS Agent Framework Agent",
|
|
156
97
|
"path": "code/dotnet/jobs/agent.cs",
|
|
157
|
-
"location": "framework",
|
|
158
98
|
"category": "code",
|
|
159
99
|
"phase": "implement",
|
|
160
|
-
"required": false,
|
|
161
100
|
"description": "Microsoft Agent Framework agent template with prompt engineering",
|
|
162
101
|
"outputName": "{FeatureName}Agent.cs",
|
|
163
102
|
"placeholders": [
|
|
164
103
|
"NAMESPACE"
|
|
165
104
|
],
|
|
166
|
-
"stackSpecific": false,
|
|
167
|
-
"engine": "handlebars",
|
|
168
105
|
"deprecated": false,
|
|
169
|
-
"technology": "dotnet",
|
|
170
|
-
"applicableStacks": [
|
|
171
|
-
"nextjs-neon"
|
|
172
|
-
],
|
|
173
106
|
"validatePlaceholders": true
|
|
174
107
|
},
|
|
175
108
|
{
|
|
@@ -177,20 +110,12 @@
|
|
|
177
110
|
"kind": "template",
|
|
178
111
|
"name": "Contracts README",
|
|
179
112
|
"path": "code/dotnet/contracts/README.md",
|
|
180
|
-
"location": "framework",
|
|
181
113
|
"category": "documentation",
|
|
182
114
|
"phase": "implement",
|
|
183
|
-
"required": false,
|
|
184
115
|
"description": "Documentation for contract patterns and usage",
|
|
185
116
|
"outputName": "README.md",
|
|
186
117
|
"placeholders": [],
|
|
187
|
-
"stackSpecific": false,
|
|
188
|
-
"engine": "handlebars",
|
|
189
118
|
"deprecated": false,
|
|
190
|
-
"technology": "dotnet",
|
|
191
|
-
"applicableStacks": [
|
|
192
|
-
"nextjs-neon"
|
|
193
|
-
],
|
|
194
119
|
"validatePlaceholders": true
|
|
195
120
|
},
|
|
196
121
|
{
|
|
@@ -198,10 +123,8 @@
|
|
|
198
123
|
"kind": "template",
|
|
199
124
|
"name": "Vertical Slice Architecture Contracts",
|
|
200
125
|
"path": "code/dotnet/contracts/contracts-vsa.cs",
|
|
201
|
-
"location": "framework",
|
|
202
126
|
"category": "code",
|
|
203
127
|
"phase": "implement",
|
|
204
|
-
"required": false,
|
|
205
128
|
"description": "Feature slice completo: Abstractions, Entity, Errors, e um slice de operação (Request, Response, Validator, Handler, Endpoint). Padrão KanaiyaKatarmal (.NET 10, Minimal APIs, EF Core 10, FluentValidation 12, Scrutor 7).",
|
|
206
129
|
"outputName": "contracts.cs",
|
|
207
130
|
"placeholders": [
|
|
@@ -209,10 +132,7 @@
|
|
|
209
132
|
"NAMESPACE",
|
|
210
133
|
"ROUTE"
|
|
211
134
|
],
|
|
212
|
-
"stackSpecific": false,
|
|
213
|
-
"engine": "handlebars",
|
|
214
135
|
"deprecated": false,
|
|
215
|
-
"technology": "dotnet",
|
|
216
136
|
"validatePlaceholders": true
|
|
217
137
|
},
|
|
218
138
|
{
|
|
@@ -220,23 +140,15 @@
|
|
|
220
140
|
"kind": "template",
|
|
221
141
|
"name": "TypeScript Contracts",
|
|
222
142
|
"path": "code/typescript/contracts.ts",
|
|
223
|
-
"location": "framework",
|
|
224
143
|
"category": "code",
|
|
225
144
|
"phase": "implement",
|
|
226
|
-
"required": false,
|
|
227
145
|
"description": "TypeScript type definitions and interfaces",
|
|
228
146
|
"outputName": "contracts.ts",
|
|
229
147
|
"placeholders": [
|
|
230
148
|
"DATE",
|
|
231
149
|
"FEATURE_NAME"
|
|
232
150
|
],
|
|
233
|
-
"stackSpecific": false,
|
|
234
|
-
"engine": "handlebars",
|
|
235
151
|
"deprecated": false,
|
|
236
|
-
"technology": "typescript",
|
|
237
|
-
"applicableStacks": [
|
|
238
|
-
"nextjs-neon"
|
|
239
|
-
],
|
|
240
152
|
"validatePlaceholders": true
|
|
241
153
|
},
|
|
242
154
|
{
|
|
@@ -244,23 +156,15 @@
|
|
|
244
156
|
"kind": "template",
|
|
245
157
|
"name": "PostgreSQL Migration",
|
|
246
158
|
"path": "code/sql/postgresql-migration.sql",
|
|
247
|
-
"location": "framework",
|
|
248
159
|
"category": "code",
|
|
249
160
|
"phase": "implement",
|
|
250
|
-
"required": false,
|
|
251
161
|
"description": "PostgreSQL migration template (basic)",
|
|
252
162
|
"outputName": "{timestamp}_{feature_name}.sql",
|
|
253
163
|
"placeholders": [
|
|
254
164
|
"DATE",
|
|
255
165
|
"TABLE_NAME"
|
|
256
166
|
],
|
|
257
|
-
"stackSpecific": false,
|
|
258
|
-
"engine": "handlebars",
|
|
259
167
|
"deprecated": false,
|
|
260
|
-
"technology": "sql",
|
|
261
|
-
"applicableStacks": [
|
|
262
|
-
"nextjs-neon"
|
|
263
|
-
],
|
|
264
168
|
"validatePlaceholders": true
|
|
265
169
|
},
|
|
266
170
|
{
|
|
@@ -268,10 +172,8 @@
|
|
|
268
172
|
"kind": "template",
|
|
269
173
|
"name": "PostgreSQL Migration (Enhanced)",
|
|
270
174
|
"path": "code/sql/postgresql-migration.template.sql",
|
|
271
|
-
"location": "framework",
|
|
272
175
|
"category": "code",
|
|
273
176
|
"phase": "implement",
|
|
274
|
-
"required": false,
|
|
275
177
|
"description": "Enhanced PostgreSQL migration with RLS and indexes",
|
|
276
178
|
"outputName": "{timestamp}_{feature_name}_enhanced.sql",
|
|
277
179
|
"placeholders": [
|
|
@@ -280,13 +182,7 @@
|
|
|
280
182
|
"FEATURE_NAME_HUMAN",
|
|
281
183
|
"TABLE_NAME"
|
|
282
184
|
],
|
|
283
|
-
"stackSpecific": false,
|
|
284
|
-
"engine": "handlebars",
|
|
285
185
|
"deprecated": false,
|
|
286
|
-
"technology": "sql",
|
|
287
|
-
"applicableStacks": [
|
|
288
|
-
"nextjs-neon"
|
|
289
|
-
],
|
|
290
186
|
"validatePlaceholders": true
|
|
291
187
|
},
|
|
292
188
|
{
|
|
@@ -294,10 +190,8 @@
|
|
|
294
190
|
"kind": "template",
|
|
295
191
|
"name": "Row-Level Security Policy",
|
|
296
192
|
"path": "code/sql/postgresql-rls-policy.sql",
|
|
297
|
-
"location": "framework",
|
|
298
193
|
"category": "code",
|
|
299
194
|
"phase": "implement",
|
|
300
|
-
"required": false,
|
|
301
195
|
"description": "Row-level security policy template for PostgreSQL (Neon)",
|
|
302
196
|
"outputName": "{table_name}_rls_policies.sql",
|
|
303
197
|
"placeholders": [
|
|
@@ -308,13 +202,7 @@
|
|
|
308
202
|
"USING_EXPRESSION",
|
|
309
203
|
"WITH_CHECK_EXPRESSION"
|
|
310
204
|
],
|
|
311
|
-
"stackSpecific": false,
|
|
312
|
-
"engine": "handlebars",
|
|
313
205
|
"deprecated": false,
|
|
314
|
-
"technology": "sql",
|
|
315
|
-
"applicableStacks": [
|
|
316
|
-
"nextjs-neon"
|
|
317
|
-
],
|
|
318
206
|
"validatePlaceholders": true
|
|
319
207
|
},
|
|
320
208
|
{
|
|
@@ -322,20 +210,12 @@
|
|
|
322
210
|
"kind": "template",
|
|
323
211
|
"name": "Dockerfile (.NET API)",
|
|
324
212
|
"path": "infrastructure/docker/dockerfile-api.dockerfile",
|
|
325
|
-
"location": "framework",
|
|
326
213
|
"category": "infrastructure",
|
|
327
214
|
"phase": "implement",
|
|
328
|
-
"required": false,
|
|
329
215
|
"description": ".NET API Dockerfile for Coolify/Docker",
|
|
330
216
|
"outputName": "Dockerfile.api",
|
|
331
217
|
"placeholders": [],
|
|
332
|
-
"stackSpecific": false,
|
|
333
|
-
"engine": null,
|
|
334
218
|
"deprecated": false,
|
|
335
|
-
"technology": "docker",
|
|
336
|
-
"applicableStacks": [
|
|
337
|
-
"nextjs-neon"
|
|
338
|
-
],
|
|
339
219
|
"validatePlaceholders": true
|
|
340
220
|
},
|
|
341
221
|
{
|
|
@@ -343,20 +223,12 @@
|
|
|
343
223
|
"kind": "template",
|
|
344
224
|
"name": "Dockerfile (Next.js Web)",
|
|
345
225
|
"path": "infrastructure/docker/dockerfile-web.dockerfile",
|
|
346
|
-
"location": "framework",
|
|
347
226
|
"category": "infrastructure",
|
|
348
227
|
"phase": "implement",
|
|
349
|
-
"required": false,
|
|
350
228
|
"description": "Next.js web Dockerfile for Coolify/Docker",
|
|
351
229
|
"outputName": "Dockerfile.web",
|
|
352
230
|
"placeholders": [],
|
|
353
|
-
"stackSpecific": false,
|
|
354
|
-
"engine": null,
|
|
355
231
|
"deprecated": false,
|
|
356
|
-
"technology": "docker",
|
|
357
|
-
"applicableStacks": [
|
|
358
|
-
"nextjs-neon"
|
|
359
|
-
],
|
|
360
232
|
"validatePlaceholders": true
|
|
361
233
|
},
|
|
362
234
|
{
|
|
@@ -364,20 +236,12 @@
|
|
|
364
236
|
"kind": "template",
|
|
365
237
|
"name": "Dockerfile (Generic)",
|
|
366
238
|
"path": "infrastructure/docker/Dockerfile.template",
|
|
367
|
-
"location": "framework",
|
|
368
239
|
"category": "infrastructure",
|
|
369
240
|
"phase": "implement",
|
|
370
|
-
"required": false,
|
|
371
241
|
"description": "Generic multi-stage Dockerfile template",
|
|
372
242
|
"outputName": "Dockerfile",
|
|
373
243
|
"placeholders": [],
|
|
374
|
-
"stackSpecific": false,
|
|
375
|
-
"engine": "handlebars",
|
|
376
244
|
"deprecated": false,
|
|
377
|
-
"technology": "docker",
|
|
378
|
-
"applicableStacks": [
|
|
379
|
-
"nextjs-neon"
|
|
380
|
-
],
|
|
381
245
|
"validatePlaceholders": true
|
|
382
246
|
},
|
|
383
247
|
{
|
|
@@ -385,20 +249,12 @@
|
|
|
385
249
|
"kind": "template",
|
|
386
250
|
"name": "Docker Compose",
|
|
387
251
|
"path": "infrastructure/docker/docker-compose.template.yml",
|
|
388
|
-
"location": "framework",
|
|
389
252
|
"category": "infrastructure",
|
|
390
253
|
"phase": "implement",
|
|
391
|
-
"required": false,
|
|
392
254
|
"description": "Docker Compose for local development — one isolated stack per worktree (ports from the block, no container_name)",
|
|
393
255
|
"outputName": "docker-compose.yml",
|
|
394
256
|
"placeholders": [],
|
|
395
|
-
"stackSpecific": false,
|
|
396
|
-
"engine": "handlebars",
|
|
397
257
|
"deprecated": false,
|
|
398
|
-
"technology": "docker",
|
|
399
|
-
"applicableStacks": [
|
|
400
|
-
"nextjs-neon"
|
|
401
|
-
],
|
|
402
258
|
"validatePlaceholders": true
|
|
403
259
|
},
|
|
404
260
|
{
|
|
@@ -406,23 +262,15 @@
|
|
|
406
262
|
"kind": "template",
|
|
407
263
|
"name": "Coolify Configuration",
|
|
408
264
|
"path": "infrastructure/docker/coolify.template.json",
|
|
409
|
-
"location": "framework",
|
|
410
265
|
"category": "infrastructure",
|
|
411
266
|
"phase": "implement",
|
|
412
|
-
"required": false,
|
|
413
267
|
"description": "Coolify deployment configuration — accessed via SSH + API, no MCP/CLI",
|
|
414
268
|
"outputName": "coolify.json",
|
|
415
269
|
"placeholders": [
|
|
416
270
|
"GITHUB_OWNER",
|
|
417
271
|
"GITHUB_REPO"
|
|
418
272
|
],
|
|
419
|
-
"stackSpecific": false,
|
|
420
|
-
"engine": "handlebars",
|
|
421
273
|
"deprecated": false,
|
|
422
|
-
"technology": "docker",
|
|
423
|
-
"applicableStacks": [
|
|
424
|
-
"nextjs-neon"
|
|
425
|
-
],
|
|
426
274
|
"validatePlaceholders": true
|
|
427
275
|
},
|
|
428
276
|
{
|
|
@@ -430,20 +278,12 @@
|
|
|
430
278
|
"kind": "template",
|
|
431
279
|
"name": "Asaas Financial Client",
|
|
432
280
|
"path": "integrations/asaas-client.cs",
|
|
433
|
-
"location": "framework",
|
|
434
281
|
"category": "integration",
|
|
435
282
|
"phase": "implement",
|
|
436
|
-
"required": false,
|
|
437
283
|
"description": "Asaas financial API client implementation",
|
|
438
284
|
"outputName": "AsaasClient.cs",
|
|
439
285
|
"placeholders": [],
|
|
440
|
-
"stackSpecific": false,
|
|
441
|
-
"engine": "handlebars",
|
|
442
286
|
"deprecated": false,
|
|
443
|
-
"technology": "dotnet",
|
|
444
|
-
"applicableStacks": [
|
|
445
|
-
"nextjs-neon"
|
|
446
|
-
],
|
|
447
287
|
"validatePlaceholders": true
|
|
448
288
|
},
|
|
449
289
|
{
|
|
@@ -451,20 +291,12 @@
|
|
|
451
291
|
"kind": "template",
|
|
452
292
|
"name": "Asaas Webhook Handler",
|
|
453
293
|
"path": "integrations/asaas-webhook.cs",
|
|
454
|
-
"location": "framework",
|
|
455
294
|
"category": "integration",
|
|
456
295
|
"phase": "implement",
|
|
457
|
-
"required": false,
|
|
458
296
|
"description": "Asaas webhook handler for payment events",
|
|
459
297
|
"outputName": "AsaasWebhookHandler.cs",
|
|
460
298
|
"placeholders": [],
|
|
461
|
-
"stackSpecific": false,
|
|
462
|
-
"engine": "handlebars",
|
|
463
299
|
"deprecated": false,
|
|
464
|
-
"technology": "dotnet",
|
|
465
|
-
"applicableStacks": [
|
|
466
|
-
"nextjs-neon"
|
|
467
|
-
],
|
|
468
300
|
"validatePlaceholders": true
|
|
469
301
|
},
|
|
470
302
|
{
|
|
@@ -472,20 +304,12 @@
|
|
|
472
304
|
"kind": "template",
|
|
473
305
|
"name": "Neon Auth Configuration",
|
|
474
306
|
"path": "integrations/neon-auth-config.cs",
|
|
475
|
-
"location": "framework",
|
|
476
307
|
"category": "integration",
|
|
477
308
|
"phase": "implement",
|
|
478
|
-
"required": false,
|
|
479
309
|
"description": "Neon Auth (Better Auth) EdDSA/Ed25519 JWT validation for .NET via BouncyCastle — cached JWKS provider + manual SignatureValidator (no OIDC discovery available)",
|
|
480
310
|
"outputName": "NeonAuthConfig.cs",
|
|
481
311
|
"placeholders": ["Namespace"],
|
|
482
|
-
"stackSpecific": false,
|
|
483
|
-
"engine": "handlebars",
|
|
484
312
|
"deprecated": false,
|
|
485
|
-
"technology": "dotnet",
|
|
486
|
-
"applicableStacks": [
|
|
487
|
-
"nextjs-neon"
|
|
488
|
-
],
|
|
489
313
|
"validatePlaceholders": true
|
|
490
314
|
},
|
|
491
315
|
{
|
|
@@ -493,20 +317,12 @@
|
|
|
493
317
|
"kind": "template",
|
|
494
318
|
"name": "Design System CSS",
|
|
495
319
|
"path": "ui/design-system.css",
|
|
496
|
-
"location": "framework",
|
|
497
320
|
"category": "ui",
|
|
498
321
|
"phase": "uiux",
|
|
499
|
-
"required": false,
|
|
500
322
|
"description": "CSS design tokens and variables (colors, spacing, typography)",
|
|
501
323
|
"outputName": "design-system.css",
|
|
502
324
|
"placeholders": [],
|
|
503
|
-
"stackSpecific": false,
|
|
504
|
-
"engine": "handlebars",
|
|
505
325
|
"deprecated": false,
|
|
506
|
-
"technology": "css",
|
|
507
|
-
"applicableStacks": [
|
|
508
|
-
"nextjs-neon"
|
|
509
|
-
],
|
|
510
326
|
"validatePlaceholders": true
|
|
511
327
|
},
|
|
512
328
|
{
|
|
@@ -514,20 +330,15 @@
|
|
|
514
330
|
"kind": "template",
|
|
515
331
|
"name": "UI Mockups",
|
|
516
332
|
"path": "docs/ui-mockups.md",
|
|
517
|
-
"location": "framework",
|
|
518
333
|
"category": "documentation",
|
|
519
334
|
"phase": "uiux",
|
|
520
|
-
"required": false,
|
|
521
335
|
"description": "Wireframes and layout specifications with ASCII mockups and responsive breakpoints",
|
|
522
336
|
"outputName": "mockups.md",
|
|
523
337
|
"placeholders": [
|
|
524
338
|
"DATE",
|
|
525
339
|
"FEATURE_NAME"
|
|
526
340
|
],
|
|
527
|
-
"stackSpecific": false,
|
|
528
|
-
"engine": "handlebars",
|
|
529
341
|
"deprecated": false,
|
|
530
|
-
"technology": "handlebars",
|
|
531
342
|
"validatePlaceholders": true
|
|
532
343
|
},
|
|
533
344
|
{
|
|
@@ -535,23 +346,14 @@
|
|
|
535
346
|
"kind": "template",
|
|
536
347
|
"name": "GitHub Actions - .NET Build Workflow",
|
|
537
348
|
"path": "infrastructure/github/workflows/dotnet-build.yml.hbs",
|
|
538
|
-
"location": "framework",
|
|
539
349
|
"category": "infrastructure",
|
|
540
|
-
"technology": "github-actions",
|
|
541
350
|
"phase": "implement",
|
|
542
|
-
"required": false,
|
|
543
351
|
"description": "Reusable workflow for building .NET applications with restore, build, test, coverage",
|
|
544
352
|
"outputName": "dotnet-build.yml",
|
|
545
353
|
"placeholders": [
|
|
546
354
|
"DOTNET_VERSION"
|
|
547
355
|
],
|
|
548
|
-
"stackSpecific": false,
|
|
549
|
-
"applicableStacks": [
|
|
550
|
-
"nextjs-neon"
|
|
551
|
-
],
|
|
552
|
-
"engine": "handlebars",
|
|
553
356
|
"deprecated": false,
|
|
554
|
-
"isFragment": true,
|
|
555
357
|
"validatePlaceholders": true
|
|
556
358
|
},
|
|
557
359
|
{
|
|
@@ -559,21 +361,12 @@
|
|
|
559
361
|
"kind": "template",
|
|
560
362
|
"name": "GitHub Actions - Docker Build & Push",
|
|
561
363
|
"path": "infrastructure/github/workflows/docker-build-push.yml.hbs",
|
|
562
|
-
"location": "framework",
|
|
563
364
|
"category": "infrastructure",
|
|
564
|
-
"technology": "github-actions",
|
|
565
365
|
"phase": "implement",
|
|
566
|
-
"required": false,
|
|
567
366
|
"description": "Reusable workflow for building and pushing Docker images to registry",
|
|
568
367
|
"outputName": "docker-build-push.yml",
|
|
569
368
|
"placeholders": [],
|
|
570
|
-
"stackSpecific": false,
|
|
571
|
-
"applicableStacks": [
|
|
572
|
-
"nextjs-neon"
|
|
573
|
-
],
|
|
574
|
-
"engine": "handlebars",
|
|
575
369
|
"deprecated": false,
|
|
576
|
-
"isFragment": true,
|
|
577
370
|
"validatePlaceholders": true
|
|
578
371
|
},
|
|
579
372
|
{
|
|
@@ -581,21 +374,12 @@
|
|
|
581
374
|
"kind": "template",
|
|
582
375
|
"name": "GitHub Actions - Deploy to Coolify",
|
|
583
376
|
"path": "infrastructure/github/workflows/deploy-coolify.yml.hbs",
|
|
584
|
-
"location": "framework",
|
|
585
377
|
"category": "infrastructure",
|
|
586
|
-
"technology": "github-actions",
|
|
587
378
|
"phase": "implement",
|
|
588
|
-
"required": false,
|
|
589
379
|
"description": "Reusable workflow for deploying to Coolify via SSH (API is not publicly exposed)",
|
|
590
380
|
"outputName": "deploy-coolify.yml",
|
|
591
381
|
"placeholders": [],
|
|
592
|
-
"stackSpecific": false,
|
|
593
|
-
"applicableStacks": [
|
|
594
|
-
"nextjs-neon"
|
|
595
|
-
],
|
|
596
|
-
"engine": "handlebars",
|
|
597
382
|
"deprecated": false,
|
|
598
|
-
"isFragment": true,
|
|
599
383
|
"validatePlaceholders": true
|
|
600
384
|
},
|
|
601
385
|
{
|
|
@@ -603,21 +387,12 @@
|
|
|
603
387
|
"kind": "template",
|
|
604
388
|
"name": "GitHub Composite Action - Docker Build & Push",
|
|
605
389
|
"path": "infrastructure/github/actions/docker-build-push/action.yml.hbs",
|
|
606
|
-
"location": "framework",
|
|
607
390
|
"category": "infrastructure",
|
|
608
|
-
"technology": "github-actions",
|
|
609
391
|
"phase": "implement",
|
|
610
|
-
"required": false,
|
|
611
392
|
"description": "Composite action for building and pushing Docker images",
|
|
612
393
|
"outputName": "action.yml",
|
|
613
394
|
"placeholders": [],
|
|
614
|
-
"stackSpecific": false,
|
|
615
|
-
"applicableStacks": [
|
|
616
|
-
"nextjs-neon"
|
|
617
|
-
],
|
|
618
|
-
"engine": "handlebars",
|
|
619
395
|
"deprecated": false,
|
|
620
|
-
"isFragment": true,
|
|
621
396
|
"validatePlaceholders": true
|
|
622
397
|
},
|
|
623
398
|
{
|
|
@@ -625,21 +400,12 @@
|
|
|
625
400
|
"kind": "template",
|
|
626
401
|
"name": "GitHub Composite Action - Health Check",
|
|
627
402
|
"path": "infrastructure/github/actions/health-check/action.yml.hbs",
|
|
628
|
-
"location": "framework",
|
|
629
403
|
"category": "infrastructure",
|
|
630
|
-
"technology": "github-actions",
|
|
631
404
|
"phase": "implement",
|
|
632
|
-
"required": false,
|
|
633
405
|
"description": "Composite action for polling health endpoint until ready",
|
|
634
406
|
"outputName": "action.yml",
|
|
635
407
|
"placeholders": [],
|
|
636
|
-
"stackSpecific": false,
|
|
637
|
-
"applicableStacks": [
|
|
638
|
-
"nextjs-neon"
|
|
639
|
-
],
|
|
640
|
-
"engine": "handlebars",
|
|
641
408
|
"deprecated": false,
|
|
642
|
-
"isFragment": true,
|
|
643
409
|
"validatePlaceholders": true
|
|
644
410
|
},
|
|
645
411
|
{
|
|
@@ -648,8 +414,7 @@
|
|
|
648
414
|
"path": "code/dotnet/abstractions/handler.cs",
|
|
649
415
|
"category": "abstractions",
|
|
650
416
|
"stack": "dotnet",
|
|
651
|
-
"description": "IHandler<TRequest, TResponse> interface"
|
|
652
|
-
"consumption": "reference"
|
|
417
|
+
"description": "IHandler<TRequest, TResponse> interface"
|
|
653
418
|
},
|
|
654
419
|
{
|
|
655
420
|
"id": "dotnet-abstractions-result",
|
|
@@ -657,8 +422,7 @@
|
|
|
657
422
|
"path": "code/dotnet/abstractions/result.cs",
|
|
658
423
|
"category": "abstractions",
|
|
659
424
|
"stack": "dotnet",
|
|
660
|
-
"description": "Result<T> railway-oriented pattern"
|
|
661
|
-
"consumption": "reference"
|
|
425
|
+
"description": "Result<T> railway-oriented pattern"
|
|
662
426
|
},
|
|
663
427
|
{
|
|
664
428
|
"id": "dotnet-abstractions-error",
|
|
@@ -666,8 +430,7 @@
|
|
|
666
430
|
"path": "code/dotnet/abstractions/error.cs",
|
|
667
431
|
"category": "abstractions",
|
|
668
432
|
"stack": "dotnet",
|
|
669
|
-
"description": "Error record + ErrorType enum + ValidationError"
|
|
670
|
-
"consumption": "reference"
|
|
433
|
+
"description": "Error record + ErrorType enum + ValidationError"
|
|
671
434
|
},
|
|
672
435
|
{
|
|
673
436
|
"id": "dotnet-abstractions-api-endpoint",
|
|
@@ -675,8 +438,7 @@
|
|
|
675
438
|
"path": "code/dotnet/abstractions/api-endpoint.cs",
|
|
676
439
|
"category": "abstractions",
|
|
677
440
|
"stack": "dotnet",
|
|
678
|
-
"description": "IApiEndpoint interface for minimal APIs"
|
|
679
|
-
"consumption": "reference"
|
|
441
|
+
"description": "IApiEndpoint interface for minimal APIs"
|
|
680
442
|
},
|
|
681
443
|
{
|
|
682
444
|
"id": "dotnet-extensions-handler-registration",
|
|
@@ -684,8 +446,7 @@
|
|
|
684
446
|
"path": "code/dotnet/extensions/handler-registration.cs",
|
|
685
447
|
"category": "extensions",
|
|
686
448
|
"stack": "dotnet",
|
|
687
|
-
"description": "Scrutor handler auto-discovery + decorators"
|
|
688
|
-
"consumption": "reference"
|
|
449
|
+
"description": "Scrutor handler auto-discovery + decorators"
|
|
689
450
|
},
|
|
690
451
|
{
|
|
691
452
|
"id": "dotnet-extensions-map-endpoints",
|
|
@@ -693,8 +454,7 @@
|
|
|
693
454
|
"path": "code/dotnet/extensions/map-endpoints.cs",
|
|
694
455
|
"category": "extensions",
|
|
695
456
|
"stack": "dotnet",
|
|
696
|
-
"description": "IApiEndpoint auto-discovery + mapping"
|
|
697
|
-
"consumption": "reference"
|
|
457
|
+
"description": "IApiEndpoint auto-discovery + mapping"
|
|
698
458
|
},
|
|
699
459
|
{
|
|
700
460
|
"id": "dotnet-extensions-result-extensions",
|
|
@@ -702,8 +462,7 @@
|
|
|
702
462
|
"path": "code/dotnet/extensions/result-extensions.cs",
|
|
703
463
|
"category": "extensions",
|
|
704
464
|
"stack": "dotnet",
|
|
705
|
-
"description": "Match() pattern matching for Result<T>"
|
|
706
|
-
"consumption": "reference"
|
|
465
|
+
"description": "Match() pattern matching for Result<T>"
|
|
707
466
|
},
|
|
708
467
|
{
|
|
709
468
|
"id": "dotnet-extensions-database",
|
|
@@ -711,8 +470,7 @@
|
|
|
711
470
|
"path": "code/dotnet/extensions/database-extensions.cs",
|
|
712
471
|
"category": "extensions",
|
|
713
472
|
"stack": "dotnet",
|
|
714
|
-
"description": "EF Core + Npgsql database configuration"
|
|
715
|
-
"consumption": "reference"
|
|
473
|
+
"description": "EF Core + Npgsql database configuration"
|
|
716
474
|
},
|
|
717
475
|
{
|
|
718
476
|
"id": "dotnet-extensions-health-checks",
|
|
@@ -720,8 +478,7 @@
|
|
|
720
478
|
"path": "code/dotnet/extensions/health-checks.cs",
|
|
721
479
|
"category": "extensions",
|
|
722
480
|
"stack": "dotnet",
|
|
723
|
-
"description": "Health check configuration"
|
|
724
|
-
"consumption": "reference"
|
|
481
|
+
"description": "Health check configuration"
|
|
725
482
|
},
|
|
726
483
|
{
|
|
727
484
|
"id": "dotnet-pipelines-validation-decorator",
|
|
@@ -729,8 +486,7 @@
|
|
|
729
486
|
"path": "code/dotnet/pipelines/validation-decorator.cs",
|
|
730
487
|
"category": "pipelines",
|
|
731
488
|
"stack": "dotnet",
|
|
732
|
-
"description": "FluentValidation decorator for handlers"
|
|
733
|
-
"consumption": "reference"
|
|
489
|
+
"description": "FluentValidation decorator for handlers"
|
|
734
490
|
},
|
|
735
491
|
{
|
|
736
492
|
"id": "dotnet-pipelines-logging-decorator",
|
|
@@ -738,8 +494,7 @@
|
|
|
738
494
|
"path": "code/dotnet/pipelines/logging-decorator.cs",
|
|
739
495
|
"category": "pipelines",
|
|
740
496
|
"stack": "dotnet",
|
|
741
|
-
"description": "Logging decorator with duration tracking"
|
|
742
|
-
"consumption": "reference"
|
|
497
|
+
"description": "Logging decorator with duration tracking"
|
|
743
498
|
},
|
|
744
499
|
{
|
|
745
500
|
"id": "dotnet-exceptions-handler",
|
|
@@ -747,8 +502,7 @@
|
|
|
747
502
|
"path": "code/dotnet/exceptions/exception-handler.cs",
|
|
748
503
|
"category": "exceptions",
|
|
749
504
|
"stack": "dotnet",
|
|
750
|
-
"description": "IExceptionHandler with ProblemDetails"
|
|
751
|
-
"consumption": "reference"
|
|
505
|
+
"description": "IExceptionHandler with ProblemDetails"
|
|
752
506
|
},
|
|
753
507
|
{
|
|
754
508
|
"id": "dotnet-constants-api-tags",
|
|
@@ -756,8 +510,7 @@
|
|
|
756
510
|
"path": "code/dotnet/constants/api-tags.cs",
|
|
757
511
|
"category": "constants",
|
|
758
512
|
"stack": "dotnet",
|
|
759
|
-
"description": "ApiTags constants for endpoint grouping"
|
|
760
|
-
"consumption": "reference"
|
|
513
|
+
"description": "ApiTags constants for endpoint grouping"
|
|
761
514
|
},
|
|
762
515
|
{
|
|
763
516
|
"id": "dotnet-feature-endpoint",
|
|
@@ -765,8 +518,7 @@
|
|
|
765
518
|
"path": "code/dotnet/feature/endpoint.cs.hbs",
|
|
766
519
|
"category": "feature",
|
|
767
520
|
"stack": "dotnet",
|
|
768
|
-
"description": "VSA feature endpoint (IApiEndpoint)"
|
|
769
|
-
"consumption": "reference"
|
|
521
|
+
"description": "VSA feature endpoint (IApiEndpoint)"
|
|
770
522
|
},
|
|
771
523
|
{
|
|
772
524
|
"id": "dotnet-feature-handler",
|
|
@@ -774,8 +526,7 @@
|
|
|
774
526
|
"path": "code/dotnet/feature/handler.cs.hbs",
|
|
775
527
|
"category": "feature",
|
|
776
528
|
"stack": "dotnet",
|
|
777
|
-
"description": "VSA feature handler (IHandler)"
|
|
778
|
-
"consumption": "reference"
|
|
529
|
+
"description": "VSA feature handler (IHandler)"
|
|
779
530
|
},
|
|
780
531
|
{
|
|
781
532
|
"id": "dotnet-feature-validator",
|
|
@@ -783,8 +534,7 @@
|
|
|
783
534
|
"path": "code/dotnet/feature/validator.cs.hbs",
|
|
784
535
|
"category": "feature",
|
|
785
536
|
"stack": "dotnet",
|
|
786
|
-
"description": "VSA feature validator (AbstractValidator)"
|
|
787
|
-
"consumption": "reference"
|
|
537
|
+
"description": "VSA feature validator (AbstractValidator)"
|
|
788
538
|
},
|
|
789
539
|
{
|
|
790
540
|
"id": "dotnet-feature-request",
|
|
@@ -792,8 +542,7 @@
|
|
|
792
542
|
"path": "code/dotnet/feature/request.cs.hbs",
|
|
793
543
|
"category": "feature",
|
|
794
544
|
"stack": "dotnet",
|
|
795
|
-
"description": "VSA feature request (sealed record)"
|
|
796
|
-
"consumption": "reference"
|
|
545
|
+
"description": "VSA feature request (sealed record)"
|
|
797
546
|
},
|
|
798
547
|
{
|
|
799
548
|
"id": "dotnet-feature-response",
|
|
@@ -801,8 +550,7 @@
|
|
|
801
550
|
"path": "code/dotnet/feature/response.cs.hbs",
|
|
802
551
|
"category": "feature",
|
|
803
552
|
"stack": "dotnet",
|
|
804
|
-
"description": "VSA feature response (sealed record)"
|
|
805
|
-
"consumption": "reference"
|
|
553
|
+
"description": "VSA feature response (sealed record)"
|
|
806
554
|
},
|
|
807
555
|
{
|
|
808
556
|
"id": "dotnet-feature-errors",
|
|
@@ -810,8 +558,7 @@
|
|
|
810
558
|
"path": "code/dotnet/feature/errors.cs.hbs",
|
|
811
559
|
"category": "feature",
|
|
812
560
|
"stack": "dotnet",
|
|
813
|
-
"description": "VSA feature error factory"
|
|
814
|
-
"consumption": "reference"
|
|
561
|
+
"description": "VSA feature error factory"
|
|
815
562
|
},
|
|
816
563
|
{
|
|
817
564
|
"id": "dotnet-feature-entity",
|
|
@@ -819,8 +566,7 @@
|
|
|
819
566
|
"path": "code/dotnet/feature/entity.cs.hbs",
|
|
820
567
|
"category": "feature",
|
|
821
568
|
"stack": "dotnet",
|
|
822
|
-
"description": "VSA feature entity"
|
|
823
|
-
"consumption": "reference"
|
|
569
|
+
"description": "VSA feature entity"
|
|
824
570
|
},
|
|
825
571
|
{
|
|
826
572
|
"id": "gsap-scroll-section",
|
|
@@ -829,9 +575,7 @@
|
|
|
829
575
|
"category": "ui",
|
|
830
576
|
"stack": "nextjs",
|
|
831
577
|
"description": "Scroll-animated section using GSAP ScrollTrigger with useGSAP hook and reduced-motion check",
|
|
832
|
-
"consumption": "reference",
|
|
833
578
|
"name": "GSAP Scroll Section",
|
|
834
|
-
"engine": "handlebars",
|
|
835
579
|
"deprecated": false,
|
|
836
580
|
"phase": null,
|
|
837
581
|
"outputName": null,
|
|
@@ -841,7 +585,6 @@
|
|
|
841
585
|
{
|
|
842
586
|
"id": "maf-agent-bootstrap",
|
|
843
587
|
"kind": "fragment",
|
|
844
|
-
"consumption": "reference",
|
|
845
588
|
"path": "code/dotnet/ai-agents/AgentBootstrap.cs.template",
|
|
846
589
|
"category": "ai-agents",
|
|
847
590
|
"stack": "dotnet",
|
|
@@ -850,7 +593,6 @@
|
|
|
850
593
|
{
|
|
851
594
|
"id": "maf-embedding-service",
|
|
852
595
|
"kind": "fragment",
|
|
853
|
-
"consumption": "reference",
|
|
854
596
|
"path": "code/dotnet/ai-agents/EmbeddingService.cs.template",
|
|
855
597
|
"category": "ai-agents",
|
|
856
598
|
"stack": "dotnet",
|
|
@@ -859,7 +601,6 @@
|
|
|
859
601
|
{
|
|
860
602
|
"id": "maf-model-registry",
|
|
861
603
|
"kind": "fragment",
|
|
862
|
-
"consumption": "reference",
|
|
863
604
|
"path": "code/dotnet/ai-agents/ModelRegistry.cs.template",
|
|
864
605
|
"category": "ai-agents",
|
|
865
606
|
"stack": "dotnet",
|
|
@@ -868,7 +609,6 @@
|
|
|
868
609
|
{
|
|
869
610
|
"id": "maf-prompt-repository",
|
|
870
611
|
"kind": "fragment",
|
|
871
|
-
"consumption": "reference",
|
|
872
612
|
"path": "code/dotnet/ai-agents/PromptRepository.cs.template",
|
|
873
613
|
"category": "ai-agents",
|
|
874
614
|
"stack": "dotnet",
|
|
@@ -877,7 +617,6 @@
|
|
|
877
617
|
{
|
|
878
618
|
"id": "maf-resilient-tool-middleware",
|
|
879
619
|
"kind": "fragment",
|
|
880
|
-
"consumption": "reference",
|
|
881
620
|
"path": "code/dotnet/ai-agents/ResilientToolMiddleware.cs.template",
|
|
882
621
|
"category": "ai-agents",
|
|
883
622
|
"stack": "dotnet",
|
|
@@ -886,7 +625,6 @@
|
|
|
886
625
|
{
|
|
887
626
|
"id": "maf-vector-search-tool",
|
|
888
627
|
"kind": "fragment",
|
|
889
|
-
"consumption": "reference",
|
|
890
628
|
"path": "code/dotnet/ai-agents/VectorSearchTool.cs.template",
|
|
891
629
|
"category": "ai-agents",
|
|
892
630
|
"stack": "dotnet",
|
|
@@ -903,7 +641,6 @@
|
|
|
903
641
|
{
|
|
904
642
|
"id": "maf-model-registry-config",
|
|
905
643
|
"kind": "fragment",
|
|
906
|
-
"consumption": "reference",
|
|
907
644
|
"path": "code/dotnet/ai-agents/model-registry.json.template",
|
|
908
645
|
"category": "ai-agents",
|
|
909
646
|
"stack": "dotnet",
|
|
@@ -912,7 +649,6 @@
|
|
|
912
649
|
{
|
|
913
650
|
"id": "maf-agent-prompts-migration",
|
|
914
651
|
"kind": "fragment",
|
|
915
|
-
"consumption": "reference",
|
|
916
652
|
"path": "code/sql/ai-agents/agent-prompts-migration.sql.template",
|
|
917
653
|
"category": "code",
|
|
918
654
|
"stack": "dotnet",
|
|
@@ -921,7 +657,6 @@
|
|
|
921
657
|
{
|
|
922
658
|
"id": "maf-pgvector-embeddings-migration",
|
|
923
659
|
"kind": "fragment",
|
|
924
|
-
"consumption": "reference",
|
|
925
660
|
"path": "code/sql/ai-agents/pgvector-embeddings-migration.sql.template",
|
|
926
661
|
"category": "code",
|
|
927
662
|
"stack": "dotnet",
|
|
@@ -930,7 +665,6 @@
|
|
|
930
665
|
{
|
|
931
666
|
"id": "dotnet-database-vector-entity",
|
|
932
667
|
"kind": "fragment",
|
|
933
|
-
"consumption": "reference",
|
|
934
668
|
"path": "code/dotnet/database/vector-entity.cs",
|
|
935
669
|
"category": "code",
|
|
936
670
|
"stack": "dotnet",
|
|
@@ -939,14 +673,12 @@
|
|
|
939
673
|
{
|
|
940
674
|
"id": "nextjs-page",
|
|
941
675
|
"kind": "template",
|
|
942
|
-
"consumption": "generated",
|
|
943
676
|
"name": "Next.js Feature Page",
|
|
944
677
|
"path": "frontend/nextjs/page.tsx.hbs",
|
|
945
678
|
"category": "ui",
|
|
946
679
|
"phase": null,
|
|
947
680
|
"outputName": null,
|
|
948
681
|
"description": "Server component page for a dashboard feature route",
|
|
949
|
-
"engine": "handlebars",
|
|
950
682
|
"deprecated": false,
|
|
951
683
|
"placeholders": [],
|
|
952
684
|
"validatePlaceholders": true
|
|
@@ -954,14 +686,12 @@
|
|
|
954
686
|
{
|
|
955
687
|
"id": "nextjs-client-component",
|
|
956
688
|
"kind": "template",
|
|
957
|
-
"consumption": "generated",
|
|
958
689
|
"name": "Next.js Client Component",
|
|
959
690
|
"path": "frontend/nextjs/client-component.tsx.hbs",
|
|
960
691
|
"category": "ui",
|
|
961
692
|
"phase": null,
|
|
962
693
|
"outputName": null,
|
|
963
694
|
"description": "Client component listing feature records",
|
|
964
|
-
"engine": "handlebars",
|
|
965
695
|
"deprecated": false,
|
|
966
696
|
"placeholders": [],
|
|
967
697
|
"validatePlaceholders": true
|
|
@@ -969,14 +699,12 @@
|
|
|
969
699
|
{
|
|
970
700
|
"id": "nextjs-feature-form",
|
|
971
701
|
"kind": "template",
|
|
972
|
-
"consumption": "generated",
|
|
973
702
|
"name": "Next.js Feature Form",
|
|
974
703
|
"path": "frontend/nextjs/feature-form.tsx.hbs",
|
|
975
704
|
"category": "ui",
|
|
976
705
|
"phase": null,
|
|
977
706
|
"outputName": null,
|
|
978
707
|
"description": "Client form component for creating a feature record",
|
|
979
|
-
"engine": "handlebars",
|
|
980
708
|
"deprecated": false,
|
|
981
709
|
"placeholders": [],
|
|
982
710
|
"validatePlaceholders": true
|
|
@@ -984,14 +712,12 @@
|
|
|
984
712
|
{
|
|
985
713
|
"id": "nextjs-use-feature",
|
|
986
714
|
"kind": "template",
|
|
987
|
-
"consumption": "generated",
|
|
988
715
|
"name": "Next.js Feature Hook",
|
|
989
716
|
"path": "frontend/nextjs/use-feature.ts.hbs",
|
|
990
717
|
"category": "ui",
|
|
991
718
|
"phase": null,
|
|
992
719
|
"outputName": null,
|
|
993
720
|
"description": "Data-fetching hook for a feature",
|
|
994
|
-
"engine": "handlebars",
|
|
995
721
|
"deprecated": false,
|
|
996
722
|
"placeholders": [],
|
|
997
723
|
"validatePlaceholders": true
|
|
@@ -999,14 +725,12 @@
|
|
|
999
725
|
{
|
|
1000
726
|
"id": "nextjs-dockerfile",
|
|
1001
727
|
"kind": "template",
|
|
1002
|
-
"consumption": "reference",
|
|
1003
728
|
"name": "Next.js Dockerfile",
|
|
1004
729
|
"path": "frontend/nextjs/Dockerfile.nextjs.hbs",
|
|
1005
730
|
"category": "infrastructure",
|
|
1006
731
|
"phase": null,
|
|
1007
732
|
"outputName": null,
|
|
1008
733
|
"description": "Multi-stage Dockerfile for a Next.js standalone build",
|
|
1009
|
-
"engine": "handlebars",
|
|
1010
734
|
"deprecated": false,
|
|
1011
735
|
"placeholders": [],
|
|
1012
736
|
"validatePlaceholders": true
|
|
@@ -1014,14 +738,12 @@
|
|
|
1014
738
|
{
|
|
1015
739
|
"id": "nextjs-env-mjs",
|
|
1016
740
|
"kind": "template",
|
|
1017
|
-
"consumption": "reference",
|
|
1018
741
|
"name": "Next.js Env Schema",
|
|
1019
742
|
"path": "frontend/nextjs/env.mjs.hbs",
|
|
1020
743
|
"category": "ui",
|
|
1021
744
|
"phase": null,
|
|
1022
745
|
"outputName": null,
|
|
1023
746
|
"description": "Type-safe environment variable schema (env.mjs)",
|
|
1024
|
-
"engine": "handlebars",
|
|
1025
747
|
"deprecated": false,
|
|
1026
748
|
"placeholders": [],
|
|
1027
749
|
"validatePlaceholders": true
|
|
@@ -1029,14 +751,12 @@
|
|
|
1029
751
|
{
|
|
1030
752
|
"id": "nextjs-tsconfig",
|
|
1031
753
|
"kind": "template",
|
|
1032
|
-
"consumption": "reference",
|
|
1033
754
|
"name": "Next.js tsconfig",
|
|
1034
755
|
"path": "frontend/nextjs/tsconfig.json.hbs",
|
|
1035
756
|
"category": "ui",
|
|
1036
757
|
"phase": null,
|
|
1037
758
|
"outputName": null,
|
|
1038
759
|
"description": "TypeScript configuration for a Next.js project",
|
|
1039
|
-
"engine": "handlebars",
|
|
1040
760
|
"deprecated": false,
|
|
1041
761
|
"placeholders": [],
|
|
1042
762
|
"validatePlaceholders": true
|
|
@@ -1044,14 +764,12 @@
|
|
|
1044
764
|
{
|
|
1045
765
|
"id": "context-design-system",
|
|
1046
766
|
"kind": "template",
|
|
1047
|
-
"consumption": "reference",
|
|
1048
767
|
"name": "Design System Context",
|
|
1049
768
|
"path": "context/design-system.md",
|
|
1050
769
|
"category": "context",
|
|
1051
770
|
"phase": null,
|
|
1052
771
|
"outputName": null,
|
|
1053
772
|
"description": "Design system context document — copy to .morph/context/design-system.md",
|
|
1054
|
-
"engine": "handlebars",
|
|
1055
773
|
"deprecated": false,
|
|
1056
774
|
"placeholders": [],
|
|
1057
775
|
"validatePlaceholders": true
|
|
@@ -1059,14 +777,12 @@
|
|
|
1059
777
|
{
|
|
1060
778
|
"id": "claude-md-core",
|
|
1061
779
|
"kind": "template",
|
|
1062
|
-
"consumption": "reference",
|
|
1063
780
|
"name": "CLAUDE.md (core)",
|
|
1064
781
|
"path": "CLAUDE.md.core.template",
|
|
1065
782
|
"category": "documentation",
|
|
1066
783
|
"phase": null,
|
|
1067
784
|
"outputName": null,
|
|
1068
785
|
"description": "CLAUDE.md project-instructions template for a new morph-spec project",
|
|
1069
|
-
"engine": "handlebars",
|
|
1070
786
|
"deprecated": false,
|
|
1071
787
|
"placeholders": [],
|
|
1072
788
|
"validatePlaceholders": true
|
|
@@ -1074,14 +790,12 @@
|
|
|
1074
790
|
{
|
|
1075
791
|
"id": "claude-md-core-guide",
|
|
1076
792
|
"kind": "template",
|
|
1077
|
-
"consumption": "reference",
|
|
1078
793
|
"name": "CLAUDE.md Authoring Guide",
|
|
1079
794
|
"path": "CLAUDE.md.core.guide.md",
|
|
1080
795
|
"category": "documentation",
|
|
1081
796
|
"phase": null,
|
|
1082
797
|
"outputName": null,
|
|
1083
798
|
"description": "Authoring guide explaining how to fill in the CLAUDE.md core template",
|
|
1084
|
-
"engine": "handlebars",
|
|
1085
799
|
"deprecated": false,
|
|
1086
800
|
"placeholders": [],
|
|
1087
801
|
"validatePlaceholders": true
|
|
@@ -1089,14 +803,12 @@
|
|
|
1089
803
|
{
|
|
1090
804
|
"id": "state-template",
|
|
1091
805
|
"kind": "template",
|
|
1092
|
-
"consumption": "reference",
|
|
1093
806
|
"name": "state.json",
|
|
1094
807
|
"path": "state.template.json",
|
|
1095
808
|
"category": "context",
|
|
1096
809
|
"phase": null,
|
|
1097
810
|
"outputName": null,
|
|
1098
811
|
"description": "Initial .morph/state.json scaffold for a new project",
|
|
1099
|
-
"engine": "handlebars",
|
|
1100
812
|
"deprecated": false,
|
|
1101
813
|
"placeholders": [
|
|
1102
814
|
"PROJECT_NAME",
|