@leeovery/claude-technical-workflows 2.0.54 → 2.1.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/README.md +34 -7
- package/agents/implementation-task-executor.md +1 -1
- package/agents/planning-dependency-grapher.md +140 -0
- package/agents/planning-phase-designer.md +1 -1
- package/agents/planning-task-author.md +1 -1
- package/agents/planning-task-designer.md +1 -1
- package/agents/{chain-verifier.md → review-task-verifier.md} +3 -3
- package/commands/link-dependencies.md +5 -5
- package/commands/workflow/view-plan.md +5 -5
- package/package.json +1 -1
- package/skills/technical-implementation/SKILL.md +4 -2
- package/skills/technical-implementation/references/environment-setup.md +3 -3
- package/skills/technical-implementation/references/steps/task-loop.md +2 -2
- package/skills/technical-planning/SKILL.md +17 -9
- package/skills/technical-planning/references/dependencies.md +3 -3
- package/skills/technical-planning/references/output-formats/linear/about.md +48 -0
- package/skills/technical-planning/references/output-formats/linear/authoring.md +82 -0
- package/skills/technical-planning/references/output-formats/linear/graph.md +68 -0
- package/skills/technical-planning/references/output-formats/linear/reading.md +35 -0
- package/skills/technical-planning/references/output-formats/linear/updating.md +25 -0
- package/skills/technical-planning/references/output-formats/local-markdown/about.md +40 -0
- package/skills/technical-planning/references/output-formats/local-markdown/authoring.md +64 -0
- package/skills/technical-planning/references/output-formats/local-markdown/graph.md +44 -0
- package/skills/technical-planning/references/output-formats/local-markdown/reading.md +29 -0
- package/skills/technical-planning/references/output-formats/local-markdown/updating.md +22 -0
- package/skills/technical-planning/references/output-formats.md +6 -30
- package/skills/technical-planning/references/steps/analyze-task-graph.md +89 -0
- package/skills/technical-planning/references/steps/author-tasks.md +3 -3
- package/skills/technical-planning/references/steps/review-integrity.md +4 -5
- package/skills/technical-planning/references/task-design.md +10 -0
- package/skills/technical-review/SKILL.md +3 -3
- package/skills/technical-review/references/review-checklist.md +10 -10
- package/skills/technical-planning/references/output-formats/output-backlog-md.md +0 -369
- package/skills/technical-planning/references/output-formats/output-beads.md +0 -455
- package/skills/technical-planning/references/output-formats/output-linear.md +0 -328
- package/skills/technical-planning/references/output-formats/output-local-markdown.md +0 -318
|
@@ -1,328 +0,0 @@
|
|
|
1
|
-
# Output: Linear
|
|
2
|
-
|
|
3
|
-
*Output adapter for **[technical-planning](../../SKILL.md)***
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
Use this output format when you want **Linear as the source of truth** for plan management. The user can update tasks directly in Linear's UI, and implementation will query Linear for the current state.
|
|
8
|
-
|
|
9
|
-
## Setup
|
|
10
|
-
|
|
11
|
-
Requires the Linear MCP server to be configured in Claude Code.
|
|
12
|
-
|
|
13
|
-
Check if Linear MCP is available by looking for Linear tools. If not configured, inform the user that Linear MCP is required for this format.
|
|
14
|
-
|
|
15
|
-
Ask the user: **Which team should own this project?**
|
|
16
|
-
|
|
17
|
-
## Linear Structure Mapping
|
|
18
|
-
|
|
19
|
-
| Planning Concept | Linear Entity |
|
|
20
|
-
|------------------|---------------|
|
|
21
|
-
| Specification/Topic | Project |
|
|
22
|
-
| Phase | Label (e.g., `phase-1`, `phase-2`) |
|
|
23
|
-
| Task | Issue |
|
|
24
|
-
| Internal dependency | Issue blocking relationship (within project) |
|
|
25
|
-
| Cross-topic dependency | Issue blocking relationship (across projects) |
|
|
26
|
-
|
|
27
|
-
Each specification topic becomes its own Linear project. Cross-topic dependencies link issues between projects.
|
|
28
|
-
|
|
29
|
-
## Cross-Project Dependencies
|
|
30
|
-
|
|
31
|
-
Cross-topic dependencies link issues between different Linear projects (different specifications/topics). This is how you express "billing depends on authentication being complete."
|
|
32
|
-
|
|
33
|
-
### Creating Cross-Project Dependencies
|
|
34
|
-
|
|
35
|
-
Linear supports blocking relationships between issues, even across projects. Via MCP or the Linear UI:
|
|
36
|
-
|
|
37
|
-
1. Open the dependent issue (the one that's blocked)
|
|
38
|
-
2. Add a "Blocked by" relationship to the issue in the other project
|
|
39
|
-
3. Linear will show this issue as blocked until the dependency is complete
|
|
40
|
-
|
|
41
|
-
## Querying Dependencies
|
|
42
|
-
|
|
43
|
-
Use these queries to understand the dependency graph for implementation blocking and `/link-dependencies`.
|
|
44
|
-
|
|
45
|
-
### Via MCP
|
|
46
|
-
|
|
47
|
-
Query Linear for issues with blocking relationships:
|
|
48
|
-
|
|
49
|
-
```
|
|
50
|
-
# Get all issues in a project
|
|
51
|
-
linear_getIssues(projectId: "{project_id}")
|
|
52
|
-
|
|
53
|
-
# Check if an issue has blockers
|
|
54
|
-
linear_getIssue(issueId: "{issue_id}")
|
|
55
|
-
# Look for blockedByIssues in the response
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
### Check if a Dependency is Complete
|
|
59
|
-
|
|
60
|
-
Query the blocking issue and check its state:
|
|
61
|
-
- `state.type === "completed"` means the dependency is met
|
|
62
|
-
- Any other state means it's still blocking
|
|
63
|
-
|
|
64
|
-
### Find Issues Blocked by a Specific Issue
|
|
65
|
-
|
|
66
|
-
Via the Linear API or MCP, query for issues where `blockedByIssues` contains the issue ID.
|
|
67
|
-
|
|
68
|
-
## Output Process
|
|
69
|
-
|
|
70
|
-
### 1. Create Linear Project
|
|
71
|
-
|
|
72
|
-
Via MCP, create a project with:
|
|
73
|
-
|
|
74
|
-
- **Name**: Match the specification topic name
|
|
75
|
-
- **Description**: Brief summary + link to specification file
|
|
76
|
-
- **Team**: As specified by user
|
|
77
|
-
|
|
78
|
-
### 2. Create Labels for Phases
|
|
79
|
-
|
|
80
|
-
Create labels to denote phases (if they don't already exist):
|
|
81
|
-
|
|
82
|
-
- `phase-1`
|
|
83
|
-
- `phase-2`
|
|
84
|
-
- etc.
|
|
85
|
-
|
|
86
|
-
Document the phase goals and acceptance criteria in a pinned issue or the project description:
|
|
87
|
-
|
|
88
|
-
```
|
|
89
|
-
Phase 1: Core Authentication
|
|
90
|
-
Goal: Implement basic login/logout flow
|
|
91
|
-
Acceptance:
|
|
92
|
-
- [ ] User can log in with email/password
|
|
93
|
-
- [ ] Session persists across page refresh
|
|
94
|
-
- [ ] Logout clears session
|
|
95
|
-
|
|
96
|
-
Phase 2: ...
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
### 3. Create Issues for Tasks
|
|
100
|
-
|
|
101
|
-
For each task, create an issue and apply the appropriate phase label:
|
|
102
|
-
|
|
103
|
-
**Title**: Clear action statement
|
|
104
|
-
|
|
105
|
-
**Description** (use this structure):
|
|
106
|
-
```markdown
|
|
107
|
-
## Goal
|
|
108
|
-
[What this task accomplishes - one sentence]
|
|
109
|
-
|
|
110
|
-
## Implementation
|
|
111
|
-
[The "Do" from planning - specific files, methods, approach]
|
|
112
|
-
|
|
113
|
-
## Tests (Micro Acceptance)
|
|
114
|
-
- `it does expected behavior`
|
|
115
|
-
- `it handles edge case X`
|
|
116
|
-
|
|
117
|
-
## Edge Cases
|
|
118
|
-
- [Specific edge cases for this task]
|
|
119
|
-
|
|
120
|
-
## Context
|
|
121
|
-
Specification: `docs/workflow/specification/{topic}.md`
|
|
122
|
-
[Optional: link to specific decision if relevant]
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
**Labels**:
|
|
126
|
-
- **Required**: `phase-1`, `phase-2`, etc. - denotes which phase the task belongs to
|
|
127
|
-
- **Optional**:
|
|
128
|
-
- `needs-info` - task requires additional information before implementation
|
|
129
|
-
- `edge-case` - for edge case handling tasks
|
|
130
|
-
- `foundation` - for setup/infrastructure tasks
|
|
131
|
-
- `refactor` - for cleanup tasks
|
|
132
|
-
|
|
133
|
-
### Using `needs-info` Label
|
|
134
|
-
|
|
135
|
-
When creating issues, if something is unclear or missing from the specification:
|
|
136
|
-
|
|
137
|
-
1. **Create the issue anyway** - don't block planning
|
|
138
|
-
2. **Apply `needs-info` label** - makes gaps visible
|
|
139
|
-
3. **Note what's missing** in description - be specific about what needs clarifying
|
|
140
|
-
4. **Continue planning** - don't stop and circle back
|
|
141
|
-
|
|
142
|
-
This allows iterative refinement. Create all issues, identify gaps, circle back to specification if needed, then update issues with missing detail. Plans don't have to be perfect on first pass.
|
|
143
|
-
|
|
144
|
-
### 4. Create Plan Index File
|
|
145
|
-
|
|
146
|
-
Create `docs/workflow/planning/{topic}.md`:
|
|
147
|
-
|
|
148
|
-
```markdown
|
|
149
|
-
---
|
|
150
|
-
topic: {topic-name}
|
|
151
|
-
status: planning
|
|
152
|
-
format: linear
|
|
153
|
-
specification: ../specification/{topic}.md
|
|
154
|
-
cross_cutting_specs: # Omit if none
|
|
155
|
-
- ../specification/{spec}.md
|
|
156
|
-
spec_commit: {git-commit-hash}
|
|
157
|
-
plan_id: {PROJECT_NAME}
|
|
158
|
-
project_id: {ID from MCP response}
|
|
159
|
-
team: {TEAM_NAME}
|
|
160
|
-
created: YYYY-MM-DD # Use today's actual date
|
|
161
|
-
updated: YYYY-MM-DD # Use today's actual date
|
|
162
|
-
planning:
|
|
163
|
-
phase: 1
|
|
164
|
-
task: ~
|
|
165
|
-
---
|
|
166
|
-
|
|
167
|
-
# Plan: {Topic Name}
|
|
168
|
-
|
|
169
|
-
## About This Plan
|
|
170
|
-
|
|
171
|
-
This plan is managed in Linear. The source of truth for tasks and progress is the Linear project referenced above.
|
|
172
|
-
|
|
173
|
-
## How to Use
|
|
174
|
-
|
|
175
|
-
**To view/edit the plan**: Open Linear and navigate to the project.
|
|
176
|
-
|
|
177
|
-
**Implementation will**:
|
|
178
|
-
1. Read this file to find the Linear project
|
|
179
|
-
2. Check External Dependencies below
|
|
180
|
-
3. Query Linear for project issues
|
|
181
|
-
4. Work through tasks in phase order (by label)
|
|
182
|
-
5. Update issue status as tasks complete
|
|
183
|
-
|
|
184
|
-
**To add tasks**: Create issues in the Linear project. They'll be picked up automatically.
|
|
185
|
-
|
|
186
|
-
## Key Decisions
|
|
187
|
-
|
|
188
|
-
[Summary of key decisions from specification - for quick reference]
|
|
189
|
-
|
|
190
|
-
## Cross-Cutting References
|
|
191
|
-
|
|
192
|
-
Architectural decisions from cross-cutting specifications that inform this plan:
|
|
193
|
-
|
|
194
|
-
| Specification | Key Decisions | Applies To |
|
|
195
|
-
|---------------|---------------|------------|
|
|
196
|
-
| [Caching Strategy](../../specification/caching-strategy.md) | Cache API responses for 5 min | Tasks involving API calls |
|
|
197
|
-
| [Rate Limiting](../../specification/rate-limiting.md) | 100 req/min per user | User-facing endpoints |
|
|
198
|
-
|
|
199
|
-
*Remove this section if no cross-cutting specifications apply.*
|
|
200
|
-
|
|
201
|
-
## Phases
|
|
202
|
-
|
|
203
|
-
### Phase 1: {Name}
|
|
204
|
-
status: draft
|
|
205
|
-
label: phase-1
|
|
206
|
-
|
|
207
|
-
**Goal**: {What this phase accomplishes}
|
|
208
|
-
**Why this order**: {Why this comes at this position}
|
|
209
|
-
|
|
210
|
-
**Acceptance**:
|
|
211
|
-
- [ ] Criterion 1
|
|
212
|
-
- [ ] Criterion 2
|
|
213
|
-
|
|
214
|
-
#### Tasks
|
|
215
|
-
| ID | Name | Edge Cases | Status |
|
|
216
|
-
|----|------|------------|--------|
|
|
217
|
-
| {issue-id} | {Task Name} | {list} | pending |
|
|
218
|
-
|
|
219
|
-
---
|
|
220
|
-
|
|
221
|
-
### Phase 2: {Name}
|
|
222
|
-
status: draft
|
|
223
|
-
label: phase-2
|
|
224
|
-
|
|
225
|
-
...
|
|
226
|
-
|
|
227
|
-
## External Dependencies
|
|
228
|
-
|
|
229
|
-
[Dependencies on other topics - copy from specification's Dependencies section]
|
|
230
|
-
|
|
231
|
-
- {topic}: {description}
|
|
232
|
-
- {topic}: {description} → {issue-id} (resolved)
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
The External Dependencies section tracks what this plan needs from other topics. See `../dependencies.md` for the format and states (unresolved, resolved, satisfied externally).
|
|
236
|
-
|
|
237
|
-
## Frontmatter
|
|
238
|
-
|
|
239
|
-
The frontmatter contains all information needed to query Linear and tracks planning progress:
|
|
240
|
-
|
|
241
|
-
```yaml
|
|
242
|
-
---
|
|
243
|
-
topic: {topic-name}
|
|
244
|
-
status: planning | concluded
|
|
245
|
-
format: linear
|
|
246
|
-
specification: ../specification/{topic}.md
|
|
247
|
-
cross_cutting_specs: # Omit if none
|
|
248
|
-
- ../specification/{spec}.md
|
|
249
|
-
spec_commit: {git-commit-hash}
|
|
250
|
-
plan_id: USER-AUTH-FEATURE
|
|
251
|
-
project_id: abc123-def456
|
|
252
|
-
team: Engineering
|
|
253
|
-
created: YYYY-MM-DD # Use today's actual date
|
|
254
|
-
updated: YYYY-MM-DD # Use today's actual date
|
|
255
|
-
planning:
|
|
256
|
-
phase: 2
|
|
257
|
-
task: 3
|
|
258
|
-
---
|
|
259
|
-
```
|
|
260
|
-
|
|
261
|
-
## Issue Content Guidelines
|
|
262
|
-
|
|
263
|
-
Issues should be **fully self-contained**. Include all context directly so humans and agents can execute without referencing other files.
|
|
264
|
-
|
|
265
|
-
**Include in each issue**:
|
|
266
|
-
- Goal and rationale (the "why" from the specification)
|
|
267
|
-
- What to implement (specific files/methods)
|
|
268
|
-
- Test names (micro acceptance)
|
|
269
|
-
- Edge cases for this specific task
|
|
270
|
-
- Relevant decisions and constraints
|
|
271
|
-
- Any code examples for complex patterns
|
|
272
|
-
|
|
273
|
-
**Specification reference**: The specification at `docs/workflow/specification/{topic}.md` remains available for resolving ambiguity or getting additional context, but issues should contain all information needed for execution.
|
|
274
|
-
|
|
275
|
-
The goal: anyone (Claude or human) could pick up the issue and execute it without opening another document.
|
|
276
|
-
|
|
277
|
-
## Benefits
|
|
278
|
-
|
|
279
|
-
- Visual tracking with real-time progress updates
|
|
280
|
-
- Team collaboration with shared visibility
|
|
281
|
-
- Update tasks directly in Linear UI without editing markdown
|
|
282
|
-
- Integrates with existing Linear workflows
|
|
283
|
-
|
|
284
|
-
## Resulting Structure
|
|
285
|
-
|
|
286
|
-
After planning:
|
|
287
|
-
|
|
288
|
-
```
|
|
289
|
-
docs/workflow/
|
|
290
|
-
├── discussion/{topic}.md # Discussion output
|
|
291
|
-
├── specification/{topic}.md # Specification output
|
|
292
|
-
└── planning/{topic}.md # Planning output (format: linear - pointer)
|
|
293
|
-
|
|
294
|
-
Linear:
|
|
295
|
-
└── Project: {topic}
|
|
296
|
-
├── Issue: Task 1 [label: phase-1]
|
|
297
|
-
├── Issue: Task 2 [label: phase-1]
|
|
298
|
-
└── Issue: Task 3 [label: phase-2]
|
|
299
|
-
```
|
|
300
|
-
|
|
301
|
-
## Implementation
|
|
302
|
-
|
|
303
|
-
### Reading Plans
|
|
304
|
-
|
|
305
|
-
1. Extract `plan_id` (Linear project name) from frontmatter
|
|
306
|
-
2. Query Linear MCP for project issues
|
|
307
|
-
3. Filter issues by phase label (e.g., `phase-1`, `phase-2`)
|
|
308
|
-
4. Process in phase order
|
|
309
|
-
|
|
310
|
-
### Updating Progress
|
|
311
|
-
|
|
312
|
-
- Update issue status in Linear via MCP after each task
|
|
313
|
-
- User sees real-time progress in Linear UI
|
|
314
|
-
|
|
315
|
-
### Cleanup (Restart)
|
|
316
|
-
|
|
317
|
-
The official Linear MCP server does not support deletion. Ask the user to delete the Linear project manually via the Linear UI.
|
|
318
|
-
|
|
319
|
-
> "The Linear project **{project name}** needs to be deleted before restarting. Please delete it in the Linear UI (Project Settings → Delete project), then confirm so I can proceed."
|
|
320
|
-
|
|
321
|
-
**STOP.** Wait for the user to confirm.
|
|
322
|
-
|
|
323
|
-
### Fallback
|
|
324
|
-
|
|
325
|
-
If Linear MCP is unavailable:
|
|
326
|
-
- Inform the user
|
|
327
|
-
- Cannot proceed without MCP access
|
|
328
|
-
- Suggest checking MCP configuration or switching to local markdown
|
|
@@ -1,318 +0,0 @@
|
|
|
1
|
-
# Output: Local Markdown
|
|
2
|
-
|
|
3
|
-
*Output adapter for **[technical-planning](../../SKILL.md)***
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
Use this format for simple features or when you want everything in a single version-controlled file with detailed task files.
|
|
8
|
-
|
|
9
|
-
## Benefits
|
|
10
|
-
|
|
11
|
-
- No external tools or dependencies required
|
|
12
|
-
- Plan Index File provides overview; task files provide detail
|
|
13
|
-
- Human-readable and easy to edit
|
|
14
|
-
- Works offline with any text editor
|
|
15
|
-
- Simplest setup - just create markdown files
|
|
16
|
-
|
|
17
|
-
## Setup
|
|
18
|
-
|
|
19
|
-
No external tools required. This format uses plain markdown files stored in the repository.
|
|
20
|
-
|
|
21
|
-
## Output Location
|
|
22
|
-
|
|
23
|
-
```
|
|
24
|
-
docs/workflow/planning/
|
|
25
|
-
├── {topic}.md # Plan Index File
|
|
26
|
-
└── {topic}/
|
|
27
|
-
└── {task-id}.md # Task detail files
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
The Plan Index File contains phases and task tables. Each authored task gets its own file in the `{topic}/` directory. Task filename = task ID for easy lookup.
|
|
31
|
-
|
|
32
|
-
## Plan Index Template
|
|
33
|
-
|
|
34
|
-
Create `{topic}.md` with this structure:
|
|
35
|
-
|
|
36
|
-
```markdown
|
|
37
|
-
---
|
|
38
|
-
topic: {feature-name}
|
|
39
|
-
status: planning
|
|
40
|
-
format: local-markdown
|
|
41
|
-
specification: ../specification/{topic}.md
|
|
42
|
-
cross_cutting_specs: # Omit if none
|
|
43
|
-
- ../specification/{spec}.md
|
|
44
|
-
spec_commit: {git-commit-hash}
|
|
45
|
-
created: YYYY-MM-DD # Use today's actual date
|
|
46
|
-
updated: YYYY-MM-DD # Use today's actual date
|
|
47
|
-
planning:
|
|
48
|
-
phase: 1
|
|
49
|
-
task: ~
|
|
50
|
-
---
|
|
51
|
-
|
|
52
|
-
# Plan: {Feature/Project Name}
|
|
53
|
-
|
|
54
|
-
## Overview
|
|
55
|
-
|
|
56
|
-
**Goal**: What we're building and why (one sentence)
|
|
57
|
-
|
|
58
|
-
**Done when**:
|
|
59
|
-
- Measurable outcome 1
|
|
60
|
-
- Measurable outcome 2
|
|
61
|
-
|
|
62
|
-
**Key Decisions** (from specification):
|
|
63
|
-
- Decision 1: Rationale
|
|
64
|
-
- Decision 2: Rationale
|
|
65
|
-
|
|
66
|
-
## Cross-Cutting References
|
|
67
|
-
|
|
68
|
-
Architectural decisions from cross-cutting specifications that inform this plan:
|
|
69
|
-
|
|
70
|
-
| Specification | Key Decisions | Applies To |
|
|
71
|
-
|---------------|---------------|------------|
|
|
72
|
-
| [Caching Strategy](../../specification/caching-strategy.md) | Cache API responses for 5 min; use Redis | Tasks involving API calls |
|
|
73
|
-
| [Rate Limiting](../../specification/rate-limiting.md) | 100 req/min per user; sliding window | User-facing endpoints |
|
|
74
|
-
|
|
75
|
-
*Remove this section if no cross-cutting specifications apply.*
|
|
76
|
-
|
|
77
|
-
## Phases
|
|
78
|
-
|
|
79
|
-
### Phase 1: {Name}
|
|
80
|
-
status: draft
|
|
81
|
-
|
|
82
|
-
**Goal**: What this phase accomplishes
|
|
83
|
-
**Why this order**: Why this comes at this position
|
|
84
|
-
|
|
85
|
-
**Acceptance**:
|
|
86
|
-
- [ ] Criterion 1
|
|
87
|
-
- [ ] Criterion 2
|
|
88
|
-
|
|
89
|
-
#### Tasks
|
|
90
|
-
| ID | Name | Edge Cases | Status |
|
|
91
|
-
|----|------|------------|--------|
|
|
92
|
-
| {topic}-1-1 | {Task Name} | {list} | pending |
|
|
93
|
-
| {topic}-1-2 | {Task Name} | {list} | pending |
|
|
94
|
-
|
|
95
|
-
---
|
|
96
|
-
|
|
97
|
-
### Phase 2: {Name}
|
|
98
|
-
status: draft
|
|
99
|
-
|
|
100
|
-
**Goal**: What this phase accomplishes
|
|
101
|
-
**Why this order**: Why this comes at this position
|
|
102
|
-
|
|
103
|
-
**Acceptance**:
|
|
104
|
-
- [ ] Criterion 1
|
|
105
|
-
- [ ] Criterion 2
|
|
106
|
-
|
|
107
|
-
#### Tasks
|
|
108
|
-
| ID | Name | Edge Cases | Status |
|
|
109
|
-
|----|------|------------|--------|
|
|
110
|
-
|
|
111
|
-
(Continue pattern for remaining phases)
|
|
112
|
-
|
|
113
|
-
---
|
|
114
|
-
|
|
115
|
-
## External Dependencies
|
|
116
|
-
|
|
117
|
-
[Dependencies on other topics - copy from specification's Dependencies section]
|
|
118
|
-
|
|
119
|
-
- {topic}: {description}
|
|
120
|
-
- {topic}: {description} → {task-reference} (resolved)
|
|
121
|
-
- ~~{topic}: {description}~~ → satisfied externally
|
|
122
|
-
|
|
123
|
-
## Log
|
|
124
|
-
|
|
125
|
-
| Date | Change |
|
|
126
|
-
|------|--------|
|
|
127
|
-
| YYYY-MM-DD *(use today's actual date)* | Created from specification |
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
## Task File Template
|
|
131
|
-
|
|
132
|
-
Each authored task is written to `{topic}/{task-id}.md`:
|
|
133
|
-
|
|
134
|
-
```markdown
|
|
135
|
-
---
|
|
136
|
-
id: {topic}-{phase}-{seq}
|
|
137
|
-
phase: {phase-number}
|
|
138
|
-
status: pending
|
|
139
|
-
created: YYYY-MM-DD # Use today's actual date
|
|
140
|
-
---
|
|
141
|
-
|
|
142
|
-
# {Task Name}
|
|
143
|
-
|
|
144
|
-
## Goal
|
|
145
|
-
|
|
146
|
-
{What this task accomplishes and why — include rationale from specification}
|
|
147
|
-
|
|
148
|
-
## Implementation
|
|
149
|
-
|
|
150
|
-
{The "Do" — specific files, methods, approach}
|
|
151
|
-
|
|
152
|
-
## Tests
|
|
153
|
-
|
|
154
|
-
- `it does expected behavior`
|
|
155
|
-
- `it handles edge case`
|
|
156
|
-
|
|
157
|
-
## Edge Cases
|
|
158
|
-
|
|
159
|
-
{Specific edge cases for this task}
|
|
160
|
-
|
|
161
|
-
## Acceptance Criteria
|
|
162
|
-
|
|
163
|
-
- [ ] Test written and failing
|
|
164
|
-
- [ ] Implementation complete
|
|
165
|
-
- [ ] Tests passing
|
|
166
|
-
- [ ] Committed
|
|
167
|
-
|
|
168
|
-
## Context
|
|
169
|
-
|
|
170
|
-
{Relevant decisions and constraints from specification}
|
|
171
|
-
|
|
172
|
-
Specification reference: `docs/workflow/specification/{topic}.md` (for ambiguity resolution)
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
## Cross-Topic Dependencies
|
|
176
|
-
|
|
177
|
-
Cross-topic dependencies link tasks between different plan files. This is how you express "this feature depends on the billing system being implemented."
|
|
178
|
-
|
|
179
|
-
### In the External Dependencies Section
|
|
180
|
-
|
|
181
|
-
Use the format `{topic}: {description} → {task-id}` where task-id points to a specific task:
|
|
182
|
-
|
|
183
|
-
```markdown
|
|
184
|
-
## External Dependencies
|
|
185
|
-
|
|
186
|
-
- billing-system: Invoice generation → billing-1-2 (resolved)
|
|
187
|
-
- authentication: User context → auth-2-1 (resolved)
|
|
188
|
-
- payment-gateway: Payment processing (unresolved - not yet planned)
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
### Task References
|
|
192
|
-
|
|
193
|
-
For local markdown plans, reference tasks using the task ID (e.g., `billing-1-2`). The task file is at `{topic}/{task-id}.md`.
|
|
194
|
-
|
|
195
|
-
## Querying Dependencies
|
|
196
|
-
|
|
197
|
-
Use these queries to understand the dependency graph for implementation blocking and `/link-dependencies`.
|
|
198
|
-
|
|
199
|
-
### Find Plans With External Dependencies
|
|
200
|
-
|
|
201
|
-
```bash
|
|
202
|
-
# Find all plans with external dependencies
|
|
203
|
-
grep -l "## External Dependencies" docs/workflow/planning/*.md
|
|
204
|
-
|
|
205
|
-
# Find unresolved dependencies (no arrow →)
|
|
206
|
-
grep -A 10 "## External Dependencies" docs/workflow/planning/*.md | grep "^- " | grep -v "→"
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
### Find Dependencies on a Specific Topic
|
|
210
|
-
|
|
211
|
-
```bash
|
|
212
|
-
# Find plans that depend on billing-system
|
|
213
|
-
grep -l "billing-system:" docs/workflow/planning/*.md
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
### Check if a Task Exists
|
|
217
|
-
|
|
218
|
-
```bash
|
|
219
|
-
# Check if task file exists
|
|
220
|
-
ls docs/workflow/planning/billing-system/billing-1-2.md
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
### Check if a Task is Complete
|
|
224
|
-
|
|
225
|
-
Read the task file and check the status in frontmatter:
|
|
226
|
-
|
|
227
|
-
```bash
|
|
228
|
-
# Check task status
|
|
229
|
-
grep "status:" docs/workflow/planning/billing-system/billing-1-2.md
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
## Frontmatter
|
|
233
|
-
|
|
234
|
-
Plan Index Files use YAML frontmatter for metadata:
|
|
235
|
-
|
|
236
|
-
```yaml
|
|
237
|
-
---
|
|
238
|
-
topic: {feature-name} # Matches filename (without .md)
|
|
239
|
-
status: planning | concluded # Planning status
|
|
240
|
-
format: local-markdown # Output format used
|
|
241
|
-
specification: ../specification/{topic}.md
|
|
242
|
-
cross_cutting_specs: # Omit if none
|
|
243
|
-
- ../specification/{spec}.md
|
|
244
|
-
spec_commit: {git-commit-hash} # Git commit when planning started
|
|
245
|
-
created: YYYY-MM-DD # Use today's actual date
|
|
246
|
-
updated: YYYY-MM-DD # Use today's actual date
|
|
247
|
-
planning:
|
|
248
|
-
phase: 2
|
|
249
|
-
task: 3
|
|
250
|
-
---
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
The `planning:` block tracks current progress position. It persists after the plan is concluded — `status:` indicates whether the plan is active or concluded.
|
|
254
|
-
|
|
255
|
-
## Flagging Incomplete Tasks
|
|
256
|
-
|
|
257
|
-
When information is missing, mark in the task table:
|
|
258
|
-
|
|
259
|
-
```markdown
|
|
260
|
-
| ID | Name | Edge Cases | Status |
|
|
261
|
-
|----|------|------------|--------|
|
|
262
|
-
| auth-1-3 | Configure rate limiting | [needs-info] threshold, per-user vs per-IP | pending |
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
And in the task file, add a "Needs Clarification" section:
|
|
266
|
-
|
|
267
|
-
```markdown
|
|
268
|
-
## Needs Clarification
|
|
269
|
-
|
|
270
|
-
- What's the rate limit threshold?
|
|
271
|
-
- Per-user or per-IP?
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
## Resulting Structure
|
|
275
|
-
|
|
276
|
-
After planning:
|
|
277
|
-
|
|
278
|
-
```
|
|
279
|
-
docs/workflow/
|
|
280
|
-
├── discussion/{topic}.md # Discussion output
|
|
281
|
-
├── specification/{topic}.md # Specification output
|
|
282
|
-
└── planning/
|
|
283
|
-
├── {topic}.md # Plan Index File (format: local-markdown)
|
|
284
|
-
└── {topic}/
|
|
285
|
-
├── {topic}-1-1.md # Task detail files
|
|
286
|
-
├── {topic}-1-2.md
|
|
287
|
-
└── {topic}-2-1.md
|
|
288
|
-
```
|
|
289
|
-
|
|
290
|
-
## Implementation
|
|
291
|
-
|
|
292
|
-
### Reading Plans
|
|
293
|
-
|
|
294
|
-
1. Read the Plan Index File to get overview and task tables
|
|
295
|
-
2. For each task to implement, read `{topic}/{task-id}.md`
|
|
296
|
-
3. Follow phase order as written in the index
|
|
297
|
-
4. Check task status in the index table
|
|
298
|
-
|
|
299
|
-
### Updating Progress
|
|
300
|
-
|
|
301
|
-
- Update task file frontmatter `status: completed` when done
|
|
302
|
-
- Update the task table in the Plan Index File
|
|
303
|
-
- Check off phase acceptance criteria when all phase tasks complete
|
|
304
|
-
|
|
305
|
-
### Authoring Tasks (During Planning)
|
|
306
|
-
|
|
307
|
-
When a task is approved:
|
|
308
|
-
1. Create `{topic}/{task-id}.md` with the task content
|
|
309
|
-
2. Update the task table: set `status: authored`
|
|
310
|
-
3. Update the `planning:` block in frontmatter
|
|
311
|
-
|
|
312
|
-
### Cleanup (Restart)
|
|
313
|
-
|
|
314
|
-
Delete the task detail directory for this topic:
|
|
315
|
-
|
|
316
|
-
```bash
|
|
317
|
-
rm -rf docs/workflow/planning/{topic}/
|
|
318
|
-
```
|