aw-spec-cli 0.1.32 → 0.1.34

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 (75) hide show
  1. package/README.md +76 -81
  2. package/assets/.appweaver/DESIGN-FORMAT.md +56 -17
  3. package/assets/.appweaver/STACK-PROFILES.md +95 -60
  4. package/assets/.appweaver/orchestrator/LAUNCHER.md +1 -1
  5. package/assets/.appweaver/orchestrator/modules/delta-plan.orch.yaml +173 -32
  6. package/assets/.appweaver/orchestrator/modules/domain-select.orch.yaml +29 -1
  7. package/assets/.appweaver/orchestrator/modules/foundation-pack.orch.yaml +7 -4
  8. package/assets/.appweaver/orchestrator/modules/foundation-spec.orch.yaml +49 -60
  9. package/assets/.appweaver/orchestrator/modules/tech-select.orch.yaml +58 -0
  10. package/assets/.appweaver/orchestrator/orchestrator.py +26 -8
  11. package/assets/.appweaver/orchestrator/rev-templates/delta-design-template.skeleton.md +20 -16
  12. package/assets/.appweaver/orchestrator/rev-templates/design-template.skeleton.md +30 -6
  13. package/assets/.appweaver/orchestrator/rev-templates/ui-delta-design-template.skeleton.md +9 -7
  14. package/assets/.appweaver/orchestrator/rev-templates/ui-design-template.skeleton.md +5 -5
  15. package/assets/.appweaver/orchestrator/workflows/aw-spec-adopt.orch.yaml +341 -36
  16. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-plan-delta.orch.yaml +254 -43
  17. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-plan.orch.yaml +248 -68
  18. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice-delta.orch.yaml +251 -20
  19. package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice.orch.yaml +316 -10
  20. package/assets/.appweaver/orchestrator/workflows/aw-spec-build.orch.yaml +6 -47
  21. package/assets/.appweaver/orchestrator/workflows/aw-spec-close-delta.orch.yaml +62 -16
  22. package/assets/.appweaver/orchestrator/workflows/aw-spec-finalize-delta.orch.yaml +132 -9
  23. package/assets/.appweaver/orchestrator/workflows/aw-spec-fix-test-coverage.orch.yaml +965 -0
  24. package/assets/.appweaver/orchestrator/workflows/aw-spec-implement.orch.yaml +222 -169
  25. package/assets/.appweaver/orchestrator/workflows/aw-spec-onboard.orch.yaml +28 -12
  26. package/assets/.appweaver/orchestrator/workflows/aw-spec-plan.orch.yaml +453 -116
  27. package/assets/.appweaver/orchestrator/workflows/aw-spec-select-lane.orch.yaml +7 -4
  28. package/assets/.appweaver/orchestrator/workflows/aw-spec-select-stack.orch.yaml +83 -6
  29. package/assets/.appweaver/orchestrator/workflows/aw-spec-specify.orch.yaml +45 -2
  30. package/assets/.appweaver/scripts/bash/aw-spec-actions.sh +324 -74
  31. package/assets/.appweaver/scripts/powershell/aw-spec-actions.ps1 +275 -44
  32. package/assets/.appweaver/scripts/python/aw-foundation.py +16 -13
  33. package/assets/.appweaver/scripts/python/aw-gaps.py +11 -3
  34. package/assets/.appweaver/scripts/python/aw-model-guard.py +295 -0
  35. package/assets/.appweaver/scripts/python/aw-plan-coverage.py +412 -3
  36. package/assets/.appweaver/scripts/python/aw-plangate.py +23 -16
  37. package/assets/.appweaver/scripts/python/aw-stack.py +1794 -265
  38. package/assets/.appweaver/stack-profiles/dotnet-webapi.json +0 -2
  39. package/assets/.appweaver/stack-profiles/java-spring.json +0 -2
  40. package/assets/.appweaver/templates/api-plan-template.md +107 -0
  41. package/assets/.appweaver/templates/delta-api-plan-template.md +87 -0
  42. package/assets/.appweaver/templates/delta-design-template.md +25 -23
  43. package/assets/.appweaver/templates/delta-spec-template.md +3 -3
  44. package/assets/.appweaver/templates/design-template.md +20 -42
  45. package/assets/.appweaver/templates/domain-model-template.md +3 -0
  46. package/assets/.appweaver/templates/ui-delta-design-template.md +11 -8
  47. package/assets/.appweaver/templates/ui-design-template.md +4 -4
  48. package/assets/foundations/foundation.spec.template.txt +25 -18
  49. package/assets/guardrails/README.md +61 -25
  50. package/assets/guardrails/methodology/ux/accessibility-standards.md +38 -0
  51. package/assets/guardrails/methodology/ux/content-design.md +34 -0
  52. package/assets/guardrails/methodology/ux/interaction-states.md +45 -0
  53. package/assets/guardrails/methodology/ux/journey-mapping.md +41 -0
  54. package/assets/guardrails/project-specific/domain/domain-requirements.md +25 -38
  55. package/assets/guardrails/project-specific/domain-rule-bindings.md +33 -69
  56. package/assets/guardrails/project-specific/frontend/ui-requirements.md +2 -2
  57. package/assets/guardrails/project-specific/service/technical-requirements.md +2 -2
  58. package/assets/guardrails/project-specific/tech-rule-bindings.md +16 -13
  59. package/assets/guardrails/sample-healthcare/domain/domain-requirements.md +58 -0
  60. package/assets/guardrails/sample-healthcare/domain-rule-bindings.md +138 -0
  61. package/assets/guardrails/sample-healthcare/frontend/ui-requirements.md +43 -0
  62. package/assets/guardrails/sample-healthcare/service/technical-requirements.md +40 -0
  63. package/assets/guardrails/sample-healthcare/tech-rule-bindings.md +303 -0
  64. package/dist/commands/init.d.ts.map +1 -1
  65. package/dist/commands/init.js +216 -7
  66. package/dist/commands/init.js.map +1 -1
  67. package/dist/utils/config.js +1 -1
  68. package/dist/utils/config.js.map +1 -1
  69. package/dist/utils/foundation.d.ts +36 -0
  70. package/dist/utils/foundation.d.ts.map +1 -0
  71. package/dist/utils/foundation.js +109 -0
  72. package/dist/utils/foundation.js.map +1 -0
  73. package/dist/utils/paths.js +1 -1
  74. package/dist/utils/paths.js.map +1 -1
  75. package/package.json +1 -1
