aw-spec-cli 0.1.26 → 0.1.27

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 (98) hide show
  1. package/assets/.agents/skills/appweaver/SKILL.md +7 -47
  2. package/assets/.appweaver/ORCH-DIALECT.md +13 -9
  3. package/assets/.appweaver/RULE-PARTITION.md +3 -3
  4. package/assets/.appweaver/STACK-PROFILES.md +188 -101
  5. package/assets/.appweaver/domain.json +1 -1
  6. package/assets/.appweaver/orchestrator/AGENT-PROFILE.md +38 -10
  7. package/assets/.appweaver/orchestrator/LAUNCHER.md +88 -0
  8. package/assets/.appweaver/orchestrator/README.md +120 -53
  9. package/assets/.appweaver/orchestrator/adapters/claude_agent_sdk.py +1 -1
  10. package/assets/.appweaver/orchestrator/modules/domain-select.orch.yaml +6 -4
  11. package/assets/.appweaver/orchestrator/modules/foundation-lane.orch.yaml +237 -0
  12. package/assets/.appweaver/orchestrator/modules/foundation-pack.orch.yaml +349 -0
  13. package/assets/.appweaver/orchestrator/modules/foundation-spec.orch.yaml +381 -0
  14. package/assets/.appweaver/orchestrator/modules/lane-gate.orch.yaml +4 -4
  15. package/assets/.appweaver/orchestrator/modules/tech-select.orch.yaml +3 -3
  16. package/assets/.appweaver/orchestrator/orchestrator.py +162 -63
  17. package/assets/.appweaver/orchestrator/rev-templates/domain-constitution.skeleton.md +2 -2
  18. package/assets/.appweaver/orchestrator/rev-templates/domain-requirements.skeleton.md +2 -2
  19. package/assets/.appweaver/orchestrator/rev-templates/domain-rule-bindings.skeleton.md +5 -5
  20. package/assets/.appweaver/orchestrator/rev-templates/frontend-rule-file.skeleton.md +1 -1
  21. package/assets/.appweaver/orchestrator/rev-templates/tech-rule-bindings.skeleton.md +14 -14
  22. package/assets/.appweaver/orchestrator/rev-templates/technical-constitution.skeleton.md +2 -2
  23. package/assets/.appweaver/orchestrator/rev-templates/technical-rule-file.skeleton.md +1 -1
  24. package/assets/.appweaver/orchestrator/rev-templates/ui-constitution.skeleton.md +3 -3
  25. package/assets/.appweaver/orchestrator/workflows/_smoke.orch.yaml +41 -3
  26. package/assets/.appweaver/orchestrator/workflows/aw-spec-add-component.orch.yaml +1 -1
  27. package/assets/.appweaver/orchestrator/workflows/aw-spec-adopt.orch.yaml +13 -13
  28. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice-delta.orch.yaml +3 -3
  29. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice.orch.yaml +3 -3
  30. package/assets/.appweaver/orchestrator/workflows/aw-spec-build.orch.yaml +4 -4
  31. package/assets/.appweaver/orchestrator/workflows/aw-spec-characterize.orch.yaml +2 -2
  32. package/assets/.appweaver/orchestrator/workflows/aw-spec-constitution.orch.yaml +61 -12
  33. package/assets/.appweaver/orchestrator/workflows/aw-spec-foundation.orch.yaml +172 -293
  34. package/assets/.appweaver/orchestrator/workflows/aw-spec-implement.orch.yaml +29 -28
  35. package/assets/.appweaver/orchestrator/workflows/aw-spec-onboard.orch.yaml +53 -53
  36. package/assets/.appweaver/orchestrator/workflows/aw-spec-parity.orch.yaml +2 -2
  37. package/assets/.appweaver/orchestrator/workflows/aw-spec-plan.orch.yaml +3 -3
  38. package/assets/.appweaver/orchestrator/workflows/aw-spec-run.orch.yaml +4 -4
  39. package/assets/.appweaver/orchestrator/workflows/aw-spec-select-bounded-context.orch.yaml +26 -2
  40. package/assets/.appweaver/orchestrator/workflows/aw-spec-select-domain.orch.yaml +21 -15
  41. package/assets/.appweaver/orchestrator/workflows/aw-spec-select-stack.orch.yaml +14 -14
  42. package/assets/.appweaver/orchestrator/workflows/aw-spec-specify.orch.yaml +2 -2
  43. package/assets/.appweaver/orchestrator/workflows/aw-spec-ui-model.orch.yaml +3 -3
  44. package/assets/.appweaver/orchestrator/workflows/aw-spec-ui-prototype.orch.yaml +6 -6
  45. package/assets/.appweaver/scripts/bash/aw-spec-actions.sh +284 -128
  46. package/assets/.appweaver/scripts/powershell/aw-spec-actions.ps1 +224 -70
  47. package/assets/.appweaver/scripts/python/aw-foundation.py +809 -20
  48. package/assets/.appweaver/scripts/python/aw-inventory.py +28 -21
  49. package/assets/.appweaver/scripts/python/aw-plan-coverage.py +2 -2
  50. package/assets/.appweaver/scripts/python/aw-rev-constitution.py +6 -6
  51. package/assets/.appweaver/scripts/python/aw-stack.py +195 -89
  52. package/assets/.appweaver/stack-profiles/angular.json +2 -1
  53. package/assets/.appweaver/stack-profiles/blazor-wasm.json +2 -1
  54. package/assets/.appweaver/stack-profiles/dotnet-webapi.json +16 -3
  55. package/assets/.appweaver/stack-profiles/go-chi.json +6 -1
  56. package/assets/.appweaver/stack-profiles/java-spring.json +12 -5
  57. package/assets/.appweaver/stack-profiles/nextjs.json +2 -1
  58. package/assets/.appweaver/stack-profiles/node-express.json +8 -2
  59. package/assets/.appweaver/stack-profiles/python-fastapi.json +9 -2
  60. package/assets/.appweaver/stack-profiles/react-vite.json +2 -1
  61. package/assets/.appweaver/stack-profiles/sveltekit.json +2 -1
  62. package/assets/.appweaver/stack-profiles/vue-vite.json +2 -1
  63. package/assets/.appweaver/stacks.json +37 -1
  64. package/assets/.appweaver/templates/constitution-ui-template.md +2 -2
  65. package/assets/.claude/skills/appweaver/SKILL.md +7 -46
  66. package/assets/foundations/dotnet/ModularMonolith/ModularMonolith.Reference.rules.json +31 -0
  67. package/assets/foundations/dotnet/VerticalSlice/VerticalSlice.Reference.rules.json +16 -0
  68. package/assets/foundations/foundation.spec.template.txt +73 -0
  69. package/assets/foundations/java/Hexagonal/Hexagonal.pack.txt +1 -1
  70. package/assets/foundations/java/Hexagonal/unpack-foundation.sh +4 -5
  71. package/assets/foundations/node/NextAppRouter/NextAppRouter.spec.txt +68 -0
  72. package/assets/guardrails/README.md +31 -17
  73. package/assets/guardrails/{projects/dotnet-default-project → project-specific}/domain-rule-bindings.md +5 -5
  74. package/assets/guardrails/{projects/dotnet-default-project → project-specific}/tech-rule-bindings.md +151 -114
  75. package/assets/guardrails/technology/dotnet-webapi/PACKAGING.md +58 -4
  76. package/assets/guardrails/technology/dotnet-webapi/coding-standards.md +1 -1
  77. package/assets/guardrails/technology/dotnet-webapi/dependency-policy.md +1 -1
  78. package/assets/guardrails/technology/dotnet-webapi/folder-structure.md +1 -1
  79. package/assets/guardrails/technology/dotnet-webapi/framework-api-map.md +1 -1
  80. package/assets/guardrails/technology/dotnet-webapi/testing.md +1 -1
  81. package/assets/guardrails/technology/nextjs/api-client.md +1 -1
  82. package/assets/guardrails/technology/nextjs/component-architecture.md +1 -1
  83. package/assets/guardrails/technology/nextjs/component-conventions.md +2 -2
  84. package/assets/guardrails/technology/nextjs/design-system.md +1 -1
  85. package/assets/guardrails/technology/nextjs/frontend-testing.md +1 -1
  86. package/assets/guardrails/technology/nextjs/routing-navigation.md +1 -1
  87. package/assets/guardrails/technology/nextjs/ui-constitution.md +3 -3
  88. package/package.json +1 -1
  89. package/assets/.agents/skills/appweaver-demo/SKILL.md +0 -59
  90. package/assets/.appweaver/orchestrator/.smoke-out/smoke.md +0 -6
  91. package/assets/.appweaver/orchestrator/workflows/aw-spec-demo.orch.yaml +0 -100
  92. package/assets/.claude/skills/appweaver-demo/SKILL.md +0 -59
  93. package/assets/.kilocode/agent.json +0 -28
  94. package/assets/.kilocode/workflows/appweaver-demo.md +0 -59
  95. package/assets/.kilocode/workflows/appweaver.md +0 -55
  96. /package/assets/guardrails/{projects/dotnet-default-project → project-specific}/domain/domain-requirements.md +0 -0
  97. /package/assets/guardrails/{projects/dotnet-default-project → project-specific}/frontend/ui-requirements.md +0 -0
  98. /package/assets/guardrails/{projects/dotnet-default-project → project-specific}/service/technical-requirements.md +0 -0
