agile-context-engineering 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +30 -0
- package/README.md +272 -78
- package/agents/ace-code-discovery-analyst.md +245 -0
- package/agents/ace-code-integration-analyst.md +248 -0
- package/agents/ace-code-reviewer.md +375 -0
- package/agents/ace-product-owner.md +361 -0
- package/agents/ace-project-researcher.md +606 -0
- package/agents/ace-research-synthesizer.md +228 -0
- package/agents/ace-technical-application-architect.md +287 -0
- package/agents/ace-wiki-mapper.md +334 -0
- package/agile-context-engineering/src/ace-tools.js +2881 -0
- package/agile-context-engineering/src/ace-tools.test.js +1089 -0
- package/agile-context-engineering/templates/_command.md +54 -0
- package/agile-context-engineering/templates/_workflow.xml +17 -0
- package/agile-context-engineering/templates/config.json +0 -0
- package/agile-context-engineering/templates/product/external-solution.xml +832 -0
- package/agile-context-engineering/templates/product/feature.xml +361 -0
- package/agile-context-engineering/templates/product/integration-solution.xml +0 -0
- package/agile-context-engineering/templates/product/product-backlog.xml +231 -0
- package/agile-context-engineering/templates/product/product-vision.xml +227 -0
- package/agile-context-engineering/templates/product/story-integration-solution.xml +1014 -0
- package/agile-context-engineering/templates/product/story-technical-solution.xml +1025 -0
- package/agile-context-engineering/templates/product/story-wiki.xml +190 -0
- package/agile-context-engineering/templates/product/story.xml +451 -0
- package/agile-context-engineering/templates/wiki/coding-standards.xml +493 -0
- package/agile-context-engineering/templates/wiki/decizions.xml +115 -0
- package/agile-context-engineering/templates/wiki/guide.xml +137 -0
- package/agile-context-engineering/templates/wiki/module-discovery.xml +174 -0
- package/agile-context-engineering/templates/wiki/pattern.xml +159 -0
- package/agile-context-engineering/templates/wiki/subsystem-architecture.xml +343 -0
- package/agile-context-engineering/templates/wiki/subsystem-structure.xml +235 -0
- package/agile-context-engineering/templates/wiki/system-architecture.xml +254 -0
- package/agile-context-engineering/templates/wiki/system-cross-cutting.xml +197 -0
- package/agile-context-engineering/templates/wiki/system-structure.xml +178 -0
- package/agile-context-engineering/templates/wiki/system.xml +381 -0
- package/agile-context-engineering/templates/wiki/tech-debt-index.xml +125 -0
- package/agile-context-engineering/templates/wiki/testing-framework.xml +283 -0
- package/agile-context-engineering/utils/questioning.xml +111 -0
- package/agile-context-engineering/utils/ui-formatting.md +300 -0
- package/agile-context-engineering/workflows/execute-story.xml +1145 -0
- package/agile-context-engineering/workflows/help.xml +540 -0
- package/agile-context-engineering/workflows/init-coding-standards.xml +386 -0
- package/agile-context-engineering/workflows/map-story.xml +797 -0
- package/agile-context-engineering/workflows/map-subsystem.xml +1177 -0
- package/agile-context-engineering/workflows/map-system.xml +647 -0
- package/agile-context-engineering/workflows/plan-backlog.xml +1356 -0
- package/agile-context-engineering/workflows/plan-feature.xml +1495 -0
- package/agile-context-engineering/workflows/plan-product-vision.xml +342 -0
- package/agile-context-engineering/workflows/plan-story.xml +909 -0
- package/agile-context-engineering/workflows/research-external-solution.xml +659 -0
- package/agile-context-engineering/workflows/research-integration-solution.xml +712 -0
- package/agile-context-engineering/workflows/research-story-wiki.xml +474 -0
- package/agile-context-engineering/workflows/research-technical-solution.xml +762 -0
- package/agile-context-engineering/workflows/review-story.xml +281 -0
- package/bin/install.js +102 -166
- package/commands/ace/execute-story.md +137 -0
- package/commands/ace/help.md +93 -0
- package/commands/ace/init-coding-standards.md +83 -0
- package/commands/ace/map-story.md +156 -0
- package/commands/ace/map-subsystem.md +138 -0
- package/commands/ace/map-system.md +90 -0
- package/commands/ace/plan-backlog.md +83 -0
- package/commands/ace/plan-feature.md +89 -0
- package/commands/ace/plan-product-vision.md +81 -0
- package/commands/ace/plan-story.md +145 -0
- package/commands/ace/research-external-solution.md +138 -0
- package/commands/ace/research-integration-solution.md +135 -0
- package/commands/ace/research-story-wiki.md +116 -0
- package/commands/ace/research-technical-solution.md +147 -0
- package/commands/ace/review-story.md +109 -0
- package/package.json +5 -8
- package/agents/executor.md +0 -88
- package/agents/planner.md +0 -78
- package/agents/researcher.md +0 -77
- package/agents/verifier.md +0 -116
- package/commands/ace-execute-story.md +0 -114
- package/commands/ace-init.md +0 -254
- package/commands/ace-plan-epic.md +0 -79
- package/commands/ace-plan-feature.md +0 -78
- package/commands/ace-plan-project.md +0 -205
- package/commands/ace-plan-story.md +0 -97
- package/commands/ace-refine-story.md +0 -90
- package/commands/ace-verify-story.md +0 -127
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
<!-- Credits: Testing template content adapted from GSD (Get Shit Done) by @raisiqueira -->
|
|
2
|
+
<!-- Original source: .gsd/get-shit-done/templates/codebase/testing.md -->
|
|
3
|
+
|
|
4
|
+
<testing-framework>
|
|
5
|
+
<purpose>
|
|
6
|
+
Template for `.docs/wiki/testing-framework.md` — captures test framework, patterns, and
|
|
7
|
+
conventions for the project. Answers "How do I write and run tests that match existing patterns?"
|
|
8
|
+
|
|
9
|
+
**Purpose:** Document how tests are written and run. Guide for adding tests that match
|
|
10
|
+
existing patterns.
|
|
11
|
+
</purpose>
|
|
12
|
+
|
|
13
|
+
<template>
|
|
14
|
+
<test-framework>
|
|
15
|
+
## Test Framework
|
|
16
|
+
|
|
17
|
+
**Runner:**
|
|
18
|
+
- [Framework: e.g., "Jest 29.x", "Vitest 1.x"]
|
|
19
|
+
- [Config: e.g., "jest.config.js in project root"]
|
|
20
|
+
|
|
21
|
+
**Assertion Library:**
|
|
22
|
+
- [Library: e.g., "built-in expect", "chai"]
|
|
23
|
+
- [Matchers: e.g., "toBe, toEqual, toThrow"]
|
|
24
|
+
|
|
25
|
+
**Run Commands:**
|
|
26
|
+
```bash
|
|
27
|
+
[e.g., "npm test" or "npm run test"] # Run all tests
|
|
28
|
+
[e.g., "npm test -- --watch"] # Watch mode
|
|
29
|
+
[e.g., "npm test -- path/to/file.test.ts"] # Single file
|
|
30
|
+
[e.g., "npm run test:coverage"] # Coverage report
|
|
31
|
+
```
|
|
32
|
+
</test-framework>
|
|
33
|
+
|
|
34
|
+
<test-file-organization>
|
|
35
|
+
## Test File Organization
|
|
36
|
+
|
|
37
|
+
**Location:**
|
|
38
|
+
- [Pattern: e.g., "*.test.ts alongside source files"]
|
|
39
|
+
- [Alternative: e.g., "__tests__/ directory" or "separate tests/ tree"]
|
|
40
|
+
|
|
41
|
+
**Naming:**
|
|
42
|
+
- [Unit tests: e.g., "module-name.test.ts"]
|
|
43
|
+
- [Integration: e.g., "feature-name.integration.test.ts"]
|
|
44
|
+
- [E2E: e.g., "user-flow.e2e.test.ts"]
|
|
45
|
+
|
|
46
|
+
**Structure:**
|
|
47
|
+
```
|
|
48
|
+
[Show actual directory pattern, e.g.:
|
|
49
|
+
src/
|
|
50
|
+
lib/
|
|
51
|
+
utils.ts
|
|
52
|
+
utils.test.ts
|
|
53
|
+
services/
|
|
54
|
+
user-service.ts
|
|
55
|
+
user-service.test.ts
|
|
56
|
+
]
|
|
57
|
+
```
|
|
58
|
+
</test-file-organization>
|
|
59
|
+
|
|
60
|
+
<test-structure>
|
|
61
|
+
## Test Structure
|
|
62
|
+
|
|
63
|
+
**Suite Organization:**
|
|
64
|
+
```typescript
|
|
65
|
+
[Show actual pattern used, e.g.:
|
|
66
|
+
|
|
67
|
+
describe('ModuleName', () => {
|
|
68
|
+
describe('functionName', () => {
|
|
69
|
+
it('should handle success case', () => {
|
|
70
|
+
// arrange
|
|
71
|
+
// act
|
|
72
|
+
// assert
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
it('should handle error case', () => {
|
|
76
|
+
// test code
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
]
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**Patterns:**
|
|
84
|
+
- [Setup: e.g., "beforeEach for shared setup, avoid beforeAll"]
|
|
85
|
+
- [Teardown: e.g., "afterEach to clean up, restore mocks"]
|
|
86
|
+
- [Structure: e.g., "arrange/act/assert pattern required"]
|
|
87
|
+
</test-structure>
|
|
88
|
+
|
|
89
|
+
<mocking>
|
|
90
|
+
## Mocking
|
|
91
|
+
|
|
92
|
+
**Framework:**
|
|
93
|
+
- [Tool: e.g., "Jest built-in mocking", "Vitest vi", "Sinon"]
|
|
94
|
+
- [Import mocking: e.g., "vi.mock() at top of file"]
|
|
95
|
+
|
|
96
|
+
**Patterns:**
|
|
97
|
+
```typescript
|
|
98
|
+
[Show actual mocking pattern, e.g.:
|
|
99
|
+
|
|
100
|
+
// Mock external dependency
|
|
101
|
+
vi.mock('./external-service', () => ({
|
|
102
|
+
fetchData: vi.fn()
|
|
103
|
+
}));
|
|
104
|
+
|
|
105
|
+
// Mock in test
|
|
106
|
+
const mockFetch = vi.mocked(fetchData);
|
|
107
|
+
mockFetch.mockResolvedValue({ data: 'test' });
|
|
108
|
+
]
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**What to Mock:**
|
|
112
|
+
- [e.g., "External APIs, file system, database"]
|
|
113
|
+
- [e.g., "Time/dates (use vi.useFakeTimers)"]
|
|
114
|
+
- [e.g., "Network calls (use mock fetch)"]
|
|
115
|
+
|
|
116
|
+
**What NOT to Mock:**
|
|
117
|
+
- [e.g., "Pure functions, utilities"]
|
|
118
|
+
- [e.g., "Internal business logic"]
|
|
119
|
+
</mocking>
|
|
120
|
+
|
|
121
|
+
<fixtures-and-factories>
|
|
122
|
+
## Fixtures and Factories
|
|
123
|
+
|
|
124
|
+
**Test Data:**
|
|
125
|
+
```typescript
|
|
126
|
+
[Show pattern for creating test data, e.g.:
|
|
127
|
+
|
|
128
|
+
// Factory pattern
|
|
129
|
+
function createTestUser(overrides?: Partial<User>): User {
|
|
130
|
+
return {
|
|
131
|
+
id: 'test-id',
|
|
132
|
+
name: 'Test User',
|
|
133
|
+
email: 'test@example.com',
|
|
134
|
+
...overrides
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Fixture file
|
|
139
|
+
// tests/fixtures/users.ts
|
|
140
|
+
export const mockUsers = [/* ... */];
|
|
141
|
+
]
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**Location:**
|
|
145
|
+
- [e.g., "tests/fixtures/ for shared fixtures"]
|
|
146
|
+
- [e.g., "factory functions in test file or tests/factories/"]
|
|
147
|
+
</fixtures-and-factories>
|
|
148
|
+
|
|
149
|
+
<coverage>
|
|
150
|
+
## Coverage
|
|
151
|
+
|
|
152
|
+
**Requirements:**
|
|
153
|
+
- [Target: e.g., "80% line coverage", "no specific target"]
|
|
154
|
+
- [Enforcement: e.g., "CI blocks <80%", "coverage for awareness only"]
|
|
155
|
+
|
|
156
|
+
**Configuration:**
|
|
157
|
+
- [Tool: e.g., "built-in coverage via --coverage flag"]
|
|
158
|
+
- [Exclusions: e.g., "exclude *.test.ts, config files"]
|
|
159
|
+
|
|
160
|
+
**View Coverage:**
|
|
161
|
+
```bash
|
|
162
|
+
[e.g., "npm run test:coverage"]
|
|
163
|
+
[e.g., "open coverage/index.html"]
|
|
164
|
+
```
|
|
165
|
+
</coverage>
|
|
166
|
+
|
|
167
|
+
<test-types>
|
|
168
|
+
## Test Types
|
|
169
|
+
|
|
170
|
+
**Unit Tests:**
|
|
171
|
+
- [Scope: e.g., "test single function/class in isolation"]
|
|
172
|
+
- [Mocking: e.g., "mock all external dependencies"]
|
|
173
|
+
- [Speed: e.g., "must run in <1s per test"]
|
|
174
|
+
|
|
175
|
+
**Integration Tests:**
|
|
176
|
+
- [Scope: e.g., "test multiple modules together"]
|
|
177
|
+
- [Mocking: e.g., "mock external services, use real internal modules"]
|
|
178
|
+
- [Setup: e.g., "use test database, seed data"]
|
|
179
|
+
|
|
180
|
+
**E2E Tests:**
|
|
181
|
+
- [Framework: e.g., "Playwright for E2E"]
|
|
182
|
+
- [Scope: e.g., "test full user flows"]
|
|
183
|
+
- [Location: e.g., "e2e/ directory separate from unit tests"]
|
|
184
|
+
</test-types>
|
|
185
|
+
|
|
186
|
+
<common-patterns>
|
|
187
|
+
## Common Patterns
|
|
188
|
+
|
|
189
|
+
**Async Testing:**
|
|
190
|
+
```typescript
|
|
191
|
+
[Show pattern, e.g.:
|
|
192
|
+
|
|
193
|
+
it('should handle async operation', async () => {
|
|
194
|
+
const result = await asyncFunction();
|
|
195
|
+
expect(result).toBe('expected');
|
|
196
|
+
});
|
|
197
|
+
]
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**Error Testing:**
|
|
201
|
+
```typescript
|
|
202
|
+
[Show pattern, e.g.:
|
|
203
|
+
|
|
204
|
+
it('should throw on invalid input', () => {
|
|
205
|
+
expect(() => functionCall()).toThrow('error message');
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
// Async error
|
|
209
|
+
it('should reject on failure', async () => {
|
|
210
|
+
await expect(asyncCall()).rejects.toThrow('error message');
|
|
211
|
+
});
|
|
212
|
+
]
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
**Snapshot Testing:**
|
|
216
|
+
- [Usage: e.g., "for React components only" or "not used"]
|
|
217
|
+
- [Location: e.g., "__snapshots__/ directory"]
|
|
218
|
+
</common-patterns>
|
|
219
|
+
</template>
|
|
220
|
+
|
|
221
|
+
<guidelines>
|
|
222
|
+
|
|
223
|
+
**What belongs in testing-framework.md:**
|
|
224
|
+
- Test framework and runner configuration
|
|
225
|
+
- Test file location and naming patterns
|
|
226
|
+
- Test structure (describe/it, beforeEach patterns)
|
|
227
|
+
- Mocking approach and examples
|
|
228
|
+
- Fixture/factory patterns
|
|
229
|
+
- Coverage requirements
|
|
230
|
+
- How to run tests (commands)
|
|
231
|
+
- Common testing patterns in actual code
|
|
232
|
+
|
|
233
|
+
**What does NOT belong here:**
|
|
234
|
+
- Specific test cases (defer to actual test files)
|
|
235
|
+
- Technology choices (that's system-architecture.md)
|
|
236
|
+
- CI/CD setup (that's deployment docs)
|
|
237
|
+
|
|
238
|
+
**When filling this template:**
|
|
239
|
+
- Check package.json scripts for test commands
|
|
240
|
+
- Find test config file (jest.config.js, vitest.config.ts)
|
|
241
|
+
- Read 3-5 existing test files to identify patterns
|
|
242
|
+
- Look for test utilities in tests/ or test-utils/
|
|
243
|
+
- Check for coverage configuration
|
|
244
|
+
- Document actual patterns used, not ideal patterns
|
|
245
|
+
|
|
246
|
+
**Useful for story planning when:**
|
|
247
|
+
- Adding new features (write matching tests)
|
|
248
|
+
- Refactoring (maintain test patterns)
|
|
249
|
+
- Fixing bugs (add regression tests)
|
|
250
|
+
- Understanding verification approach
|
|
251
|
+
- Setting up test infrastructure
|
|
252
|
+
|
|
253
|
+
**Analysis approach:**
|
|
254
|
+
- Check package.json for test framework and scripts
|
|
255
|
+
- Read test config file for coverage, setup
|
|
256
|
+
- Examine test file organization (collocated vs separate)
|
|
257
|
+
- Review 5 test files for patterns (mocking, structure, assertions)
|
|
258
|
+
- Look for test utilities, fixtures, factories
|
|
259
|
+
- Note any test types (unit, integration, e2e)
|
|
260
|
+
- Document commands for running tests
|
|
261
|
+
|
|
262
|
+
</guidelines>
|
|
263
|
+
|
|
264
|
+
<evolution>
|
|
265
|
+
|
|
266
|
+
Update when testing patterns or framework changes.
|
|
267
|
+
|
|
268
|
+
**Update triggers:**
|
|
269
|
+
- Test framework or runner changed (e.g., Jest to Vitest)
|
|
270
|
+
- Mocking approach changed
|
|
271
|
+
- New test type introduced (e.g., adding E2E tests)
|
|
272
|
+
- Coverage requirements changed
|
|
273
|
+
- Test file organization restructured
|
|
274
|
+
- New test utilities or factories added
|
|
275
|
+
|
|
276
|
+
**NOT an update trigger:**
|
|
277
|
+
- New test files added following existing patterns
|
|
278
|
+
- Individual test case additions
|
|
279
|
+
- Bug fixes in test code
|
|
280
|
+
|
|
281
|
+
</evolution>
|
|
282
|
+
|
|
283
|
+
</testing-framework>
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
The contents of this file are taken from GSD project
|
|
3
|
+
All credits go to: https://github.com/gsd-build/get-shit-done
|
|
4
|
+
-->
|
|
5
|
+
<questioning-guide>
|
|
6
|
+
<purpose>Help the user discover and articulate what they want to build by doing collaborative thinking.</purpose>
|
|
7
|
+
|
|
8
|
+
<philosophy>
|
|
9
|
+
**You are a thinking partner, not an interviewer.**
|
|
10
|
+
The user often starts from a rough and fuzzy idea. Your job is to help them sharpen it.
|
|
11
|
+
Ask questions that make them think "oh, I hadn't considered that" or "yes, that's exactly what I mean."
|
|
12
|
+
Don't interrogate. Collaborate. Don't follow a script. Follow the thread.
|
|
13
|
+
</philosophy>
|
|
14
|
+
|
|
15
|
+
<how-to-question>
|
|
16
|
+
**Start open.** Let them dump their mental model. Don't interrupt with structure.
|
|
17
|
+
**Follow energy.** Whatever they emphasized, dig into that. What excited them? What problem sparked this?
|
|
18
|
+
**Challenge vagueness.** Never accept fuzzy answers. "Good" means what? "Users" means who? "Simple" means how?
|
|
19
|
+
**Make the abstract concrete.** "Walk me through using this." "What does that actually look like?"
|
|
20
|
+
**Clarify ambiguity.** "When you say Z, do you mean A or B?" "You mentioned X — tell me more."
|
|
21
|
+
**Know when to stop.** When you understand what they want, why they want it, who it's for, and what done looks like — offer to proceed.
|
|
22
|
+
</how-to-question>
|
|
23
|
+
|
|
24
|
+
<question-types>
|
|
25
|
+
Use these as inspiration, not a checklist. Pick what's relevant to the thread.
|
|
26
|
+
|
|
27
|
+
**Motivation — why this exists:**
|
|
28
|
+
- "What prompted this?"
|
|
29
|
+
- "What are you doing today that this replaces?"
|
|
30
|
+
- "What would you do if this existed?"
|
|
31
|
+
|
|
32
|
+
**Concreteness — what it actually is:**
|
|
33
|
+
- "Walk me through using this"
|
|
34
|
+
- "You said X — what does that actually look like?"
|
|
35
|
+
- "Give me an example"
|
|
36
|
+
|
|
37
|
+
**Clarification — what they mean:**
|
|
38
|
+
- "When you say Z, do you mean A or B?"
|
|
39
|
+
- "You mentioned X — tell me more about that"
|
|
40
|
+
|
|
41
|
+
**Success — how you'll know it's working:**
|
|
42
|
+
- "How will you know this is working?"
|
|
43
|
+
- "What does done look like?"
|
|
44
|
+
</question-types>
|
|
45
|
+
|
|
46
|
+
<using-askuserquestion-tool>
|
|
47
|
+
|
|
48
|
+
Use AskUserQuestion to help users think by presenting concrete options to react to.
|
|
49
|
+
|
|
50
|
+
**Good options:**
|
|
51
|
+
- Interpretations of what they might mean
|
|
52
|
+
- Specific examples to confirm or deny
|
|
53
|
+
- Concrete choices that reveal priorities
|
|
54
|
+
|
|
55
|
+
**Bad options:**
|
|
56
|
+
- Generic categories ("Technical", "Business", "Other")
|
|
57
|
+
- Leading options that presume an answer
|
|
58
|
+
- Too many options (2-4 is ideal)
|
|
59
|
+
|
|
60
|
+
**Example — vague answer:**
|
|
61
|
+
User says "it should be fast"
|
|
62
|
+
|
|
63
|
+
- header: "Fast"
|
|
64
|
+
- question: "Fast how?"
|
|
65
|
+
- options: ["Sub-second response", "Handles large datasets", "Quick to build", "Let me explain"]
|
|
66
|
+
|
|
67
|
+
**Example — following a thread:**
|
|
68
|
+
User mentions "frustrated with current tools"
|
|
69
|
+
|
|
70
|
+
- header: "Frustration"
|
|
71
|
+
- question: "What specifically frustrates you?"
|
|
72
|
+
- options: ["Too many clicks", "Missing features", "Unreliable", "Let me explain"]
|
|
73
|
+
|
|
74
|
+
</using-askuserquestion-tool>
|
|
75
|
+
|
|
76
|
+
<context-checklist>
|
|
77
|
+
Use this as a **background checklist**, not a conversation structure. Check these mentally as you go. If gaps remain, weave questions naturally.
|
|
78
|
+
|
|
79
|
+
- [ ] What they're building (concrete enough to explain to a stranger)
|
|
80
|
+
- [ ] Why it needs to exist (the problem or desire driving it)
|
|
81
|
+
- [ ] Who it's for (even if just themselves)
|
|
82
|
+
- [ ] What "done" looks like (observable outcomes)
|
|
83
|
+
|
|
84
|
+
Four things. If they volunteer more, capture it.
|
|
85
|
+
</context-checklist>
|
|
86
|
+
|
|
87
|
+
<decision-gate>
|
|
88
|
+
When you could write a clear product-vision.md, offer to proceed:
|
|
89
|
+
|
|
90
|
+
- header: "Ready?"
|
|
91
|
+
- question: "I think I understand what you're after. Ready to create product-vision.md?"
|
|
92
|
+
- options:
|
|
93
|
+
- "Create product-vision.md" — Let's move forward
|
|
94
|
+
- "Keep exploring" — I want to share more / ask me more
|
|
95
|
+
|
|
96
|
+
If "Keep exploring" — ask what they want to add or identify gaps and probe naturally.
|
|
97
|
+
|
|
98
|
+
Loop until "Create product-vision.md" selected.
|
|
99
|
+
</decision-gate>
|
|
100
|
+
|
|
101
|
+
<anti-patterns>
|
|
102
|
+
- **Checklist walking** — Going through domains regardless of what they said
|
|
103
|
+
- **Canned questions** — "What's your core value?" "What's out of scope?" regardless of context
|
|
104
|
+
- **Corporate speak** — "What are your success criteria?" "Who are your stakeholders?"
|
|
105
|
+
- **Interrogation** — Firing questions without building on answers
|
|
106
|
+
- **Rushing** — Minimizing questions to get to "the work"
|
|
107
|
+
- **Shallow acceptance** — Taking vague answers without probing
|
|
108
|
+
- **Premature constraints** — Asking about tech stack before understanding the idea
|
|
109
|
+
</anti-patterns>
|
|
110
|
+
|
|
111
|
+
</questioning-guide>
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
<ui_patterns>
|
|
2
|
+
|
|
3
|
+
# ACE UI Formatting Guide
|
|
4
|
+
|
|
5
|
+
All agent output MUST follow these patterns. Consistency is the product.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Brand Identity
|
|
10
|
+
|
|
11
|
+
- **Prefix**: `ACE` — used in all banners and headers
|
|
12
|
+
- **Separator**: `>` — routes context after prefix
|
|
13
|
+
- **Hierarchy**: `Epic > Feature > Story > Task`
|
|
14
|
+
- **Voice**: Precise, confident, structured. No fluff. No filler.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Banners
|
|
19
|
+
|
|
20
|
+
Banners frame every major output block. They signal phase transitions.
|
|
21
|
+
|
|
22
|
+
### Primary Banner (phase start/end)
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
╔══════════════════════════════════════════════════╗
|
|
26
|
+
║ ACE > Plan Project ║
|
|
27
|
+
╚══════════════════════════════════════════════════╝
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Section Banner (within a phase)
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
┌──────────────────────────────────────────────────┐
|
|
34
|
+
│ ACE > Refine Story > E1-F2-S3 │
|
|
35
|
+
└──────────────────────────────────────────────────┘
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Completion Banner
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
╔══════════════════════════════════════════════════╗
|
|
42
|
+
║ ACE > Story Verified ║
|
|
43
|
+
║ E1-F2-S3 "User can reset password" ║
|
|
44
|
+
╚══════════════════════════════════════════════════╝
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Rules
|
|
48
|
+
|
|
49
|
+
- Banner width: **exactly 52 characters** inner width
|
|
50
|
+
- Left-pad content with **2 spaces** inside the border
|
|
51
|
+
- Right-pad to fill the border width
|
|
52
|
+
- NEVER mix border styles (`═══` for primary, `───` for section)
|
|
53
|
+
- ALWAYS include the `ACE >` prefix
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Progress Indicators
|
|
58
|
+
|
|
59
|
+
### Phase Progress Bar
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
Progress [████████████░░░░░░░░] 60% (3/5 tasks)
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
- Bar width: **20 characters** fixed
|
|
66
|
+
- `█` = completed, `░` = remaining
|
|
67
|
+
- Always show percentage AND fraction
|
|
68
|
+
|
|
69
|
+
### Sprint Progress Table
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
Story Status Tasks Progress
|
|
73
|
+
───────── ────── ────── ────────
|
|
74
|
+
E1-F1-S1 done 4/4 ████ 100%
|
|
75
|
+
E1-F1-S2 active 2/6 █░░░ 33%
|
|
76
|
+
E1-F1-S3 queued 0/3 ░░░░ 0%
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Story Task Tracker
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
Tasks for E1-F2-S3:
|
|
83
|
+
────────────────────
|
|
84
|
+
[x] Set up password reset endpoint
|
|
85
|
+
[x] Create email template
|
|
86
|
+
[ ] Add rate limiting << active
|
|
87
|
+
[ ] Write integration tests
|
|
88
|
+
[ ] Update API documentation
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
- `[x]` = done, `[ ]` = pending
|
|
92
|
+
- `<< active` marker on current task
|
|
93
|
+
- Indented with **2 spaces**
|
|
94
|
+
|
|
95
|
+
### Status Symbols
|
|
96
|
+
|
|
97
|
+
| Symbol | Meaning | When to use |
|
|
98
|
+
|--------|---------------|--------------------------------|
|
|
99
|
+
| `[x]` | Done | Task/story completed |
|
|
100
|
+
| `[ ]` | Pending | Task/story not started |
|
|
101
|
+
| `[~]` | In progress | Currently executing |
|
|
102
|
+
| `[!]` | Blocked | Cannot proceed, dependency |
|
|
103
|
+
| `[?]` | Needs input | Waiting on user decision |
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Hierarchy Display
|
|
108
|
+
|
|
109
|
+
### Backlog Tree
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
E1 Platform Foundation
|
|
113
|
+
├── F1 User Authentication 3 stories
|
|
114
|
+
│ ├── S1 Sign up flow [x] done
|
|
115
|
+
│ ├── S2 Login flow [~] active
|
|
116
|
+
│ └── S3 Password reset [ ] queued
|
|
117
|
+
├── F2 Dashboard 2 stories
|
|
118
|
+
│ ├── S1 Layout scaffolding [ ] queued
|
|
119
|
+
│ └── S2 Data widgets [ ] queued
|
|
120
|
+
└── F3 Settings Page 0 stories
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
- Tree characters: `├──`, `└──`, `│`
|
|
124
|
+
- ID left-aligned, name after **2 spaces**, metadata right-aligned
|
|
125
|
+
- Leaf nodes show status symbol
|
|
126
|
+
|
|
127
|
+
### Breadcrumb Navigation
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
ACE > E1 Platform Foundation > F2 Dashboard > S1 Layout scaffolding
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
- Always show full path from Epic down
|
|
134
|
+
- Separate levels with ` > `
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Content Blocks
|
|
139
|
+
|
|
140
|
+
### Info Block
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
i Story E1-F1-S2 has 6 tasks estimated at ~4 hours total.
|
|
144
|
+
Prerequisites: E1-F1-S1 must be complete.
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
- Prefix: `i` (lowercase, 2-space indent)
|
|
148
|
+
- Continuation lines aligned under text, not under prefix
|
|
149
|
+
|
|
150
|
+
### Warning Block
|
|
151
|
+
|
|
152
|
+
```
|
|
153
|
+
! Story E1-F2-S3 has no acceptance criteria defined.
|
|
154
|
+
Run /ace:refine-story E1-F2-S3 before executing.
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
- Prefix: `!`
|
|
158
|
+
- Include actionable next step
|
|
159
|
+
|
|
160
|
+
### Success Block
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
+ All 4 tasks completed. Story E1-F1-S1 is done.
|
|
164
|
+
Commit: a3f7c2d "feat(auth): implement sign-up flow"
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
- Prefix: `+`
|
|
168
|
+
- Include commit hash when relevant
|
|
169
|
+
|
|
170
|
+
### Error Block
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
x Task 3 failed: test suite has 2 failing assertions.
|
|
174
|
+
See output above. Fix and re-run /ace:execute-story E1-F1-S2.
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
- Prefix: `x`
|
|
178
|
+
- Always include recovery instruction
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Decision Points
|
|
183
|
+
|
|
184
|
+
When presenting choices to the user:
|
|
185
|
+
|
|
186
|
+
```
|
|
187
|
+
┌──────────────────────────────────────────────────┐
|
|
188
|
+
│ ACE > Decision Required │
|
|
189
|
+
└──────────────────────────────────────────────────┘
|
|
190
|
+
|
|
191
|
+
This feature has two possible approaches:
|
|
192
|
+
|
|
193
|
+
[A] API-first — Build endpoints, then UI
|
|
194
|
+
Faster backend iteration, frontend blocked initially.
|
|
195
|
+
|
|
196
|
+
[B] Vertical slice — Build one flow end-to-end
|
|
197
|
+
Slower start, but validates assumptions early.
|
|
198
|
+
|
|
199
|
+
Recommendation: [B] for new domains, [A] for well-understood ones.
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
- Options labeled `[A]`, `[B]`, `[C]` — never more than 4
|
|
203
|
+
- Each option: label + short name + description on next line
|
|
204
|
+
- Recommendation line at the end if applicable
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## Transitions & Flow
|
|
209
|
+
|
|
210
|
+
### Next Action Block
|
|
211
|
+
|
|
212
|
+
Every phase completion MUST end with a "Next" block:
|
|
213
|
+
|
|
214
|
+
```
|
|
215
|
+
Next > /ace:plan-feature E1-F1
|
|
216
|
+
Break this epic into features and stories.
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
- Format: `Next >` followed by the command
|
|
220
|
+
- Second line: brief description of what it does
|
|
221
|
+
- This is MANDATORY after every completion
|
|
222
|
+
|
|
223
|
+
### Phase Transition
|
|
224
|
+
|
|
225
|
+
```
|
|
226
|
+
╔══════════════════════════════════════════════════╗
|
|
227
|
+
║ ACE > Story Refined ║
|
|
228
|
+
║ E1-F1-S2 ready for execution ║
|
|
229
|
+
╚══════════════════════════════════════════════════╝
|
|
230
|
+
|
|
231
|
+
Summary:
|
|
232
|
+
────────
|
|
233
|
+
6 tasks defined, all acceptance criteria mapped.
|
|
234
|
+
Estimated effort: ~4 hours.
|
|
235
|
+
|
|
236
|
+
Next > /ace:execute-story E1-F1-S2
|
|
237
|
+
Execute this story with atomic commits.
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## Commit Messages
|
|
243
|
+
|
|
244
|
+
ACE enforces conventional commits tied to the hierarchy:
|
|
245
|
+
|
|
246
|
+
```
|
|
247
|
+
feat(auth): implement email verification flow
|
|
248
|
+
|
|
249
|
+
Story: E1-F1-S2
|
|
250
|
+
Task: 3/6 — Add verification endpoint
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
- First line: conventional commit format
|
|
254
|
+
- Blank line, then `Story:` and `Task:` metadata
|
|
255
|
+
- Keep first line under 72 characters
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
## Spacing & Indentation Rules
|
|
260
|
+
|
|
261
|
+
| Element | Indentation |
|
|
262
|
+
|----------------------|-------------|
|
|
263
|
+
| Banner content | 2 spaces |
|
|
264
|
+
| Body text | 2 spaces |
|
|
265
|
+
| Nested list items | 4 spaces |
|
|
266
|
+
| Code/command blocks | 4 spaces |
|
|
267
|
+
| Table content | 2 spaces |
|
|
268
|
+
| Continuation lines | Align under text start |
|
|
269
|
+
|
|
270
|
+
- **One blank line** between sections
|
|
271
|
+
- **Two blank lines** before a new banner
|
|
272
|
+
- **No trailing whitespace**
|
|
273
|
+
- **No more than 3 consecutive blank lines** anywhere
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
## Typography
|
|
278
|
+
|
|
279
|
+
- IDs are **always monospace-styled**: `E1`, `F2`, `S3`
|
|
280
|
+
- Commands are **always code-formatted**: `/ace:plan-story`
|
|
281
|
+
- File paths are **always code-formatted**: `.ace/backlog/E1/F1-auth.md`
|
|
282
|
+
- Emphasis for key terms: **bold** only, never *italic* in output
|
|
283
|
+
- Numbers: use digits, not words (`3 stories`, not `three stories`)
|
|
284
|
+
|
|
285
|
+
---
|
|
286
|
+
|
|
287
|
+
## Anti-Patterns
|
|
288
|
+
|
|
289
|
+
- Varying banner widths or border styles within a session
|
|
290
|
+
- Missing `ACE >` prefix in banners
|
|
291
|
+
- Random emoji in output — ACE uses **zero emoji** in structured output
|
|
292
|
+
- Skipping the `Next >` block after a phase completion
|
|
293
|
+
- Using prose paragraphs where a table or list would be clearer
|
|
294
|
+
- Inconsistent ID formatting (`e1-f1` vs `E1-F1` — always uppercase)
|
|
295
|
+
- Status text without a symbol (`done` alone — use `[x] done`)
|
|
296
|
+
- Banners for trivial messages — only use banners for phase boundaries
|
|
297
|
+
- Mixing `ACE >` with other prefix styles
|
|
298
|
+
- Omitting the hierarchy breadcrumb when context is ambiguous
|
|
299
|
+
|
|
300
|
+
</ui_patterns>
|