@@ -0,0 +1,303 @@
1
+ # sample-healthcare — Command → Technical-Rule-File Map
2
+
3
+ Per-command list of the **technical** rule files this project loads (via `resolve-tech` +
4
+ the `tech-select` module, into the sticky standards set) for the spec-anchored
5
+ orchestrator pipeline. This is the technical counterpart of `domain-rule-bindings.md`
6
+ (which maps the DOMAIN rule files).
7
+
8
+ **A worked sample, not the default.** It differs from the shipped `project-specific/` map in
9
+ two places only, both healthcare: `## /aw-spec-specify` maps the healthcare corpus's own `ux/`
10
+ rules in place of the industry-free `guardrails/methodology/ux/` ones, and
11
+ `## /aw-spec-plan-backend` adds `ihe-conformance.md`.
12
+
13
+ **The model:** the technical rule files are CONFIGURATION — tune this map, not the
14
+ workflows. They live in the **shared technology corpora**, one folder per stack, and this
15
+ map is what binds a project to them. The ratified output (`constitution.technical.md`) is
16
+ NOT listed here — every consumer refers to it directly, as-is.
17
+
18
+ - All paths are workspace-relative. This project maps two stack corpora:
19
+ `guardrails/technology/{{backend_stack}}/` (the service) and
20
+ `guardrails/technology/{{frontend_stack}}/` (the frontend lane). Both are **standard rules
21
+ shared by every project that maps them**, and neither is domain-specific. The frontend corpus is
22
+ read by four headings — `## /aw-spec-ui-constitution` ratifies the lane's base,
23
+ `## /aw-spec-plan-frontend` / `## /aw-spec-implement-frontend` carry the detail rules under
24
+ it, and `## /aw-spec-foundation-frontend` is what a spec-built scaffold of the lane follows.
25
+ - `plan`, `implement` and `foundation` are keyed per lane KIND, not per command: each runs
26
+ both lanes in one run and loads one set or the other for each — `## /aw-spec-<command>-backend`
27
+ for the service lane, `## /aw-spec-<command>-frontend` for the frontend lane. `foundation`
28
+ loads its set only when the lane is built from a spec — a pack is unpacked as-is.
29
+ - The two files this project authors — `service/technical-requirements.md` and
30
+ `frontend/ui-requirements.md` — live beside this map. They are the only mapped technical
31
+ files expected to differ between two projects on the same stacks.
32
+ - A corpus's `examples/` folder holds the worked `<SampleProjectName>` sample for the
33
+ rule file beside it, split out so a phase can load the rules without the sample code. The
34
+ code-generating phases map both; `## /aw-spec-constitution` maps the rules alone, because a
35
+ thin authority document has no use for sample code.
36
+ - `resolve-tech --command <name>` collects the `- ` bullets under `## /<name>`.
37
+ - **Every stack directory below is a placeholder**, resolved from the lanes in
38
+ `.appweaver/stacks.json`: `{{backend_stack}}` is the service lane's stack and
39
+ `{{frontend_stack}}` the frontend lane's (`{{stack}}`, `{{backend_ecosystem}}` and
40
+ `{{frontend_ecosystem}}` are also available). `guardrails/technology/{{backend_stack}}/persistence.md`
41
+ reads as `dotnet-webapi/` in a .NET repo and `java-spring/` in a Spring one, so this one map
42
+ serves whatever stacks the project declares. A placeholder for an undeclared lane skips
43
+ that bullet, so a backend-only repo loads no frontend rules. A resolved path with no file
44
+ on disk loads nothing in its place, and the run ends with a warning naming it; so does a
45
+ placeholder the kit does not know. The bullets were written
46
+ against the `dotnet-webapi` and `nextjs` corpora; another stack's corpus may hold only
47
+ part of them. See STACK-PROFILES.md §7a.
48
+ - Adding a stack is adding a corpus under `guardrails/technology/<stack>/` with the same file
49
+ names — the placeholders then reach it with no change to this map, and no workflow, script
50
+ or engine change is involved.
51
+ - This file is the **canonical technical mapping** for this project; it is used whenever
52
+ `.appweaver/domain.json` names `sample-healthcare`.
53
+ - A command with no heading here loads no mapped technical file (only the workflow's
54
+ universal `ai-rules.md` seed + `constitution.technical.md`, referred to directly), and its
55
+ run ends with a warning — a misspelled heading reads the same as a missing one.
56
+ - `## /aw-spec-specify` is the one **modelling-methodology** slot (see the rule partition):
57
+ a domain-agnostic way of *modelling*, never a technology choice. Everything below it is a
58
+ HOW-phase technical set.
59
+
60
+ ---
61
+
62
+ ## /aw-spec-specify
63
+ <!-- MODELLING METHODOLOGY ONLY, in two halves. Specify is the domain phase: the single kind
64
+ of technical input it may take is a domain-agnostic way of MODELLING, never a technology
65
+ choice. Do NOT add an architecture / persistence / codegen file here — that would break
66
+ specify's domain purity (design/implement own those). The domain's own DDD overlay
67
+ (domain-driven-design.domain.md) arrives separately via domain-rule-bindings.
68
+
69
+ 1. THE DOMAIN MODEL — DDD tactical patterns, plus the same methodology worked through
70
+ in code as the example beside it.
71
+ 2. THE EXPERIENCE MODEL — the ux/ rules that govern how specify states the experience:
72
+ Experience Scope, and the project-wide Experience Standards it lifts as UX- ids for
73
+ prototype / design-ui / implement-ui to author and verify against. These are
74
+ methodology, not visual design; each file's own "What must NOT appear" section is
75
+ what keeps screens out of the spec.
76
+
77
+ ⚠ The ux/ files sit in a DOMAIN corpus folder but are TECHNICAL-tier inputs: a file's
78
+ tier is the map that lists it, not the folder it lives in. guardrails/domain/healthcare/
79
+ ihe-conformance.md under ## /aw-spec-plan-backend is the same pattern. Unmapping them does not
80
+ make the spec's Experience Standards section disappear — the section is unconditional and
81
+ resolves to "None" — it removes the methodology specify fills it from. -->
82
+ - guardrails/technology/{{backend_stack}}/domain-driven-design.md
83
+ - guardrails/technology/{{backend_stack}}/examples/domain-driven-design.md
84
+ - guardrails/domain/healthcare/ux/journey-mapping.md
85
+ - guardrails/domain/healthcare/ux/interaction-states.md
86
+ - guardrails/domain/healthcare/ux/accessibility-standards.md
87
+ - guardrails/domain/healthcare/ux/content-design.md
88
+
89
+ ## /aw-spec-plan-backend
90
+ <!-- The technical/architecture rule files the design author works from (alongside the
91
+ spec and constitution.technical.md), each followed by its worked example. NO domain file
92
+ here — domain reaches design only as spec ids (BR-/CN-/DC-/IC-). -->
93
+ - guardrails/technology/{{backend_stack}}/clean-architecture.md
94
+ - guardrails/technology/{{backend_stack}}/cqrs.md
95
+ - guardrails/technology/{{backend_stack}}/eventing.md
96
+ - guardrails/technology/{{backend_stack}}/modular-monolith.md
97
+ - guardrails/technology/{{backend_stack}}/vertical-slices.md
98
+ - guardrails/technology/{{backend_stack}}/persistence.md
99
+ - guardrails/technology/{{backend_stack}}/folder-structure.md
100
+ - guardrails/technology/{{backend_stack}}/testing.md
101
+ - guardrails/technology/{{backend_stack}}/api-versioning.md
102
+ - guardrails/technology/{{backend_stack}}/zero-trust.md
103
+ - guardrails/technology/{{backend_stack}}/authorization.md
104
+ - guardrails/technology/{{backend_stack}}/authorization-matrix.md
105
+ - guardrails/technology/{{backend_stack}}/auditing.md
106
+ - guardrails/technology/{{backend_stack}}/data-classification.md
107
+ - guardrails/domain/healthcare/ihe-conformance.md
108
+ - guardrails/technology/{{backend_stack}}/examples/clean-architecture.md
109
+ - guardrails/technology/{{backend_stack}}/examples/cqrs.md
110
+ - guardrails/technology/{{backend_stack}}/examples/eventing.md
111
+ - guardrails/technology/{{backend_stack}}/examples/vertical-slices.md
112
+ - guardrails/technology/{{backend_stack}}/examples/persistence.md
113
+ - guardrails/technology/{{backend_stack}}/examples/api-versioning.md
114
+ - guardrails/technology/{{backend_stack}}/examples/zero-trust.md
115
+ - guardrails/technology/{{backend_stack}}/examples/authorization.md
116
+ - guardrails/technology/{{backend_stack}}/examples/auditing.md
117
+
118
+ ## /aw-spec-plan-frontend
119
+ <!-- The FRONTEND LANE's design phase. Its own heading, not a branch of ## /aw-spec-plan-backend:
120
+ the two lanes are governed by different constitution halves and own disjoint source
121
+ paths, so keying the map on a heading of its own gives the lane its own rule set for zero
122
+ mechanism change. NO domain file here — the domain reaches design.ui.md as spec ids,
123
+ exactly as it reaches design.md. The lane's ratified base (constitution.ui.md) is
124
+ referred to directly and is NOT mapped.
125
+
126
+ THE SERVICE LANE ENTERS THROUGH ONE FILE. api-integration.{{backend_stack}}.md is the
127
+ CROSS-LANE pairing rule set — what the service guarantees (paging shape, concurrency
128
+ token, error codes, redaction, caching, CORS) and what the client therefore must do.
129
+ It is named for the service stack and mapped through the placeholder, so ONE bullet
130
+ serves every backend: it resolves to api-integration.dotnet-webapi.md in a .NET repo and to
131
+ api-integration.java-spring.md in a Spring repo — both authored — and to a REPORTED
132
+ missing file for a backend whose pairing nobody has written yet, rather than silently
133
+ loading one stack's assumptions into another. A repo with no backend lane skips the
134
+ bullet entirely. No other service-lane file is mapped here: design.ui.md consumes the
135
+ published surface, never the service's internals. -->
136
+ - guardrails/technology/{{frontend_stack}}/component-architecture.md
137
+ - guardrails/technology/{{frontend_stack}}/routing-navigation.md
138
+ - guardrails/technology/{{frontend_stack}}/state-management.md
139
+ - guardrails/technology/{{frontend_stack}}/error-handling.md
140
+ - guardrails/technology/{{frontend_stack}}/forms-and-validation.md
141
+ - guardrails/technology/{{frontend_stack}}/auth-session.md
142
+ - guardrails/technology/{{frontend_stack}}/design-system.md
143
+ - guardrails/technology/{{frontend_stack}}/accessibility-implementation.md
144
+ - guardrails/technology/{{frontend_stack}}/i18n.md
145
+ - guardrails/technology/{{frontend_stack}}/performance-budgets.md
146
+ - guardrails/technology/{{frontend_stack}}/api-integration.{{backend_stack}}.md
147
+
148
+ ## /aw-spec-implement-backend
149
+ <!-- The FRAMEWORK / code-generation rule files the SERVICE lane's generator builds against
150
+ (alongside backend-plan.md and constitution.technical.md). It is loaded on BOTH paths,
151
+ master and delta: a change's code follows the same rules as the master it changes.
152
+ NO domain file — domain reaches implement only through the plan (on the delta path, the
153
+ master backend-plan.md + the change's delta plan). clean-architecture/cqrs are planning
154
+ concerns; component wiring is a separate /appweaver add-component step. -->
155
+ - guardrails/technology/{{backend_stack}}/coding-standards.md
156
+ - guardrails/technology/{{backend_stack}}/dependency-policy.md
157
+ - guardrails/technology/{{backend_stack}}/folder-structure.md
158
+ - guardrails/technology/{{backend_stack}}/framework-api-map.md
159
+ - guardrails/technology/{{backend_stack}}/testing.md
160
+ - guardrails/technology/{{backend_stack}}/PACKAGING.md
161
+
162
+ ## /aw-spec-implement-frontend
163
+ <!-- The FRONTEND LANE's code-generation set — the HOW that lane of `implement` builds
164
+ against, alongside frontend-plan.md and constitution.ui.md. It is loaded on BOTH paths,
165
+ master and delta, as the service lane's set is. NO domain file
166
+ (domain reached the lane through spec -> frontend-plan.md), and NO service-lane file
167
+ beyond the pairing rules below — this lane never writes outside its declared lane root folder.
168
+
169
+ EIGHT FILES ARE MAPPED FOR BOTH LANE PHASES on purpose. error-handling,
170
+ forms-and-validation, auth-session, design-system, accessibility-implementation, i18n,
171
+ performance-budgets and the api-integration pairing each carry a DESIGN half and an
172
+ IMPLEMENT half of one rule: the design decides the states, the affordances and the
173
+ targets; this phase realises them. A rule read by only one of the two loses the
174
+ pairing, and the half that goes unread is always the one that then goes unbuilt. -->
175
+ - guardrails/technology/{{frontend_stack}}/component-conventions.md
176
+ - guardrails/technology/{{frontend_stack}}/api-client.md
177
+ - guardrails/technology/{{frontend_stack}}/api-integration.{{backend_stack}}.md
178
+ - guardrails/technology/{{frontend_stack}}/auth-session.md
179
+ - guardrails/technology/{{frontend_stack}}/client-security.md
180
+ - guardrails/technology/{{frontend_stack}}/error-handling.md
181
+ - guardrails/technology/{{frontend_stack}}/forms-and-validation.md
182
+ - guardrails/technology/{{frontend_stack}}/design-system.md
183
+ - guardrails/technology/{{frontend_stack}}/accessibility-implementation.md
184
+ - guardrails/technology/{{frontend_stack}}/i18n.md
185
+ - guardrails/technology/{{frontend_stack}}/performance-budgets.md
186
+ - guardrails/technology/{{frontend_stack}}/observability.md
187
+ - guardrails/technology/{{frontend_stack}}/frontend-testing.md
188
+
189
+ ## /aw-spec-build
190
+ <!-- The compile/fix reference set: the layering + coding rules the fixer respects when
191
+ repairing compile errors against the design intent, plus the layering example it repairs
192
+ towards. NO domain file (build loads domain rules separately via domain-select) and no
193
+ constitution.technical here. -->
194
+ - guardrails/technology/{{backend_stack}}/clean-architecture.md
195
+ - guardrails/technology/{{backend_stack}}/coding-standards.md
196
+ - guardrails/technology/{{backend_stack}}/examples/clean-architecture.md
197
+
198
+ ## /aw-spec-analyze-slice
199
+ <!-- The design↔code conformance gate's TECHNICAL checklist: the code + tests are
200
+ validated against these (alongside the DOMAIN gate overlays, loaded separately via
201
+ resolve-domain `## /aw-spec-gate`). Validation input only — never authoring. -->
202
+ - guardrails/technology/{{backend_stack}}/testing.md
203
+ - guardrails/technology/{{backend_stack}}/coding-standards.md
204
+ - guardrails/technology/{{backend_stack}}/framework-api-map.md
205
+
206
+ ## /aw-spec-constitution
207
+ <!-- What the TECHNICAL half of the split constitution ratifies into
208
+ constitution.technical.md: the technology base, then the STANDARD technical rules for
209
+ this industry — the same corpus design and implement build against, so a ratified
210
+ principle can cite the rule it governs — and last the PROJECT-SUPPLIED file the project
211
+ team authors. Loaded BEFORE the technical half and before domain-select, so the
212
+ technical author stays domain-free (the seam). NO domain file here: the domain half's
213
+ sources are the domain map's ## /aw-spec-constitution. NO examples/ file either — the
214
+ ratified half is one declarative line and a `→` pointer per principle, so sample code is
215
+ weight without a reader. -->
216
+ - guardrails/technology/{{backend_stack}}/technology-constitution.md
217
+ - guardrails/technology/{{backend_stack}}/clean-architecture.md
218
+ - guardrails/technology/{{backend_stack}}/modular-monolith.md
219
+ - guardrails/technology/{{backend_stack}}/vertical-slices.md
220
+ - guardrails/technology/{{backend_stack}}/domain-driven-design.md
221
+ - guardrails/technology/{{backend_stack}}/cqrs.md
222
+ - guardrails/technology/{{backend_stack}}/persistence.md
223
+ - guardrails/technology/{{backend_stack}}/eventing.md
224
+ - guardrails/technology/{{backend_stack}}/folder-structure.md
225
+ - guardrails/technology/{{backend_stack}}/testing.md
226
+ - guardrails/technology/{{backend_stack}}/zero-trust.md
227
+ - guardrails/technology/{{backend_stack}}/authorization.md
228
+ - guardrails/technology/{{backend_stack}}/auditing.md
229
+ - guardrails/technology/{{backend_stack}}/data-classification.md
230
+ - guardrails/technology/{{backend_stack}}/api-versioning.md
231
+ - guardrails/technology/{{backend_stack}}/coding-standards.md
232
+ - guardrails/technology/{{backend_stack}}/dependency-policy.md
233
+ - guardrails/sample-healthcare/service/technical-requirements.md
234
+
235
+ ## /aw-spec-ui-constitution
236
+ <!-- What the UI half ratifies into constitution.ui.md as a UX-* principle series: the
237
+ standard frontend rules for this industry, then the PROJECT-SUPPLIED file. This heading
238
+ is also the AUTHORITATIVE signal that the project HAS a frontend lane — with no heading
239
+ here the constitution command skips the UI half and creates no file at all. Domain-free,
240
+ and loaded before domain-select for the same reason as the set above. -->
241
+ - guardrails/technology/{{frontend_stack}}/ui-constitution.md
242
+ - guardrails/sample-healthcare/frontend/ui-requirements.md
243
+
244
+ ## /aw-spec-run
245
+ <!-- Execution / data migration: the persistence rules the migration step generates against,
246
+ plus their worked example. NO domain file; run does not reference constitution.technical.md. -->
247
+ - guardrails/technology/{{backend_stack}}/persistence.md
248
+ - guardrails/technology/{{backend_stack}}/examples/persistence.md
249
+
250
+ ## /aw-spec-foundation-backend
251
+ <!-- What `foundation` builds the SERVICE lane's base project against when the operator picks
252
+ a spec ([spec] or [manual spec]) instead of a pack. A pack is verified against these rules
253
+ when it is made; a spec build is not, so the agent gets them as standards and follows them
254
+ wherever the spec is silent. The set is the SHAPE of a base project — stack base, folder
255
+ structure, packages, coding and test conventions, the framework's own types, and the
256
+ project team's technical requirements — not the architecture/persistence detail set plan
257
+ and implement load for features. NO domain file: a scaffold has no domain yet. -->
258
+ - guardrails/technology/{{backend_stack}}/technology-constitution.md
259
+ - guardrails/technology/{{backend_stack}}/folder-structure.md
260
+ - guardrails/technology/{{backend_stack}}/dependency-policy.md
261
+ - guardrails/technology/{{backend_stack}}/coding-standards.md
262
+ - guardrails/technology/{{backend_stack}}/framework-api-map.md
263
+ - guardrails/technology/{{backend_stack}}/testing.md
264
+ - guardrails/sample-healthcare/service/technical-requirements.md
265
+
266
+ ## /aw-spec-foundation-frontend
267
+ <!-- The same for the FRONTEND lane: the lane base (ui-constitution, which carries the
268
+ mandatory frontend folder structure), how components are split and named, routing, the
269
+ design system, the generated API client the lane talks to the service through, the test
270
+ setup, and the project team's ui-requirements. Loaded INSTEAD of the backend set, never
271
+ on top of it — foundation swaps the standards between the two lanes. -->
272
+ - guardrails/technology/{{frontend_stack}}/ui-constitution.md
273
+ - guardrails/technology/{{frontend_stack}}/component-architecture.md
274
+ - guardrails/technology/{{frontend_stack}}/component-conventions.md
275
+ - guardrails/technology/{{frontend_stack}}/routing-navigation.md
276
+ - guardrails/technology/{{frontend_stack}}/design-system.md
277
+ - guardrails/technology/{{frontend_stack}}/api-client.md
278
+ - guardrails/technology/{{frontend_stack}}/frontend-testing.md
279
+ - guardrails/sample-healthcare/frontend/ui-requirements.md
280
+
281
+ ---
282
+
283
+ ## Quick reference (command → technical file count)
284
+
285
+ | Command | Technical rule files | Role |
286
+ |---|---|---|
287
+ | /aw-spec-specify | 6 | the modelling methodology the spec is expressed in: DDD for the domain model (+ its example), and the four ux/ rules for the experience model it lifts as UX- ids — no technology |
288
+ | /aw-spec-plan-backend | 24 | architecture/security/interop the design author mediates the spec against, each with its example |
289
+ | /aw-spec-plan-frontend | 11 | the frontend lane's design set — composition, routing, client state, interaction states, forms, auth surface, design system, accessibility, i18n, performance, and the cross-lane API pairing the UI design author works from (from spec.md) |
290
+ | /aw-spec-implement-backend | 6 | governance/architecture the SERVICE lane builds against (from backend-plan.md), both paths |
291
+ | /aw-spec-implement-frontend | 13 | the FRONTEND lane's code-generation set (from frontend-plan.md), both paths — conventions, the generated client + its service pairing, auth, client security, states, forms, design system, accessibility, i18n, performance, observability and testing |
292
+ | /aw-spec-build | 3 | layering + coding rules the compile-fixer respects, + the layering example |
293
+ | /aw-spec-analyze-slice | 3 | testing + coding rules and the framework API map the design↔code gate validates against |
294
+ | /aw-spec-constitution | 18 | what the technical half ratifies — the technology base, the standard technical rules, and the project team's technical-requirements.md |
295
+ | /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 |
296
+ | /aw-spec-run | 2 | persistence rules the execution / data-migration step generates against, + its example |
297
+ | /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 |
298
+ | /aw-spec-foundation-frontend | 8 | the same for the frontend lane — loaded instead of the backend set, never on top of it |
299
+
300
+ > All migrated workflows are on this map. The conformance-gate workflows **analyze-plan**
301
+ > and **analyze-plan-delta** are intentionally NOT here — they validate the plans / the delta
302
+ > against the spec + DOMAIN gate overlays only (domain-rule-bindings `## /aw-spec-gate`), with no
303
+ > technical gate checklist.
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,eAAO,MAAM,WAAW,SAwEpB,CAAC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2BpC,eAAO,MAAM,WAAW,SA+RpB,CAAC"}
@@ -1,17 +1,228 @@
1
+ import path from 'path';
1
2
  import { Command } from 'commander';
2
3
  import inquirer from 'inquirer';
4
+ import chalk from 'chalk';
3
5
  import { copyAssets } from '../utils/copy-assets.js';
4
6
  import { resolveAssetsPath } from '../utils/paths.js';
7
+ import { getFoundationsByStack, getFoundationById, unpackFoundation, } from '../utils/foundation.js';
5
8
  export const initCommand = new Command('init')
6
- .description('Initialize a new AppWeaver Spec project in the current directory')
9
+ .description('Initialize an AppWeaver project: Project Scaffolding or Spec Workflow Setup')
7
10
  .argument('[directory]', 'Target directory (default: current directory)', '.')
8
- .option('-a, --agent <agent>', 'Agent to use: claude, antigravity, kilocode', 'prompt')
11
+ .option('-i, --intent <intent>', 'Intent: scaffolding (Project Scaffolding) or spec (Spec Workflow Setup)')
12
+ .option('-b, --backend <backend>', 'Backend stack: java-spring, dotnet-webapi, or none')
13
+ .option('-f, --frontend <frontend>', 'Frontend stack: nextjs, react-vite, or none')
14
+ .option('--foundation <foundation>', 'Foundation type: hexagonal, vertical-slice, modular-monolith')
15
+ .option('--app-name <name>', 'Application name for scaffolding')
16
+ .option('--package <package>', 'Root package or namespace')
17
+ .option('-a, --agent <agent>', 'Agent to use: claude, antigravity, kilocode, etc.', 'prompt')
9
18
  .option('-y, --yes', 'Skip prompts and use defaults')
10
19
  .option('--dry-run', 'Show what would be done without making changes')
11
20
  .action(async (directory, options) => {
12
- const targetDir = directory === '.' ? process.cwd() : directory;
13
- console.log(`\n🔧 Initializing AppWeaver Spec project in: ${targetDir}\n`);
14
- // Determine agent
21
+ const targetDir = directory === '.' ? process.cwd() : path.resolve(directory);
22
+ console.log(`\n🔧 Initializing AppWeaver project in: ${targetDir}\n`);
23
+ // Determine intent
24
+ let intent = options.intent;
25
+ if (!intent) {
26
+ if (options.yes) {
27
+ // If flags specific to scaffolding are passed, default to scaffolding, otherwise spec
28
+ intent = options.backend || options.foundation ? 'scaffolding' : 'spec';
29
+ }
30
+ else {
31
+ const { selectedIntent } = await inquirer.prompt([
32
+ {
33
+ type: 'list',
34
+ name: 'selectedIntent',
35
+ message: 'What would you like to do?',
36
+ choices: [
37
+ {
38
+ name: 'Project Scaffolding — Scaffold a new project from a foundation pack',
39
+ value: 'scaffolding',
40
+ },
41
+ {
42
+ name: 'Spec Workflow Setup — Setup specification workflows and agent skills',
43
+ value: 'spec',
44
+ },
45
+ ],
46
+ default: 'scaffolding',
47
+ },
48
+ ]);
49
+ intent = selectedIntent;
50
+ }
51
+ }
52
+ // ─────────────────────────────────────────────────────────────────────────────
53
+ // BRANCH A: PROJECT SCAFFOLDING
54
+ // ─────────────────────────────────────────────────────────────────────────────
55
+ if (intent === 'scaffolding') {
56
+ if (!options.yes) {
57
+ console.log(chalk.cyan(`\n📌 Note: Project will be scaffolded in this directory:`));
58
+ console.log(` ${chalk.bold.yellow(targetDir)}`);
59
+ console.log(chalk.gray(` If this is not your working directory, to exit (Ctrl+C) and switch to that folder (or run: aw-spec init <path>).\n`));
60
+ }
61
+ let backendStack = options.backend;
62
+ if (!backendStack) {
63
+ if (options.yes) {
64
+ backendStack = 'java-spring';
65
+ }
66
+ else {
67
+ const { chosenBackend } = await inquirer.prompt([
68
+ {
69
+ type: 'list',
70
+ name: 'chosenBackend',
71
+ message: 'Select backend stack to scaffold:',
72
+ choices: [
73
+ { name: 'Java Spring Boot (java-spring)', value: 'java-spring' },
74
+ { name: '.NET Core Web API (dotnet-webapi)', value: 'dotnet-webapi' },
75
+ { name: 'Skip (no backend)', value: 'none' },
76
+ ],
77
+ default: 'java-spring',
78
+ },
79
+ ]);
80
+ backendStack = chosenBackend;
81
+ }
82
+ }
83
+ let selectedFoundation;
84
+ if (backendStack && backendStack !== 'none') {
85
+ const foundations = getFoundationsByStack(backendStack);
86
+ if (options.foundation) {
87
+ selectedFoundation = getFoundationById(options.foundation);
88
+ }
89
+ else if (options.yes) {
90
+ selectedFoundation = foundations[0];
91
+ }
92
+ else {
93
+ const { chosenFoundationId } = await inquirer.prompt([
94
+ {
95
+ type: 'list',
96
+ name: 'chosenFoundationId',
97
+ message: 'Select backend foundation type:',
98
+ choices: foundations.map(f => ({
99
+ name: f.displayName,
100
+ value: f.id,
101
+ })),
102
+ default: foundations[0]?.id,
103
+ },
104
+ ]);
105
+ selectedFoundation = getFoundationById(chosenFoundationId);
106
+ }
107
+ if (!selectedFoundation && foundations.length > 0) {
108
+ selectedFoundation = foundations[0];
109
+ }
110
+ }
111
+ let frontendStack = options.frontend;
112
+ if (!frontendStack) {
113
+ if (options.yes) {
114
+ frontendStack = 'none';
115
+ }
116
+ else {
117
+ const { chosenFrontend } = await inquirer.prompt([
118
+ {
119
+ type: 'list',
120
+ name: 'chosenFrontend',
121
+ message: 'Select frontend stack to scaffold:',
122
+ choices: [
123
+ { name: 'Next.js App Router (nextjs) [Future pack]', value: 'nextjs' },
124
+ { name: 'React + Vite (react-vite) [Future pack]', value: 'react-vite' },
125
+ { name: 'Skip (no frontend)', value: 'none' },
126
+ ],
127
+ default: 'none',
128
+ },
129
+ ]);
130
+ frontendStack = chosenFrontend;
131
+ }
132
+ }
133
+ // Check if both skipped
134
+ if ((!backendStack || backendStack === 'none') && (!frontendStack || frontendStack === 'none')) {
135
+ console.log(chalk.yellow('\nℹ️ Both backend and frontend scaffolding were skipped. No files were written.'));
136
+ console.log(chalk.gray('To setup spec workflows, run `aw-spec init` and select "Spec Workflow Setup".\n'));
137
+ return;
138
+ }
139
+ // App Name
140
+ let appName = options.appName;
141
+ const defaultAppName = path.basename(targetDir).replace(/[^a-zA-Z0-9._-]/g, '') || 'MyApp';
142
+ if (!appName) {
143
+ if (options.yes) {
144
+ appName = defaultAppName;
145
+ }
146
+ else {
147
+ const { inputAppName } = await inquirer.prompt([
148
+ {
149
+ type: 'input',
150
+ name: 'inputAppName',
151
+ message: 'Enter application name:',
152
+ default: defaultAppName,
153
+ validate: (input) => {
154
+ if (!input.trim())
155
+ return 'Application name cannot be empty';
156
+ if (/[^a-zA-Z0-9._-]/.test(input)) {
157
+ return 'Allowed characters: A-Z, a-z, 0-9, ., _, -';
158
+ }
159
+ return true;
160
+ },
161
+ },
162
+ ]);
163
+ appName = inputAppName.trim();
164
+ }
165
+ }
166
+ const hasBackend = selectedFoundation !== undefined;
167
+ const hasFrontend = frontendStack !== 'none' && frontendStack !== undefined;
168
+ const isDualLane = hasBackend && hasFrontend;
169
+ const backendOutDir = isDualLane ? path.join(targetDir, 'backend') : targetDir;
170
+ const frontendOutDir = isDualLane ? path.join(targetDir, 'frontend') : targetDir;
171
+ console.log(chalk.bold('\n⚙️ Scaffolding project foundation...\n'));
172
+ if (options.dryRun) {
173
+ console.log(chalk.cyan('📋 Dry run - would perform the following:'));
174
+ if (selectedFoundation) {
175
+ console.log(` ✓ Unpack ${selectedFoundation.name} (${selectedFoundation.stack}) into: ${backendOutDir}`);
176
+ }
177
+ if (hasFrontend) {
178
+ console.log(` ✓ Reserve frontend directory for ${frontendStack} at: ${frontendOutDir}`);
179
+ }
180
+ return;
181
+ }
182
+ // Unpack backend foundation if selected
183
+ if (selectedFoundation) {
184
+ try {
185
+ console.log(chalk.cyan(`Unpacking ${selectedFoundation.displayName}...`));
186
+ const result = await unpackFoundation({
187
+ foundation: selectedFoundation,
188
+ targetAppName: appName,
189
+ outDir: backendOutDir,
190
+ force: options.yes,
191
+ dryRun: options.dryRun,
192
+ });
193
+ if (result.stdout) {
194
+ console.log(chalk.gray(result.stdout.trim()));
195
+ }
196
+ console.log(chalk.green(` ✓ Scaffolded ${selectedFoundation.name} into ${path.relative(process.cwd(), backendOutDir) || '.'}`));
197
+ }
198
+ catch (err) {
199
+ console.error(chalk.red(`\n❌ Failed to unpack foundation ${selectedFoundation.name}:`));
200
+ console.error(err.message || err);
201
+ process.exit(1);
202
+ }
203
+ }
204
+ // Handle frontend notification
205
+ if (hasFrontend) {
206
+ console.log(chalk.yellow(`\nℹ️ Frontend foundation packs (${frontendStack}) are currently in development.`));
207
+ console.log(chalk.gray(` Frontend location reserved at: ${path.relative(process.cwd(), frontendOutDir) || '.'}`));
208
+ }
209
+ console.log(chalk.green('\n✅ Project scaffolded successfully!'));
210
+ console.log('\nNext steps:');
211
+ if (selectedFoundation?.ecosystem === 'java') {
212
+ console.log(` cd ${directory !== '.' ? directory : '.'}`);
213
+ console.log(' ./mvnw test # Verify the build & test suite');
214
+ }
215
+ else if (selectedFoundation?.ecosystem === 'dotnet') {
216
+ console.log(` cd ${directory !== '.' ? directory : '.'}`);
217
+ console.log(' dotnet build # Verify the build');
218
+ }
219
+ console.log(chalk.cyan('\n💡 To enable AI specification workflows and agent skills later, run:'));
220
+ console.log(chalk.cyan(' aw-spec init (and select "Spec Workflow Setup")\n'));
221
+ return;
222
+ }
223
+ // ─────────────────────────────────────────────────────────────────────────────
224
+ // BRANCH B: SPEC WORKFLOW SETUP (Existing Flow Preserved)
225
+ // ─────────────────────────────────────────────────────────────────────────────
15
226
  let agent = options.agent;
16
227
  // If --yes flag and no explicit agent, use default (claude) without prompting
17
228
  if (agent === 'prompt') {
@@ -53,9 +264,7 @@ export const initCommand = new Command('init')
53
264
  if (options.dryRun) {
54
265
  console.log('📋 Dry run - would copy the following:');
55
266
  console.log(` ✓ ${assetsPath}/.aw-spec -> ${targetDir}/.aw-spec`);
56
- // console.log(` ✓ ${assetsPath}/docs -> ${targetDir}/docs`);
57
267
  console.log(` ✓ ${assetsPath}/${agentFolder} -> ${targetDir}/${agentFolder}`);
58
- // console.log(` ✓ ${assetsPath}/docs/VerticalSlice -> ${targetDir}/docs/VerticalSlice`);
59
268
  return;
60
269
  }
61
270
  // Copy assets
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ let cachedConfig = null;
18
18
  export function getCliConfig() {
19
19
  if (cachedConfig)
20
20
  return cachedConfig;
21
- const defaultSourceRepo = path.resolve(PROJECT_ROOT, '../AppWeaver.Spec');
21
+ const defaultSourceRepo = path.resolve(PROJECT_ROOT, '../AppWeaver.Spec.Orchestration');
22
22
  cachedConfig = {
23
23
  sourceRepo: getEnvString('AW_SOURCE_REPO', defaultSourceRepo),
24
24
  foldersToBundle: getEnvArray('AW_FOLDERS_TO_BUNDLE', [
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AAEtD,4CAA4C;AAC5C,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAE5D,SAAS,WAAW,CAAC,GAAW,EAAE,UAAoB;IACpD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,UAAU,CAAC;IACjD,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,YAAY,CAAC,GAAW,EAAE,UAAkB;IACnD,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC;AACxC,CAAC;AAqBD,IAAI,YAAY,GAAqB,IAAI,CAAC;AAE1C,MAAM,UAAU,YAAY;IAC1B,IAAI,YAAY;QAAE,OAAO,YAAY,CAAC;IAEtC,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,iCAAiC,CAAC,CAAC;IAExF,YAAY,GAAG;QACb,UAAU,EAAE,YAAY,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;QAE7D,eAAe,EAAE,WAAW,CAAC,sBAAsB,EAAE;YACnD,YAAY;YACZ,aAAa;YACb,YAAY;YACZ,SAAS;YACT,SAAS;YACT,WAAW;YACX,SAAS;YACT,SAAS;YACT,QAAQ;YACR,QAAQ;YACR,aAAa;YACb,MAAM;YACN,WAAW;YACX,UAAU;YACV,UAAU;YACV,WAAW;YACX,OAAO;YACP,MAAM;YACN,QAAQ;YACR,SAAS;SAEV,CAAC;QAEF,UAAU,EAAE,WAAW,CAAC,gBAAgB,EAAE;YACxC,YAAY;YACZ,aAAa;YACb,YAAY;SACb,CAAC;QAEF,cAAc,EAAE;YACd,MAAM,EAAE,YAAY,CAAC,kBAAkB,EAAE,SAAS,CAAC;YACnD,WAAW,EAAE,YAAY,CAAC,kBAAkB,EAAE,SAAS,CAAC;YACxD,QAAQ,EAAE,YAAY,CAAC,oBAAoB,EAAE,WAAW,CAAC;SAC1D;QAED,WAAW,EAAE,WAAW,CAAC,iBAAiB,EAAE;YAC1C,2BAA2B;YAC3B,yBAAyB;YACzB,8BAA8B;YAC9B,6BAA6B;YAC7B,6CAA6C;YAC7C,uCAAuC;YACvC,uCAAuC;YACvC,wCAAwC;YACxC,mCAAmC;YACnC,8BAA8B;YAC9B,mCAAmC;SACpC,CAAC;QAEF,eAAe,EAAE,WAAW,CAAC,4BAA4B,EAAE;YACzD,YAAY;SACb,CAAC;QAEF,aAAa,EAAE,WAAW,CAAC,0BAA0B,EAAE;YACrD,2BAA2B;YAC3B,yBAAyB;YACzB,8BAA8B;YAC9B,6BAA6B;SAC9B,CAAC;QAEF,kBAAkB,EAAE,WAAW,CAAC,yBAAyB,EAAE;YACzD,SAAS;YACT,SAAS;YACT,WAAW;SACZ,CAAC;KACH,CAAC;IAEF,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,gBAAgB;IAC9B,YAAY,GAAG,IAAI,CAAC;AACtB,CAAC"}
@@ -0,0 +1,36 @@
1
+ export type BackendStackId = 'java-spring' | 'dotnet-webapi';
2
+ export type FrontendStackId = 'nextjs' | 'react-vite';
3
+ export interface FoundationInfo {
4
+ id: string;
5
+ name: string;
6
+ displayName: string;
7
+ stack: BackendStackId | FrontendStackId;
8
+ ecosystem: 'java' | 'dotnet' | 'node';
9
+ kind: 'backend' | 'frontend';
10
+ packFileName: string;
11
+ unpackerScript: string;
12
+ unpackerPs1: string;
13
+ sentinel: string;
14
+ }
15
+ export declare const SHIPPED_FOUNDATIONS: FoundationInfo[];
16
+ export declare function getFoundationsByStack(stack: string): FoundationInfo[];
17
+ export declare function getFoundationById(id: string): FoundationInfo | undefined;
18
+ export interface FoundationPaths {
19
+ foundationDir: string;
20
+ packFile: string;
21
+ scriptFile: string;
22
+ }
23
+ export declare function resolveFoundationPaths(foundation: FoundationInfo): Promise<FoundationPaths>;
24
+ export interface UnpackOptions {
25
+ foundation: FoundationInfo;
26
+ targetAppName: string;
27
+ outDir: string;
28
+ sentinel?: string;
29
+ force?: boolean;
30
+ dryRun?: boolean;
31
+ }
32
+ export declare function unpackFoundation(options: UnpackOptions): Promise<{
33
+ stdout: string;
34
+ stderr: string;
35
+ }>;
36
+ //# sourceMappingURL=foundation.d.ts.map