agile-context-engineering 0.3.0 → 0.5.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 (147) hide show
  1. package/.claude-plugin/plugin.json +10 -0
  2. package/LICENSE +51 -51
  3. package/README.md +332 -324
  4. package/agents/ace-product-owner.md +1 -1
  5. package/agents/ace-research-synthesizer.md +228 -228
  6. package/agents/ace-wiki-mapper.md +449 -445
  7. package/bin/install.js +60 -64
  8. package/hooks/ace-check-update.js +70 -62
  9. package/hooks/ace-statusline.js +89 -89
  10. package/package.json +5 -4
  11. package/shared/lib/ace-core.js +308 -0
  12. package/shared/lib/ace-core.test.js +308 -0
  13. package/shared/lib/ace-github.js +753 -0
  14. package/shared/lib/ace-story.js +400 -0
  15. package/shared/lib/ace-story.test.js +250 -0
  16. package/{agile-context-engineering → shared}/utils/questioning.xml +110 -110
  17. package/{agile-context-engineering → shared}/utils/ui-formatting.md +299 -299
  18. package/skills/execute-story/SKILL.md +110 -0
  19. package/skills/execute-story/script.js +305 -0
  20. package/skills/execute-story/script.test.js +261 -0
  21. package/skills/execute-story/walkthrough-template.xml +255 -0
  22. package/{agile-context-engineering/workflows/execute-story.xml → skills/execute-story/workflow.xml} +1219 -1219
  23. package/skills/help/SKILL.md +69 -0
  24. package/skills/help/script.js +318 -0
  25. package/skills/help/script.test.js +183 -0
  26. package/{agile-context-engineering/workflows/help.xml → skills/help/workflow.xml} +540 -540
  27. package/skills/init-coding-standards/SKILL.md +72 -0
  28. package/skills/init-coding-standards/script.js +59 -0
  29. package/skills/init-coding-standards/script.test.js +70 -0
  30. package/{agile-context-engineering/workflows/init-coding-standards.xml → skills/init-coding-standards/workflow.xml} +381 -386
  31. package/skills/map-cross-cutting/SKILL.md +89 -0
  32. package/{agile-context-engineering/templates/wiki → skills/map-cross-cutting}/system-cross-cutting.xml +197 -197
  33. package/skills/map-cross-cutting/workflow.xml +330 -0
  34. package/skills/map-guide/SKILL.md +89 -0
  35. package/{agile-context-engineering/templates/wiki → skills/map-guide}/guide.xml +137 -137
  36. package/skills/map-guide/workflow.xml +320 -0
  37. package/skills/map-pattern/SKILL.md +89 -0
  38. package/{agile-context-engineering/templates/wiki → skills/map-pattern}/pattern.xml +159 -159
  39. package/skills/map-pattern/workflow.xml +331 -0
  40. package/skills/map-story/SKILL.md +127 -0
  41. package/{agile-context-engineering/templates/wiki → skills/map-story/templates}/decizions.xml +115 -115
  42. package/skills/map-story/templates/guide.xml +137 -0
  43. package/skills/map-story/templates/pattern.xml +159 -0
  44. package/skills/map-story/templates/system-cross-cutting.xml +197 -0
  45. package/{agile-context-engineering/templates/wiki → skills/map-story/templates}/system.xml +381 -381
  46. package/{agile-context-engineering/templates/wiki → skills/map-story/templates}/walkthrough.xml +255 -255
  47. package/{agile-context-engineering/workflows/map-story.xml → skills/map-story/workflow.xml} +1046 -1046
  48. package/skills/map-subsystem/SKILL.md +111 -0
  49. package/skills/map-subsystem/script.js +60 -0
  50. package/skills/map-subsystem/script.test.js +68 -0
  51. package/skills/map-subsystem/templates/decizions.xml +115 -0
  52. package/skills/map-subsystem/templates/guide.xml +137 -0
  53. package/{agile-context-engineering/templates/wiki → skills/map-subsystem/templates}/module-discovery.xml +174 -174
  54. package/skills/map-subsystem/templates/pattern.xml +159 -0
  55. package/skills/map-subsystem/templates/system-cross-cutting.xml +197 -0
  56. package/skills/map-subsystem/templates/system.xml +381 -0
  57. package/skills/map-subsystem/templates/walkthrough.xml +255 -0
  58. package/{agile-context-engineering/workflows/map-subsystem.xml → skills/map-subsystem/workflow.xml} +15 -20
  59. package/skills/map-sys-doc/SKILL.md +90 -0
  60. package/skills/map-sys-doc/system.xml +381 -0
  61. package/skills/map-sys-doc/workflow.xml +336 -0
  62. package/skills/map-system/SKILL.md +85 -0
  63. package/skills/map-system/script.js +84 -0
  64. package/skills/map-system/script.test.js +73 -0
  65. package/{agile-context-engineering/templates/wiki → skills/map-system/templates}/system-architecture.xml +254 -254
  66. package/{agile-context-engineering/templates/wiki → skills/map-system/templates}/wiki-readme.xml +296 -296
  67. package/{agile-context-engineering/workflows/map-system.xml → skills/map-system/workflow.xml} +11 -16
  68. package/skills/map-walkthrough/SKILL.md +92 -0
  69. package/skills/map-walkthrough/walkthrough.xml +255 -0
  70. package/skills/plan-backlog/SKILL.md +75 -0
  71. package/{agile-context-engineering/templates/product/product-backlog.xml → skills/plan-backlog/product-backlog-template.xml} +231 -231
  72. package/skills/plan-backlog/script.js +136 -0
  73. package/skills/plan-backlog/script.test.js +83 -0
  74. package/{agile-context-engineering/workflows/plan-backlog.xml → skills/plan-backlog/workflow.xml} +13 -21
  75. package/skills/plan-feature/SKILL.md +76 -0
  76. package/skills/plan-feature/script.js +148 -0
  77. package/skills/plan-feature/script.test.js +80 -0
  78. package/{agile-context-engineering/workflows/plan-feature.xml → skills/plan-feature/workflow.xml} +1487 -1495
  79. package/skills/plan-product-vision/SKILL.md +75 -0
  80. package/skills/plan-product-vision/script.js +60 -0
  81. package/skills/plan-product-vision/script.test.js +69 -0
  82. package/{agile-context-engineering/workflows/plan-product-vision.xml → skills/plan-product-vision/workflow.xml} +4 -9
  83. package/skills/plan-story/SKILL.md +116 -0
  84. package/skills/plan-story/script.js +326 -0
  85. package/skills/plan-story/script.test.js +240 -0
  86. package/skills/plan-story/story-template.xml +451 -0
  87. package/{agile-context-engineering/workflows/plan-story.xml → skills/plan-story/workflow.xml} +1285 -944
  88. package/skills/research-external-solution/SKILL.md +107 -0
  89. package/skills/research-external-solution/script.js +238 -0
  90. package/skills/research-external-solution/script.test.js +134 -0
  91. package/{agile-context-engineering/workflows/research-external-solution.xml → skills/research-external-solution/workflow.xml} +4 -6
  92. package/skills/research-integration-solution/SKILL.md +98 -0
  93. package/skills/research-integration-solution/script.js +231 -0
  94. package/skills/research-integration-solution/script.test.js +134 -0
  95. package/{agile-context-engineering/workflows/research-integration-solution.xml → skills/research-integration-solution/workflow.xml} +3 -5
  96. package/skills/research-story-wiki/SKILL.md +92 -0
  97. package/skills/research-story-wiki/script.js +231 -0
  98. package/skills/research-story-wiki/script.test.js +138 -0
  99. package/{agile-context-engineering/workflows/research-story-wiki.xml → skills/research-story-wiki/workflow.xml} +3 -5
  100. package/skills/research-technical-solution/SKILL.md +103 -0
  101. package/skills/research-technical-solution/script.js +231 -0
  102. package/skills/research-technical-solution/script.test.js +134 -0
  103. package/{agile-context-engineering/workflows/research-technical-solution.xml → skills/research-technical-solution/workflow.xml} +3 -5
  104. package/skills/review-story/SKILL.md +100 -0
  105. package/skills/review-story/script.js +257 -0
  106. package/skills/review-story/script.test.js +169 -0
  107. package/skills/review-story/story-template.xml +451 -0
  108. package/{agile-context-engineering/workflows/review-story.xml → skills/review-story/workflow.xml} +279 -281
  109. package/skills/update/SKILL.md +53 -0
  110. package/{agile-context-engineering/workflows/update.xml → skills/update/workflow.xml} +12 -13
  111. package/agile-context-engineering/src/ace-tools.js +0 -2881
  112. package/agile-context-engineering/src/ace-tools.test.js +0 -1089
  113. package/agile-context-engineering/templates/_command.md +0 -54
  114. package/agile-context-engineering/templates/_workflow.xml +0 -17
  115. package/agile-context-engineering/templates/config.json +0 -0
  116. package/agile-context-engineering/templates/product/integration-solution.xml +0 -0
  117. package/commands/ace/execute-story.md +0 -138
  118. package/commands/ace/help.md +0 -93
  119. package/commands/ace/init-coding-standards.md +0 -83
  120. package/commands/ace/map-story.md +0 -165
  121. package/commands/ace/map-subsystem.md +0 -140
  122. package/commands/ace/map-system.md +0 -92
  123. package/commands/ace/map-walkthrough.md +0 -127
  124. package/commands/ace/plan-backlog.md +0 -83
  125. package/commands/ace/plan-feature.md +0 -89
  126. package/commands/ace/plan-product-vision.md +0 -81
  127. package/commands/ace/plan-story.md +0 -159
  128. package/commands/ace/research-external-solution.md +0 -138
  129. package/commands/ace/research-integration-solution.md +0 -135
  130. package/commands/ace/research-story-wiki.md +0 -116
  131. package/commands/ace/research-technical-solution.md +0 -147
  132. package/commands/ace/review-story.md +0 -109
  133. package/commands/ace/update.md +0 -56
  134. /package/{agile-context-engineering/templates/product/story.xml → skills/execute-story/story-template.xml} +0 -0
  135. /package/{agile-context-engineering/templates/wiki/coding-standards.xml → skills/init-coding-standards/coding-standards-template.xml} +0 -0
  136. /package/{agile-context-engineering/templates/wiki → skills/map-story/templates}/tech-debt-index.xml +0 -0
  137. /package/{agile-context-engineering/templates/wiki → skills/map-subsystem/templates}/subsystem-architecture.xml +0 -0
  138. /package/{agile-context-engineering/templates/wiki → skills/map-subsystem/templates}/subsystem-structure.xml +0 -0
  139. /package/{agile-context-engineering/templates/wiki → skills/map-system/templates}/system-structure.xml +0 -0
  140. /package/{agile-context-engineering/templates/wiki → skills/map-system/templates}/testing-framework.xml +0 -0
  141. /package/{agile-context-engineering/workflows/map-walkthrough.xml → skills/map-walkthrough/workflow.xml} +0 -0
  142. /package/{agile-context-engineering/templates/product/feature.xml → skills/plan-feature/feature-template.xml} +0 -0
  143. /package/{agile-context-engineering/templates/product/product-vision.xml → skills/plan-product-vision/product-vision-template.xml} +0 -0
  144. /package/{agile-context-engineering/templates/product/external-solution.xml → skills/research-external-solution/external-solution-template.xml} +0 -0
  145. /package/{agile-context-engineering/templates/product/story-integration-solution.xml → skills/research-integration-solution/integration-solution-template.xml} +0 -0
  146. /package/{agile-context-engineering/templates/product/story-wiki.xml → skills/research-story-wiki/story-wiki-template.xml} +0 -0
  147. /package/{agile-context-engineering/templates/product/story-technical-solution.xml → skills/research-technical-solution/technical-solution-template.xml} +0 -0
