agile-context-engineering 0.2.2 → 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 (146) hide show
  1. package/.claude-plugin/plugin.json +10 -0
  2. package/CHANGELOG.md +82 -0
  3. package/README.md +27 -18
  4. package/agents/ace-product-owner.md +1 -1
  5. package/agents/ace-technical-application-architect.md +28 -0
  6. package/agents/ace-wiki-mapper.md +144 -29
  7. package/bin/install.js +67 -63
  8. package/hooks/ace-check-update.js +17 -9
  9. package/package.json +7 -5
  10. package/shared/lib/ace-core.js +308 -0
  11. package/shared/lib/ace-core.test.js +308 -0
  12. package/shared/lib/ace-github.js +753 -0
  13. package/shared/lib/ace-story.js +400 -0
  14. package/shared/lib/ace-story.test.js +250 -0
  15. package/{agile-context-engineering → shared}/utils/ui-formatting.md +299 -299
  16. package/skills/execute-story/SKILL.md +110 -0
  17. package/skills/execute-story/script.js +305 -0
  18. package/skills/execute-story/script.test.js +261 -0
  19. package/skills/execute-story/walkthrough-template.xml +255 -0
  20. package/{agile-context-engineering/workflows/execute-story.xml → skills/execute-story/workflow.xml} +83 -9
  21. package/skills/help/SKILL.md +69 -0
  22. package/skills/help/script.js +318 -0
  23. package/skills/help/script.test.js +183 -0
  24. package/{agile-context-engineering/workflows/help.xml → skills/help/workflow.xml} +8 -8
  25. package/skills/init-coding-standards/SKILL.md +72 -0
  26. package/{agile-context-engineering/templates/wiki/coding-standards.xml → skills/init-coding-standards/coding-standards-template.xml} +38 -0
  27. package/skills/init-coding-standards/script.js +59 -0
  28. package/skills/init-coding-standards/script.test.js +70 -0
  29. package/{agile-context-engineering/workflows/init-coding-standards.xml → skills/init-coding-standards/workflow.xml} +4 -9
  30. package/skills/map-cross-cutting/SKILL.md +89 -0
  31. package/skills/map-cross-cutting/workflow.xml +330 -0
  32. package/skills/map-guide/SKILL.md +89 -0
  33. package/skills/map-guide/workflow.xml +320 -0
  34. package/skills/map-pattern/SKILL.md +89 -0
  35. package/skills/map-pattern/workflow.xml +331 -0
  36. package/skills/map-story/SKILL.md +127 -0
  37. package/skills/map-story/templates/guide.xml +137 -0
  38. package/skills/map-story/templates/pattern.xml +159 -0
  39. package/skills/map-story/templates/system-cross-cutting.xml +197 -0
  40. package/skills/map-story/templates/walkthrough.xml +255 -0
  41. package/{agile-context-engineering/workflows/map-story.xml → skills/map-story/workflow.xml} +258 -9
  42. package/skills/map-subsystem/SKILL.md +111 -0
  43. package/skills/map-subsystem/script.js +60 -0
  44. package/skills/map-subsystem/script.test.js +68 -0
  45. package/skills/map-subsystem/templates/decizions.xml +115 -0
  46. package/skills/map-subsystem/templates/guide.xml +137 -0
  47. package/{agile-context-engineering/templates/wiki → skills/map-subsystem/templates}/module-discovery.xml +3 -3
  48. package/skills/map-subsystem/templates/pattern.xml +159 -0
  49. package/skills/map-subsystem/templates/system-cross-cutting.xml +197 -0
  50. package/skills/map-subsystem/templates/system.xml +381 -0
  51. package/skills/map-subsystem/templates/walkthrough.xml +255 -0
  52. package/{agile-context-engineering/workflows/map-subsystem.xml → skills/map-subsystem/workflow.xml} +17 -21
  53. package/skills/map-sys-doc/SKILL.md +90 -0
  54. package/skills/map-sys-doc/system.xml +381 -0
  55. package/skills/map-sys-doc/workflow.xml +336 -0
  56. package/skills/map-system/SKILL.md +85 -0
  57. package/skills/map-system/script.js +84 -0
  58. package/skills/map-system/script.test.js +73 -0
  59. package/skills/map-system/templates/wiki-readme.xml +297 -0
  60. package/{agile-context-engineering/workflows/map-system.xml → skills/map-system/workflow.xml} +11 -16
  61. package/skills/map-walkthrough/SKILL.md +92 -0
  62. package/skills/map-walkthrough/walkthrough.xml +255 -0
  63. package/skills/map-walkthrough/workflow.xml +457 -0
  64. package/skills/plan-backlog/SKILL.md +75 -0
  65. package/skills/plan-backlog/script.js +136 -0
  66. package/skills/plan-backlog/script.test.js +83 -0
  67. package/{agile-context-engineering/workflows/plan-backlog.xml → skills/plan-backlog/workflow.xml} +13 -21
  68. package/skills/plan-feature/SKILL.md +76 -0
  69. package/skills/plan-feature/script.js +148 -0
  70. package/skills/plan-feature/script.test.js +80 -0
  71. package/{agile-context-engineering/workflows/plan-feature.xml → skills/plan-feature/workflow.xml} +21 -29
  72. package/skills/plan-product-vision/SKILL.md +75 -0
  73. package/skills/plan-product-vision/script.js +60 -0
  74. package/skills/plan-product-vision/script.test.js +69 -0
  75. package/{agile-context-engineering/workflows/plan-product-vision.xml → skills/plan-product-vision/workflow.xml} +4 -9
  76. package/skills/plan-story/SKILL.md +116 -0
  77. package/skills/plan-story/script.js +326 -0
  78. package/skills/plan-story/script.test.js +240 -0
  79. package/skills/plan-story/story-template.xml +451 -0
  80. package/{agile-context-engineering/workflows/plan-story.xml → skills/plan-story/workflow.xml} +1285 -909
  81. package/skills/research-external-solution/SKILL.md +107 -0
  82. package/skills/research-external-solution/script.js +238 -0
  83. package/skills/research-external-solution/script.test.js +134 -0
  84. package/{agile-context-engineering/workflows/research-external-solution.xml → skills/research-external-solution/workflow.xml} +4 -6
  85. package/skills/research-integration-solution/SKILL.md +98 -0
  86. package/{agile-context-engineering/templates/product/story-integration-solution.xml → skills/research-integration-solution/integration-solution-template.xml} +1 -0
  87. package/skills/research-integration-solution/script.js +231 -0
  88. package/skills/research-integration-solution/script.test.js +134 -0
  89. package/{agile-context-engineering/workflows/research-integration-solution.xml → skills/research-integration-solution/workflow.xml} +4 -5
  90. package/skills/research-story-wiki/SKILL.md +92 -0
  91. package/skills/research-story-wiki/script.js +231 -0
  92. package/skills/research-story-wiki/script.test.js +138 -0
  93. package/{agile-context-engineering/templates/product/story-wiki.xml → skills/research-story-wiki/story-wiki-template.xml} +4 -0
  94. package/{agile-context-engineering/workflows/research-story-wiki.xml → skills/research-story-wiki/workflow.xml} +5 -6
  95. package/skills/research-technical-solution/SKILL.md +103 -0
  96. package/skills/research-technical-solution/script.js +231 -0
  97. package/skills/research-technical-solution/script.test.js +134 -0
  98. package/{agile-context-engineering/workflows/research-technical-solution.xml → skills/research-technical-solution/workflow.xml} +4 -5
  99. package/skills/review-story/SKILL.md +100 -0
  100. package/skills/review-story/script.js +257 -0
  101. package/skills/review-story/script.test.js +169 -0
  102. package/skills/review-story/story-template.xml +451 -0
  103. package/{agile-context-engineering/workflows/review-story.xml → skills/review-story/workflow.xml} +1 -3
  104. package/skills/update/SKILL.md +53 -0
  105. package/{agile-context-engineering/workflows/update.xml → skills/update/workflow.xml} +237 -207
  106. package/agile-context-engineering/src/ace-tools.js +0 -2881
  107. package/agile-context-engineering/src/ace-tools.test.js +0 -1089
  108. package/agile-context-engineering/templates/_command.md +0 -54
  109. package/agile-context-engineering/templates/_workflow.xml +0 -17
  110. package/agile-context-engineering/templates/config.json +0 -0
  111. package/agile-context-engineering/templates/product/integration-solution.xml +0 -0
  112. package/agile-context-engineering/templates/wiki/wiki-readme.xml +0 -276
  113. package/commands/ace/execute-story.md +0 -137
  114. package/commands/ace/help.md +0 -93
  115. package/commands/ace/init-coding-standards.md +0 -83
  116. package/commands/ace/map-story.md +0 -156
  117. package/commands/ace/map-subsystem.md +0 -138
  118. package/commands/ace/map-system.md +0 -92
  119. package/commands/ace/plan-backlog.md +0 -83
  120. package/commands/ace/plan-feature.md +0 -89
  121. package/commands/ace/plan-product-vision.md +0 -81
  122. package/commands/ace/plan-story.md +0 -145
  123. package/commands/ace/research-external-solution.md +0 -138
  124. package/commands/ace/research-integration-solution.md +0 -135
  125. package/commands/ace/research-story-wiki.md +0 -116
  126. package/commands/ace/research-technical-solution.md +0 -147
  127. package/commands/ace/review-story.md +0 -109
  128. package/commands/ace/update.md +0 -54
  129. /package/{agile-context-engineering → shared}/utils/questioning.xml +0 -0
  130. /package/{agile-context-engineering/templates/product/story.xml → skills/execute-story/story-template.xml} +0 -0
  131. /package/{agile-context-engineering/templates/wiki → skills/map-cross-cutting}/system-cross-cutting.xml +0 -0
  132. /package/{agile-context-engineering/templates/wiki → skills/map-guide}/guide.xml +0 -0
  133. /package/{agile-context-engineering/templates/wiki → skills/map-pattern}/pattern.xml +0 -0
  134. /package/{agile-context-engineering/templates/wiki → skills/map-story/templates}/decizions.xml +0 -0
  135. /package/{agile-context-engineering/templates/wiki → skills/map-story/templates}/system.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-architecture.xml +0 -0
  140. /package/{agile-context-engineering/templates/wiki → skills/map-system/templates}/system-structure.xml +0 -0
  141. /package/{agile-context-engineering/templates/wiki → skills/map-system/templates}/testing-framework.xml +0 -0
  142. /package/{agile-context-engineering/templates/product/product-backlog.xml → skills/plan-backlog/product-backlog-template.xml} +0 -0
  143. /package/{agile-context-engineering/templates/product/feature.xml → skills/plan-feature/feature-template.xml} +0 -0
  144. /package/{agile-context-engineering/templates/product/product-vision.xml → skills/plan-product-vision/product-vision-template.xml} +0 -0
  145. /package/{agile-context-engineering/templates/product/external-solution.xml → skills/research-external-solution/external-solution-template.xml} +0 -0
  146. /package/{agile-context-engineering/templates/product/story-technical-solution.xml → skills/research-technical-solution/technical-solution-template.xml} +0 -0