@@ -1,4 +1,4 @@
1
- # dotnet-default-project — Command → Technical-Rule-File Map
1
+ # project-specific — Command → Technical-Rule-File Map
2
2
 
3
3
  Per-command list of the **technical** rule files this project loads (via `resolve-tech` +
4
4
  the `tech-select` module, into the sticky standards set) for the spec-anchored
@@ -10,35 +10,39 @@ workflows. They live in the **shared technology corpora**, one folder per stack,
10
10
  map is what binds a project to them. The ratified output (`constitution.technical.md`) is
11
11
  NOT listed here — every consumer refers to it directly, as-is.
12
12
 
13
- - All paths are workspace-relative. This project maps two stacks:
14
- `guardrails/technology/dotnet-webapi/` (the service) and
15
- `guardrails/technology/nextjs/` (the frontend lane). Both are **standard rules shared by
16
- every project that maps them**, and neither is domain-specific. The frontend corpus is
17
- read by three headings — `## /aw-spec-ui-constitution` ratifies the lane's base, and
18
- `## /aw-spec-plan-ui` / `## /aw-spec-implement-ui` carry the detail rules under it.
13
+ - All paths are workspace-relative. This project maps two stack corpora:
14
+ `guardrails/technology/{{backend_stack}}/` (the service) and
15
+ `guardrails/technology/{{frontend_stack}}/` (the frontend lane). Both are **standard rules
16
+ shared by every project that maps them**, and neither is domain-specific. The frontend corpus is
17
+ read by four headings — `## /aw-spec-ui-constitution` ratifies the lane's base,
18
+ `## /aw-spec-plan-ui` / `## /aw-spec-implement-ui` carry the detail rules under it, and
19
+ `## /aw-spec-foundation-frontend` is what a spec-built scaffold of the lane follows.
20
+ - `## /aw-spec-foundation-backend` and `## /aw-spec-foundation-frontend` are keyed per lane
21
+ KIND, not per command: `foundation` scaffolds both lanes in one run and loads one set or
22
+ the other for each, and only when the lane is built from a spec — a pack is unpacked as-is.
19
23
  - The two files this project authors — `service/technical-requirements.md` and
20
24
  `frontend/ui-requirements.md` — live beside this map. They are the only mapped technical
21
25
  files expected to differ between two projects on the same stacks.
22
- - `technology/dotnet-webapi/examples/` holds the worked `<SampleProjectName>` sample for the
26
+ - A corpus's `examples/` folder holds the worked `<SampleProjectName>` sample for the
23
27
  rule file beside it, split out so a phase can load the rules without the sample code. The
24
28
  code-generating phases map both; `## /aw-spec-constitution` maps the rules alone, because a
25
29
  thin authority document has no use for sample code.
26
30
  - `resolve-tech --command <name>` collects the `- ` bullets under `## /<name>`.