@@ -0,0 +1,111 @@
1
+ ---
2
+ name: map-subsystem
3
+ description: Map a subsystem's structure, architecture, and knowledge docs into .docs/wiki/subsystems/[name]/
4
+ argument-hint: "subsystem='src/api' (or subsystem name) existing-docs=comma separated paths | directory"
5
+ disable-model-invocation: true
6
+ allowed-tools: Read, Bash, Glob, Grep, Write, Task, AskUserQuestion
7
+ model: opus
8
+ effort: max
9
+ ---
10
+
11
+ # Map Subsystem
12
+
13
+ Map a subsystem's structure, architecture, and knowledge docs into .docs/wiki/subsystems/[name]/.
14
+
15
+ ## When to Use
16
+
17
+ - After `/ace:map-system` — drill into individual subsystems
18
+ - Anytime to refresh an existing subsystem's wiki documents
19
+ - When a new subsystem is added and needs to be documented
20
+ - A subsystem has not yet been documented in `.docs/wiki/subsystems/`
21
+ - An existing subsystem's docs are stale after a significant refactor
22
+ - You want a deep-dive view of a specific subsystem's internals (components, flows, data)
23
+
24
+ ## Input
25
+
26
+ ### Required
27
+
28
+ - **`subsystem`** — Path to the subsystem (e.g., `src/api`) or its name. If not provided, pause execution and ask the user for it. If provided but ambiguous, or not found in the codebase, ask clarifying questions.
29
+
30
+ ### Optional
31
+
32
+ - **`existing-docs`** — Pre-existing documentation relevant to this subsystem. Accepts file paths, directory paths, or a mix of both. When a directory is provided, recursively discover all files within it (including nested subdirectories). All resolved file paths are passed through to every map-story invocation (file mode) alongside any per-module docs discovered during module-discovery. Use this when the caller already knows about documentation that should inform knowledge-doc generation.
33
+
34
+ ## Environment Context (preprocessed)
35
+
36
+ !`node "${CLAUDE_SKILL_DIR}/script.js" init "$ARGUMENTS" 2>/dev/null`
37
+
38
+ ## Supporting Resources
39
+
40
+ Read ALL of these before starting the workflow:
41
+
42
+ - **Workflow**: Read [workflow.xml](workflow.xml) — complete orchestration process with all steps
43
+ - **Subsystem structure template**: Read [templates/subsystem-structure.xml](templates/subsystem-structure.xml) — output format for subsystem structure
44
+ - **Subsystem architecture template**: Read [templates/subsystem-architecture.xml](templates/subsystem-architecture.xml) — output format for subsystem architecture
45
+ - **Module discovery template**: Read [templates/module-discovery.xml](templates/module-discovery.xml) — format for module discovery artifact
46
+ - **System template**: Read [templates/system.xml](templates/system.xml) — format for system documents
47
+ - **Pattern template**: Read [templates/pattern.xml](templates/pattern.xml) — format for pattern documents
48
+ - **Cross-cutting template**: Read [templates/system-cross-cutting.xml](templates/system-cross-cutting.xml) — format for cross-cutting concern documents
49
+ - **Guide template**: Read [templates/guide.xml](templates/guide.xml) — format for guide documents
50
+ - **Walkthrough template**: Read [templates/walkthrough.xml](templates/walkthrough.xml) — format for walkthrough documents
51
+ - **Decisions template**: Read [templates/decizions.xml](templates/decizions.xml) — format for decision documents
52
+ - **Questioning guide**: Read `${CLAUDE_SKILL_DIR}/../../shared/utils/questioning.xml` — deep questioning techniques
53
+ - **UI formatting**: Read `${CLAUDE_SKILL_DIR}/../../shared/utils/ui-formatting.md` — ACE output formatting rules
54
+
55
+ ## Process
56
+
57
+ Use the `ace-wiki-mapper` agent for codebase analysis and document generation.
58
+
59
+ The Environment Context above contains the preprocessed INIT JSON — use it directly instead of running the init script manually. The workflow's step 1 setup can skip the init bash call since that data is already available.
60
+
61
+ Read all supporting resources listed above, then execute the workflow defined in [workflow.xml](workflow.xml) end-to-end. Preserve all workflow gates (validation, user questions, commits).
62
+
63
+ The workflow has 13 steps:
64
+ 1-5: Setup, context loading, subsystem resolution, document triage, directory creation
65
+ 6-8: Structure + architecture agents (parallel) + collect results
66
+ 9: Update system-wide docs (system-structure.md, system-architecture.md)
67
+ 10: Module discovery (3 parallel discovery agents + 1 synthesis agent)
68
+ 11: Knowledge documentation — run map-story for EACH discovered module (sequential)
69
+ 12: Verify and commit all documents
70
+ 13: Completion report
71
+
72
+ Steps 10-11 are CRITICAL — they produce the knowledge docs (systems/, patterns/, cross-cutting/, guides/, walkthroughs/, decisions/) that AI agents need for future implementations. Do NOT skip them.
73
+
74
+ ## Artifacts
75
+
76
+ ```
77
+ .docs/wiki/subsystems/[subsystem-name]/structure.md
78
+ .docs/wiki/subsystems/[subsystem-name]/architecture.md
79
+ .docs/wiki/subsystems/[subsystem-name]/systems/*.md
80
+ .docs/wiki/subsystems/[subsystem-name]/patterns/*.md
81
+ .docs/wiki/subsystems/[subsystem-name]/cross-cutting/*.md
82
+ .docs/wiki/subsystems/[subsystem-name]/guides/*.md
83
+ .docs/wiki/subsystems/[subsystem-name]/walkthroughs/*.md
84
+ .docs/wiki/subsystems/[subsystem-name]/decisions/*.md
85
+ .ace/artifacts/subsystems/[subsystem-name]/module-discovery/module-discovery.md
86
+ .ace/artifacts/subsystems/[subsystem-name]/module-discovery/existing-docs-inventory.md
87
+ .docs/wiki/system-wide/system-structure.md (subsystem entry added if new)
88
+ .docs/wiki/system-wide/system-architecture.md (subsystem responsibility matrix updated)
89
+ ```
90
+
91
+ ## Example Usage
92
+
93
+ ```
94
+ # Map a subsystem by path
95
+ /ace:map-subsystem subsystem="src/api"
96
+
97
+ # Map a subsystem with existing docs
98
+ /ace:map-subsystem subsystem="src/auth" existing-docs="docs/auth-design.md,docs/auth/"
99
+
100
+ # Map a subsystem by name
101
+ /ace:map-subsystem subsystem="authentication"
102
+ ```
103
+
104
+ ## Next Steps
105
+
106
+ After this command, `/clear` first for a fresh context window, then:
107
+
108
+ - `/ace:map-subsystem subsystem="src/other"` — Map another subsystem
109
+ - `/ace:init-coding-standards` — Define prescriptive coding standards
110
+ - `/ace:help` — Check project initialization status and next steps
111
+ - Review and edit files in `.docs/wiki/subsystems/` anytime
@@ -0,0 +1,60 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * map-subsystem skill script — Entry point for ace-tools operations
5
+ * needed by the map-subsystem skill.
6
+ *
7
+ * Subcommands:
8
+ * init [args] Environment detection for map-subsystem workflow
9
+ *
10
+ * Usage: node script.js <subcommand> [args] [--raw]
11
+ */
12
+
13
+ const {
14
+ loadConfig, pathExists, resolveModel,
15
+ detectBrownfieldStatus, output, error,
16
+ } = require('../../shared/lib/ace-core');
17
+
18
+ // ─── CLI Dispatch ────────────────────────────────────────────────────────────
19
+
20
+ const cwd = process.cwd();
21
+ const args = process.argv.slice(2);
22
+ const raw = args.includes('--raw');
23
+ const cmd = args[0];
24
+
25
+ switch (cmd) {
26
+ case 'init':
27
+ cmdInit(cwd, raw, args.slice(1).filter(a => a !== '--raw'));
28
+ break;
29
+ default:
30
+ error(`Unknown command: ${cmd}\nAvailable: init`);
31
+ }
32
+
33
+ // ─── Init: Map Subsystem ────────────────────────────────────────────────────
34
+
35
+ function cmdInit(cwd, raw) {
36
+ const config = loadConfig(cwd);
37
+ const brownfield = detectBrownfieldStatus(cwd);
38
+
39
+ const wikiDir = '.docs/wiki/subsystems';
40
+ const wikiDirExists = pathExists(cwd, wikiDir);
41
+
42
+ const result = {
43
+ // Models
44
+ mapper_model: resolveModel(cwd, 'ace-wiki-mapper'),
45
+
46
+ // Config
47
+ commit_docs: config.commit_docs,
48
+
49
+ // Brownfield detection
50
+ ...brownfield,
51
+
52
+ // Wiki directory state
53
+ wiki_dir_exists: wikiDirExists,
54
+
55
+ // Git state
56
+ has_git: pathExists(cwd, '.git'),
57
+ };
58
+
59
+ output(result, raw);
60
+ }
@@ -0,0 +1,68 @@
1
+ const { describe, it, before, after } = require('node:test');
2
+ const assert = require('node:assert');
3
+ const { execSync } = require('child_process');
4
+ const fs = require('fs');
5
+ const path = require('path');
6
+ const os = require('os');
7
+
8
+ const SCRIPT = path.join(__dirname, 'script.js');
9
+
10
+ function createTestProject() {
11
+ const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'ace-test-'));
12
+
13
+ const aceDir = path.join(tmpDir, '.ace');
14
+ fs.mkdirSync(aceDir, { recursive: true });
15
+ fs.writeFileSync(path.join(aceDir, 'config.json'), JSON.stringify({
16
+ version: '0.1.0',
17
+ projectName: 'test-project',
18
+ model_profile: 'quality',
19
+ commit_docs: true,
20
+ github: { enabled: false },
21
+ }, null, 2));
22
+
23
+ return tmpDir;
24
+ }
25
+
26
+ function runScript(subcommand, args, cwd) {
27
+ return execSync(`node "${SCRIPT}" ${subcommand} ${args}`, {
28
+ cwd,
29
+ encoding: 'utf-8',
30
+ timeout: 10000,
31
+ });
32
+ }
33
+
34
+ function cleanup(tmpDir) {
35
+ fs.rmSync(tmpDir, { recursive: true, force: true });
36
+ }
37
+
38
+ describe('map-subsystem script', () => {
39
+ it('errors on unknown command', () => {
40
+ assert.throws(() => {
41
+ execSync(`node "${SCRIPT}" bogus`, { encoding: 'utf-8', stdio: 'pipe' });
42
+ });
43
+ });
44
+
45
+ describe('init', () => {
46
+ let tmpDir;
47
+
48
+ before(() => { tmpDir = createTestProject(); });
49
+ after(() => { cleanup(tmpDir); });
50
+
51
+ it('init returns valid JSON', () => {
52
+ const result = JSON.parse(runScript('init', '', tmpDir));
53
+ assert.ok(typeof result === 'object');
54
+ assert.ok(result.mapper_model, 'should have mapper_model');
55
+ assert.strictEqual(typeof result.commit_docs, 'boolean');
56
+ assert.strictEqual(typeof result.has_git, 'boolean');
57
+ assert.strictEqual(typeof result.is_brownfield, 'boolean');
58
+ assert.strictEqual(typeof result.wiki_dir_exists, 'boolean');
59
+ });
60
+
61
+ it('returns brownfield detection fields', () => {
62
+ const result = JSON.parse(runScript('init', '', tmpDir));
63
+ assert.strictEqual(typeof result.is_brownfield, 'boolean');
64
+ assert.strictEqual(typeof result.is_greenfield, 'boolean');
65
+ assert.strictEqual(result.is_brownfield, !result.is_greenfield);
66
+ });
67
+ });
68
+ });
@@ -0,0 +1,115 @@
1
+ <decisions>
2
+ <purpose>
3
+ Template for `.docs/wiki/subsystems/[subsystem-name]/decisions/<decision-name>.md` — an
4
+ Architecture Decision Record (ADR) capturing WHY a significant choice was made.
5
+ Answers "Why did we choose X over Y?"
6
+
7
+ Each decision doc captures one significant technical decision with its context and
8
+ trade-offs. It is the document an AI agent reads to understand WHY things are built
9
+ a certain way, preventing it from making the wrong choice.
10
+
11
+ Create an ADR ONLY when a significant "why" decision was made:
12
+ - Choosing one approach over another with meaningful trade-offs
13
+ - Deviating from an established pattern for a specific reason
14
+ - Adopting a new technology, pattern, or architectural approach
15
+ - Rejecting a seemingly obvious solution for non-obvious reasons
16
+
17
+ Do NOT create ADRs for trivial or obvious decisions.
18
+
19
+ Complements:
20
+ - systems/ docs (WHAT exists — systems reference decisions that shaped them)
21
+ - patterns/ docs (HOW things work — patterns reference decisions that defined them)
22
+ - cross-cutting/ docs (shared infrastructure shaped by architectural decisions)
23
+ </purpose>
24
+
25
+ <template>
26
+ <decision-record>
27
+ # ADR-NNN: [Decision Title]
28
+
29
+ **Status**: Accepted | Superseded by [ADR-MMM](./ADR-MMM-slug.md)
30
+ **Date**: YYYY-MM-DD
31
+ **Story**: [story reference, if applicable]
32
+
33
+ ## Context
34
+ What situation prompted this decision. 2-3 sentences max.
35
+
36
+ ## Decision
37
+ What was decided. 2-3 sentences max.
38
+
39
+ ## Alternatives Considered
40
+ - **[Alternative A]**: [Why rejected — 1 sentence]
41
+ - **[Alternative B]**: [Why rejected — 1 sentence]
42
+
43
+ ## Consequences
44
+ - Pro: [positive outcome]
45
+ - Pro: [positive outcome]
46
+ - Con: [trade-off accepted]
47
+ </decision-record>
48
+ </template>
49
+
50
+ <guidelines>
51
+
52
+ **Documentation Style:**
53
+ - EXTREMELY SUCCINCT — each ADR should be under 30 lines
54
+ - NO FLUFF — every sentence must convey a decision, reason, or consequence
55
+ - Bullet points for alternatives and consequences
56
+ - Code references as `file-path:ClassName` only when the decision is about specific code
57
+
58
+ **ADR Numbering:**
59
+ - Sequential within the subsystem: ADR-001, ADR-002, etc.
60
+ - Filename format: `ADR-NNN-kebab-case-slug.md`
61
+ - To find the next number, read existing ADRs in the decisions/ directory.
62
+
63
+ **Status:**
64
+ - `Accepted` — the decision is in effect
65
+ - `Superseded by ADR-MMM` — replaced by a later decision (link to it)
66
+ - ADRs are IMMUTABLE — never edit an accepted ADR. Create a new one that supersedes it.
67
+
68
+ **Context:**
69
+ - 2-3 sentences. What problem or situation forced a choice.
70
+ - Reference the system or pattern this decision affects.
71
+
72
+ **Decision:**
73
+ - 2-3 sentences. What was chosen and at what scope.
74
+ - Be specific — "We use X for Y" not "We decided to improve things."
75
+
76
+ **Alternatives Considered:**
77
+ - List each rejected alternative with ONE sentence explaining why.
78
+ - If there were no meaningful alternatives, omit this section.
79
+
80
+ **Consequences:**
81
+ - Bullet list of pros and cons.
82
+ - Be honest about trade-offs — future agents need to know the downsides.
83
+ - Include migration/compatibility consequences if applicable.
84
+
85
+ **What does NOT belong here:**
86
+ - Implementation details (that's in systems/ and patterns/ docs)
87
+ - Step-by-step instructions (that's in guides/)
88
+ - Full analysis or research documents (those are in .ace/artifacts/)
89
+ - Revision history or meeting notes
90
+
91
+ </guidelines>
92
+
93
+ <evolution>
94
+
95
+ ADRs are IMMUTABLE once accepted. They are historical records.
96
+
97
+ **When to create a new ADR:**
98
+ - A significant architectural or pattern choice is made during a story
99
+ - An existing decision is reversed or significantly modified (supersede the old one)
100
+ - A new technology, pattern, or approach is adopted
101
+
102
+ **When NOT to create an ADR:**
103
+ - Routine implementation following existing patterns
104
+ - Bug fixes or refactoring that don't change architectural direction
105
+ - Trivial decisions with no meaningful trade-offs
106
+ - Decisions already captured in an existing ADR
107
+
108
+ **Superseding:**
109
+ - Create the new ADR with its own number
110
+ - Update the old ADR's Status to: `Superseded by [ADR-MMM](./ADR-MMM-slug.md)`
111
+ - This is the ONLY edit allowed on an accepted ADR
112
+
113
+ </evolution>
114
+
115
+ </decisions>
@@ -0,0 +1,137 @@
1
+ <guide>
2
+ <purpose>
3
+ Template for `.docs/wiki/subsystems/[subsystem-name]/guides/<task-name>.md` — a step-by-step
4
+ recipe for a common implementation task. Answers "How do I add/create/implement X?"
5
+
6
+ Each guide combines knowledge from multiple systems, patterns, and cross-cutting concerns
7
+ into one actionable recipe. It is the document an AI agent follows when performing a
8
+ recurring task end-to-end.
9
+
10
+ A "guide" is a task recipe for something developers do repeatedly:
11
+ e.g., "How to Add a New Drawing Tool", "How to Add a New CRUD Endpoint",
12
+ "How to Add a New Indicator", "How to Add a New Repository".
13
+
14
+ Complements:
15
+ - patterns/ docs (the structural patterns that guides reference)
16
+ - systems/ docs (the domain systems where guide steps take place)
17
+ - cross-cutting/ docs (the registrations and setup that guides include as steps)
18
+ </purpose>
19
+
20
+ <template>
21
+ <title>
22
+ # How to [Task]
23
+ </title>
24
+
25
+ <prerequisites>
26
+ ## Prerequisites
27
+
28
+ What you need to know or have in place before starting.
29
+ - Read: [Pattern Doc](../patterns/relevant-pattern.md) — understand the structural pattern
30
+ - Read: [System Doc](../systems/relevant-system.md) — understand the domain context
31
+ - Read: [Cross-Cutting Doc](../cross-cutting/relevant-concern.md) — understand registrations
32
+ </prerequisites>
33
+
34
+ <steps>
35
+ ## Steps
36
+
37
+ ### 1. [First Step]
38
+
39
+ What to do, where to do it, reference implementation to copy from.
40
+ - Create file: `[path]`
41
+ - Copy from: `file:ExistingImplementation` (closest reference)
42
+ - Key changes: [what to modify from the reference]
43
+
44
+ ### 2. [Second Step]
45
+
46
+ ...
47
+
48
+ ### 3. [Third Step]
49
+
50
+ ...
51
+ </steps>
52
+
53
+ <verification>
54
+ ## Verification
55
+
56
+ How to verify the implementation works.
57
+ - [ ] [Check 1]: [What to verify and how]
58
+ - [ ] [Check 2]: [What to verify and how]
59
+ - [ ] [Check 3]: [What to verify and how]
60
+ </verification>
61
+
62
+ <common-mistakes>
63
+ ## Common Mistakes
64
+
65
+ What people typically get wrong.
66
+ - [Mistake 1]: [Why it happens and how to avoid it]
67
+ - [Mistake 2]: [Why it happens and how to avoid it]
68
+ </common-mistakes>
69
+ </template>
70
+
71
+ <guidelines>
72
+
73
+ **Documentation Style:**
74
+ - EXTREMELY SUCCINCT — every word must add value
75
+ - NO FLUFF — direct, actionable information only
76
+ - Numbered steps — the agent follows these in order
77
+ - Code references as `file-path:ClassName.methodName` (not line numbers)
78
+ - Inline snippets ONLY for non-obvious configuration or registration code
79
+ - Every step must have a clear deliverable (a file created, a registration added, etc.)
80
+
81
+ **Prerequisites:**
82
+ - Link to the docs an agent should read BEFORE starting.
83
+ - Don't repeat content from those docs — just link.
84
+ - List any tools, dependencies, or environment requirements.
85
+
86
+ **Steps:**
87
+ - NUMBERED, ORDERED steps. An agent follows these sequentially.
88
+ - Each step has: WHAT to do, WHERE to do it, WHAT to copy from.
89
+ - Reference existing implementations as "copy from" targets — agents copy patterns, not invent.
90
+ - Include ALL steps: file creation, registration, configuration, wiring.
91
+ - Don't skip "obvious" steps — agents don't infer implicit requirements.
92
+
93
+ **Verification:**
94
+ - Checklist format. Agent runs through these after completing all steps.
95
+ - Include compilation check, runtime check, and behavioral check.
96
+ - Reference specific files or commands for verification.
97
+
98
+ **Common Mistakes:**
99
+ - Things agents (and developers) typically get wrong on first attempt.
100
+ - Each mistake should include WHY it happens and HOW to avoid it.
101
+ - Drawn from actual experience (gotchas from pattern and system docs).
102
+
103
+ **What does NOT belong here:**
104
+ - Detailed pattern explanations (link to patterns/ docs instead)
105
+ - System domain knowledge (link to systems/ docs instead)
106
+ - Cross-cutting mechanism details (link to cross-cutting/ docs instead)
107
+ - Story numbers, sprint context, revision history
108
+ - Testing strategy or test code (verification section covers basic checks only)
109
+
110
+ </guidelines>
111
+
112
+ <evolution>
113
+
114
+ This is a LIVING document — updated when the recipe changes.
115
+
116
+ **Update triggers:**
117
+ - New step required (new registration, new file to create)
118
+ - Step removed (registration no longer needed)
119
+ - Step order changed
120
+ - New common mistake discovered
121
+ - Reference implementation changed (new "copy from" target)
122
+ - Prerequisite docs added or removed
123
+
124
+ **NOT an update trigger:**
125
+ - New feature that follows the existing recipe without changes
126
+ - Bug fix in one implementation that followed the guide
127
+ - Internal refactoring that doesn't change the steps
128
+
129
+ **Update rules:**
130
+ - UPDATE steps when the recipe changes
131
+ - ADD new common mistakes as they are discovered
132
+ - UPDATE "copy from" references when better examples exist
133
+ - Keep the guide current — an agent should be able to follow it TODAY
134
+
135
+ </evolution>
136
+
137
+ </guide>