@ncoderz/awa 1.7.1 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +23 -16
- package/README.md +25 -27
- package/dist/{chunk-OQZTQ5ZI.js → chunk-LRQWZCYL.js} +1 -4
- package/dist/chunk-LRQWZCYL.js.map +1 -0
- package/dist/chunk-WGGMDWBE.js +760 -0
- package/dist/chunk-WGGMDWBE.js.map +1 -0
- package/dist/{config-WL3SLSP6.js → config-EJIXC7D7.js} +2 -2
- package/dist/index.js +1285 -466
- package/dist/index.js.map +1 -1
- package/dist/renumber-ZCI2H5HZ.js +9 -0
- package/dist/renumber-ZCI2H5HZ.js.map +1 -0
- package/package.json +13 -6
- package/templates/awa/.agent/skills/spec-merge/SKILL.md +3 -0
- package/templates/awa/.agent/skills/spec-tidy/SKILL.md +3 -0
- package/templates/awa/.agent/workflows/spec-merge.md +3 -0
- package/templates/awa/.agent/workflows/spec-tidy.md +3 -0
- package/templates/awa/.agents/skills/spec-merge/SKILL.md +3 -0
- package/templates/awa/.agents/skills/spec-tidy/SKILL.md +3 -0
- package/templates/awa/.awa/.agent/schemas/ALIGN_REPORT.schema.yaml +1 -1
- package/templates/awa/.awa/.agent/schemas/API.schema.yaml +1 -1
- package/templates/awa/.awa/.agent/schemas/ARCHITECTURE.schema.yaml +7 -0
- package/templates/awa/.awa/.agent/schemas/DESIGN.schema.yaml +1 -1
- package/templates/awa/.awa/.agent/schemas/{EXAMPLES.schema.yaml → EXAMPLE.schema.yaml} +4 -4
- package/templates/awa/.awa/.agent/schemas/FEAT.schema.yaml +8 -1
- package/templates/awa/.awa/.agent/schemas/PLAN.schema.yaml +1 -1
- package/templates/awa/.awa/.agent/schemas/README.schema.yaml +1 -1
- package/templates/awa/.awa/.agent/schemas/REQ.schema.yaml +1 -1
- package/templates/awa/.awa/.agent/schemas/TASK.schema.yaml +1 -1
- package/templates/awa/.claude/skills/spec-merge/SKILL.md +3 -0
- package/templates/awa/.claude/skills/spec-tidy/SKILL.md +3 -0
- package/templates/awa/.gemini/commands/spec-merge.md +3 -0
- package/templates/awa/.gemini/commands/spec-tidy.md +3 -0
- package/templates/awa/.gemini/skills/spec-merge/SKILL.md +3 -0
- package/templates/awa/.gemini/skills/spec-tidy/SKILL.md +3 -0
- package/templates/awa/.github/prompts/awa.spec-merge.prompt.md +8 -0
- package/templates/awa/.github/prompts/awa.spec-tidy.prompt.md +7 -0
- package/templates/awa/.github/skills/spec-merge/SKILL.md +3 -0
- package/templates/awa/.github/skills/spec-tidy/SKILL.md +3 -0
- package/templates/awa/.kilocode/skills/spec-merge/SKILL.md +3 -0
- package/templates/awa/.kilocode/skills/spec-tidy/SKILL.md +3 -0
- package/templates/awa/.kilocode/workflows/spec-merge.md +3 -0
- package/templates/awa/.kilocode/workflows/spec-tidy.md +3 -0
- package/templates/awa/.opencode/commands/spec-merge.md +3 -0
- package/templates/awa/.opencode/commands/spec-tidy.md +3 -0
- package/templates/awa/.opencode/skills/spec-merge/SKILL.md +3 -0
- package/templates/awa/.opencode/skills/spec-tidy/SKILL.md +3 -0
- package/templates/awa/.qwen/commands/spec-merge.md +3 -0
- package/templates/awa/.qwen/commands/spec-tidy.md +3 -0
- package/templates/awa/.qwen/skills/spec-merge/SKILL.md +3 -0
- package/templates/awa/.qwen/skills/spec-tidy/SKILL.md +3 -0
- package/templates/awa/.roo/skills/spec-merge/SKILL.md +3 -0
- package/templates/awa/.roo/skills/spec-tidy/SKILL.md +3 -0
- package/templates/awa/.windsurf/skills/spec-merge/SKILL.md +3 -0
- package/templates/awa/.windsurf/skills/spec-tidy/SKILL.md +3 -0
- package/templates/awa/_delete.txt +4 -0
- package/templates/awa/_partials/_cmd.spec-merge.md +6 -0
- package/templates/awa/_partials/_cmd.spec-tidy.md +5 -0
- package/templates/awa/_partials/_skill.spec-merge.md +6 -0
- package/templates/awa/_partials/_skill.spec-tidy.md +6 -0
- package/templates/awa/_partials/awa.align.md +1 -1
- package/templates/awa/_partials/awa.brainstorm.md +1 -1
- package/templates/awa/_partials/awa.code.md +1 -1
- package/templates/awa/_partials/awa.core.md +8 -4
- package/templates/awa/_partials/awa.design.md +3 -2
- package/templates/awa/_partials/awa.documentation.md +1 -1
- package/templates/awa/_partials/awa.examples.md +4 -4
- package/templates/awa/_partials/awa.feature.md +2 -1
- package/templates/awa/_partials/awa.plan.md +2 -2
- package/templates/awa/_partials/awa.requirements.md +4 -2
- package/templates/awa/_partials/awa.spec-merge.md +97 -0
- package/templates/awa/_partials/awa.spec.tidy.md +92 -0
- package/templates/awa/_partials/awa.tasks.md +1 -1
- package/templates/awa/_partials/awa.upgrade.md +3 -3
- package/templates/awa/_partials/awa.usage.md +74 -6
- package/templates/awa/_partials/awa.vibe.md +1 -1
- package/templates/awa/_tests/claude/.awa/.agent/awa.core.md +126 -0
- package/templates/awa/_tests/claude/.awa/.agent/schemas/ALIGN_REPORT.schema.yaml +83 -0
- package/templates/awa/_tests/claude/.awa/.agent/schemas/API.schema.yaml +7 -0
- package/templates/awa/_tests/claude/.awa/.agent/schemas/ARCHITECTURE.schema.yaml +257 -0
- package/templates/awa/_tests/claude/.awa/.agent/schemas/DESIGN.schema.yaml +351 -0
- package/templates/awa/_tests/claude/.awa/.agent/schemas/EXAMPLE.schema.yaml +89 -0
- package/templates/awa/_tests/claude/.awa/.agent/schemas/FEAT.schema.yaml +142 -0
- package/templates/awa/_tests/claude/.awa/.agent/schemas/PLAN.schema.yaml +146 -0
- package/templates/awa/_tests/claude/.awa/.agent/schemas/README.schema.yaml +137 -0
- package/templates/awa/_tests/claude/.awa/.agent/schemas/REQ.schema.yaml +160 -0
- package/templates/awa/_tests/claude/.awa/.agent/schemas/TASK.schema.yaml +204 -0
- package/templates/awa/_tests/claude/.claude/agents/awa.md +137 -0
- package/templates/awa/_tests/claude/.claude/skills/awa-align/SKILL.md +67 -0
- package/templates/awa/_tests/claude/.claude/skills/awa-architecture/SKILL.md +50 -0
- package/templates/awa/_tests/claude/.claude/skills/awa-brainstorm/SKILL.md +57 -0
- package/templates/awa/_tests/claude/.claude/skills/awa-check/SKILL.md +79 -0
- package/templates/awa/_tests/claude/.claude/skills/awa-code/SKILL.md +179 -0
- package/templates/awa/_tests/claude/.claude/skills/awa-design/SKILL.md +62 -0
- package/templates/awa/_tests/claude/.claude/skills/awa-documentation/SKILL.md +91 -0
- package/templates/awa/_tests/claude/.claude/skills/awa-examples/SKILL.md +58 -0
- package/templates/awa/_tests/claude/.claude/skills/awa-feature/SKILL.md +56 -0
- package/templates/awa/_tests/claude/.claude/skills/awa-plan/SKILL.md +53 -0
- package/templates/awa/_tests/claude/.claude/skills/awa-refactor/SKILL.md +53 -0
- package/templates/awa/_tests/claude/.claude/skills/awa-requirements/SKILL.md +58 -0
- package/templates/awa/_tests/claude/.claude/skills/awa-tasks/SKILL.md +158 -0
- package/templates/awa/_tests/claude/.claude/skills/awa-upgrade/SKILL.md +68 -0
- package/templates/awa/_tests/claude/.claude/skills/awa-usage/SKILL.md +368 -0
- package/templates/awa/_tests/claude/.claude/skills/awa-vibe/SKILL.md +72 -0
- package/templates/awa/_tests/claude/.claude/skills/spec-merge/SKILL.md +102 -0
- package/templates/awa/_tests/claude/.claude/skills/spec-tidy/SKILL.md +97 -0
- package/templates/awa/_tests/claude/CLAUDE.md +132 -0
- package/templates/awa/_tests/copilot/.awa/.agent/awa.core.md +126 -0
- package/templates/awa/_tests/copilot/.awa/.agent/schemas/ALIGN_REPORT.schema.yaml +83 -0
- package/templates/awa/_tests/copilot/.awa/.agent/schemas/API.schema.yaml +7 -0
- package/templates/awa/_tests/copilot/.awa/.agent/schemas/ARCHITECTURE.schema.yaml +257 -0
- package/templates/awa/_tests/copilot/.awa/.agent/schemas/DESIGN.schema.yaml +351 -0
- package/templates/awa/_tests/copilot/.awa/.agent/schemas/EXAMPLE.schema.yaml +89 -0
- package/templates/awa/_tests/copilot/.awa/.agent/schemas/FEAT.schema.yaml +142 -0
- package/templates/awa/_tests/copilot/.awa/.agent/schemas/PLAN.schema.yaml +146 -0
- package/templates/awa/_tests/copilot/.awa/.agent/schemas/README.schema.yaml +137 -0
- package/templates/awa/_tests/copilot/.awa/.agent/schemas/REQ.schema.yaml +160 -0
- package/templates/awa/_tests/copilot/.awa/.agent/schemas/TASK.schema.yaml +204 -0
- package/templates/awa/_tests/copilot/.github/agents/awa.agent.md +137 -0
- package/templates/awa/_tests/copilot/.github/prompts/awa.align.prompt.md +67 -0
- package/templates/awa/_tests/copilot/.github/prompts/awa.architecture.prompt.md +50 -0
- package/templates/awa/_tests/copilot/.github/prompts/awa.brainstorm.prompt.md +57 -0
- package/templates/awa/_tests/copilot/.github/prompts/awa.check.prompt.md +79 -0
- package/templates/awa/_tests/copilot/.github/prompts/awa.code.prompt.md +179 -0
- package/templates/awa/_tests/copilot/.github/prompts/awa.design.prompt.md +62 -0
- package/templates/awa/_tests/copilot/.github/prompts/awa.documentation.prompt.md +91 -0
- package/templates/awa/_tests/copilot/.github/prompts/awa.examples.prompt.md +58 -0
- package/templates/awa/_tests/copilot/.github/prompts/awa.feature.prompt.md +56 -0
- package/templates/awa/_tests/copilot/.github/prompts/awa.plan.prompt.md +53 -0
- package/templates/awa/_tests/copilot/.github/prompts/awa.refactor.prompt.md +53 -0
- package/templates/awa/_tests/copilot/.github/prompts/awa.requirements.prompt.md +58 -0
- package/templates/awa/_tests/copilot/.github/prompts/awa.spec-merge.prompt.md +102 -0
- package/templates/awa/_tests/copilot/.github/prompts/awa.spec-tidy.prompt.md +96 -0
- package/templates/awa/_tests/copilot/.github/prompts/awa.tasks.prompt.md +158 -0
- package/templates/awa/_tests/copilot/.github/prompts/awa.upgrade.prompt.md +68 -0
- package/templates/awa/_tests/copilot/.github/prompts/awa.vibe.prompt.md +72 -0
- package/templates/awa/_tests/copilot/.github/skills/awa-align/SKILL.md +67 -0
- package/templates/awa/_tests/copilot/.github/skills/awa-architecture/SKILL.md +50 -0
- package/templates/awa/_tests/copilot/.github/skills/awa-brainstorm/SKILL.md +57 -0
- package/templates/awa/_tests/copilot/.github/skills/awa-check/SKILL.md +79 -0
- package/templates/awa/_tests/copilot/.github/skills/awa-code/SKILL.md +179 -0
- package/templates/awa/_tests/copilot/.github/skills/awa-design/SKILL.md +62 -0
- package/templates/awa/_tests/copilot/.github/skills/awa-documentation/SKILL.md +91 -0
- package/templates/awa/_tests/copilot/.github/skills/awa-examples/SKILL.md +58 -0
- package/templates/awa/_tests/copilot/.github/skills/awa-feature/SKILL.md +56 -0
- package/templates/awa/_tests/copilot/.github/skills/awa-plan/SKILL.md +53 -0
- package/templates/awa/_tests/copilot/.github/skills/awa-refactor/SKILL.md +53 -0
- package/templates/awa/_tests/copilot/.github/skills/awa-requirements/SKILL.md +58 -0
- package/templates/awa/_tests/copilot/.github/skills/awa-tasks/SKILL.md +158 -0
- package/templates/awa/_tests/copilot/.github/skills/awa-upgrade/SKILL.md +68 -0
- package/templates/awa/_tests/copilot/.github/skills/awa-usage/SKILL.md +368 -0
- package/templates/awa/_tests/copilot/.github/skills/awa-vibe/SKILL.md +72 -0
- package/templates/awa/_tests/copilot/.github/skills/spec-merge/SKILL.md +102 -0
- package/templates/awa/_tests/copilot/.github/skills/spec-tidy/SKILL.md +97 -0
- package/dist/chunk-OQZTQ5ZI.js.map +0 -1
- /package/dist/{config-WL3SLSP6.js.map → config-EJIXC7D7.js.map} +0 -0
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# Structural rules for FEAT-{CODE}-{feature-name}.md files
|
|
2
|
+
target-files: ".awa/specs/FEAT-*.md"
|
|
3
|
+
description: >
|
|
4
|
+
Non-normative feature context. Explains WHAT the feature is and WHY it exists,
|
|
5
|
+
not HOW to implement it. Uses clear, accessible language. Marked [INFORMATIVE]
|
|
6
|
+
to distinguish from normative REQ/DESIGN documents.
|
|
7
|
+
Prohibited: normative language (SHALL/SHOULD/MAY), acceptance criteria,
|
|
8
|
+
traceability IDs, design decisions, bold formatting.
|
|
9
|
+
line-limit: 800
|
|
10
|
+
|
|
11
|
+
sections:
|
|
12
|
+
# Top-level heading with INFORMATIVE marker
|
|
13
|
+
- heading: ".*\\[INFORMATIVE\\]"
|
|
14
|
+
level: 1
|
|
15
|
+
required: true
|
|
16
|
+
description: >
|
|
17
|
+
Document title including [INFORMATIVE] marker.
|
|
18
|
+
Format: # Feature Context: {Feature Name} [INFORMATIVE]
|
|
19
|
+
|
|
20
|
+
# Problem section
|
|
21
|
+
- heading: "Problem"
|
|
22
|
+
level: 2
|
|
23
|
+
required: true
|
|
24
|
+
description: >
|
|
25
|
+
Why this feature exists. What pain point or gap it addresses.
|
|
26
|
+
Written from the user's perspective.
|
|
27
|
+
|
|
28
|
+
# Conceptual Model section
|
|
29
|
+
- heading: "Conceptual Model"
|
|
30
|
+
level: 2
|
|
31
|
+
required: true
|
|
32
|
+
description: >
|
|
33
|
+
How users should think about this feature. Mental model, key abstractions,
|
|
34
|
+
and relationships between concepts. May include diagrams.
|
|
35
|
+
|
|
36
|
+
# Scope Boundary section (optional, after Conceptual Model)
|
|
37
|
+
- heading: "Scope Boundary"
|
|
38
|
+
level: 2
|
|
39
|
+
description: >
|
|
40
|
+
Single sentence defining the feature's scope boundary — what this feature
|
|
41
|
+
owns and where it ends.
|
|
42
|
+
|
|
43
|
+
# Scenarios section with repeatable scenario headings
|
|
44
|
+
- heading: "Scenarios"
|
|
45
|
+
level: 2
|
|
46
|
+
required: true
|
|
47
|
+
description: >
|
|
48
|
+
Concrete usage narratives illustrating the feature in action. Each
|
|
49
|
+
scenario describes a realistic user situation and expected outcome.
|
|
50
|
+
children:
|
|
51
|
+
- heading: "Scenario \\d+:.*"
|
|
52
|
+
level: 3
|
|
53
|
+
repeatable: true
|
|
54
|
+
required: true
|
|
55
|
+
description: >
|
|
56
|
+
Individual scenario. Format: ### Scenario N: {Title}
|
|
57
|
+
Contains a narrative paragraph describing the user situation.
|
|
58
|
+
|
|
59
|
+
# Optional sections
|
|
60
|
+
- heading: "Background"
|
|
61
|
+
level: 2
|
|
62
|
+
description: "Additional context: history, prior art, references."
|
|
63
|
+
|
|
64
|
+
- heading: "Glossary"
|
|
65
|
+
level: 2
|
|
66
|
+
description: "Domain terms. Format: - TERM: Definition"
|
|
67
|
+
|
|
68
|
+
- heading: "Stakeholders"
|
|
69
|
+
level: 2
|
|
70
|
+
description: "Roles related to this feature. Format: - ROLE: Relationship"
|
|
71
|
+
|
|
72
|
+
- heading: "Diagrams"
|
|
73
|
+
level: 2
|
|
74
|
+
description: "Supplementary mermaid diagrams for the conceptual model."
|
|
75
|
+
|
|
76
|
+
- heading: "Non-Normative Notes"
|
|
77
|
+
level: 2
|
|
78
|
+
description: "Recommendations, best practices, or explanatory content that is not testable."
|
|
79
|
+
|
|
80
|
+
sections-prohibited:
|
|
81
|
+
- "SHALL "
|
|
82
|
+
- "SHOULD "
|
|
83
|
+
- "MAY "
|
|
84
|
+
- "**"
|
|
85
|
+
- "_AC-"
|
|
86
|
+
- "_P-"
|
|
87
|
+
- "IMPLEMENTS:"
|
|
88
|
+
- "VALIDATES:"
|
|
89
|
+
|
|
90
|
+
example: |
|
|
91
|
+
# Template Engine Feature Context [INFORMATIVE]
|
|
92
|
+
|
|
93
|
+
## Problem
|
|
94
|
+
|
|
95
|
+
Developers need to generate AI agent configuration files across multiple
|
|
96
|
+
projects consistently. Manual creation is error-prone, time-consuming, and
|
|
97
|
+
leads to drift between projects. There is no standard way to conditionally
|
|
98
|
+
include or exclude configuration sections based on project needs.
|
|
99
|
+
|
|
100
|
+
## Conceptual Model
|
|
101
|
+
|
|
102
|
+
The template engine treats configuration files as templates that can be
|
|
103
|
+
rendered with a set of feature flags. Users think of features as toggles —
|
|
104
|
+
enable "copilot" to get GitHub Copilot config, enable "claude" for Claude
|
|
105
|
+
config, etc. The engine resolves which template files to include, renders
|
|
106
|
+
them with the active feature set, and writes the output.
|
|
107
|
+
|
|
108
|
+
Key abstractions:
|
|
109
|
+
- TEMPLATE: A file with optional Eta expressions
|
|
110
|
+
- FEATURE FLAG: A named toggle that controls conditional rendering
|
|
111
|
+
- PARTIAL: A reusable template fragment included by other templates
|
|
112
|
+
- PRESET: A named bundle of feature flags
|
|
113
|
+
|
|
114
|
+
## Scenarios
|
|
115
|
+
|
|
116
|
+
### Scenario 1: First-time Setup
|
|
117
|
+
|
|
118
|
+
A developer starts a new project and wants to add AI agent configuration
|
|
119
|
+
for GitHub Copilot and Claude. They run `awa template generate --features copilot,claude`
|
|
120
|
+
and get a complete set of configuration files tailored to those two agents.
|
|
121
|
+
|
|
122
|
+
### Scenario 2: Adding a New Agent
|
|
123
|
+
|
|
124
|
+
An existing project already has Copilot configuration. The developer adds
|
|
125
|
+
Cursor support by running `awa template generate --features copilot,cursor`. The engine
|
|
126
|
+
merges the new feature without disrupting existing configuration.
|
|
127
|
+
|
|
128
|
+
### Scenario 3: Previewing Changes
|
|
129
|
+
|
|
130
|
+
Before applying changes, the developer runs `awa template diff` to see what files
|
|
131
|
+
would be added, modified, or removed. This gives confidence before committing.
|
|
132
|
+
|
|
133
|
+
## Background
|
|
134
|
+
|
|
135
|
+
Prior art includes tools like cookiecutter (Python), degit (JS), and Yeoman.
|
|
136
|
+
These focus on one-time scaffolding. awa differs by supporting re-generation.
|
|
137
|
+
|
|
138
|
+
## Glossary
|
|
139
|
+
|
|
140
|
+
- ETA: The template rendering library used by awa
|
|
141
|
+
- FEATURE FLAG: A string identifier that enables conditional template content
|
|
142
|
+
- PARTIAL: A template file prefixed with `_` that can be included by other templates
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# Structural rules for PLAN-{nnn}-{plan-name}.md files
|
|
2
|
+
target-files: ".awa/plans/PLAN-*.md"
|
|
3
|
+
description: >
|
|
4
|
+
Ad-hoc plan for features, improvements, refactors, or other work.
|
|
5
|
+
Succinct language. Break down work into actionable steps (checkbox items).
|
|
6
|
+
Status and direction metadata required. Structure is flexible —
|
|
7
|
+
organize sections as the plan demands. Plans should not contain significant
|
|
8
|
+
code (short snippets for explanation are fine).
|
|
9
|
+
Traceability links to REQ/DESIGN/code/tests are optional but encouraged.
|
|
10
|
+
line-limit: 800
|
|
11
|
+
|
|
12
|
+
sections:
|
|
13
|
+
# H1 title with status/direction metadata
|
|
14
|
+
- heading: ".*"
|
|
15
|
+
level: 1
|
|
16
|
+
required: true
|
|
17
|
+
description: >
|
|
18
|
+
Plan title. Descriptive but concise (e.g., "Refactor Config Loader",
|
|
19
|
+
"Add Diff Preview Feature"). Followed immediately by STATUS and
|
|
20
|
+
DIRECTION metadata lines, and optional TRACEABILITY links.
|
|
21
|
+
contains:
|
|
22
|
+
- pattern: "^STATUS:"
|
|
23
|
+
label: "STATUS declaration"
|
|
24
|
+
description: >
|
|
25
|
+
Current plan status. One of: in-progress, completed, blocked.
|
|
26
|
+
Format: STATUS: in-progress
|
|
27
|
+
- pattern: "^DIRECTION:"
|
|
28
|
+
label: "DIRECTION declaration"
|
|
29
|
+
description: >
|
|
30
|
+
Workflow direction for this plan. One of: top-down (architecture
|
|
31
|
+
first), bottom-up (implementation first), lateral (cross-cutting).
|
|
32
|
+
Format: DIRECTION: top-down
|
|
33
|
+
|
|
34
|
+
# Context section (optional)
|
|
35
|
+
- heading: "Context"
|
|
36
|
+
level: 2
|
|
37
|
+
description: >
|
|
38
|
+
Why this plan exists. What problem or goal it addresses.
|
|
39
|
+
Brief — one or two paragraphs. Reference FEAT/REQ docs if they exist
|
|
40
|
+
rather than restating.
|
|
41
|
+
|
|
42
|
+
# Steps section (optional — steps may also appear in domain-specific H2s)
|
|
43
|
+
- heading: "Steps"
|
|
44
|
+
level: 2
|
|
45
|
+
description: >
|
|
46
|
+
Actionable steps as checkbox items. The core of the plan.
|
|
47
|
+
Format: - [ ] Step description
|
|
48
|
+
Mark completed steps with [x]. Group with H3 subsections if needed.
|
|
49
|
+
Each step should be concrete and verifiable.
|
|
50
|
+
|
|
51
|
+
# Risks section (optional)
|
|
52
|
+
- heading: "Risks"
|
|
53
|
+
level: 2
|
|
54
|
+
description: >
|
|
55
|
+
Known risks, unknowns, or potential blockers. Bullet list.
|
|
56
|
+
Include mitigation strategies where possible.
|
|
57
|
+
|
|
58
|
+
# Dependencies section (optional)
|
|
59
|
+
- heading: "Dependencies"
|
|
60
|
+
level: 2
|
|
61
|
+
description: >
|
|
62
|
+
Prerequisites or upstream work that must complete first.
|
|
63
|
+
Reference other plans, tasks, or external factors.
|
|
64
|
+
|
|
65
|
+
# Completion Criteria section (optional)
|
|
66
|
+
- heading: "Completion Criteria"
|
|
67
|
+
level: 2
|
|
68
|
+
description: >
|
|
69
|
+
How to know when this plan is done. Concrete, verifiable conditions.
|
|
70
|
+
Format: - [ ] Criterion description
|
|
71
|
+
|
|
72
|
+
# Open Questions section (optional)
|
|
73
|
+
- heading: "Open Questions"
|
|
74
|
+
level: 2
|
|
75
|
+
description: >
|
|
76
|
+
Unresolved questions needing clarification from the user or team.
|
|
77
|
+
Format: - [ ] Question (resolved questions marked [x] with answer).
|
|
78
|
+
|
|
79
|
+
# References section (optional)
|
|
80
|
+
- heading: "References"
|
|
81
|
+
level: 2
|
|
82
|
+
description: >
|
|
83
|
+
Links to related artifacts: REQ, DESIGN, TASK, FEAT, code files,
|
|
84
|
+
external docs. Format: - {artifact}: {path or description}
|
|
85
|
+
|
|
86
|
+
sections-prohibited:
|
|
87
|
+
- "**"
|
|
88
|
+
|
|
89
|
+
example: |
|
|
90
|
+
# Refactor Config Loader
|
|
91
|
+
|
|
92
|
+
STATUS: in-progress
|
|
93
|
+
DIRECTION: bottom-up
|
|
94
|
+
TRACEABILITY: REQ-CFG-config.md, DESIGN-CFG-config.md
|
|
95
|
+
|
|
96
|
+
## Context
|
|
97
|
+
|
|
98
|
+
The config loader has grown organically and now mixes parsing, validation,
|
|
99
|
+
and merging in a single function. This makes it hard to test and extend.
|
|
100
|
+
Split into discrete pipeline stages.
|
|
101
|
+
|
|
102
|
+
## Steps
|
|
103
|
+
|
|
104
|
+
- [x] Extract TOML parsing into standalone function
|
|
105
|
+
- [x] Extract validation into ConfigValidator
|
|
106
|
+
- [ ] Extract merge logic into ConfigMerger
|
|
107
|
+
- [ ] Update all call sites to use new pipeline
|
|
108
|
+
- [ ] Remove old monolithic load function
|
|
109
|
+
|
|
110
|
+
### Testing
|
|
111
|
+
|
|
112
|
+
- [ ] Add property tests for ConfigMerger (CLI overrides file)
|
|
113
|
+
- [ ] Add unit tests for ConfigValidator edge cases
|
|
114
|
+
- [ ] Verify integration test still passes end-to-end
|
|
115
|
+
|
|
116
|
+
### Documentation
|
|
117
|
+
|
|
118
|
+
- [ ] Update docs/configuration.md with new pipeline stages
|
|
119
|
+
- [ ] No README changes needed (no user-facing behavior change)
|
|
120
|
+
|
|
121
|
+
## Risks
|
|
122
|
+
|
|
123
|
+
- Merge logic has implicit ordering assumptions that may break when extracted
|
|
124
|
+
- Call sites in CLI layer may depend on intermediate state
|
|
125
|
+
|
|
126
|
+
## Dependencies
|
|
127
|
+
|
|
128
|
+
- TASK-CFG-config-001.md Phase 3 must be complete (defines the types)
|
|
129
|
+
|
|
130
|
+
## Completion Criteria
|
|
131
|
+
|
|
132
|
+
- [ ] All existing tests pass
|
|
133
|
+
- [ ] New property tests cover merge invariants
|
|
134
|
+
- [ ] No function exceeds 40 lines
|
|
135
|
+
- [ ] Config pipeline is documented in DESIGN
|
|
136
|
+
|
|
137
|
+
## Open Questions
|
|
138
|
+
|
|
139
|
+
- [x] Should validation happen before or after merge? — After merge (validate final state)
|
|
140
|
+
- [ ] Do we need a separate error type for merge failures?
|
|
141
|
+
|
|
142
|
+
## References
|
|
143
|
+
|
|
144
|
+
- REQ: .awa/specs/REQ-CFG-config.md
|
|
145
|
+
- DESIGN: .awa/specs/DESIGN-CFG-config.md
|
|
146
|
+
- Code: src/core/config.ts
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# Structural rules for README.md
|
|
2
|
+
target-files: "README.md"
|
|
3
|
+
description: >
|
|
4
|
+
Project README. Succinct, user-facing language. Link to detailed docs in
|
|
5
|
+
/docs folder rather than including lengthy content inline. Required sections:
|
|
6
|
+
title, description, installation, and usage. Keep it concise — the README
|
|
7
|
+
is the front door, not the whole house.
|
|
8
|
+
line-limit: 800
|
|
9
|
+
|
|
10
|
+
sections:
|
|
11
|
+
# Project title (H1)
|
|
12
|
+
- heading: ".*"
|
|
13
|
+
level: 1
|
|
14
|
+
required: true
|
|
15
|
+
description: >
|
|
16
|
+
Project name as H1. Optionally followed by badge images and a one-paragraph
|
|
17
|
+
description of what the project does and why it exists.
|
|
18
|
+
|
|
19
|
+
# Features section (optional)
|
|
20
|
+
- heading: "Features"
|
|
21
|
+
level: 2
|
|
22
|
+
description: "Bullet list of key features. Keep to 5-10 items."
|
|
23
|
+
|
|
24
|
+
# Installation section
|
|
25
|
+
- heading: "Installation"
|
|
26
|
+
level: 2
|
|
27
|
+
required: true
|
|
28
|
+
description: >
|
|
29
|
+
How to install the project. May contain Prerequisites and Install
|
|
30
|
+
subsections. Include code blocks with shell commands.
|
|
31
|
+
contains:
|
|
32
|
+
- code-block: true
|
|
33
|
+
label: "install command"
|
|
34
|
+
description: "Shell command(s) to install the project."
|
|
35
|
+
|
|
36
|
+
# Usage section
|
|
37
|
+
- heading: "Usage"
|
|
38
|
+
level: 2
|
|
39
|
+
required: true
|
|
40
|
+
description: >
|
|
41
|
+
Quick start example showing minimal usage. Include at least one code block.
|
|
42
|
+
Additional examples can be H3 subsections.
|
|
43
|
+
contains:
|
|
44
|
+
- code-block: true
|
|
45
|
+
label: "usage example"
|
|
46
|
+
description: "Code block demonstrating basic usage."
|
|
47
|
+
|
|
48
|
+
# Documentation section (optional)
|
|
49
|
+
- heading: "Documentation"
|
|
50
|
+
level: 2
|
|
51
|
+
description: >
|
|
52
|
+
Links to detailed documentation in /docs folder.
|
|
53
|
+
Format: - [Title](docs/file.md) - Description
|
|
54
|
+
|
|
55
|
+
# Contributing section (optional)
|
|
56
|
+
- heading: "Contributing"
|
|
57
|
+
level: 2
|
|
58
|
+
description: "Brief instructions or link to CONTRIBUTING.md."
|
|
59
|
+
|
|
60
|
+
# License section (optional)
|
|
61
|
+
- heading: "License"
|
|
62
|
+
level: 2
|
|
63
|
+
description: "License name and link to LICENSE file."
|
|
64
|
+
|
|
65
|
+
# Acknowledgments section (optional)
|
|
66
|
+
- heading: "Acknowledgments"
|
|
67
|
+
level: 2
|
|
68
|
+
description: "Credits to libraries, tools, or contributors."
|
|
69
|
+
|
|
70
|
+
example: |
|
|
71
|
+
# awa CLI
|
|
72
|
+
|
|
73
|
+
[](https://www.npmjs.com/package/awa-cli)
|
|
74
|
+
[](LICENSE)
|
|
75
|
+
|
|
76
|
+
awa CLI generates AI coding agent configuration files from templates, enabling developers to quickly scaffold consistent agent setups across projects.
|
|
77
|
+
|
|
78
|
+
## Features
|
|
79
|
+
|
|
80
|
+
- Template-based configuration generation
|
|
81
|
+
- Feature flag support for conditional content
|
|
82
|
+
- Multiple output formats (Markdown, YAML, JSON)
|
|
83
|
+
- Diff mode to preview changes before applying
|
|
84
|
+
- Local and remote template sources
|
|
85
|
+
|
|
86
|
+
## Installation
|
|
87
|
+
|
|
88
|
+
### Prerequisites
|
|
89
|
+
|
|
90
|
+
- Node.js 20 or higher
|
|
91
|
+
- npm or pnpm
|
|
92
|
+
|
|
93
|
+
### Install
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
npm install -g awa-cli
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Usage
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
# Generate configuration from default template
|
|
103
|
+
awa template generate
|
|
104
|
+
|
|
105
|
+
# Generate with specific features enabled
|
|
106
|
+
awa template generate --features typescript,testing
|
|
107
|
+
|
|
108
|
+
# Preview changes without writing files
|
|
109
|
+
awa template diff
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Examples
|
|
113
|
+
|
|
114
|
+
#### Custom Template
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
awa template generate --template ./my-templates --output ./.ai
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Documentation
|
|
121
|
+
|
|
122
|
+
- [Configuration Guide](docs/configuration.md) — Configure templates and options
|
|
123
|
+
- [Template Authoring](docs/templates.md) — Create custom templates
|
|
124
|
+
- [CLI Reference](docs/cli-reference.md) — Complete command documentation
|
|
125
|
+
|
|
126
|
+
## Contributing
|
|
127
|
+
|
|
128
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
129
|
+
|
|
130
|
+
## License
|
|
131
|
+
|
|
132
|
+
[MIT](LICENSE)
|
|
133
|
+
|
|
134
|
+
## Acknowledgments
|
|
135
|
+
|
|
136
|
+
- Eta templating engine
|
|
137
|
+
- Citty CLI framework
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# Structural rules for REQ-{CODE}-{feature-name}.md files
|
|
2
|
+
target-files: ".awa/specs/REQ-*.md"
|
|
3
|
+
description: >
|
|
4
|
+
Requirements specification using EARS (Easy Approach to Requirements Syntax).
|
|
5
|
+
Succinct language. Do not overspecify. Omit irrelevant information.
|
|
6
|
+
Each requirement has an ID ({CODE}-{n}), a user story (AS A/I WANT/SO THAT),
|
|
7
|
+
and acceptance criteria with INCOSE-compliant types.
|
|
8
|
+
Subrequirements use dotted IDs ({CODE}-{n}.{p}).
|
|
9
|
+
line-limit: 800
|
|
10
|
+
|
|
11
|
+
sections:
|
|
12
|
+
# Top-level heading: "Requirements Specification"
|
|
13
|
+
- heading: "Requirements Specification"
|
|
14
|
+
level: 1
|
|
15
|
+
required: true
|
|
16
|
+
description: "Document title. No metadata in this section."
|
|
17
|
+
|
|
18
|
+
# Introduction section
|
|
19
|
+
- heading: "Introduction"
|
|
20
|
+
level: 2
|
|
21
|
+
required: true
|
|
22
|
+
description: "Brief context for the requirements. One or two paragraphs."
|
|
23
|
+
|
|
24
|
+
# Glossary section (optional)
|
|
25
|
+
- heading: "Glossary"
|
|
26
|
+
level: 2
|
|
27
|
+
description: >
|
|
28
|
+
Domain terms in TERM: definition format. Use CAPITALS for term names.
|
|
29
|
+
Format: - TERM: Definition
|
|
30
|
+
|
|
31
|
+
# Stakeholders section (optional)
|
|
32
|
+
- heading: "Stakeholders"
|
|
33
|
+
level: 2
|
|
34
|
+
description: >
|
|
35
|
+
Roles that interact with or are affected by this feature.
|
|
36
|
+
Format: - ROLE: Description
|
|
37
|
+
|
|
38
|
+
# Requirements section with repeatable requirement headings
|
|
39
|
+
- heading: "Requirements"
|
|
40
|
+
level: 2
|
|
41
|
+
required: true
|
|
42
|
+
description: >
|
|
43
|
+
Container for all requirements. Each child heading is a requirement
|
|
44
|
+
with ID, title, optional priority, user story, and acceptance criteria.
|
|
45
|
+
children:
|
|
46
|
+
- heading: "[A-Z]+-\\d+.*"
|
|
47
|
+
level: 3
|
|
48
|
+
required: true
|
|
49
|
+
repeatable: true
|
|
50
|
+
description: >
|
|
51
|
+
Individual requirement heading. Format: ### {CODE}-{n}: Title [{PRIORITY}]
|
|
52
|
+
where PRIORITY is MUST, SHOULD, COULD, or WONT (optional).
|
|
53
|
+
Contains a user story, optional rationale blockquote, ACCEPTANCE CRITERIA
|
|
54
|
+
heading, AC items, and optional DEPENDS ON line.
|
|
55
|
+
contains:
|
|
56
|
+
# User story format
|
|
57
|
+
- pattern: "AS AN? .*, I WANT .*, SO THAT"
|
|
58
|
+
label: "user story"
|
|
59
|
+
description: >
|
|
60
|
+
User story in AS A(N) {role}, I WANT {want}, SO THAT {benefit} format.
|
|
61
|
+
One sentence. Role, want, and benefit are all required.
|
|
62
|
+
# Acceptance criteria heading
|
|
63
|
+
- pattern: "ACCEPTANCE CRITERIA"
|
|
64
|
+
label: "AC heading"
|
|
65
|
+
description: "Literal text ACCEPTANCE CRITERIA (no markdown heading, just text)."
|
|
66
|
+
# At least one AC item
|
|
67
|
+
- list:
|
|
68
|
+
pattern: "_AC-\\d+\\s*\\[(ubiquitous|event|state|conditional|optional|complex)\\]"
|
|
69
|
+
min: 1
|
|
70
|
+
label: "acceptance criteria items"
|
|
71
|
+
description: >
|
|
72
|
+
Acceptance criteria items. Format:
|
|
73
|
+
- {CODE}-{n}_AC-{m} [{type}]: {statement} - {notes}
|
|
74
|
+
Types (EARS/INCOSE):
|
|
75
|
+
- ubiquitous: always true, no trigger ("The system SHALL ...")
|
|
76
|
+
- event: triggered by a stimulus ("WHEN x THEN system SHALL ...")
|
|
77
|
+
- state: true while a condition holds ("WHILE x THE system SHALL ...")
|
|
78
|
+
- conditional: depends on a boolean condition ("IF x THEN system SHALL ...")
|
|
79
|
+
- optional: feature activated by trigger ("WHERE x IS ENABLED THE system SHALL ...")
|
|
80
|
+
- complex: combines multiple EARS patterns
|
|
81
|
+
|
|
82
|
+
# Assumptions section (optional)
|
|
83
|
+
- heading: "Assumptions"
|
|
84
|
+
level: 2
|
|
85
|
+
description: "Bullet list of assumptions underlying the requirements."
|
|
86
|
+
|
|
87
|
+
# Constraints section (optional)
|
|
88
|
+
- heading: "Constraints"
|
|
89
|
+
level: 2
|
|
90
|
+
description: "Bullet list of constraints on the implementation."
|
|
91
|
+
|
|
92
|
+
# Out of Scope section (optional)
|
|
93
|
+
- heading: "Out of Scope"
|
|
94
|
+
level: 2
|
|
95
|
+
description: "Bullet list of explicitly excluded functionality."
|
|
96
|
+
|
|
97
|
+
sections-prohibited:
|
|
98
|
+
- "**"
|
|
99
|
+
|
|
100
|
+
example: |
|
|
101
|
+
# Requirements Specification
|
|
102
|
+
|
|
103
|
+
## Introduction
|
|
104
|
+
|
|
105
|
+
Core engine requirements for game framework.
|
|
106
|
+
|
|
107
|
+
## Glossary
|
|
108
|
+
|
|
109
|
+
- GAME LOOP: Core cycle of update-render that drives the engine
|
|
110
|
+
- CONTEXT: Runtime state container for engine subsystems
|
|
111
|
+
|
|
112
|
+
## Stakeholders
|
|
113
|
+
|
|
114
|
+
- GAME DEVELOPER: Builds games using the engine API
|
|
115
|
+
- ENGINE MAINTAINER: Maintains and extends engine internals
|
|
116
|
+
|
|
117
|
+
## Requirements
|
|
118
|
+
|
|
119
|
+
### ENG-1: Core Engine Framework [MUST]
|
|
120
|
+
|
|
121
|
+
AS A game developer, I WANT a game loop, SO THAT predictable execution.
|
|
122
|
+
|
|
123
|
+
> Foundation for all games.
|
|
124
|
+
|
|
125
|
+
ACCEPTANCE CRITERIA
|
|
126
|
+
|
|
127
|
+
- ENG-1_AC-1 [event]: WHEN engine initializes THEN system SHALL create context
|
|
128
|
+
- ENG-1_AC-2 [event]: WHEN `--verbose` flag is provided THEN system SHALL enable debug logging
|
|
129
|
+
- ENG-1_AC-3 [ubiquitous]: The system SHALL maintain 60fps minimum frame rate
|
|
130
|
+
|
|
131
|
+
### ENG-1.1: Subsystem Registration [SHOULD]
|
|
132
|
+
|
|
133
|
+
AS A engine maintainer, I WANT subsystems to self-register, SO THAT modular architecture.
|
|
134
|
+
|
|
135
|
+
ACCEPTANCE CRITERIA
|
|
136
|
+
|
|
137
|
+
- ENG-1.1_AC-1 [event]: WHEN subsystem loads THEN it SHALL register with context
|
|
138
|
+
|
|
139
|
+
### ENG-2: Resource Management [MUST]
|
|
140
|
+
|
|
141
|
+
AS A game developer, I WANT automatic resource loading, SO THAT simplified asset management.
|
|
142
|
+
|
|
143
|
+
ACCEPTANCE CRITERIA
|
|
144
|
+
|
|
145
|
+
- ENG-2_AC-1 [event]: WHEN resource requested THEN system SHALL load asynchronously
|
|
146
|
+
- ENG-2_AC-2 [ubiquitous]: The system SHALL cache loaded resources
|
|
147
|
+
|
|
148
|
+
DEPENDS ON: ENG-1
|
|
149
|
+
|
|
150
|
+
## Assumptions
|
|
151
|
+
|
|
152
|
+
- Target platform supports OpenGL 3.3 or higher
|
|
153
|
+
|
|
154
|
+
## Constraints
|
|
155
|
+
|
|
156
|
+
- Must run on Windows, macOS, and Linux
|
|
157
|
+
|
|
158
|
+
## Out of Scope
|
|
159
|
+
|
|
160
|
+
- Mobile platform support
|