27
- - Adding a stack is adding a corpus and mapping it — `guardrails/technology/java-spring/`
28
- ships unmapped for exactly that. No workflow, script or engine change is involved.
29
- - **This map is pinned to .NET on purpose** — it is the *default .NET project*, and the stack
30
- directories below are spelled out. Read from a repo whose lanes declare another stack,
31
- `resolve-tech` returns `stack_mismatch` and `tech-select` asks before loading, because these
32
- files become sticky standards the code generator follows. A project on another stack should
33
- copy this folder and repoint the bullets, not adopt it as-is.
34
- - A bullet may name its stack with a **placeholder** instead — `{{stack}}`,
35
- `{{backend_stack}}`, `{{frontend_stack}}`, `{{backend_ecosystem}}`, `{{frontend_ecosystem}}`
36
- — resolved from `.appweaver/stacks.json`. `guardrails/technology/{{stack}}/persistence.md`
37
- reads as `java-spring/` in a Spring repo and `dotnet-webapi/` here, so ONE map serves every
38
- stack a project declares. A placeholder for an undeclared lane skips that bullet; a resolved
39
- path with no file on disk is reported, not silently dropped. See STACK-PROFILES.md §7a.
40
- - This file is the **canonical technical mapping** for this project; it is selected whenever
41
- `dotnet-default-project` is the active project (`.appweaver/domain.json`).
31
+ - **Every stack directory below is a placeholder**, resolved from the lanes in
32
+ `.appweaver/stacks.json`: `{{backend_stack}}` is the service lane's stack and
33
+ `{{frontend_stack}}` the frontend lane's (`{{stack}}`, `{{backend_ecosystem}}` and
34
+ `{{frontend_ecosystem}}` are also available). `guardrails/technology/{{backend_stack}}/persistence.md`
35
+ reads as `dotnet-webapi/` in a .NET repo and `java-spring/` in a Spring one, so this one map
36
+ serves whatever stacks the project declares. A placeholder for an undeclared lane skips
37
+ that bullet, so a backend-only repo loads no frontend rules. A resolved path with no file
38
+ on disk is reported as missing and loads nothing in its place. The bullets were written
39
+ against the `dotnet-webapi` and `nextjs` corpora; another stack's corpus may hold only
40
+ part of them. See STACK-PROFILES.md §7a.
41
+ - Adding a stack is adding a corpus under `guardrails/technology/<stack>/` with the same file
42
+ names — the placeholders then reach it with no change to this map, and no workflow, script
43
+ or engine change is involved.
44
+ - This file is the **canonical technical mapping** for this project; it is used whenever
45
+ `.appweaver/domain.json` names `project-specific`, which it does by default.
42
46
  - A command with no heading here loads no mapped technical file (only the workflow's
43
47
  universal `ai-rules.md` seed + `constitution.technical.md`, referred to directly).
44
48
  - `## /aw-spec-specify` is the one **modelling-methodology** slot (see the rule partition):
@@ -67,8 +71,8 @@ NOT listed here — every consumer refers to it directly, as-is.
67
71
  ihe-conformance.md under ## /aw-spec-plan is the same pattern. Unmapping them does not
68
72
  make the spec's Experience Standards section disappear — the section is unconditional and
69
73
  resolves to "None" — it removes the methodology specify fills it from. -->
70
- - guardrails/technology/dotnet-webapi/domain-driven-design.md
71
- - guardrails/technology/dotnet-webapi/examples/domain-driven-design.md
74
+ - guardrails/technology/{{backend_stack}}/domain-driven-design.md
75
+ - guardrails/technology/{{backend_stack}}/examples/domain-driven-design.md
72
76
  - guardrails/domain/healthcare/ux/journey-mapping.md
73
77
  - guardrails/domain/healthcare/ux/interaction-states.md
74
78
  - guardrails/domain/healthcare/ux/accessibility-standards.md
@@ -78,30 +82,30 @@ NOT listed here — every consumer refers to it directly, as-is.
78
82
  <!-- The technical/architecture rule files the design author works from (alongside the
79
83
  spec and constitution.technical.md), each followed by its worked example. NO domain file
80
84
  here — domain reaches design only as spec ids (BR-/CN-/DC-/IC-). -->
81
- - guardrails/technology/dotnet-webapi/clean-architecture.md
82
- - guardrails/technology/dotnet-webapi/cqrs.md
83
- - guardrails/technology/dotnet-webapi/eventing.md
84
- - guardrails/technology/dotnet-webapi/modular-monolith.md
85
- - guardrails/technology/dotnet-webapi/vertical-slices.md
86
- - guardrails/technology/dotnet-webapi/persistence.md
87
- - guardrails/technology/dotnet-webapi/folder-structure.md
88
- - guardrails/technology/dotnet-webapi/testing.md
89
- - guardrails/technology/dotnet-webapi/api-versioning.md
90
- - guardrails/technology/dotnet-webapi/zero-trust.md
91
- - guardrails/technology/dotnet-webapi/authorization.md
92
- - guardrails/technology/dotnet-webapi/authorization-matrix.md
93
- - guardrails/technology/dotnet-webapi/auditing.md
94
- - guardrails/technology/dotnet-webapi/data-classification.md
85
+ - guardrails/technology/{{backend_stack}}/clean-architecture.md
86
+ - guardrails/technology/{{backend_stack}}/cqrs.md
87
+ - guardrails/technology/{{backend_stack}}/eventing.md
88
+ - guardrails/technology/{{backend_stack}}/modular-monolith.md
89
+ - guardrails/technology/{{backend_stack}}/vertical-slices.md
90
+ - guardrails/technology/{{backend_stack}}/persistence.md
91
+ - guardrails/technology/{{backend_stack}}/folder-structure.md
92
+ - guardrails/technology/{{backend_stack}}/testing.md
93
+ - guardrails/technology/{{backend_stack}}/api-versioning.md
94
+ - guardrails/technology/{{backend_stack}}/zero-trust.md
95
+ - guardrails/technology/{{backend_stack}}/authorization.md
96
+ - guardrails/technology/{{backend_stack}}/authorization-matrix.md
97
+ - guardrails/technology/{{backend_stack}}/auditing.md
98
+ - guardrails/technology/{{backend_stack}}/data-classification.md
95
99
  - guardrails/domain/healthcare/ihe-conformance.md
