aw-spec-cli 0.1.26 → 0.1.28
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/assets/.agents/skills/appweaver/SKILL.md +7 -47
- package/assets/.appweaver/ORCH-DIALECT.md +13 -9
- package/assets/.appweaver/RULE-PARTITION.md +11 -12
- package/assets/.appweaver/STACK-PROFILES.md +260 -108
- package/assets/.appweaver/domain.json +1 -1
- package/assets/.appweaver/interpreter/run-skill.py +28 -7
- package/assets/.appweaver/orchestrator/AGENT-PROFILE.md +38 -10
- package/assets/.appweaver/orchestrator/LAUNCHER.md +88 -0
- package/assets/.appweaver/orchestrator/README.md +120 -53
- package/assets/.appweaver/orchestrator/adapters/claude_agent_sdk.py +1 -1
- package/assets/.appweaver/orchestrator/modules/delta-plan.orch.yaml +17 -7
- package/assets/.appweaver/orchestrator/modules/domain-select.orch.yaml +6 -4
- package/assets/.appweaver/orchestrator/modules/foundation-lane.orch.yaml +237 -0
- package/assets/.appweaver/orchestrator/modules/foundation-pack.orch.yaml +392 -0
- package/assets/.appweaver/orchestrator/modules/foundation-spec.orch.yaml +548 -0
- package/assets/.appweaver/orchestrator/modules/lane-gate.orch.yaml +4 -4
- package/assets/.appweaver/orchestrator/modules/tech-select.orch.yaml +3 -3
- package/assets/.appweaver/orchestrator/orchestrator.py +162 -63
- package/assets/.appweaver/orchestrator/rev-templates/delta-design-template.skeleton.md +5 -4
- package/assets/.appweaver/orchestrator/rev-templates/design-template.skeleton.md +3 -1
- package/assets/.appweaver/orchestrator/rev-templates/domain-constitution.skeleton.md +2 -2
- package/assets/.appweaver/orchestrator/rev-templates/domain-requirements.skeleton.md +2 -2
- package/assets/.appweaver/orchestrator/rev-templates/domain-rule-bindings.skeleton.md +21 -13
- package/assets/.appweaver/orchestrator/rev-templates/frontend-rule-file.skeleton.md +1 -1
- package/assets/.appweaver/orchestrator/rev-templates/tech-rule-bindings.skeleton.md +28 -31
- package/assets/.appweaver/orchestrator/rev-templates/technical-constitution.skeleton.md +2 -2
- package/assets/.appweaver/orchestrator/rev-templates/technical-rule-file.skeleton.md +1 -1
- package/assets/.appweaver/orchestrator/rev-templates/ui-constitution.skeleton.md +3 -3
- package/assets/.appweaver/orchestrator/rev-templates/ui-delta-design-template.skeleton.md +4 -1
- package/assets/.appweaver/orchestrator/rev-templates/ui-design-template.skeleton.md +6 -4
- package/assets/.appweaver/orchestrator/workflows/_smoke.orch.yaml +41 -3
- package/assets/.appweaver/orchestrator/workflows/aw-spec-add-component.orch.yaml +1 -1
- package/assets/.appweaver/orchestrator/workflows/aw-spec-adopt.orch.yaml +17 -16
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-plan-delta.orch.yaml +7 -1
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-plan.orch.yaml +7 -1
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice-delta.orch.yaml +3 -3
- package/assets/.appweaver/orchestrator/workflows/aw-spec-analyze-slice.orch.yaml +3 -3
- package/assets/.appweaver/orchestrator/workflows/aw-spec-build.orch.yaml +4 -4
- package/assets/.appweaver/orchestrator/workflows/aw-spec-characterize.orch.yaml +2 -2
- package/assets/.appweaver/orchestrator/workflows/aw-spec-constitution.orch.yaml +61 -12
- package/assets/.appweaver/orchestrator/workflows/aw-spec-deploy.orch.yaml +1 -1
- package/assets/.appweaver/orchestrator/workflows/aw-spec-foundation.orch.yaml +172 -293
- package/assets/.appweaver/orchestrator/workflows/aw-spec-implement.orch.yaml +253 -44
- package/assets/.appweaver/orchestrator/workflows/aw-spec-onboard.orch.yaml +72 -71
- package/assets/.appweaver/orchestrator/workflows/aw-spec-parity.orch.yaml +2 -2
- package/assets/.appweaver/orchestrator/workflows/aw-spec-plan.orch.yaml +38 -14
- package/assets/.appweaver/orchestrator/workflows/aw-spec-run.orch.yaml +4 -4
- package/assets/.appweaver/orchestrator/workflows/aw-spec-select-bounded-context.orch.yaml +26 -2
- package/assets/.appweaver/orchestrator/workflows/aw-spec-select-domain.orch.yaml +21 -15
- package/assets/.appweaver/orchestrator/workflows/aw-spec-select-stack.orch.yaml +14 -14
- package/assets/.appweaver/orchestrator/workflows/aw-spec-specify.orch.yaml +3 -3
- package/assets/.appweaver/orchestrator/workflows/aw-spec-ui-model.orch.yaml +3 -3
- package/assets/.appweaver/orchestrator/workflows/aw-spec-ui-prototype.orch.yaml +6 -6
- package/assets/.appweaver/scripts/bash/aw-spec-actions.sh +371 -131
- package/assets/.appweaver/scripts/powershell/aw-spec-actions.ps1 +293 -76
- package/assets/.appweaver/scripts/python/aw-foundation.py +885 -20
- package/assets/.appweaver/scripts/python/aw-inventory.py +28 -21
- package/assets/.appweaver/scripts/python/aw-plan-coverage.py +2 -2
- package/assets/.appweaver/scripts/python/aw-rev-constitution.py +6 -6
- package/assets/.appweaver/scripts/python/aw-stack.py +676 -99
- package/assets/.appweaver/stack-profiles/angular.json +2 -1
- package/assets/.appweaver/stack-profiles/blazor-wasm.json +2 -1
- package/assets/.appweaver/stack-profiles/dotnet-webapi.json +18 -3
- package/assets/.appweaver/stack-profiles/go-chi.json +6 -1
- package/assets/.appweaver/stack-profiles/java-spring.json +14 -5
- package/assets/.appweaver/stack-profiles/nextjs.json +2 -1
- package/assets/.appweaver/stack-profiles/node-express.json +8 -2
- package/assets/.appweaver/stack-profiles/python-fastapi.json +9 -2
- package/assets/.appweaver/stack-profiles/react-vite.json +2 -1
- package/assets/.appweaver/stack-profiles/sveltekit.json +2 -1
- package/assets/.appweaver/stack-profiles/vue-vite.json +2 -1
- package/assets/.appweaver/stacks.json +40 -1
- package/assets/.appweaver/templates/constitution-ui-template.md +2 -2
- package/assets/.appweaver/templates/delta-design-template.md +7 -5
- package/assets/.appweaver/templates/design-template.md +3 -0
- package/assets/.appweaver/templates/ui-delta-design-template.md +1 -1
- package/assets/.appweaver/templates/ui-design-template.md +6 -4
- package/assets/.claude/skills/appweaver/SKILL.md +7 -46
- package/assets/foundations/dotnet/ModularMonolith/ModularMonolith.Reference.rules.json +31 -0
- package/assets/foundations/dotnet/ModularMonolith/ModularMonolith.lane.json +6 -0
- package/assets/foundations/dotnet/VerticalSlice/VerticalSlice.Reference.rules.json +16 -0
- package/assets/foundations/dotnet/VerticalSlice/VerticalSlice.lane.json +6 -0
- package/assets/foundations/foundation.spec.template.txt +98 -0
- package/assets/foundations/java/Hexagonal/Hexagonal.lane.json +6 -0
- package/assets/foundations/java/Hexagonal/Hexagonal.pack.txt +8 -1
- package/assets/foundations/java/Hexagonal/unpack-foundation.sh +4 -5
- package/assets/foundations/node/NextAppRouter/NextAppRouter.spec.txt +68 -0
- package/assets/guardrails/README.md +31 -17
- package/assets/guardrails/{projects/dotnet-default-project → project-specific}/domain-rule-bindings.md +25 -13
- package/assets/guardrails/project-specific/tech-rule-bindings.md +296 -0
- package/assets/guardrails/technology/dotnet-webapi/PACKAGING.md +58 -4
- package/assets/guardrails/technology/dotnet-webapi/api-versioning.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/auditing.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/authorization.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/clean-architecture.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/coding-standards.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/cqrs.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/data-classification.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/dependency-policy.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/eventing.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/folder-structure.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/framework-api-map.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/modular-monolith.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/persistence.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/testing.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/vertical-slices.md +1 -1
- package/assets/guardrails/technology/dotnet-webapi/zero-trust.md +1 -1
- package/assets/guardrails/technology/nextjs/accessibility-implementation.md +1 -1
- package/assets/guardrails/technology/nextjs/api-client.md +1 -1
- package/assets/guardrails/technology/nextjs/api-integration.dotnet-webapi.md +1 -1
- package/assets/guardrails/technology/nextjs/api-integration.java-spring.md +1 -1
- package/assets/guardrails/technology/nextjs/auth-session.md +1 -1
- package/assets/guardrails/technology/nextjs/client-security.md +1 -1
- package/assets/guardrails/technology/nextjs/component-architecture.md +1 -1
- package/assets/guardrails/technology/nextjs/component-conventions.md +2 -2
- package/assets/guardrails/technology/nextjs/design-system.md +1 -1
- package/assets/guardrails/technology/nextjs/error-handling.md +1 -1
- package/assets/guardrails/technology/nextjs/forms-and-validation.md +1 -1
- package/assets/guardrails/technology/nextjs/frontend-testing.md +1 -1
- package/assets/guardrails/technology/nextjs/i18n.md +1 -1
- package/assets/guardrails/technology/nextjs/observability.md +1 -1
- package/assets/guardrails/technology/nextjs/performance-budgets.md +1 -1
- package/assets/guardrails/technology/nextjs/routing-navigation.md +1 -1
- package/assets/guardrails/technology/nextjs/state-management.md +1 -1
- package/assets/guardrails/technology/nextjs/ui-constitution.md +3 -3
- package/package.json +1 -1
- package/assets/.agents/skills/appweaver-demo/SKILL.md +0 -59
- package/assets/.appweaver/orchestrator/.smoke-out/smoke.md +0 -6
- package/assets/.appweaver/orchestrator/workflows/aw-spec-demo.orch.yaml +0 -100
- package/assets/.claude/skills/appweaver-demo/SKILL.md +0 -59
- package/assets/.kilocode/agent.json +0 -28
- package/assets/.kilocode/workflows/appweaver-demo.md +0 -59
- package/assets/.kilocode/workflows/appweaver.md +0 -55
- package/assets/guardrails/projects/dotnet-default-project/tech-rule-bindings.md +0 -271
- /package/assets/guardrails/{projects/dotnet-default-project → project-specific}/domain/domain-requirements.md +0 -0
- /package/assets/guardrails/{projects/dotnet-default-project → project-specific}/frontend/ui-requirements.md +0 -0
- /package/assets/guardrails/{projects/dotnet-default-project → project-specific}/service/technical-requirements.md +0 -0
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "appweaver-demo"
|
|
3
|
-
description: "Prototype launcher (Kilo Code): run the aw-orchestrator using the specified strategy (spawn, agent, sdk, sdk-apply)."
|
|
4
|
-
argument-hint: "Optional strategy ('agent', 'spawn', 'sdk', 'sdk-apply') and/or k=value vars (e.g. 'agent out_dir=...')"
|
|
5
|
-
compatibility: "Requires .appweaver/orchestrator/ and the claude CLI on PATH"
|
|
6
|
-
user-invocable: true
|
|
7
|
-
disable-model-invocation: false
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Orchestrator Launcher
|
|
11
|
-
|
|
12
|
-
All orchestration lives in the workflow YAML and is executed by `.appweaver/orchestrator/orchestrator.py` (the general, agent-agnostic engine). The interpreter assembles the COMPLETE payload (system + user) for every request; you never author generation context yourself.
|
|
13
|
-
|
|
14
|
-
- **Engine + workflow (general):** `.appweaver/orchestrator/orchestrator.py`, `*.orch.yaml`
|
|
15
|
-
- **This agent's transport profile:** `.kilocode/agent.json`
|
|
16
|
-
|
|
17
|
-
> Kilo Code has no native headless CLI, so it reuses `claude -p` for `spawn`
|
|
18
|
-
> (native `--system-prompt`, `--tools`, `--bare` isolation). Its `sdk` block
|
|
19
|
-
> declares the SDK the `sdk`/`sdk-apply` strategies import (`claude-agent-sdk`)
|
|
20
|
-
> and the adapter (`.appweaver/orchestrator/adapters/claude_agent_sdk.py`,
|
|
21
|
-
> shared per-SDK) that owns its calling convention.
|
|
22
|
-
|
|
23
|
-
## Execution Steps
|
|
24
|
-
|
|
25
|
-
1. **Parse Arguments**:
|
|
26
|
-
- Identify the requested strategy (one of: `agent`, `spawn`, `sdk`, `sdk-apply`). If the user specifies a strategy as the first argument, use it. Otherwise, default to `spawn`.
|
|
27
|
-
- Always pass the strategy explicitly: `--strategy <strategy>`.
|
|
28
|
-
- `--agent-profile .kilocode/agent.json` is required for `spawn`, `sdk`, and `sdk-apply`:
|
|
29
|
-
`spawn` reads the CLI to launch from it; `sdk`/`sdk-apply` read the SDK
|
|
30
|
-
package/module (and its `adapter` file) to import from its `sdk` block.
|
|
31
|
-
If the SDK package isn't installed, add `--sdk-install` so the engine
|
|
32
|
-
pip-installs the declared package first. (`agent` needs no profile.)
|
|
33
|
-
- `--checkpoint .appweaver/orchestrator/.demo-out/demo.state.json` is required for
|
|
34
|
-
`sdk-apply` and `agent` (suspend/resume — follow the loop in step 3).
|
|
35
|
-
- `spawn` may also add `--isolation bare|fresh` and `--model <name>` (bare is
|
|
36
|
-
strongest; use it when `ANTHROPIC_API_KEY` is set). `sdk`/`sdk-apply` accept
|
|
37
|
-
`--model <name>`; isolation is intrinsic (fresh SDK session, no settings).
|
|
38
|
-
|
|
39
|
-
2. **Run the Interpreter**:
|
|
40
|
-
Run the command (include only the bracketed flags that apply to the chosen strategy):
|
|
41
|
-
```bash
|
|
42
|
-
python3 .appweaver/orchestrator/orchestrator.py \
|
|
43
|
-
.appweaver/orchestrator/workflows/aw-spec-demo.orch.yaml \
|
|
44
|
-
--strategy <strategy> \
|
|
45
|
-
[--agent-profile .kilocode/agent.json] # spawn, sdk, sdk-apply \
|
|
46
|
-
[--checkpoint .appweaver/orchestrator/.demo-out/demo.state.json] # sdk-apply, agent \
|
|
47
|
-
--json
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
3. **Handle Suspend/Resume Loop (for `agent` or `sdk-apply` strategies)**:
|
|
51
|
-
- If the command exits with code `2` (suspend):
|
|
52
|
-
- Read the prompt from the sidecar file `<checkpoint-path>.user.md` (and system instructions from `<checkpoint-path>.system.md`).
|
|
53
|
-
- Fulfill the request directly using your own tools (e.g., implementing the handler or reviewing files in the workspace).
|
|
54
|
-
- Write the final generation or review output to `<checkpoint-path>.response.md`.
|
|
55
|
-
- Re-run the exact same command.
|
|
56
|
-
- Repeat until the orchestrator exits with code `0`.
|
|
57
|
-
|
|
58
|
-
4. **Report**:
|
|
59
|
-
Report the final JSON outputs (`status`, `outputs`, `review_pass`, generated file paths, etc.) to the user.
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: "appweaver"
|
|
3
|
-
description: "Parametric launcher (Kilo Code): run ANY converted aw-spec skill on the aw-orchestrator under one of the 4 strategies (agent [default], spawn, sdk, sdk-apply)."
|
|
4
|
-
argument-hint: "<skill> [strategy] [input…] — e.g. 'select-domain', 'specify spawn Build an order API', 'analyze-slice'"
|
|
5
|
-
compatibility: "Requires .appweaver/orchestrator/ and the claude CLI on PATH"
|
|
6
|
-
user-invocable: true
|
|
7
|
-
disable-model-invocation: false
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Orchestrator Skill Launcher
|
|
11
|
-
|
|
12
|
-
Runs one converted `aw-spec-*` workflow on the shared, agent-agnostic engine. All orchestration and **all context management live in the workflow YAML + engine** (`.appweaver/orchestrator/orchestrator.py`): the interpreter assembles the COMPLETE payload (system + user) for every request; you never author generation context yourself. Execution follows the chosen strategy; the checkpoint channel carries every human-facing interaction regardless of strategy.
|
|
13
|
-
|
|
14
|
-
- **Engine + workflows (common, shared by all agents):** `.appweaver/orchestrator/orchestrator.py`, `.appweaver/orchestrator/workflows/aw-spec-<skill>.orch.yaml`, shared modules in `.appweaver/orchestrator/modules/`, shared scripts in `.appweaver/scripts/`
|
|
15
|
-
- **This agent's transport profile:** `.kilocode/agent.json`
|
|
16
|
-
|
|
17
|
-
> Kilo Code has no native headless CLI, so it reuses `claude -p` for `spawn`
|
|
18
|
-
> (native `--system-prompt`, `--tools`, `--bare` isolation). Its `sdk` block
|
|
19
|
-
> declares the SDK the `sdk`/`sdk-apply` strategies import (`claude-agent-sdk`)
|
|
20
|
-
> and the adapter (`.appweaver/orchestrator/adapters/claude_agent_sdk.py`,
|
|
21
|
-
> shared per-SDK) that owns its calling convention.
|
|
22
|
-
|
|
23
|
-
## Execution Steps
|
|
24
|
-
|
|
25
|
-
1. **Parse Arguments** (`<skill> [strategy] [input…]`):
|
|
26
|
-
- `skill` (required): the aw-spec skill name, e.g. `demo`, `select-domain`, `foundation`, `specify`, `design`, `implement`, `build`. Resolve the workflow file `.appweaver/orchestrator/workflows/aw-spec-<skill>.orch.yaml`. If it does not exist, list the available `aw-spec-*.orch.yaml` files in that folder and stop.
|
|
27
|
-
- `strategy` (optional, one of `agent`, `spawn`, `sdk`, `sdk-apply`; default `agent` — YOU fulfill each generation through the checkpoint channel, no profile needed): who executes each generation. Always pass `--strategy <strategy>`.
|
|
28
|
-
- Everything after the strategy is the user input: pass it as `--input "<text>"` (omit when empty).
|
|
29
|
-
- `--agent-profile .kilocode/agent.json` is required for `spawn`, `sdk`, and `sdk-apply` (`agent` needs no profile). If the SDK package isn't installed, add `--sdk-install`.
|
|
30
|
-
- **Always** pass `--checkpoint .appweaver/orchestrator/.state/<skill>.state.json` — for EVERY strategy. Converted skills contain interactive steps (questions, selections, hooks); the checkpoint is how they reach you and the user. Strategies only govern who generates.
|
|
31
|
-
- `spawn` may also add `--isolation bare|fresh` and `--model <name>`; `sdk`/`sdk-apply` accept `--model <name>`.
|
|
32
|
-
|
|
33
|
-
2. **Run the Interpreter**:
|
|
34
|
-
```bash
|
|
35
|
-
python3 .appweaver/orchestrator/orchestrator.py \
|
|
36
|
-
.appweaver/orchestrator/workflows/aw-spec-<skill>.orch.yaml \
|
|
37
|
-
--strategy <strategy> \
|
|
38
|
-
--checkpoint .appweaver/orchestrator/.state/<skill>.state.json \
|
|
39
|
-
[--agent-profile .kilocode/agent.json] # spawn, sdk, sdk-apply \
|
|
40
|
-
[--input "<user input>"] \
|
|
41
|
-
--json
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
3. **Handle the Suspend/Resume Loop** — whenever the command exits with code `2`, read the printed `pending` JSON and dispatch on `pending.kind`; fulfill it, write the response to `pending.response_path`, then re-run the SAME command. Repeat until exit `0` (done) or `1` (stopped by a gate).
|
|
45
|
-
- **`ask`** — ask the USER the `prompt` with the listed `options` (use your question tool). Write the chosen answer as PLAIN TEXT to `response_path` (comma-separated values when `multi` is true).
|
|
46
|
-
- **`select`** — ask the USER to pick ONE of `options`; write the chosen value as plain text to `response_path`.
|
|
47
|
-
- **`hook`** — run each MANDATORY hook in `hooks` (each is a slash command of THIS agent) in this conversation; optional hooks at your discretion. Then write `done` to `response_path`.
|
|
48
|
-
- **`author`** — read `system_path` + `user_path` and treat them as your ONLY standards and context. Author the COMPLETE content of the file named in `target` and write it — content ONLY, no commentary, no code fence — to `response_path`. Do NOT write the target file yourself; the interpreter does that.
|
|
49
|
-
- **`agent_generate`** — read `system_path` + `user_path`; perform the task YOURSELF with the listed `tools` within `permission_mode`; write your full final reply — ending with the required ```json fence — to `response_path`.
|
|
50
|
-
- **`agent_query` / `agent_review`** — same as above but READ-ONLY (do not modify files); the reply must end with the required ```json fence.
|
|
51
|
-
- **`apply`** — an isolated generation already decided the changes: read `artifact_path` and write its file contents EXACTLY to the paths it names, then write the confirmation ```json fence to `response_path`.
|
|
52
|
-
- If `pending.note` is present, your previous response was rejected — follow the note and rewrite `response_path`.
|
|
53
|
-
|
|
54
|
-
4. **Report**:
|
|
55
|
-
Report the final JSON (`status`, `outputs`, and any `reason`) to the user. On `stopped`, relay the gate message verbatim — it tells the user what to fix or run first.
|
|
@@ -1,271 +0,0 @@
|
|
|
1
|
-
# dotnet-default-project — 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
|
-
**The model:** the technical rule files are CONFIGURATION — tune this map, not the
|
|
9
|
-
workflows. They live in the **shared technology corpora**, one folder per stack, and this
|
|
10
|
-
map is what binds a project to them. The ratified output (`constitution.technical.md`) is
|
|
11
|
-
NOT listed here — every consumer refers to it directly, as-is.
|
|
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.
|
|
19
|
-
- The two files this project authors — `service/technical-requirements.md` and
|
|
20
|
-
`frontend/ui-requirements.md` — live beside this map. They are the only mapped technical
|
|
21
|
-
files expected to differ between two projects on the same stacks.
|
|
22
|
-
- `technology/dotnet-webapi/examples/` holds the worked `<SampleProjectName>` sample for the
|
|
23
|
-
rule file beside it, split out so a phase can load the rules without the sample code. The
|
|
24
|
-
code-generating phases map both; `## /aw-spec-constitution` maps the rules alone, because a
|
|
25
|
-
thin authority document has no use for sample code.
|
|
26
|
-
- `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`).
|
|
42
|
-
- A command with no heading here loads no mapped technical file (only the workflow's
|
|
43
|
-
universal `ai-rules.md` seed + `constitution.technical.md`, referred to directly).
|
|
44
|
-
- `## /aw-spec-specify` is the one **modelling-methodology** slot (see the rule partition):
|
|
45
|
-
a domain-agnostic way of *modelling*, never a technology choice. Everything below it is a
|
|
46
|
-
HOW-phase technical set.
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
## /aw-spec-specify
|
|
51
|
-
<!-- MODELLING METHODOLOGY ONLY, in two halves. Specify is the domain phase: the single kind
|
|
52
|
-
of technical input it may take is a domain-agnostic way of MODELLING, never a technology
|
|
53
|
-
choice. Do NOT add an architecture / persistence / codegen file here — that would break
|
|
54
|
-
specify's domain purity (design/implement own those). The domain's own DDD overlay
|
|
55
|
-
(domain-driven-design.domain.md) arrives separately via domain-rule-bindings.
|
|
56
|
-
|
|
57
|
-
1. THE DOMAIN MODEL — DDD tactical patterns, plus the same methodology worked through
|
|
58
|
-
in code as the example beside it.
|
|
59
|
-
2. THE EXPERIENCE MODEL — the ux/ rules that govern how specify states the experience:
|
|
60
|
-
Experience Scope, and the project-wide Experience Standards it lifts as UX- ids for
|
|
61
|
-
prototype / design-ui / implement-ui to author and verify against. These are
|
|
62
|
-
methodology, not visual design; each file's own "What must NOT appear" section is
|
|
63
|
-
what keeps screens out of the spec.
|
|
64
|
-
|
|
65
|
-
⚠ The ux/ files sit in a DOMAIN corpus folder but are TECHNICAL-tier inputs: a file's
|
|
66
|
-
tier is the map that lists it, not the folder it lives in. guardrails/domain/healthcare/
|
|
67
|
-
ihe-conformance.md under ## /aw-spec-plan is the same pattern. Unmapping them does not
|
|
68
|
-
make the spec's Experience Standards section disappear — the section is unconditional and
|
|
69
|
-
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
|
|
72
|
-
- guardrails/domain/healthcare/ux/journey-mapping.md
|
|
73
|
-
- guardrails/domain/healthcare/ux/interaction-states.md
|
|
74
|
-
- guardrails/domain/healthcare/ux/accessibility-standards.md
|
|
75
|
-
- guardrails/domain/healthcare/ux/content-design.md
|
|
76
|
-
|
|
77
|
-
## /aw-spec-plan
|
|
78
|
-
<!-- The technical/architecture rule files the design author works from (alongside the
|
|
79
|
-
spec and constitution.technical.md), each followed by its worked example. NO domain file
|
|
80
|
-
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
|
|
95
|
-
- 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
|
|
105
|
-
|
|
106
|
-
## /aw-spec-plan-ui
|
|
107
|
-
<!-- The FRONTEND LANE's design phase. Its own heading, not a branch of ## /aw-spec-plan:
|
|
108
|
-
the two lanes are governed by different constitution halves and own disjoint source
|
|
109
|
-
paths, so keying the map on this command name gives the lane its own rule set for zero
|
|
110
|
-
mechanism change. NO domain file here — the domain reaches design.ui.md as spec ids,
|
|
111
|
-
exactly as it reaches design.md. The lane's ratified base (constitution.ui.md) is
|
|
112
|
-
referred to directly and is NOT mapped.
|
|
113
|
-
|
|
114
|
-
THE SERVICE LANE ENTERS THROUGH ONE FILE. api-integration.{{backend_stack}}.md is the
|
|
115
|
-
CROSS-LANE pairing rule set — what the service guarantees (paging shape, concurrency
|
|
116
|
-
token, error codes, redaction, caching, CORS) and what the client therefore must do.
|
|
117
|
-
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
|
|
119
|
-
api-integration.java-spring.md in a Spring repo — both authored — and to a REPORTED
|
|
120
|
-
missing file for a backend whose pairing nobody has written yet, rather than silently
|
|
121
|
-
loading one stack's assumptions into another. A repo with no backend lane skips the
|
|
122
|
-
bullet entirely. No other service-lane file is mapped here: design.ui.md consumes the
|
|
123
|
-
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
|
|
135
|
-
|
|
136
|
-
## /aw-spec-implement
|
|
137
|
-
<!-- The FRAMEWORK / code-generation rule files the SERVICE lane's generator builds against
|
|
138
|
-
(alongside backend-plan.md and constitution.technical.md), on the BOOTSTRAP path.
|
|
139
|
-
NO domain file — domain reaches implement only through the plan. clean-architecture/cqrs
|
|
140
|
-
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
|
|
147
|
-
|
|
148
|
-
## /aw-spec-implement-ui
|
|
149
|
-
<!-- The FRONTEND LANE's code-generation set — the HOW that lane of `implement` builds
|
|
150
|
-
against, alongside frontend-plan.md and constitution.ui.md. It is loaded on BOTH paths,
|
|
151
|
-
master and delta, because the lane never had a separate delta heading. NO domain file
|
|
152
|
-
(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.
|
|
154
|
-
|
|
155
|
-
EIGHT FILES ARE MAPPED FOR BOTH LANE PHASES on purpose. error-handling,
|
|
156
|
-
forms-and-validation, auth-session, design-system, accessibility-implementation, i18n,
|
|
157
|
-
performance-budgets and the api-integration pairing each carry a DESIGN half and an
|
|
158
|
-
IMPLEMENT half of one rule: the design decides the states, the affordances and the
|
|
159
|
-
targets; this phase realises them. A rule read by only one of the two loses the
|
|
160
|
-
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
|
|
174
|
-
|
|
175
|
-
## /aw-spec-implement-delta
|
|
176
|
-
<!-- The SERVICE lane's set on the DELTA path — same FRAMEWORK / code-generation rules (HOW
|
|
177
|
-
to build). `implement` is one command for both paths and both lanes: it keys this
|
|
178
|
-
heading while generating a change's delta-backend-plan.md and `## /aw-spec-implement`
|
|
179
|
-
while generating the master, so keep the two identical unless a change deliberately
|
|
180
|
-
needs different rules. The delta's code is generated against the master backend-plan.md
|
|
181
|
-
+ 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
|
|
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/dotnet-webapi/clean-architecture.md
|
|
195
|
-
- guardrails/technology/dotnet-webapi/coding-standards.md
|
|
196
|
-
- guardrails/technology/dotnet-webapi/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/dotnet-webapi/testing.md
|
|
203
|
-
- guardrails/technology/dotnet-webapi/coding-standards.md
|
|
204
|
-
- guardrails/technology/dotnet-webapi/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/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
|
|
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/nextjs/ui-constitution.md
|
|
242
|
-
- guardrails/projects/dotnet-default-project/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/dotnet-webapi/persistence.md
|
|
248
|
-
- guardrails/technology/dotnet-webapi/examples/persistence.md
|
|
249
|
-
|
|
250
|
-
---
|
|
251
|
-
|
|
252
|
-
## Quick reference (command → technical file count)
|
|
253
|
-
|
|
254
|
-
| Command | Technical rule files | Role |
|
|
255
|
-
|---|---|---|
|
|
256
|
-
| /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 |
|
|
257
|
-
| /aw-spec-plan | 24 | architecture/security/interop the design author mediates the spec against, each with its example |
|
|
258
|
-
| /aw-spec-plan-ui | 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) |
|
|
259
|
-
| /aw-spec-implement | 5 | governance/architecture the SERVICE lane builds against (from backend-plan.md), master path |
|
|
260
|
-
| /aw-spec-implement-ui | 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 |
|
|
261
|
-
| /aw-spec-implement-delta | 5 | the same set as /aw-spec-implement, for the service lane when implement is generating a change's delta plan |
|
|
262
|
-
| /aw-spec-build | 3 | layering + coding rules the compile-fixer respects, + the layering example |
|
|
263
|
-
| /aw-spec-analyze-slice | 2 | testing + coding rules the design↔code gate validates against |
|
|
264
|
-
| /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
|
-
| /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
|
-
| /aw-spec-run | 2 | persistence rules the execution / data-migration step generates against, + its example |
|
|
267
|
-
|
|
268
|
-
> All migrated workflows are on this map. The conformance-gate workflows **analyze-plan**
|
|
269
|
-
> and **analyze-plan-delta** are intentionally NOT here — they validate the plans / the delta
|
|
270
|
-
> against the spec + DOMAIN gate overlays only (domain-rule-bindings `## /aw-spec-gate`), with no
|
|
271
|
-
> technical gate checklist.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|