agile-context-engineering 0.1.0 → 0.2.1
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/templates/wiki/wiki-readme.xml +276 -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 +672 -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 +92 -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,276 @@
|
|
|
1
|
+
<wiki-readme>
|
|
2
|
+
<purpose>
|
|
3
|
+
Template for `.docs/wiki/wiki-readme.md` — the entry point and usage guide for the
|
|
4
|
+
engineering wiki. Generated once when the `.docs/wiki/` directory is first created
|
|
5
|
+
(typically by `/ace:map-system`).
|
|
6
|
+
|
|
7
|
+
Serves two audiences:
|
|
8
|
+
- **Humans** who want to understand, navigate, and contribute to the wiki
|
|
9
|
+
- **AI agents** who need to know which documents to load for a given task
|
|
10
|
+
|
|
11
|
+
This is NOT a documentation template — it is a META-DOCUMENT that describes how the
|
|
12
|
+
wiki itself works. Think of it as the README for the wiki system.
|
|
13
|
+
</purpose>
|
|
14
|
+
|
|
15
|
+
<template>
|
|
16
|
+
<header>
|
|
17
|
+
# Engineering Wiki
|
|
18
|
+
|
|
19
|
+
Living knowledge base for this codebase. Maintained by AI agents after each story
|
|
20
|
+
and by developers when making structural changes.
|
|
21
|
+
|
|
22
|
+
**For humans**: browse by subsystem, read system and pattern docs to understand how things work.
|
|
23
|
+
**For AI agents**: load the minimal set of docs needed for your current task — every token counts.
|
|
24
|
+
</header>
|
|
25
|
+
|
|
26
|
+
<directory-structure>
|
|
27
|
+
## Directory Structure
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
.docs/wiki/
|
|
31
|
+
|-- wiki-readme.md # This file — how to use the wiki
|
|
32
|
+
|-- system-wide/ # Documents that span all subsystems
|
|
33
|
+
| |-- system-structure.md # Physical layout, subsystem index, shared dirs
|
|
34
|
+
| |-- system-architecture.md # L1/L2 C4 views, core flows, tech stack
|
|
35
|
+
| |-- testing-framework.md # Test runner, patterns, conventions
|
|
36
|
+
| |-- coding-standards.md # Language and paradigm-specific rules
|
|
37
|
+
| `-- tech-debt-index.md # Roll-up of all known tech debt
|
|
38
|
+
`-- subsystems/
|
|
39
|
+
`-- [subsystem-name]/ # One folder per subsystem
|
|
40
|
+
|-- structure.md # File layout, "where to add code"
|
|
41
|
+
|-- architecture.md # L3 components, internal flows, dependencies
|
|
42
|
+
|-- systems/ # WHAT exists — domain system docs
|
|
43
|
+
| `-- [system-name].md
|
|
44
|
+
|-- patterns/ # HOW to implement — reusable structural patterns
|
|
45
|
+
| `-- [pattern-name].md
|
|
46
|
+
|-- cross-cutting/ # Shared infrastructure spanning systems
|
|
47
|
+
| `-- [concern-name].md
|
|
48
|
+
|-- guides/ # Step-by-step implementation recipes
|
|
49
|
+
| `-- [task-name].md
|
|
50
|
+
`-- decisions/ # WHY — Architecture Decision Records
|
|
51
|
+
`-- ADR-NNN-[slug].md
|
|
52
|
+
```
|
|
53
|
+
</directory-structure>
|
|
54
|
+
|
|
55
|
+
<document-types>
|
|
56
|
+
## Document Types
|
|
57
|
+
|
|
58
|
+
### System-Wide Documents
|
|
59
|
+
|
|
60
|
+
| Document | Answers | Created By |
|
|
61
|
+
|----------|---------|------------|
|
|
62
|
+
| `system-structure.md` | What subsystems exist and where do they live? | `/ace:map-system` |
|
|
63
|
+
| `system-architecture.md` | What's the system design, tech stack, and core flows? | `/ace:map-system` |
|
|
64
|
+
| `testing-framework.md` | How do we test? Runner, patterns, conventions. | `/ace:map-system` |
|
|
65
|
+
| `coding-standards.md` | What are the mandatory code quality rules? | `/ace:init-coding-standards` |
|
|
66
|
+
| `tech-debt-index.md` | What known quality issues exist across the codebase? | `/ace:map-story` (auto) |
|
|
67
|
+
|
|
68
|
+
### Subsystem Documents
|
|
69
|
+
|
|
70
|
+
| Document | Answers | Created By |
|
|
71
|
+
|----------|---------|------------|
|
|
72
|
+
| `structure.md` | Where do files live in this subsystem? Where do I add new code? | `/ace:map-subsystem` |
|
|
73
|
+
| `architecture.md` | What are the internal components, layers, and flows? | `/ace:map-subsystem` |
|
|
74
|
+
|
|
75
|
+
### Knowledge Documents (per subsystem)
|
|
76
|
+
|
|
77
|
+
| Category | Answers | When to Create |
|
|
78
|
+
|----------|---------|----------------|
|
|
79
|
+
| `systems/` | How does this domain system work RIGHT NOW? | One doc per coherent domain capability (e.g., drawing system, order processing) |
|
|
80
|
+
| `patterns/` | How do I implement using this reusable pattern? | When a structural pattern appears in 2+ implementations |
|
|
81
|
+
| `cross-cutting/` | How does this shared infrastructure work? | For concerns spanning multiple domain systems (DI, events, registry) |
|
|
82
|
+
| `guides/` | How do I perform this recurring task end-to-end? | When a task is repeated (adding a new tool, endpoint, entity) |
|
|
83
|
+
| `decisions/` | Why was this significant choice made? | When a meaningful trade-off was evaluated and decided |
|
|
84
|
+
</document-types>
|
|
85
|
+
|
|
86
|
+
<how-to-use>
|
|
87
|
+
## How to Use This Wiki
|
|
88
|
+
|
|
89
|
+
### For Humans
|
|
90
|
+
|
|
91
|
+
**Understand a subsystem:**
|
|
92
|
+
1. Read `subsystems/[name]/architecture.md` — components, layers, internal flows
|
|
93
|
+
2. Read relevant `systems/*.md` — domain systems you care about
|
|
94
|
+
3. Follow cross-references to patterns and cross-cutting concerns
|
|
95
|
+
|
|
96
|
+
**Implement a new feature:**
|
|
97
|
+
1. Read `system-wide/coding-standards.md` — mandatory rules
|
|
98
|
+
2. Read the subsystem's `structure.md` — where to add files
|
|
99
|
+
3. Check `guides/` — there may be a step-by-step recipe for your task
|
|
100
|
+
4. Read relevant `patterns/` — follow established structural patterns
|
|
101
|
+
5. Check `decisions/` — respect past architectural decisions
|
|
102
|
+
|
|
103
|
+
**Debug or investigate:**
|
|
104
|
+
1. Start with the relevant `systems/*.md` — it has entry points, flows, and components
|
|
105
|
+
2. Follow the sequence diagrams to trace data flow
|
|
106
|
+
3. Check `cross-cutting/` for shared infrastructure behavior
|
|
107
|
+
|
|
108
|
+
### For AI Agents
|
|
109
|
+
|
|
110
|
+
**Context loading strategy:**
|
|
111
|
+
- ALWAYS load system-wide docs first: `system-structure.md`, `system-architecture.md`, `coding-standards.md`, `testing-framework.md`
|
|
112
|
+
- Then load subsystem docs for the subsystem(s) you are modifying
|
|
113
|
+
- Load ONLY the `systems/`, `patterns/`, `cross-cutting/`, and `guides/` docs relevant to your task
|
|
114
|
+
- Check `decisions/` for ADRs that constrain your design choices
|
|
115
|
+
- Every token in your context window costs reasoning capacity — load less, reason better
|
|
116
|
+
|
|
117
|
+
**Finding the right docs:**
|
|
118
|
+
- Story files include a `## Relevant Wiki` section with curated doc references
|
|
119
|
+
- Each doc cross-references related docs via markdown links — follow them as needed
|
|
120
|
+
- `structure.md` → where files live; `architecture.md` → how things connect
|
|
121
|
+
- `systems/` → domain behavior; `patterns/` → structural recipes; `guides/` → task recipes
|
|
122
|
+
</how-to-use>
|
|
123
|
+
|
|
124
|
+
<how-to-create>
|
|
125
|
+
## Creating New Wiki Documents
|
|
126
|
+
|
|
127
|
+
Wiki documents are primarily created and updated by AI agents (ace-wiki-mapper) through:
|
|
128
|
+
- `/ace:map-system` — system-wide documents
|
|
129
|
+
- `/ace:map-subsystem` — subsystem structure, architecture, and knowledge docs
|
|
130
|
+
- `/ace:map-story` — updates knowledge docs after story implementation
|
|
131
|
+
|
|
132
|
+
### Manual Creation Guidelines
|
|
133
|
+
|
|
134
|
+
If creating a document manually, follow these rules:
|
|
135
|
+
|
|
136
|
+
**Naming:**
|
|
137
|
+
- Use kebab-case for all file names: `drawing-system.md`, `repository-pattern.md`
|
|
138
|
+
- Systems: name after the domain capability — `drawing-system.md`, `order-processing.md`
|
|
139
|
+
- Patterns: name after the pattern — `template-method-pattern.md`, `repository-pattern.md`
|
|
140
|
+
- Cross-cutting: name after the concern — `dependency-injection.md`, `event-system.md`
|
|
141
|
+
- Guides: name after the task — `adding-drawing-tool.md`, `adding-crud-endpoint.md`
|
|
142
|
+
- Decisions: `ADR-NNN-kebab-slug.md` — sequential numbering within the subsystem
|
|
143
|
+
|
|
144
|
+
**Content rules:**
|
|
145
|
+
- EXTREMELY SUCCINCT — every word must add value
|
|
146
|
+
- Bullet points over paragraphs
|
|
147
|
+
- Code references: `file-path:ClassName.methodName` — never line numbers
|
|
148
|
+
- All architecture diagrams MUST be mermaid (flowchart, classDiagram, sequenceDiagram)
|
|
149
|
+
- File trees: ASCII only (`|--` and backtick for last item)
|
|
150
|
+
- Inline code ONLY for interface/type contracts
|
|
151
|
+
- Cross-reference related docs with markdown links
|
|
152
|
+
- Every `systems/*.md` MUST have at least one mermaid sequenceDiagram
|
|
153
|
+
|
|
154
|
+
**Topic-scoped, not story-scoped:**
|
|
155
|
+
- Documents describe a CONCERN, not a story or sprint
|
|
156
|
+
- "How does the drawing system work?" — good
|
|
157
|
+
- "What story #19 implemented" — wrong (that goes in `.ace/artifacts/`)
|
|
158
|
+
|
|
159
|
+
**Create vs update decision:**
|
|
160
|
+
1. Does an existing doc already cover this topic? → UPDATE it
|
|
161
|
+
2. Could this be a new section in an existing doc? → Add the section
|
|
162
|
+
3. Any overlap with existing docs? → Merge into the existing doc
|
|
163
|
+
4. Genuinely new topic with no overlap? → CREATE a new doc
|
|
164
|
+
</how-to-create>
|
|
165
|
+
|
|
166
|
+
<keeping-current>
|
|
167
|
+
## Keeping the Wiki Current
|
|
168
|
+
|
|
169
|
+
### Automatic Updates
|
|
170
|
+
|
|
171
|
+
After each story implementation, `/ace:map-story` analyzes git changes and updates
|
|
172
|
+
the relevant knowledge documents. This is the primary mechanism for keeping the wiki
|
|
173
|
+
current.
|
|
174
|
+
|
|
175
|
+
### Manual Update Triggers
|
|
176
|
+
|
|
177
|
+
**Update `system-structure.md` when:**
|
|
178
|
+
- New subsystem added, removed, or merged
|
|
179
|
+
- Shared directory added or removed
|
|
180
|
+
- Workspace configuration changed
|
|
181
|
+
|
|
182
|
+
**Update `system-architecture.md` when:**
|
|
183
|
+
- New subsystem or external integration added
|
|
184
|
+
- Communication pattern changed
|
|
185
|
+
- Tech stack changed
|
|
186
|
+
|
|
187
|
+
**Update `testing-framework.md` when:**
|
|
188
|
+
- Test runner or mocking approach changed
|
|
189
|
+
- Coverage requirements changed
|
|
190
|
+
|
|
191
|
+
**Update subsystem `structure.md` when:**
|
|
192
|
+
- Top-level directory added, renamed, or removed within the subsystem
|
|
193
|
+
|
|
194
|
+
**Update subsystem `architecture.md` when:**
|
|
195
|
+
- New architectural layer or component type introduced
|
|
196
|
+
- New inbound or outbound dependency added
|
|
197
|
+
|
|
198
|
+
**Update knowledge docs when:**
|
|
199
|
+
- `systems/` — new component, behavior, entry point, or integration point
|
|
200
|
+
- `patterns/` — new implementation added, pattern structure changed
|
|
201
|
+
- `cross-cutting/` — new registration, mechanism changed
|
|
202
|
+
- `guides/` — new step required, step order changed, reference implementation changed
|
|
203
|
+
- `decisions/` — NEVER edit accepted ADRs; create a new one that supersedes
|
|
204
|
+
|
|
205
|
+
### Tech Debt
|
|
206
|
+
|
|
207
|
+
Tech debt items are tracked in individual `systems/` and `cross-cutting/` docs (## Tech Debt section)
|
|
208
|
+
and rolled up in `system-wide/tech-debt-index.md`. Items are removed when fixed.
|
|
209
|
+
</keeping-current>
|
|
210
|
+
|
|
211
|
+
<subsystem-index>
|
|
212
|
+
## Subsystems
|
|
213
|
+
|
|
214
|
+
[POPULATE FROM system-structure.md — list each subsystem with link to its wiki folder]
|
|
215
|
+
|
|
216
|
+
| Subsystem | Wiki Path | Responsibility |
|
|
217
|
+
|-----------|-----------|----------------|
|
|
218
|
+
| [name] | [subsystems/name/](subsystems/name/) | [one-line responsibility] |
|
|
219
|
+
</subsystem-index>
|
|
220
|
+
</template>
|
|
221
|
+
|
|
222
|
+
<guidelines>
|
|
223
|
+
|
|
224
|
+
**This is a META-DOCUMENT, not a code documentation template.**
|
|
225
|
+
It describes the wiki system itself — its structure, conventions, and usage.
|
|
226
|
+
It does NOT contain code references, mermaid diagrams, or architectural content.
|
|
227
|
+
|
|
228
|
+
**Populating the template:**
|
|
229
|
+
- The Directory Structure section is FIXED — it describes the standard wiki layout.
|
|
230
|
+
Do NOT customize it per project. It shows the canonical structure.
|
|
231
|
+
- The Document Types tables are FIXED — they describe what each document type is.
|
|
232
|
+
- The Subsystems table at the bottom MUST be populated from `system-structure.md`
|
|
233
|
+
(the subsystem index). If `system-structure.md` doesn't exist yet, leave the table
|
|
234
|
+
with placeholder rows and a note to populate after `/ace:map-system`.
|
|
235
|
+
- All wiki paths in the Subsystems table should be relative links from the wiki root.
|
|
236
|
+
|
|
237
|
+
**Tone:**
|
|
238
|
+
- Direct and practical — this is a reference, not a tutorial
|
|
239
|
+
- Written for two audiences in parallel: humans and AI agents
|
|
240
|
+
- Short sentences, bullet points, tables over prose
|
|
241
|
+
- No filler, no motivational text, no history
|
|
242
|
+
|
|
243
|
+
**What does NOT belong here:**
|
|
244
|
+
- Actual code documentation (that lives in the wiki docs themselves)
|
|
245
|
+
- Project-specific architecture details (that's system-architecture.md)
|
|
246
|
+
- Process details about ACE workflows (that's internal to the tool)
|
|
247
|
+
- Story or feature information
|
|
248
|
+
- Revision history
|
|
249
|
+
|
|
250
|
+
</guidelines>
|
|
251
|
+
|
|
252
|
+
<evolution>
|
|
253
|
+
|
|
254
|
+
This document is MOSTLY STABLE — it describes the wiki system, which rarely changes.
|
|
255
|
+
|
|
256
|
+
**Update triggers:**
|
|
257
|
+
- New document type added to the wiki system (e.g., a new knowledge category)
|
|
258
|
+
- New subsystem mapped (update the Subsystems table)
|
|
259
|
+
- Subsystem removed or renamed (update the Subsystems table)
|
|
260
|
+
- Wiki conventions changed (naming rules, diagram rules, reference format)
|
|
261
|
+
|
|
262
|
+
**NOT an update trigger:**
|
|
263
|
+
- New documents created within existing categories
|
|
264
|
+
- Content updates to any wiki document
|
|
265
|
+
- New stories, features, or sprints
|
|
266
|
+
- Changes to ACE tool internals
|
|
267
|
+
|
|
268
|
+
**Update rules:**
|
|
269
|
+
- UPDATE the Subsystems table when subsystems are added/removed
|
|
270
|
+
- The rest of the document should rarely need changes
|
|
271
|
+
- If the wiki structure itself evolves (new folders, new doc types), update the
|
|
272
|
+
Directory Structure and Document Types sections
|
|
273
|
+
|
|
274
|
+
</evolution>
|
|
275
|
+
|
|
276
|
+
</wiki-readme>
|
|
@@ -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>
|