96
- - guardrails/technology/dotnet-webapi/examples/clean-architecture.md
97
- - guardrails/technology/dotnet-webapi/examples/cqrs.md
98
- - guardrails/technology/dotnet-webapi/examples/eventing.md
99
- - guardrails/technology/dotnet-webapi/examples/vertical-slices.md
100
- - guardrails/technology/dotnet-webapi/examples/persistence.md
101
- - guardrails/technology/dotnet-webapi/examples/api-versioning.md
102
- - guardrails/technology/dotnet-webapi/examples/zero-trust.md
103
- - guardrails/technology/dotnet-webapi/examples/authorization.md
104
- - guardrails/technology/dotnet-webapi/examples/auditing.md
100
+ - guardrails/technology/{{backend_stack}}/examples/clean-architecture.md
101
+ - guardrails/technology/{{backend_stack}}/examples/cqrs.md
102
+ - guardrails/technology/{{backend_stack}}/examples/eventing.md
103
+ - guardrails/technology/{{backend_stack}}/examples/vertical-slices.md
104
+ - guardrails/technology/{{backend_stack}}/examples/persistence.md
105
+ - guardrails/technology/{{backend_stack}}/examples/api-versioning.md
106
+ - guardrails/technology/{{backend_stack}}/examples/zero-trust.md
107
+ - guardrails/technology/{{backend_stack}}/examples/authorization.md
108
+ - guardrails/technology/{{backend_stack}}/examples/auditing.md
105
109
 
106
110
  ## /aw-spec-plan-ui
107
111
  <!-- The FRONTEND LANE's design phase. Its own heading, not a branch of ## /aw-spec-plan:
@@ -115,42 +119,42 @@ NOT listed here — every consumer refers to it directly, as-is.
115
119
  CROSS-LANE pairing rule set — what the service guarantees (paging shape, concurrency
116
120
  token, error codes, redaction, caching, CORS) and what the client therefore must do.
117
121
  It is named for the service stack and mapped through the placeholder, so ONE bullet
118
- serves every backend: it resolves to api-integration.dotnet-webapi.md here and to
122
+ serves every backend: it resolves to api-integration.dotnet-webapi.md in a .NET repo and to
119
123
  api-integration.java-spring.md in a Spring repo — both authored — and to a REPORTED
120
124
  missing file for a backend whose pairing nobody has written yet, rather than silently
121
125
  loading one stack's assumptions into another. A repo with no backend lane skips the
122
126
  bullet entirely. No other service-lane file is mapped here: design.ui.md consumes the
123
127
  published surface, never the service's internals. -->
124
- - guardrails/technology/nextjs/component-architecture.md
125
- - guardrails/technology/nextjs/routing-navigation.md
126
- - guardrails/technology/nextjs/state-management.md
127
- - guardrails/technology/nextjs/error-handling.md
128
- - guardrails/technology/nextjs/forms-and-validation.md
129
- - guardrails/technology/nextjs/auth-session.md
130
- - guardrails/technology/nextjs/design-system.md
131
- - guardrails/technology/nextjs/accessibility-implementation.md
132
- - guardrails/technology/nextjs/i18n.md
133
- - guardrails/technology/nextjs/performance-budgets.md
134
- - guardrails/technology/nextjs/api-integration.{{backend_stack}}.md
128
+ - guardrails/technology/{{frontend_stack}}/component-architecture.md
129
+ - guardrails/technology/{{frontend_stack}}/routing-navigation.md
130
+ - guardrails/technology/{{frontend_stack}}/state-management.md
131
+ - guardrails/technology/{{frontend_stack}}/error-handling.md
132
+ - guardrails/technology/{{frontend_stack}}/forms-and-validation.md
133
+ - guardrails/technology/{{frontend_stack}}/auth-session.md
134
+ - guardrails/technology/{{frontend_stack}}/design-system.md
135
+ - guardrails/technology/{{frontend_stack}}/accessibility-implementation.md
136
+ - guardrails/technology/{{frontend_stack}}/i18n.md
137
+ - guardrails/technology/{{frontend_stack}}/performance-budgets.md
138
+ - guardrails/technology/{{frontend_stack}}/api-integration.{{backend_stack}}.md
135
139
 
136
140
  ## /aw-spec-implement
137
141
  <!-- The FRAMEWORK / code-generation rule files the SERVICE lane's generator builds against
138
142
  (alongside backend-plan.md and constitution.technical.md), on the BOOTSTRAP path.
139
143
  NO domain file — domain reaches implement only through the plan. clean-architecture/cqrs
140
144
  are planning concerns; component wiring is a separate /appweaver add-component step. -->
141
- - guardrails/technology/dotnet-webapi/coding-standards.md
142
- - guardrails/technology/dotnet-webapi/dependency-policy.md
143
- - guardrails/technology/dotnet-webapi/folder-structure.md
144
- - guardrails/technology/dotnet-webapi/framework-api-map.md
145
- - guardrails/technology/dotnet-webapi/testing.md
146
- - guardrails/technology/dotnet-webapi/PACKAGING.md
145
+ - guardrails/technology/{{backend_stack}}/coding-standards.md
146
+ - guardrails/technology/{{backend_stack}}/dependency-policy.md
147
+ - guardrails/technology/{{backend_stack}}/folder-structure.md
148
+ - guardrails/technology/{{backend_stack}}/framework-api-map.md
149
+ - guardrails/technology/{{backend_stack}}/testing.md
150
+ - guardrails/technology/{{backend_stack}}/PACKAGING.md
147
151
 
148
152
  ## /aw-spec-implement-ui
149
153
  <!-- The FRONTEND LANE's code-generation set — the HOW that lane of `implement` builds
150
154
  against, alongside frontend-plan.md and constitution.ui.md. It is loaded on BOTH paths,
151
155
  master and delta, because the lane never had a separate delta heading. NO domain file
152
156
  (domain reached the lane through spec -> frontend-plan.md), and NO service-lane file
153
- beyond the pairing rules below — this lane never writes outside its declared source path.
157
+ beyond the pairing rules below — this lane never writes outside its declared lane root folder.
154
158
 
155
159
  EIGHT FILES ARE MAPPED FOR BOTH LANE PHASES on purpose. error-handling,
156
160
  forms-and-validation, auth-session, design-system, accessibility-implementation, i18n,
@@ -158,19 +162,19 @@ NOT listed here — every consumer refers to it directly, as-is.
158
162
  IMPLEMENT half of one rule: the design decides the states, the affordances and the
159
163
  targets; this phase realises them. A rule read by only one of the two loses the
160
164
  pairing, and the half that goes unread is always the one that then goes unbuilt. -->