@@ -0,0 +1,451 @@
1
+ <story>
2
+
3
+ <purpose>
4
+ Template for `.ace/artifacts/product/&lt;id-epic_name&gt;/&lt;id-feature_name&gt;/&lt;id-story_name&gt;/&lt;id-story_name&gt;.md` —
5
+ a story specification document that describes a single implementable unit of work,
6
+ its INVEST-compliant user story statement, Gherkin acceptance criteria, definition of done,
7
+ scope boundaries, and relevant wiki references for technical solution design.
8
+ This document defines EXACTLY what will be built — no more, no less.
9
+
10
+ The acceptance criteria are the SINGLE SOURCE OF TRUTH for story scope.
11
+ If a behavior is not captured in a named scenario, it is not in scope.
12
+
13
+ This is the COMPOSITION ROOT for the story specification pipeline.
14
+ The full story document is built incrementally across up to 3 passes
15
+ that write sections into the story file, plus up to 2 external research
16
+ artifacts that feed into the technical solution but live outside the story:
17
+
18
+ Pass 1 — Business Requirements (this template, sections 1-8)
19
+ Pass 2 — Wiki Research (story-wiki.xml) — appended to story
20
+ Pass 3 — External Analysis (external-solution.xml) — OPTIONAL, external artifact
21
+ Pass 4 — Integration Analysis (integration-solution.xml) — external artifact
22
+ Pass 5 — Technical Solution (story-technical-solution.xml) — appended to story
23
+
24
+ Passes 3 and 4 produce separate research artifacts in the story directory.
25
+ They are consumed as inputs by pass 5 but are NOT embedded in the story file.
26
+ The pipeline is sequential — earlier passes are inputs to later passes.
27
+
28
+ This document serves as both a local markdown file and a GitHub issue description.
29
+ All formatting must render cleanly in GitHub issue bodies.
30
+ </purpose>
31
+
32
+ <composition>
33
+ &lt;!-- The story specification pipeline. Passes 1, 2, 5 write into the story file.
34
+ Passes 3, 4 produce external artifacts in the story directory that feed pass 5.
35
+
36
+ Story directory: .ace/artifacts/product/&lt;epic&gt;/&lt;feature&gt;/&lt;story&gt;/
37
+ Story file: &lt;story&gt;.md
38
+ External artifacts: external-analysis.md, integration-analysis.md --&gt;
39
+
40
+ <pass order="1" template="story.xml" output="story-file" required="true">
41
+ Business Requirements — sections 1-8 (header through DoD).
42
+ Input: plain-text story seed from parent feature document.
43
+ </pass>
44
+ <pass order="2" template="story-wiki.xml" output="story-file" required="true">
45
+ Wiki Research — relevant-wiki section.
46
+ Input: User Story + Description + AC from pass 1.
47
+ Agent scans `.docs/wiki/` for documents relevant to technical solution.
48
+ </pass>
49
+ <pass order="3" template="external-solution.xml" output="external-analysis.md" required="false">
50
+ External Analysis — analyze reference implementations or external systems.
51
+ Input: story requirements + wiki refs from passes 1-2 + external code/docs.
52
+ OPTIONAL: only when the story or feature references external systems.
53
+ Output: separate artifact in story directory, NOT appended to story file.
54
+ </pass>
55
+ <pass order="4" template="integration-solution.xml" output="integration-analysis.md" required="true">
56
+ Integration Analysis — analyze our own codebase for integration points.
57
+ Input: story requirements + wiki refs + optional external analysis.
58
+ Agent reads relevant wiki docs and explores codebase to map affected code.
59
+ Output: separate artifact in story directory, NOT appended to story file.
60
+ </pass>
61
+ <pass order="5" template="story-technical-solution.xml" output="story-file" required="true">
62
+ Technical Solution — design the implementation approach.
63
+ Input: ALL prior passes (story file + external artifacts).
64
+ Produces the technical-solution section appended to the story file.
65
+ </pass>
66
+
67
+ &lt;!-- Execution passes (written by /ace:execute-story, not /ace:plan-story) --&gt;
68
+ <pass order="E1" populated-by="execute-story" output="story-file" required="false">
69
+ Summary &amp; State — execution results, commit log, deviations, code review.
70
+ Written after implementation is complete and user approves.
71
+ </pass>
72
+ <pass order="E2" populated-by="execute-story" output="story-file" required="false">
73
+ Wiki Updates — table of wiki documents updated/created during implementation.
74
+ Written after wiki mapper completes post-implementation.
75
+ </pass>
76
+ </composition>
77
+
78
+ <output-format>
79
+
80
+ <section name="header">
81
+ # [ID]: [Story Title]
82
+
83
+ **Feature**: [Feature ID] [Feature Title] | **Epic**: [Epic ID] [Epic Title]
84
+ **Status**: [Status] | **Size**: [Size] | **Sprint**: [Sprint] | **Link**: [Link]
85
+
86
+ &lt;!-- Example:
87
+ # S3: Display OAuth Provider Buttons
88
+ **Feature**: F3 OAuth2 Login Flow | **Epic**: #45 User Authentication
89
+ **Status**: Refined | **Size**: 3 | **Sprint**: Sprint 2 | **Link**: [#95](https://github.com/owner/repo/issues/95)
90
+ --&gt;
91
+ </section>
92
+
93
+ <section name="user-story">
94
+ ## User Story
95
+
96
+ &gt; As a [persona/role],
97
+ &gt; I want [action/capability],
98
+ &gt; so that [benefit/value].
99
+
100
+ &lt;!-- The user story MUST follow the As/I want/So that format exactly.
101
+ - Persona must match a persona defined in the product vision.
102
+ - Action describes observable user behavior, not system internals.
103
+ - Benefit ties to the parent feature's benefit hypothesis.
104
+ Example:
105
+ "As a returning customer, I want to click a Google or GitHub login button,
106
+ so that I can authenticate without remembering a site-specific password."
107
+ --&gt;
108
+ </section>
109
+
110
+ <section name="description">
111
+ ## Description
112
+
113
+ [What this story delivers and why it matters within the parent feature. 2-4 sentences.
114
+ Describe observable user behavior — what the user can do when this story is done.
115
+ How this story relates to adjacent stories in the feature (what it builds on, what it enables).
116
+ Focus on WHAT and WHY, not HOW.]
117
+ </section>
118
+
119
+ <section name="acceptance-criteria">
120
+ ## Acceptance Criteria
121
+
122
+ &lt;!-- Gherkin scenarios are the SINGLE SOURCE OF TRUTH for this story's scope.
123
+ If a behavior is not captured in a named scenario, it is NOT in scope.
124
+ Do not implement or test behaviors not defined here.
125
+
126
+ Minimum coverage: happy path + at least one edge case + at least one error path.
127
+ Each scenario must be independent — no scenario depends on another's state.
128
+ If more than 6-8 scenarios are needed, the story is likely too large — split it. --&gt;
129
+
130
+ ### Scenario: [Short descriptive name]
131
+
132
+ **Given** [precondition — the starting state]
133
+ **When** [action — what the user or system does]
134
+ **Then** [expected outcome — observable result]
135
+
136
+ ### Scenario: [Short descriptive name]
137
+
138
+ **Given** [precondition]
139
+ **When** [action]
140
+ **Then** [expected outcome]
141
+
142
+ &lt;!-- Example:
143
+ ### Scenario: Successful Google login
144
+
145
+ **Given** the user is on the login page and has a valid Google account
146
+ **When** they click the "Sign in with Google" button and complete Google's OAuth flow
147
+ **Then** they are redirected to the dashboard and see their Google profile name
148
+
149
+ ### Scenario: Provider unavailable
150
+
151
+ **Given** the user is on the login page and the Google OAuth service is unreachable
152
+ **When** they click the "Sign in with Google" button
153
+ **Then** they see an error message "Login service temporarily unavailable. Please try again."
154
+ --&gt;
155
+ </section>
156
+
157
+ <section name="out-of-scope">
158
+ ## Out of Scope
159
+
160
+ &lt;!-- Explicitly excluded items to prevent scope creep. Only list things that someone
161
+ might reasonably assume are included but are NOT part of this story.
162
+ Do not list everything in the universe — only meaningful exclusions. --&gt;
163
+
164
+ - [Excluded item — brief reason why it is not part of this story]
165
+ - [Excluded item — brief reason why it is not part of this story]
166
+ </section>
167
+
168
+ <section name="dependencies">
169
+ ## Dependencies
170
+
171
+ ### Blocked By
172
+ &lt;!-- Stories, features, or external items that must be completed before this story can start. --&gt;
173
+ - [Story ID or item — brief reason for the dependency]
174
+
175
+ ### Blocks
176
+ &lt;!-- Stories or items that cannot start until this story is complete. --&gt;
177
+ - [Story ID or item — what it needs from this story]
178
+
179
+ ### External
180
+ &lt;!-- Third-party services, APIs, approvals, or infrastructure needed. --&gt;
181
+ - [External dependency — current status]
182
+ </section>
183
+
184
+ <section name="definition-of-done">
185
+ ## Definition of Done
186
+
187
+ - [ ] All acceptance criteria scenarios pass
188
+ - [ ] Code reviewed and approved
189
+ - [ ] Tests written and passing
190
+ - [ ] CI pipeline green
191
+ - [ ] Documentation updated (if applicable)
192
+ - [ ] Product Owner verified
193
+ </section>
194
+
195
+ <section name="relevant-wiki" pass="2" template="story-wiki.xml">
196
+ ## Relevant Wiki
197
+
198
+ &lt;!-- Pass 2. Populated by story-wiki.xml template.
199
+ A research agent reads the User Story, Description, and AC,
200
+ then scans `.docs/wiki/` to select documents relevant to
201
+ designing a good technical solution for this story.
202
+ See story-wiki.xml for full section structure and selection criteria. --&gt;
203
+ </section>
204
+
205
+ <section name="technical-solution" pass="5" template="story-technical-solution.xml">
206
+ ## Technical Solution
207
+
208
+ &lt;!-- Pass 5. Populated by story-technical-solution.xml template.
209
+ Consumes ALL prior passes as input:
210
+ - Story file (sections 1-8 + relevant wiki)
211
+ - external-analysis.md (if it exists in story directory)
212
+ - integration-analysis.md (from story directory)
213
+ See story-technical-solution.xml for full section structure. --&gt;
214
+ </section>
215
+
216
+ <section name="summary-and-state" populated-by="execute-story">
217
+ ## Summary &amp; State
218
+
219
+ &lt;!-- Populated by /ace:execute-story after implementation.
220
+ Contains: status, execution date, duration, commit log,
221
+ implementation summary, deviations, and code review results.
222
+ Do NOT edit manually — this section is written by the execution workflow. --&gt;
223
+ </section>
224
+
225
+ <section name="wiki-updates" populated-by="execute-story">
226
+ ## Wiki Updates
227
+
228
+ &lt;!-- Populated by /ace:execute-story after wiki mapping.
229
+ Contains: table of wiki documents updated/created during implementation.
230
+ Do NOT edit manually — this section is written by the execution workflow. --&gt;
231
+ </section>
232
+
233
+ <section name="metadata">
234
+ ---
235
+ *Created: [date] | Last refined: [date] | Refinements: [count]*
236
+ *Feature: [relative path to parent feature.md]*
237
+ </section>
238
+
239
+ </output-format>
240
+
241
+ <field-definitions>
242
+
243
+ <field name="ID">
244
+ S[number] for local stories, #[issue_number] for GitHub-linked.
245
+ Sequential within the parent feature. IDs are stable — never renumber after assignment.
246
+ When a local story gets a GitHub issue, ID changes from S[N] to #[issue_number]
247
+ and the parent feature's story index table is updated.
248
+ </field>
249
+
250
+ <field name="Status">
251
+ <allowed-values>
252
+ <value name="Todo">Story seed exists in feature doc, not yet formally specified</value>
253
+ <value name="Refined">Formal spec complete — user story, AC, DoD all defined and clear</value>
254
+ <value name="In Progress">Implementation has started</value>
255
+ <value name="Done">All AC scenarios verified, DoD met, story closed</value>
256
+ </allowed-values>
257
+ </field>
258
+
259
+ <field name="Size">
260
+ <allowed-values>
261
+ <value name="1">Trivial — a few hours of work</value>
262
+ <value name="2">Small — about a day</value>
263
+ <value name="3">Medium — 2-3 days</value>
264
+ <value name="5">Large — most of a sprint</value>
265
+ <value name="8">Very large — full sprint (1 dev / 10 days OR 1 AI agent - 1 day)</value>
266
+ </allowed-values>
267
+ Fibonacci relative sizing (NOT x10 like features).
268
+ If a story exceeds 8 points, it MUST be split into smaller stories.
269
+ </field>
270
+
271
+ <field name="Priority">
272
+ <allowed-values>
273
+ <value name="Critical">Blocks other work or has external deadline</value>
274
+ <value name="High">Core functionality, high user impact</value>
275
+ <value name="Medium">Important but not blocking</value>
276
+ <value name="Low">Nice to have, can be deferred</value>
277
+ </allowed-values>
278
+ </field>
279
+
280
+ <field name="Persona">
281
+ Must match a persona defined in the product vision document.
282
+ Do not introduce new personas at story level — update the product vision first.
283
+ </field>
284
+
285
+ </field-definitions>
286
+
287
+ <guidelines>
288
+
289
+ <guideline name="invest-compliance">
290
+ Every story MUST pass the INVEST checklist before it can move to "Refined" status:
291
+ - **Independent**: Can be developed without requiring another in-progress story
292
+ - **Negotiable**: Scope is defined by AC, not hardcoded implementation details
293
+ - **Valuable**: User story statement describes real user benefit
294
+ - **Estimable**: Can be sized in Fibonacci points (1, 2, 3, 5, 8)
295
+ - **Small**: Completable within a single sprint
296
+ - **Testable**: AC scenarios have clear pass/fail conditions
297
+
298
+ If any INVEST criterion fails, the story is not ready to be refined.
299
+ </guideline>
300
+
301
+ <guideline name="acceptance-criteria-as-scope">
302
+ Acceptance criteria define 100% of this story's scope.
303
+ No behavior should be implemented or tested unless it is captured in a named scenario.
304
+
305
+ - If it's not in the AC, it's OUT OF SCOPE
306
+ - If it's implied but not stated, it's OUT OF SCOPE
307
+ - If it would be "nice to have", it's OUT OF SCOPE
308
+ - ONLY build what the AC scenarios explicitly describe
309
+
310
+ This is the primary scope control mechanism. Adding requirements beyond the AC
311
+ causes scope creep. Extra features = extra work = missed deadlines.
312
+ </guideline>
313
+
314
+ <guideline name="gherkin-quality">
315
+ Gherkin scenarios must follow these rules:
316
+ - **Given**: Describes state or precondition — NEVER an action
317
+ - **When**: Describes exactly ONE action — the trigger being tested
318
+ - **Then**: Describes an observable outcome — NEVER internal system state
319
+ (Bad: "Then the database has a new row" — Good: "Then the user sees a confirmation message")
320
+ - Scenarios MUST be independent — no scenario depends on another scenario's state
321
+ - Use **And** for additional conditions within Given/When/Then, not separate steps
322
+
323
+ Bad: "Given the user clicks login" (action, not state)
324
+ Good: "Given the user is on the login page"
325
+ </guideline>
326
+
327
+ <guideline name="story-sizing">
328
+ Stories use Fibonacci sizing: 1, 2, 3, 5, 8 (NOT x10 like features).
329
+ If a story is estimated at more than 8 points, it MUST be split.
330
+ If a story requires more than 6-8 AC scenarios, it is likely too large — split it.
331
+
332
+ AC scenario count is a reliable proxy for complexity:
333
+ - 1-2 scenarios: likely a 1-2 point story
334
+ - 3-4 scenarios: likely a 3 point story
335
+ - 5-6 scenarios: likely a 5 point story
336
+ - 7-8 scenarios: likely an 8 point story; above 8 consider splitting
337
+ </guideline>
338
+
339
+ <guideline name="github-compatibility">
340
+ The entire story document must render cleanly as a GitHub issue body.
341
+ - Mermaid diagrams are supported and encouraged — GitHub renders them natively
342
+ in issue bodies and markdown files via ```mermaid fenced code blocks
343
+ - No HTML tables (use markdown tables only - make sure titles are aligned with columns)
344
+ - No custom CSS or HTML styling
345
+ - Named scenario H3 headers render as distinct sections in GitHub
346
+ - Blockquote (&gt;) for the user story statement renders correctly
347
+ </guideline>
348
+
349
+ <guideline name="github-identity">
350
+ - GitHub-linked stories: ID = #[issue_number], Title = EXACT GitHub issue title
351
+ - Local stories: ID = S[N], sequential within the parent feature
352
+ - IDs are stable — never renumber after assignment
353
+ - When a story gets a GitHub issue, ID changes from S[N] to #[issue_number]
354
+ - The parent feature's story index table must be updated to reflect the new ID
355
+ </guideline>
356
+
357
+ <guideline name="definition-of-done">
358
+ The inline DoD checklist must stay compact: 5-10 items maximum.
359
+ It covers the universal quality bar for any story. Items are:
360
+ - Acceptance criteria verified (functional correctness)
361
+ - Code quality (review, tests, CI)
362
+ - Documentation (only when applicable)
363
+ - Product validation (PO sign-off)
364
+
365
+ Story-specific DoD items may be added when genuinely unique to that story
366
+ (e.g., "PCI compliance reviewed" for a payment story), but the default
367
+ checklist should suffice for most stories.
368
+ </guideline>
369
+
370
+ <guideline name="relevant-wiki-selection">
371
+ The Relevant Wiki section is populated by pass 2 using story-wiki.xml.
372
+ It runs AFTER sections 1-8 are complete.
373
+ See story-wiki.xml for detailed selection/exclusion criteria and section structure.
374
+ </guideline>
375
+
376
+ <guideline name="completeness">
377
+ Every run of plan-story should produce a COMPLETE story specification —
378
+ user story, description, all AC scenarios, out-of-scope, dependencies, DoD.
379
+ Do not defer sections to "later passes."
380
+
381
+ Re-running plan-story on the same story is supported for scope changes
382
+ or AC gaps, but is the exception, not the workflow.
383
+ When re-running, increment the metadata refinement count and update
384
+ the "Last refined" date.
385
+ </guideline>
386
+
387
+ </guidelines>
388
+
389
+ <evolution>
390
+
391
+ **Pass 1 — Business Requirements (story.xml → story file):**
392
+ The plan-story command takes the plain-text story seed from the parent feature
393
+ document and fills sections 1-8 (header through DoD).
394
+ All business requirements sections are complete after this pass.
395
+
396
+ **Pass 2 — Wiki Research (story-wiki.xml → story file):**
397
+ A research agent reads the User Story, Description, and AC from pass 1,
398
+ then scans `.docs/wiki/` to populate the Relevant Wiki section with documents
399
+ that inform the technical solution.
400
+
401
+ **Pass 3 — External Analysis (external-solution.xml → external-analysis.md) — OPTIONAL:**
402
+ When the story or feature references external systems, libraries, or reference
403
+ implementations, an agent analyzes that external code/documentation for insights.
404
+ Output is a separate artifact in the story directory — NOT part of the story file.
405
+ Skipped when no external references exist.
406
+
407
+ **Pass 4 — Integration Analysis (integration-solution.xml → integration-analysis.md):**
408
+ An agent reads the wiki references from pass 2 (and external analysis from pass 3
409
+ if present), then explores our own codebase to map affected files, existing APIs,
410
+ code patterns, and architectural constraints for this story.
411
+ Output is a separate artifact in the story directory — NOT part of the story file.
412
+
413
+ **Pass 5 — Technical Solution (story-technical-solution.xml → story file):**
414
+ Consumes ALL prior outputs: story file (requirements + wiki) plus the external
415
+ artifacts (external-analysis.md and integration-analysis.md from story directory).
416
+ Designs the implementation approach and appends the Technical Solution section
417
+ to the story file.
418
+ Story status moves from "Todo" to "Refined" in the parent feature's story index.
419
+
420
+ **Refinement (re-run any pass — exception, not norm):**
421
+ Only when scope changes, new information surfaces, or gaps are found.
422
+ Re-running an earlier pass may invalidate later passes — downstream passes
423
+ and their artifacts should be re-evaluated.
424
+ Updates metadata refinement count and "Last refined" date.
425
+
426
+ **During implementation (/ace:execute-story):**
427
+ Story status moves from Refined to In Progress.
428
+ Claude Code Plan Mode creates an execution plan from the Technical Solution.
429
+ Implementation proceeds (solo or agent teams mode).
430
+ Code review runs (ace-code-reviewer agent).
431
+ NO intermediary commits — changes accumulate until user approval.
432
+
433
+ **Execution Pass E1 — Summary &amp; State (execute-story → story file):**
434
+ After user approves implementation, the Summary &amp; State section is written
435
+ with: status, execution date, duration, commit log, implementation summary,
436
+ deviations from plan, and code review results.
437
+
438
+ **Execution Pass E2 — Wiki Updates (execute-story → story file):**
439
+ After wiki mapper completes, the Wiki Updates section is written with a table
440
+ of wiki documents updated/created during implementation. Tech debt discovered
441
+ during code review is integrated into wiki subsystem docs.
442
+
443
+ **Completion:**
444
+ All AC scenarios verified. DoD checklist complete. Story status moves to Done.
445
+ Parent feature's story index updated. Product backlog updated.
446
+ If GitHub-linked, the issue body is updated with full story content.
447
+ If all stories in the feature are Done, the feature status also moves to Done.
448
+
449
+ </evolution>
450
+
451
+ </story>
@@ -39,9 +39,7 @@
39
39
  <substep order="1.2" name="run-init">
40
40
  Execute environment detection:
41
41
 
42
- ```bash
43
- INIT=$(node ~/.claude/agile-context-engineering/src/ace-tools.js init execute-story {story_param})
44
- ```
42
+ INIT is available from the preprocessed Environment Context above — do NOT re-run init.
45
43
 
46
44
  Parse INIT JSON for:
47
45
  - `has_git`, `has_gh_cli`, `github_project`
@@ -0,0 +1,53 @@
1
+ ---
2
+ name: update
3
+ description: Update ACE to latest version with changelog display
4
+ argument-hint: ""
5
+ disable-model-invocation: true
6
+ allowed-tools:
7
+ - Bash
8
+ - AskUserQuestion
9
+ - WebFetch
10
+ model: sonnet
11
+ effort: medium
12
+ ---
13
+
14
+ # Update
15
+
16
+ Update ACE to latest version with changelog display.
17
+
18
+ ## When to Use
19
+
20
+ - When the statusline shows the update indicator
21
+ - When user wants to check for or install ACE updates
22
+
23
+ ## Input
24
+
25
+ No parameters required.
26
+
27
+ ## Supporting Resources
28
+
29
+ Read ALL of these before starting the workflow:
30
+
31
+ - **Workflow**: Read [workflow.xml](workflow.xml) — complete update process
32
+ - **UI formatting**: Read `${CLAUDE_SKILL_DIR}/../../shared/utils/ui-formatting.md` — ACE output formatting rules
33
+
34
+ ## Process
35
+
36
+ Execute the workflow defined in [workflow.xml](workflow.xml) end-to-end.
37
+
38
+ The workflow handles all logic including:
39
+
40
+ 1. Installation detection (local/global, Claude/Crush)
41
+ 2. Latest version checking via npm
42
+ 3. Version comparison
43
+ 4. Changelog fetching and display
44
+ 5. Clean install warning display
45
+ 6. User confirmation
46
+ 7. Update execution
47
+ 8. Cache clearing and restart reminder
48
+
49
+ ## Example Usage
50
+
51
+ ```
52
+ /ace:update
53
+ ```