@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.
Files changed (155) hide show
  1. package/LICENSE +23 -16
  2. package/README.md +25 -27
  3. package/dist/{chunk-OQZTQ5ZI.js → chunk-LRQWZCYL.js} +1 -4
  4. package/dist/chunk-LRQWZCYL.js.map +1 -0
  5. package/dist/chunk-WGGMDWBE.js +760 -0
  6. package/dist/chunk-WGGMDWBE.js.map +1 -0
  7. package/dist/{config-WL3SLSP6.js → config-EJIXC7D7.js} +2 -2
  8. package/dist/index.js +1285 -466
  9. package/dist/index.js.map +1 -1
  10. package/dist/renumber-ZCI2H5HZ.js +9 -0
  11. package/dist/renumber-ZCI2H5HZ.js.map +1 -0
  12. package/package.json +13 -6
  13. package/templates/awa/.agent/skills/spec-merge/SKILL.md +3 -0
  14. package/templates/awa/.agent/skills/spec-tidy/SKILL.md +3 -0
  15. package/templates/awa/.agent/workflows/spec-merge.md +3 -0
  16. package/templates/awa/.agent/workflows/spec-tidy.md +3 -0
  17. package/templates/awa/.agents/skills/spec-merge/SKILL.md +3 -0
  18. package/templates/awa/.agents/skills/spec-tidy/SKILL.md +3 -0
  19. package/templates/awa/.awa/.agent/schemas/ALIGN_REPORT.schema.yaml +1 -1
  20. package/templates/awa/.awa/.agent/schemas/API.schema.yaml +1 -1
  21. package/templates/awa/.awa/.agent/schemas/ARCHITECTURE.schema.yaml +7 -0
  22. package/templates/awa/.awa/.agent/schemas/DESIGN.schema.yaml +1 -1
  23. package/templates/awa/.awa/.agent/schemas/{EXAMPLES.schema.yaml → EXAMPLE.schema.yaml} +4 -4
  24. package/templates/awa/.awa/.agent/schemas/FEAT.schema.yaml +8 -1
  25. package/templates/awa/.awa/.agent/schemas/PLAN.schema.yaml +1 -1
  26. package/templates/awa/.awa/.agent/schemas/README.schema.yaml +1 -1
  27. package/templates/awa/.awa/.agent/schemas/REQ.schema.yaml +1 -1
  28. package/templates/awa/.awa/.agent/schemas/TASK.schema.yaml +1 -1
  29. package/templates/awa/.claude/skills/spec-merge/SKILL.md +3 -0
  30. package/templates/awa/.claude/skills/spec-tidy/SKILL.md +3 -0
  31. package/templates/awa/.gemini/commands/spec-merge.md +3 -0
  32. package/templates/awa/.gemini/commands/spec-tidy.md +3 -0
  33. package/templates/awa/.gemini/skills/spec-merge/SKILL.md +3 -0
  34. package/templates/awa/.gemini/skills/spec-tidy/SKILL.md +3 -0
  35. package/templates/awa/.github/prompts/awa.spec-merge.prompt.md +8 -0
  36. package/templates/awa/.github/prompts/awa.spec-tidy.prompt.md +7 -0
  37. package/templates/awa/.github/skills/spec-merge/SKILL.md +3 -0
  38. package/templates/awa/.github/skills/spec-tidy/SKILL.md +3 -0
  39. package/templates/awa/.kilocode/skills/spec-merge/SKILL.md +3 -0
  40. package/templates/awa/.kilocode/skills/spec-tidy/SKILL.md +3 -0
  41. package/templates/awa/.kilocode/workflows/spec-merge.md +3 -0
  42. package/templates/awa/.kilocode/workflows/spec-tidy.md +3 -0
  43. package/templates/awa/.opencode/commands/spec-merge.md +3 -0
  44. package/templates/awa/.opencode/commands/spec-tidy.md +3 -0
  45. package/templates/awa/.opencode/skills/spec-merge/SKILL.md +3 -0
  46. package/templates/awa/.opencode/skills/spec-tidy/SKILL.md +3 -0
  47. package/templates/awa/.qwen/commands/spec-merge.md +3 -0
  48. package/templates/awa/.qwen/commands/spec-tidy.md +3 -0
  49. package/templates/awa/.qwen/skills/spec-merge/SKILL.md +3 -0
  50. package/templates/awa/.qwen/skills/spec-tidy/SKILL.md +3 -0
  51. package/templates/awa/.roo/skills/spec-merge/SKILL.md +3 -0
  52. package/templates/awa/.roo/skills/spec-tidy/SKILL.md +3 -0
  53. package/templates/awa/.windsurf/skills/spec-merge/SKILL.md +3 -0
  54. package/templates/awa/.windsurf/skills/spec-tidy/SKILL.md +3 -0
  55. package/templates/awa/_delete.txt +4 -0
  56. package/templates/awa/_partials/_cmd.spec-merge.md +6 -0
  57. package/templates/awa/_partials/_cmd.spec-tidy.md +5 -0
  58. package/templates/awa/_partials/_skill.spec-merge.md +6 -0
  59. package/templates/awa/_partials/_skill.spec-tidy.md +6 -0
  60. package/templates/awa/_partials/awa.align.md +1 -1
  61. package/templates/awa/_partials/awa.brainstorm.md +1 -1
  62. package/templates/awa/_partials/awa.code.md +1 -1
  63. package/templates/awa/_partials/awa.core.md +8 -4
  64. package/templates/awa/_partials/awa.design.md +3 -2
  65. package/templates/awa/_partials/awa.documentation.md +1 -1
  66. package/templates/awa/_partials/awa.examples.md +4 -4
  67. package/templates/awa/_partials/awa.feature.md +2 -1
  68. package/templates/awa/_partials/awa.plan.md +2 -2
  69. package/templates/awa/_partials/awa.requirements.md +4 -2
  70. package/templates/awa/_partials/awa.spec-merge.md +97 -0
  71. package/templates/awa/_partials/awa.spec.tidy.md +92 -0
  72. package/templates/awa/_partials/awa.tasks.md +1 -1
  73. package/templates/awa/_partials/awa.upgrade.md +3 -3
  74. package/templates/awa/_partials/awa.usage.md +74 -6
  75. package/templates/awa/_partials/awa.vibe.md +1 -1
  76. package/templates/awa/_tests/claude/.awa/.agent/awa.core.md +126 -0
  77. package/templates/awa/_tests/claude/.awa/.agent/schemas/ALIGN_REPORT.schema.yaml +83 -0
  78. package/templates/awa/_tests/claude/.awa/.agent/schemas/API.schema.yaml +7 -0
  79. package/templates/awa/_tests/claude/.awa/.agent/schemas/ARCHITECTURE.schema.yaml +257 -0
  80. package/templates/awa/_tests/claude/.awa/.agent/schemas/DESIGN.schema.yaml +351 -0
  81. package/templates/awa/_tests/claude/.awa/.agent/schemas/EXAMPLE.schema.yaml +89 -0
  82. package/templates/awa/_tests/claude/.awa/.agent/schemas/FEAT.schema.yaml +142 -0
  83. package/templates/awa/_tests/claude/.awa/.agent/schemas/PLAN.schema.yaml +146 -0
  84. package/templates/awa/_tests/claude/.awa/.agent/schemas/README.schema.yaml +137 -0
  85. package/templates/awa/_tests/claude/.awa/.agent/schemas/REQ.schema.yaml +160 -0
  86. package/templates/awa/_tests/claude/.awa/.agent/schemas/TASK.schema.yaml +204 -0
  87. package/templates/awa/_tests/claude/.claude/agents/awa.md +137 -0
  88. package/templates/awa/_tests/claude/.claude/skills/awa-align/SKILL.md +67 -0
  89. package/templates/awa/_tests/claude/.claude/skills/awa-architecture/SKILL.md +50 -0
  90. package/templates/awa/_tests/claude/.claude/skills/awa-brainstorm/SKILL.md +57 -0
  91. package/templates/awa/_tests/claude/.claude/skills/awa-check/SKILL.md +79 -0
  92. package/templates/awa/_tests/claude/.claude/skills/awa-code/SKILL.md +179 -0
  93. package/templates/awa/_tests/claude/.claude/skills/awa-design/SKILL.md +62 -0
  94. package/templates/awa/_tests/claude/.claude/skills/awa-documentation/SKILL.md +91 -0
  95. package/templates/awa/_tests/claude/.claude/skills/awa-examples/SKILL.md +58 -0
  96. package/templates/awa/_tests/claude/.claude/skills/awa-feature/SKILL.md +56 -0
  97. package/templates/awa/_tests/claude/.claude/skills/awa-plan/SKILL.md +53 -0
  98. package/templates/awa/_tests/claude/.claude/skills/awa-refactor/SKILL.md +53 -0
  99. package/templates/awa/_tests/claude/.claude/skills/awa-requirements/SKILL.md +58 -0
  100. package/templates/awa/_tests/claude/.claude/skills/awa-tasks/SKILL.md +158 -0
  101. package/templates/awa/_tests/claude/.claude/skills/awa-upgrade/SKILL.md +68 -0
  102. package/templates/awa/_tests/claude/.claude/skills/awa-usage/SKILL.md +368 -0
  103. package/templates/awa/_tests/claude/.claude/skills/awa-vibe/SKILL.md +72 -0
  104. package/templates/awa/_tests/claude/.claude/skills/spec-merge/SKILL.md +102 -0
  105. package/templates/awa/_tests/claude/.claude/skills/spec-tidy/SKILL.md +97 -0
  106. package/templates/awa/_tests/claude/CLAUDE.md +132 -0
  107. package/templates/awa/_tests/copilot/.awa/.agent/awa.core.md +126 -0
  108. package/templates/awa/_tests/copilot/.awa/.agent/schemas/ALIGN_REPORT.schema.yaml +83 -0
  109. package/templates/awa/_tests/copilot/.awa/.agent/schemas/API.schema.yaml +7 -0
  110. package/templates/awa/_tests/copilot/.awa/.agent/schemas/ARCHITECTURE.schema.yaml +257 -0
  111. package/templates/awa/_tests/copilot/.awa/.agent/schemas/DESIGN.schema.yaml +351 -0
  112. package/templates/awa/_tests/copilot/.awa/.agent/schemas/EXAMPLE.schema.yaml +89 -0
  113. package/templates/awa/_tests/copilot/.awa/.agent/schemas/FEAT.schema.yaml +142 -0
  114. package/templates/awa/_tests/copilot/.awa/.agent/schemas/PLAN.schema.yaml +146 -0
  115. package/templates/awa/_tests/copilot/.awa/.agent/schemas/README.schema.yaml +137 -0
  116. package/templates/awa/_tests/copilot/.awa/.agent/schemas/REQ.schema.yaml +160 -0
  117. package/templates/awa/_tests/copilot/.awa/.agent/schemas/TASK.schema.yaml +204 -0
  118. package/templates/awa/_tests/copilot/.github/agents/awa.agent.md +137 -0
  119. package/templates/awa/_tests/copilot/.github/prompts/awa.align.prompt.md +67 -0
  120. package/templates/awa/_tests/copilot/.github/prompts/awa.architecture.prompt.md +50 -0
  121. package/templates/awa/_tests/copilot/.github/prompts/awa.brainstorm.prompt.md +57 -0
  122. package/templates/awa/_tests/copilot/.github/prompts/awa.check.prompt.md +79 -0
  123. package/templates/awa/_tests/copilot/.github/prompts/awa.code.prompt.md +179 -0
  124. package/templates/awa/_tests/copilot/.github/prompts/awa.design.prompt.md +62 -0
  125. package/templates/awa/_tests/copilot/.github/prompts/awa.documentation.prompt.md +91 -0
  126. package/templates/awa/_tests/copilot/.github/prompts/awa.examples.prompt.md +58 -0
  127. package/templates/awa/_tests/copilot/.github/prompts/awa.feature.prompt.md +56 -0
  128. package/templates/awa/_tests/copilot/.github/prompts/awa.plan.prompt.md +53 -0
  129. package/templates/awa/_tests/copilot/.github/prompts/awa.refactor.prompt.md +53 -0
  130. package/templates/awa/_tests/copilot/.github/prompts/awa.requirements.prompt.md +58 -0
  131. package/templates/awa/_tests/copilot/.github/prompts/awa.spec-merge.prompt.md +102 -0
  132. package/templates/awa/_tests/copilot/.github/prompts/awa.spec-tidy.prompt.md +96 -0
  133. package/templates/awa/_tests/copilot/.github/prompts/awa.tasks.prompt.md +158 -0
  134. package/templates/awa/_tests/copilot/.github/prompts/awa.upgrade.prompt.md +68 -0
  135. package/templates/awa/_tests/copilot/.github/prompts/awa.vibe.prompt.md +72 -0
  136. package/templates/awa/_tests/copilot/.github/skills/awa-align/SKILL.md +67 -0
  137. package/templates/awa/_tests/copilot/.github/skills/awa-architecture/SKILL.md +50 -0
  138. package/templates/awa/_tests/copilot/.github/skills/awa-brainstorm/SKILL.md +57 -0
  139. package/templates/awa/_tests/copilot/.github/skills/awa-check/SKILL.md +79 -0
  140. package/templates/awa/_tests/copilot/.github/skills/awa-code/SKILL.md +179 -0
  141. package/templates/awa/_tests/copilot/.github/skills/awa-design/SKILL.md +62 -0
  142. package/templates/awa/_tests/copilot/.github/skills/awa-documentation/SKILL.md +91 -0
  143. package/templates/awa/_tests/copilot/.github/skills/awa-examples/SKILL.md +58 -0
  144. package/templates/awa/_tests/copilot/.github/skills/awa-feature/SKILL.md +56 -0
  145. package/templates/awa/_tests/copilot/.github/skills/awa-plan/SKILL.md +53 -0
  146. package/templates/awa/_tests/copilot/.github/skills/awa-refactor/SKILL.md +53 -0
  147. package/templates/awa/_tests/copilot/.github/skills/awa-requirements/SKILL.md +58 -0
  148. package/templates/awa/_tests/copilot/.github/skills/awa-tasks/SKILL.md +158 -0
  149. package/templates/awa/_tests/copilot/.github/skills/awa-upgrade/SKILL.md +68 -0
  150. package/templates/awa/_tests/copilot/.github/skills/awa-usage/SKILL.md +368 -0
  151. package/templates/awa/_tests/copilot/.github/skills/awa-vibe/SKILL.md +72 -0
  152. package/templates/awa/_tests/copilot/.github/skills/spec-merge/SKILL.md +102 -0
  153. package/templates/awa/_tests/copilot/.github/skills/spec-tidy/SKILL.md +97 -0
  154. package/dist/chunk-OQZTQ5ZI.js.map +0 -1
  155. /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
+ [![npm version](https://img.shields.io/npm/v/awa-cli.svg)](https://www.npmjs.com/package/awa-cli)
74
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](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