161
- - guardrails/technology/nextjs/component-conventions.md
162
- - guardrails/technology/nextjs/api-client.md
163
- - guardrails/technology/nextjs/api-integration.{{backend_stack}}.md
164
- - guardrails/technology/nextjs/auth-session.md
165
- - guardrails/technology/nextjs/client-security.md
166
- - guardrails/technology/nextjs/error-handling.md
167
- - guardrails/technology/nextjs/forms-and-validation.md
168
- - guardrails/technology/nextjs/design-system.md
169
- - guardrails/technology/nextjs/accessibility-implementation.md
170
- - guardrails/technology/nextjs/i18n.md
171
- - guardrails/technology/nextjs/performance-budgets.md
172
- - guardrails/technology/nextjs/observability.md
173
- - guardrails/technology/nextjs/frontend-testing.md
165
+ - guardrails/technology/{{frontend_stack}}/component-conventions.md
166
+ - guardrails/technology/{{frontend_stack}}/api-client.md
167
+ - guardrails/technology/{{frontend_stack}}/api-integration.{{backend_stack}}.md
168
+ - guardrails/technology/{{frontend_stack}}/auth-session.md
169
+ - guardrails/technology/{{frontend_stack}}/client-security.md
170
+ - guardrails/technology/{{frontend_stack}}/error-handling.md
171
+ - guardrails/technology/{{frontend_stack}}/forms-and-validation.md
172
+ - guardrails/technology/{{frontend_stack}}/design-system.md
173
+ - guardrails/technology/{{frontend_stack}}/accessibility-implementation.md
174
+ - guardrails/technology/{{frontend_stack}}/i18n.md
175
+ - guardrails/technology/{{frontend_stack}}/performance-budgets.md
176
+ - guardrails/technology/{{frontend_stack}}/observability.md
177
+ - guardrails/technology/{{frontend_stack}}/frontend-testing.md
174
178
 
175
179
  ## /aw-spec-implement-delta
176
180
  <!-- The SERVICE lane's set on the DELTA path — same FRAMEWORK / code-generation rules (HOW
@@ -179,29 +183,29 @@ NOT listed here — every consumer refers to it directly, as-is.
179
183
  while generating the master, so keep the two identical unless a change deliberately
180
184
  needs different rules. The delta's code is generated against the master backend-plan.md
181
185
  + the delta plan; no domain file (domain reached the delta via delta-spec → delta plan). -->
182
- - guardrails/technology/dotnet-webapi/coding-standards.md
183
- - guardrails/technology/dotnet-webapi/dependency-policy.md
184
- - guardrails/technology/dotnet-webapi/folder-structure.md
185
- - guardrails/technology/dotnet-webapi/framework-api-map.md
186
- - guardrails/technology/dotnet-webapi/testing.md
187
- - guardrails/technology/dotnet-webapi/PACKAGING.md
186
+ - guardrails/technology/{{backend_stack}}/coding-standards.md
187
+ - guardrails/technology/{{backend_stack}}/dependency-policy.md
188
+ - guardrails/technology/{{backend_stack}}/folder-structure.md
189
+ - guardrails/technology/{{backend_stack}}/framework-api-map.md
190
+ - guardrails/technology/{{backend_stack}}/testing.md
191
+ - guardrails/technology/{{backend_stack}}/PACKAGING.md
188
192
 
189
193
  ## /aw-spec-build
190
194
  <!-- The compile/fix reference set: the layering + coding rules the fixer respects when
191
195
  repairing compile errors against the design intent, plus the layering example it repairs
192
196
  towards. NO domain file (build loads domain rules separately via domain-select) and no
193
197
  constitution.technical here. -->
194
- - guardrails/technology/dotnet-webapi/clean-architecture.md
195
- - guardrails/technology/dotnet-webapi/coding-standards.md
196
- - guardrails/technology/dotnet-webapi/examples/clean-architecture.md
198
+ - guardrails/technology/{{backend_stack}}/clean-architecture.md
199
+ - guardrails/technology/{{backend_stack}}/coding-standards.md
200
+ - guardrails/technology/{{backend_stack}}/examples/clean-architecture.md
197
201
 
198
202
  ## /aw-spec-analyze-slice
199
203
  <!-- The design↔code conformance gate's TECHNICAL checklist: the code + tests are
200
204
  validated against these (alongside the DOMAIN gate overlays, loaded separately via
201
205
  resolve-domain `## /aw-spec-gate`). Validation input only — never authoring. -->
202
- - guardrails/technology/dotnet-webapi/testing.md
203
- - guardrails/technology/dotnet-webapi/coding-standards.md
204
- - guardrails/technology/dotnet-webapi/framework-api-map.md
206
+ - guardrails/technology/{{backend_stack}}/testing.md
207
+ - guardrails/technology/{{backend_stack}}/coding-standards.md
208
+ - guardrails/technology/{{backend_stack}}/framework-api-map.md
205
209
 
206
210
  ## /aw-spec-constitution
207
211
  <!-- What the TECHNICAL half of the split constitution ratifies into
@@ -213,24 +217,24 @@ NOT listed here — every consumer refers to it directly, as-is.
213
217
  sources are the domain map's ## /aw-spec-constitution. NO examples/ file either — the
214
218
  ratified half is one declarative line and a `→` pointer per principle, so sample code is
215
219
  weight without a reader. -->
216
- - guardrails/technology/dotnet-webapi/technology-constitution.md
217
- - guardrails/technology/dotnet-webapi/clean-architecture.md
218
- - guardrails/technology/dotnet-webapi/modular-monolith.md
219
- - guardrails/technology/dotnet-webapi/vertical-slices.md
220
- - guardrails/technology/dotnet-webapi/domain-driven-design.md
221
- - guardrails/technology/dotnet-webapi/cqrs.md
222
- - guardrails/technology/dotnet-webapi/persistence.md
223
- - guardrails/technology/dotnet-webapi/eventing.md
224
- - guardrails/technology/dotnet-webapi/folder-structure.md
225
- - guardrails/technology/dotnet-webapi/testing.md
226
- - guardrails/technology/dotnet-webapi/zero-trust.md
227
- - guardrails/technology/dotnet-webapi/authorization.md
228
- - guardrails/technology/dotnet-webapi/auditing.md
229
- - guardrails/technology/dotnet-webapi/data-classification.md
230
- - guardrails/technology/dotnet-webapi/api-versioning.md
231
- - guardrails/technology/dotnet-webapi/coding-standards.md
232
- - guardrails/technology/dotnet-webapi/dependency-policy.md
233
- - guardrails/projects/dotnet-default-project/service/technical-requirements.md
220
+ - guardrails/technology/{{backend_stack}}/technology-constitution.md
221
+ - guardrails/technology/{{backend_stack}}/clean-architecture.md
222
+ - guardrails/technology/{{backend_stack}}/modular-monolith.md
223
+ - guardrails/technology/{{backend_stack}}/vertical-slices.md
224
+ - guardrails/technology/{{backend_stack}}/domain-driven-design.md
225
+ - guardrails/technology/{{backend_stack}}/cqrs.md
226
+ - guardrails/technology/{{backend_stack}}/persistence.md
227
+ - guardrails/technology/{{backend_stack}}/eventing.md
228
+ - guardrails/technology/{{backend_stack}}/folder-structure.md
229
+ - guardrails/technology/{{backend_stack}}/testing.md
230
+ - guardrails/technology/{{backend_stack}}/zero-trust.md
231
+ - guardrails/technology/{{backend_stack}}/authorization.md
232
+ - guardrails/technology/{{backend_stack}}/auditing.md
233
+ - guardrails/technology/{{backend_stack}}/data-classification.md
234
+ - guardrails/technology/{{backend_stack}}/api-versioning.md
235
+ - guardrails/technology/{{backend_stack}}/coding-standards.md
236
+ - guardrails/technology/{{backend_stack}}/dependency-policy.md
237
+ - guardrails/project-specific/service/technical-requirements.md
234
238
 
235
239
  ## /aw-spec-ui-constitution
236
240
  <!-- What the UI half ratifies into constitution.ui.md as a UX-* principle series: the
@@ -238,14 +242,45 @@ NOT listed here — every consumer refers to it directly, as-is.
238
242
  is also the AUTHORITATIVE signal that the project HAS a frontend lane — with no heading
239
243
  here the constitution command skips the UI half and creates no file at all. Domain-free,
240
244
  and loaded before domain-select for the same reason as the set above. -->
241
- - guardrails/technology/nextjs/ui-constitution.md
242
- - guardrails/projects/dotnet-default-project/frontend/ui-requirements.md
245
+ - guardrails/technology/{{frontend_stack}}/ui-constitution.md
246
+ - guardrails/project-specific/frontend/ui-requirements.md
243
247
 
244
248
  ## /aw-spec-run
245
249
  <!-- Execution / data migration: the persistence rules the migration step generates against,
246
250
  plus their worked example. NO domain file; run does not reference constitution.technical.md. -->
247
- - guardrails/technology/dotnet-webapi/persistence.md
248
- - guardrails/technology/dotnet-webapi/examples/persistence.md
251
+ - guardrails/technology/{{backend_stack}}/persistence.md
252
+ - guardrails/technology/{{backend_stack}}/examples/persistence.md
253
+
254
+ ## /aw-spec-foundation-backend
255
+ <!-- What `foundation` builds the SERVICE lane's base project against when the operator picks
256
+ a spec ([spec] or [manual spec]) instead of a pack. A pack is verified against these rules
257
+ when it is made; a spec build is not, so the agent gets them as standards and follows them
258
+ wherever the spec is silent. The set is the SHAPE of a base project — stack base, folder
259
+ structure, packages, coding and test conventions, the framework's own types, and the
260
+ project team's technical requirements — not the architecture/persistence detail set plan
261
+ and implement load for features. NO domain file: a scaffold has no domain yet. -->
262
+ - guardrails/technology/{{backend_stack}}/technology-constitution.md
263
+ - guardrails/technology/{{backend_stack}}/folder-structure.md
264
+ - guardrails/technology/{{backend_stack}}/dependency-policy.md
265
+ - guardrails/technology/{{backend_stack}}/coding-standards.md
266
+ - guardrails/technology/{{backend_stack}}/framework-api-map.md
267
+ - guardrails/technology/{{backend_stack}}/testing.md
268
+ - guardrails/project-specific/service/technical-requirements.md
269
+
270
+ ## /aw-spec-foundation-frontend
271
+ <!-- The same for the FRONTEND lane: the lane base (ui-constitution, which carries the
272
+ mandatory frontend folder structure), how components are split and named, routing, the
273
+ design system, the generated API client the lane talks to the service through, the test
274
+ setup, and the project team's ui-requirements. Loaded INSTEAD of the backend set, never
275
+ on top of it — foundation swaps the standards between the two lanes. -->
276
+ - guardrails/technology/{{frontend_stack}}/ui-constitution.md
277
+ - guardrails/technology/{{frontend_stack}}/component-architecture.md
278
+ - guardrails/technology/{{frontend_stack}}/component-conventions.md
279
+ - guardrails/technology/{{frontend_stack}}/routing-navigation.md
280
+ - guardrails/technology/{{frontend_stack}}/design-system.md
281
+ - guardrails/technology/{{frontend_stack}}/api-client.md
282
+ - guardrails/technology/{{frontend_stack}}/frontend-testing.md
283
+ - guardrails/project-specific/frontend/ui-requirements.md
249
284
 
250
285
  ---
251
286
 
@@ -264,6 +299,8 @@ NOT listed here — every consumer refers to it directly, as-is.
264
299
  | /aw-spec-constitution | 17 | what the technical half ratifies — the technology base, the standard technical rules, and the project team's technical-requirements.md |
265
300
  | /aw-spec-ui-constitution | 2 | what the frontend lane's half ratifies — the UI base + the project team's ui-requirements.md — and the signal that the lane exists |
266
301
  | /aw-spec-run | 2 | persistence rules the execution / data-migration step generates against, + its example |
302
+ | /aw-spec-foundation-backend | 7 | what `foundation` builds the service lane's base project against when it is built from a spec rather than unpacked from a pack |
303
+ | /aw-spec-foundation-frontend | 8 | the same for the frontend lane — loaded instead of the backend set, never on top of it |
267
304
 
268
305
  > All migrated workflows are on this map. The conformance-gate workflows **analyze-plan**
269
306
  > and **analyze-plan-delta** are intentionally NOT here — they validate the plans / the delta
@@ -162,12 +162,63 @@ AAABAAE...
162
162
 
163
163
  ---
164
164
 
165
+ ## The rule file (`<pack name>.rules.json`)
166
+
167
+ Every file in a pack is unpacked as packed, and a file that is already there is replaced. A
168
+ pack that needs some files treated otherwise ships a rule file beside it, named after the
169
+ pack: `VerticalSlice.rules.json` for `VerticalSlice.pack.txt`,
170
+ `VerticalSlice.Reference.rules.json` for `VerticalSlice.Reference.pack.txt`. Without one, the
171
+ pack unpacks exactly as described above.
172
+
173
+ ```json
174
+ {
175
+ "format": "aw-spec-pack-rules/v1",
176
+ "rules": [
177
+ {
178
+ "path": "src/AppWeaver.VerticalSlice.Service/Infrastructure/ApplicationDbContext.cs",
179
+ "action": "merge",
180
+ "note": "why this file is merged — for the reader only",
181
+ "instruction": [
182
+ "Produce one ApplicationDbContext based on the EXISTING file:",
183
+ "- insert every INCOMING `public DbSet<...>` property right after the class's opening brace;",
184
+ "- keep everything else in the EXISTING file unchanged."
185
+ ]
186
+ },
187
+ { "path": "src/AppWeaver.VerticalSlice.Service/Features/", "action": "replace" }
188
+ ]
189
+ }
190
+ ```
191
+
192
+ - **`path`** is written as the pack holds it, sentinel included, and is renamed the way the
193
+ pack's files are — one rule file serves every app name. A path ending in `/` covers every
194
+ pack file under that folder; a rule for a file wins over its folder's rule.
195
+ - **`action`** is `merge` or `replace`. `replace` writes the pack's file over the existing one,
196
+ which is also what happens to every file no rule names. `merge` applies only when the file is
197
+ already there (from the base project, or from the lane before a re-unpack); otherwise the
198
+ pack's file is simply written.
199
+ - **`instruction`** (required for `merge`; a string or a list of lines) tells the merging
200
+ agent how to combine the two versions. It sees the **EXISTING** file — the one in the lane
201
+ before this pack was unpacked — and the **INCOMING** file — the pack's own, with the sentinel
202
+ already renamed — and returns the merged file; the engine writes it.
203
+ - **`note`** is optional and ignored by the kit.
204
+
205
+ A rule file that does not parse, or a rule with an unknown action or a merge with no
206
+ instruction, stops that pack before anything is written: the base pack reports the lane "not
207
+ scaffolded", and a broken reference rule file leaves the sample out with the reason. A rule
208
+ whose path the pack does not hold is reported in the lane's line — a sign the pack changed
209
+ and the rule file was not updated with it.
210
+
211
+ ---
212
+
165
213
  ## How scaffolding consumes the bundle
166
214
 
167
- `/appweaver foundation VerticalSlice <AppName> [OutputDir]` runs `unpack-foundation.ps1`,
168
- which reads the sentinel from the pack header, derives the four target case forms, and
169
- writes the renamed files to the output directory (**repo root by default**). The phase is
170
- defined in `.appweaver/orchestrator/workflows/aw-spec-foundation.orch.yaml`.
215
+ `/appweaver foundation` unpacks the pack a lane picks into that lane's **lane root folder**
216
+ (`backend/` by default) with `unpack-foundation.ps1` (or `.sh`), which reads the sentinel from
217
+ the pack header, derives the four target case forms, and writes the renamed files. Before it
218
+ runs, the pack's rule file is read and every file to be merged is put aside; after it, each
219
+ merge runs as its rule says. A reference sample, when the pack ships one and the operator
220
+ wants it, goes on top the same way with its own rule file. The steps are in
221
+ `.appweaver/orchestrator/modules/foundation-pack.orch.yaml`.
171
222
 
172
223
  ```powershell
173
224
  ./unpack-foundation.ps1 -PackFile ./VerticalSlice.pack.txt -TargetAppName AppWeaver.Health -OutDir ../../../
@@ -182,3 +233,6 @@ defined in `.appweaver/orchestrator/workflows/aw-spec-foundation.orch.yaml`.
182
233
  - [ ] No `bin/obj/.vs` or local `.db` files committed into the pack.
183
234
  - [ ] `pack-foundation.ps1` reported a non-zero sentinel hit count.
184
235
  - [ ] `VerticalSlice.pack.txt` regenerated and committed after any change.
236
+ - [ ] Each pack's rule file names every file that must be merged rather than replaced (for a
237
+ reference sample: every file it shares with the base pack that is not a straight
238
+ replacement), and no rule names a path the pack no longer holds.
@@ -1,6 +1,6 @@
1
1
  # Coding Standards
2
2
 
3
- > Pure technology (domain-agnostic) — domain forbidden patterns & CI gates in [[coding-standards.domain]]. Commands: `/aw-spec-implement`, `/aw-spec-implement-delta`, `/aw-spec-build`, `/aw-spec-analyze-slice`.
3
+ > Pure technology (domain-agnostic) — domain forbidden patterns & CI gates in [[coding-standards.domain]]. Commands: `/aw-spec-implement`, `/aw-spec-implement-delta`, `/aw-spec-build`, `/aw-spec-analyze-slice`, `/aw-spec-foundation-backend`.
4
4
 
5
5
  ## Naming conventions
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Dependency Policy
2
2
 
3
- > Pure technology (domain-agnostic) — domain package rules in [[dependency-policy.domain]]. Commands: `/aw-spec-implement`, `/aw-spec-implement-delta`.
3
+ > Pure technology (domain-agnostic) — domain package rules in [[dependency-policy.domain]]. Commands: `/aw-spec-implement`, `/aw-spec-implement-delta`, `/aw-spec-foundation-backend`.
4
4
 
5
5
  ## Package governance
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Mandatory Folder Structure
2
2
 
3
- > Pure technology (domain-agnostic) — domain additions (Interop adapters, conformance tests, fixtures) in [[folder-structure.domain]]. NON-NEGOTIABLE. Commands: `/aw-spec-plan`, `/aw-spec-implement`, `/aw-spec-implement-delta`.
3
+ > Pure technology (domain-agnostic) — domain additions (Interop adapters, conformance tests, fixtures) in [[folder-structure.domain]]. NON-NEGOTIABLE. Commands: `/aw-spec-plan`, `/aw-spec-implement`, `/aw-spec-implement-delta`, `/aw-spec-foundation-backend`.
4
4
  >
5
5
  > Replace `<SampleProjectName>` with the project name (e.g. `Acme.Billing`).
6
6
 
@@ -1,7 +1,7 @@
1
1
  # Framework API Map — which package and namespace each cited type comes from
2
2
 
3
3
  > Pure technology (domain-agnostic). NON-NEGOTIABLE where it names a package.
4
- > Commands: `/aw-spec-implement`, `/aw-spec-implement-delta`, `/aw-spec-analyze-slice`.
4
+ > Commands: `/aw-spec-implement`, `/aw-spec-implement-delta`, `/aw-spec-analyze-slice`, `/aw-spec-foundation-backend`.
5
5
  >
6
6
  > The rules in this corpus name framework types — `AggregateRootBase<TId>`,
7
7
  > `IAggregateChild`, `IUnitOfWork`. This file says where each one LIVES. Without it a
@@ -1,6 +1,6 @@
1
1
  # Testing Standards
2
2
 
3
- > Pure technology (domain-agnostic) — domain additions in [[testing.domain]]. Commands: `/aw-spec-plan`, `/aw-spec-implement`, `/aw-spec-implement-delta`, `/aw-spec-analyze-slice`.
3
+ > Pure technology (domain-agnostic) — domain additions in [[testing.domain]]. Commands: `/aw-spec-plan`, `/aw-spec-implement`, `/aw-spec-implement-delta`, `/aw-spec-analyze-slice`, `/aw-spec-foundation-backend`.
4
4
 
5
5
  ## Test-first engineering
6
6
 
@@ -1,7 +1,7 @@
1
1
  # API Client Standards — nextjs (frontend lane)
2
2
 
3
3
  > Pure technology (domain-agnostic). NON-NEGOTIABLE.
4
- > Commands: `/aw-spec-implement-ui`.
4
+ > Commands: `/aw-spec-implement-ui`, `/aw-spec-foundation-frontend`.
5
5
  > Detail layer under `constitution.ui.md` UX-IV (the contract is the only server input)
6
6
  > and UX-VII (mutations flow through one path).
7
7
 
@@ -1,6 +1,6 @@
1
1
  # Component Architecture Standards — nextjs (frontend lane)
2
2
 
3
- > Pure technology (domain-agnostic). Commands: `/aw-spec-plan-ui`.
3
+ > Pure technology (domain-agnostic). Commands: `/aw-spec-plan-ui`, `/aw-spec-foundation-frontend`.
4
4
  > Detail layer under `constitution.ui.md` UX-II (design system) and UX-III (server components).
5
5
 
6
6
  The rules the UI design author composes a feature's `§3 Component Structure` from. They
@@ -1,6 +1,6 @@
1
1
  # Component Conventions — nextjs (frontend lane)
2
2
 
3
- > Pure technology (domain-agnostic). Commands: `/aw-spec-implement-ui`.
3
+ > Pure technology (domain-agnostic). Commands: `/aw-spec-implement-ui`, `/aw-spec-foundation-frontend`.
4
4
  > Detail layer under `constitution.ui.md` UX-II (design system) and its Mandatory
5
5
  > Frontend Folder Structure.
6
6
 
@@ -18,7 +18,7 @@ writing within it.
18
18
  states. Business composition does not live in a route file.
19
19
  - A component reused by two or more features moves to `components/` — and moving it is a
20
20
  decision, recorded in the design, not a refactor made mid-generation.
21
- - Nothing this lane generates is written outside the lane's declared source path.
21
+ - Nothing this lane generates is written outside the declared lane root folder.
22
22
 
23
23
  ## Naming
24
24
 
@@ -1,7 +1,7 @@
1
1
  # Design System Standards — nextjs (frontend lane)
2
2
 
3
3
  > Pure technology (domain-agnostic). NON-NEGOTIABLE.
4
- > Commands: `/aw-spec-plan-ui`, `/aw-spec-implement-ui`.
4
+ > Commands: `/aw-spec-plan-ui`, `/aw-spec-implement-ui`, `/aw-spec-foundation-frontend`.
5
5
  > Detail layer under `constitution.ui.md` UX-II (the design system is the only source of
6
6
  > visual truth).
7
7
 
@@ -1,7 +1,7 @@
1
1
  # Frontend Testing Standards — nextjs (frontend lane)
2
2
 
3
3
  > Pure technology (domain-agnostic). NON-NEGOTIABLE.
4
- > Commands: `/aw-spec-implement-ui`.
4
+ > Commands: `/aw-spec-implement-ui`, `/aw-spec-foundation-frontend`.
5
5
  > Detail layer under `constitution.ui.md` UX-XI (frontend test-first).
6
6
 
7
7
  Every file `implement-ui` generates ships with its test. The design says what to test: each
@@ -1,6 +1,6 @@
1
1
  # Routing & Navigation Standards — nextjs (frontend lane)
2
2
 
3
- > Pure technology (domain-agnostic). Commands: `/aw-spec-plan-ui`.
3
+ > Pure technology (domain-agnostic). Commands: `/aw-spec-plan-ui`, `/aw-spec-foundation-frontend`.
4
4
  > Detail layer under `constitution.ui.md` UX-III (server components) and UX-V (every
5
5
  > interaction state specified).
6
6
 
@@ -19,7 +19,7 @@ continue them — the two govern different lanes and version independently.
19
19
 
20
20
  ## Declared Lane
21
21
 
22
- Stack **nextjs** — Next.js (TypeScript, App Router), lane id `web`, owning `web/`.
22
+ Stack **nextjs** — Next.js (TypeScript, App Router), lane id `web`, owning `frontend/` (the default lane root folder).
23
23
 
24
24
  Where `.appweaver/stacks.json` declares a frontend lane, that declaration is authoritative for the
25
25
  lane id and root; a scaffold that disagrees fails `STACK-MISMATCH:` rather than rewriting it.
@@ -121,11 +121,11 @@ another stack's assumptions. Elsewhere in this corpus the file is referenced as
121
121
 
122
122
  ## Mandatory Frontend Folder Structure
123
123
 
124
- The whole layout sits under the lane's root (`web/`) and never adds to the service lane's
124
+ The whole layout sits under the lane root folder (`frontend/` by default) and never adds to the service lane's
125
125
  structure.
126
126
 
127
127
  ```
128
- web/
128
+ frontend/
129
129
  app/ # App Router — route segments, layouts, loading/error/not-found
130
130
  components/ # design-system compositions, presentational only
131
131
  features/<Feature>/ # one folder per spec feature: its components, hooks, actions
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aw-spec-cli",
3
- "version": "0.1.26",
3
+ "version": "0.1.27",
4
4
  "description": "AppWeaver Spec-Driven Development CLI - scaffolds projects with vertical slices, DDD, CQRS, and agent skills",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",