@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
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Linear: Task Graph
|
|
2
|
+
|
|
3
|
+
Linear natively supports both priority levels and blocking relationships between issues. Both are used to determine execution order.
|
|
4
|
+
|
|
5
|
+
This file is used by the graphing agent after all tasks have been authored. The agent receives the complete plan and establishes priority and dependencies across tasks.
|
|
6
|
+
|
|
7
|
+
## Priority
|
|
8
|
+
|
|
9
|
+
Linear uses fixed numeric priority values (0–4). The API normalises these to the workspace's display labels.
|
|
10
|
+
|
|
11
|
+
| Value | Level |
|
|
12
|
+
|-------|-------|
|
|
13
|
+
| `1` | Urgent |
|
|
14
|
+
| `2` | High |
|
|
15
|
+
| `3` | Medium |
|
|
16
|
+
| `4` | Low |
|
|
17
|
+
| `0` | No priority |
|
|
18
|
+
|
|
19
|
+
Lower number = higher priority. `0` means unset.
|
|
20
|
+
|
|
21
|
+
### Setting Priority
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
linear_updateIssue(
|
|
25
|
+
issueId: "{issue_id}",
|
|
26
|
+
priority: {priority_level}
|
|
27
|
+
)
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### Removing Priority
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
linear_updateIssue(
|
|
34
|
+
issueId: "{issue_id}",
|
|
35
|
+
priority: 0
|
|
36
|
+
)
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Dependencies
|
|
40
|
+
|
|
41
|
+
### Adding a Dependency
|
|
42
|
+
|
|
43
|
+
To declare that one task depends on another (is blocked by it):
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
linear_createIssueRelation(
|
|
47
|
+
issueId: "{dependent_issue_id}",
|
|
48
|
+
relatedIssueId: "{blocking_issue_id}",
|
|
49
|
+
type: "blocks"
|
|
50
|
+
)
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
A task can have multiple dependencies. Call `linear_createIssueRelation` for each one.
|
|
54
|
+
|
|
55
|
+
### Removing a Dependency
|
|
56
|
+
|
|
57
|
+
Delete the issue relation via MCP:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
linear_deleteIssueRelation(issueRelationId: "{relation_id}")
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
To find the relation ID, query the issue's relations first:
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
linear_getIssue(issueId: "{issue_id}")
|
|
67
|
+
# Look for the relation in the issue's relations list
|
|
68
|
+
```
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Linear: Reading
|
|
2
|
+
|
|
3
|
+
## Listing Tasks
|
|
4
|
+
|
|
5
|
+
To retrieve all tasks for a plan:
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
linear_getIssues(projectId: "{project_id}")
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Each issue in the response includes: id, title, state (status), priority, labels (phase grouping), and blocking relationships (`blockedByIssues`, `blockingIssues`).
|
|
12
|
+
|
|
13
|
+
Use label filters to narrow by phase, or priority/state filters to scope the query further — Linear's API supports these natively.
|
|
14
|
+
|
|
15
|
+
## Extracting a Task
|
|
16
|
+
|
|
17
|
+
Query Linear MCP for the issue by ID:
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
linear_getIssue(issueId: "{issue_id}")
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
The response includes title, description, status, priority, labels, and blocking relationships.
|
|
24
|
+
|
|
25
|
+
## Next Available Task
|
|
26
|
+
|
|
27
|
+
To find the next task to implement:
|
|
28
|
+
|
|
29
|
+
1. Query Linear MCP for project issues: `linear_getIssues(projectId: "{project_id}")`
|
|
30
|
+
2. Filter to issues whose state is not "completed" or "cancelled"
|
|
31
|
+
3. Exclude issues where any `blockedByIssues` entry has a state other than `completed`
|
|
32
|
+
4. Filter by phase label — complete all `phase-1` issues before `phase-2`
|
|
33
|
+
5. Within a phase, order by priority (Urgent > High > Medium > Low)
|
|
34
|
+
6. The first match is the next task
|
|
35
|
+
7. If no incomplete issues remain, all tasks are complete.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Linear: Updating
|
|
2
|
+
|
|
3
|
+
## Status Transitions
|
|
4
|
+
|
|
5
|
+
Update the issue state in Linear via MCP:
|
|
6
|
+
|
|
7
|
+
| Transition | How |
|
|
8
|
+
|------------|-----|
|
|
9
|
+
| Complete | Set state to the team's "Done" workflow state |
|
|
10
|
+
| Skipped | Set state to "Cancelled" + add comment explaining why |
|
|
11
|
+
| Cancelled | Set state to "Cancelled" |
|
|
12
|
+
| In Progress | Set state to "In Progress" |
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
linear_updateIssue(issueId: "{id}", stateId: "{state_id}")
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Updating Task Content
|
|
19
|
+
|
|
20
|
+
Update issue properties via MCP:
|
|
21
|
+
|
|
22
|
+
- **Title**: `linear_updateIssue(issueId: "{id}", title: "{new title}")`
|
|
23
|
+
- **Description**: `linear_updateIssue(issueId: "{id}", description: "{new description}")`
|
|
24
|
+
- **Priority**: `linear_updateIssue(issueId: "{id}", priority: {level})`
|
|
25
|
+
- **Labels**: `linear_updateIssue(issueId: "{id}", labelIds: ["{label_id}", ...])`
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Local Markdown
|
|
2
|
+
|
|
3
|
+
*Output format adapter for **[technical-planning](../../../SKILL.md)***
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Use this format for simple features or when you want everything in version-controlled markdown files.
|
|
8
|
+
|
|
9
|
+
## Benefits
|
|
10
|
+
|
|
11
|
+
- No external tools or dependencies required
|
|
12
|
+
- Human-readable and easy to edit
|
|
13
|
+
- Works offline with any text editor
|
|
14
|
+
- Simplest setup — just create markdown files
|
|
15
|
+
|
|
16
|
+
## Setup
|
|
17
|
+
|
|
18
|
+
No external tools required. This format uses plain markdown files stored in the repository.
|
|
19
|
+
|
|
20
|
+
## Structure Mapping
|
|
21
|
+
|
|
22
|
+
| Concept | Local Markdown Entity |
|
|
23
|
+
|---------|-----------------------|
|
|
24
|
+
| Topic | Directory (`docs/workflow/planning/{topic}/`) |
|
|
25
|
+
| Phase | Encoded in task ID (`{topic}-{phase}-{seq}`) |
|
|
26
|
+
| Task | Markdown file (`{task-id}.md`) |
|
|
27
|
+
| Dependency | Task ID reference in frontmatter (no native blocking) |
|
|
28
|
+
|
|
29
|
+
## Output Location
|
|
30
|
+
|
|
31
|
+
Tasks are stored as individual markdown files in a `{topic}/` subdirectory under the planning directory:
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
docs/workflow/planning/{topic}/
|
|
35
|
+
├── {topic}-1-1.md # Phase 1, task 1
|
|
36
|
+
├── {topic}-1-2.md # Phase 1, task 2
|
|
37
|
+
└── {topic}-2-1.md # Phase 2, task 1
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Task filename = task ID for easy lookup.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Local Markdown: Authoring
|
|
2
|
+
|
|
3
|
+
## Task Storage
|
|
4
|
+
|
|
5
|
+
Each task is written to `docs/workflow/planning/{topic}/{task-id}.md` — a markdown file with frontmatter and a description body.
|
|
6
|
+
|
|
7
|
+
```markdown
|
|
8
|
+
---
|
|
9
|
+
id: {topic}-{phase}-{seq}
|
|
10
|
+
phase: {phase-number}
|
|
11
|
+
status: pending
|
|
12
|
+
created: YYYY-MM-DD
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# {Task Title}
|
|
16
|
+
|
|
17
|
+
{Task description content}
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
**Required**: title (`# {Task Title}`) and description (body content). Everything else supports the format's storage mechanics.
|
|
21
|
+
|
|
22
|
+
## Task Properties
|
|
23
|
+
|
|
24
|
+
### Status
|
|
25
|
+
|
|
26
|
+
Stored in frontmatter. Defaults to `pending` if omitted.
|
|
27
|
+
|
|
28
|
+
| Status | Meaning |
|
|
29
|
+
|--------|---------|
|
|
30
|
+
| `pending` | Task has been authored but not started |
|
|
31
|
+
| `in-progress` | Task is currently being worked on |
|
|
32
|
+
| `completed` | Task is done |
|
|
33
|
+
| `skipped` | Task was deliberately skipped |
|
|
34
|
+
| `cancelled` | Task is no longer needed |
|
|
35
|
+
|
|
36
|
+
### Phase Grouping
|
|
37
|
+
|
|
38
|
+
Phases are encoded in the task ID: `{topic}-{phase}-{seq}`. The `phase` frontmatter field also stores the phase number for querying.
|
|
39
|
+
|
|
40
|
+
### Labels / Tags (optional)
|
|
41
|
+
|
|
42
|
+
Add a `tags` field to frontmatter if additional categorisation is needed:
|
|
43
|
+
|
|
44
|
+
```yaml
|
|
45
|
+
tags: [edge-case, needs-info]
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Flagging
|
|
49
|
+
|
|
50
|
+
In the task file, add a **Needs Clarification** section:
|
|
51
|
+
|
|
52
|
+
```markdown
|
|
53
|
+
**Needs Clarification**:
|
|
54
|
+
- What's the rate limit threshold?
|
|
55
|
+
- Per-user or per-IP?
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Cleanup (Restart)
|
|
59
|
+
|
|
60
|
+
Delete the task detail directory for this topic:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
rm -rf docs/workflow/planning/{topic}/
|
|
64
|
+
```
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Local Markdown: Task Graph
|
|
2
|
+
|
|
3
|
+
Local markdown has no native dependency or priority engine. Both are stored as frontmatter fields on task files and used during task selection to determine execution order.
|
|
4
|
+
|
|
5
|
+
This file is used by the graphing agent after all tasks have been authored. The agent receives the complete plan and establishes priority and dependencies across tasks.
|
|
6
|
+
|
|
7
|
+
## Priority
|
|
8
|
+
|
|
9
|
+
Any positive integer. Lower number = higher priority. `0` means no priority (unset).
|
|
10
|
+
|
|
11
|
+
### Setting Priority
|
|
12
|
+
|
|
13
|
+
Add or update the `priority` field in frontmatter:
|
|
14
|
+
|
|
15
|
+
```yaml
|
|
16
|
+
priority: 2
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### Removing Priority
|
|
20
|
+
|
|
21
|
+
Set `priority: 0` or remove the `priority` field from frontmatter entirely.
|
|
22
|
+
|
|
23
|
+
## Dependencies
|
|
24
|
+
|
|
25
|
+
### Adding a Dependency
|
|
26
|
+
|
|
27
|
+
Add the blocking task's ID to the `depends_on` field in the dependent task's frontmatter:
|
|
28
|
+
|
|
29
|
+
```yaml
|
|
30
|
+
depends_on:
|
|
31
|
+
- {topic}-1-2
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
A task can depend on multiple tasks:
|
|
35
|
+
|
|
36
|
+
```yaml
|
|
37
|
+
depends_on:
|
|
38
|
+
- {topic}-1-2
|
|
39
|
+
- {topic}-1-3
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Removing a Dependency
|
|
43
|
+
|
|
44
|
+
Remove the task ID from the `depends_on` field. If the field becomes empty, remove it entirely.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Local Markdown: Reading
|
|
2
|
+
|
|
3
|
+
## Listing Tasks
|
|
4
|
+
|
|
5
|
+
To retrieve all tasks for a plan:
|
|
6
|
+
|
|
7
|
+
1. List all `.md` files in `docs/workflow/planning/{topic}/` (excluding the Plan Index)
|
|
8
|
+
2. Read each file's frontmatter to extract: `id`, `phase`, `status`, `priority`, `depends_on`
|
|
9
|
+
3. Read the first heading for the task title
|
|
10
|
+
|
|
11
|
+
This provides the summary-level data needed for graphing, progress overview, or any operation that needs the full task set.
|
|
12
|
+
|
|
13
|
+
## Extracting a Task
|
|
14
|
+
|
|
15
|
+
To read a specific task, read the file at `docs/workflow/planning/{topic}/{task-id}.md`.
|
|
16
|
+
|
|
17
|
+
The task file is self-contained — frontmatter holds id, phase, and status. The body contains the title and full description.
|
|
18
|
+
|
|
19
|
+
## Next Available Task
|
|
20
|
+
|
|
21
|
+
To find the next task to implement:
|
|
22
|
+
|
|
23
|
+
1. List task files in `docs/workflow/planning/{topic}/`
|
|
24
|
+
2. Filter to tasks where `status` is `pending` or `in-progress` (or missing — treat as `pending`)
|
|
25
|
+
3. If any tasks have `depends_on`, check each referenced task's `status` — exclude the task unless all dependencies have `status: completed`
|
|
26
|
+
4. Order by phase number (from task ID: `{topic}-{phase}-{seq}`) — complete all earlier phases first
|
|
27
|
+
5. Within a phase, order by `priority` if present (lower number = higher priority), then by sequence number
|
|
28
|
+
6. The first match is the next task
|
|
29
|
+
7. If no incomplete tasks remain, all tasks are complete.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Local Markdown: Updating
|
|
2
|
+
|
|
3
|
+
## Status Transitions
|
|
4
|
+
|
|
5
|
+
Update the `status` field in the task file frontmatter at `docs/workflow/planning/{topic}/{task-id}.md`:
|
|
6
|
+
|
|
7
|
+
| Transition | Value |
|
|
8
|
+
|------------|-------|
|
|
9
|
+
| Complete | `status: completed` |
|
|
10
|
+
| Skipped | `status: skipped` |
|
|
11
|
+
| Cancelled | `status: cancelled` |
|
|
12
|
+
| In Progress | `status: in-progress` |
|
|
13
|
+
|
|
14
|
+
## Updating Task Content
|
|
15
|
+
|
|
16
|
+
Edit the task file directly:
|
|
17
|
+
|
|
18
|
+
- **Title**: Change the `# {Title}` heading in the body
|
|
19
|
+
- **Description**: Edit the body content below the title
|
|
20
|
+
- **Priority**: Set or change the `priority:` field in frontmatter
|
|
21
|
+
- **Tags**: Set or change the `tags:` field in frontmatter
|
|
22
|
+
- **Dependencies**: See [graph.md](graph.md)
|
|
@@ -4,28 +4,28 @@
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
Plans can be stored in different formats.
|
|
7
|
+
Plans can be stored in different formats. Each format is a directory of 5 files split by concern (about, authoring, reading, updating, graph).
|
|
8
8
|
|
|
9
|
-
**IMPORTANT**: Only offer formats listed below. Do not invent or suggest formats that don't have corresponding
|
|
9
|
+
**IMPORTANT**: Only offer formats listed below. Do not invent or suggest formats that don't have corresponding directories in the [output-formats/](output-formats/) directory.
|
|
10
10
|
|
|
11
11
|
## Available Formats
|
|
12
12
|
|
|
13
13
|
### Local Markdown
|
|
14
14
|
format: `local-markdown`
|
|
15
15
|
|
|
16
|
-
adapter: [
|
|
16
|
+
adapter: [local-markdown/](output-formats/local-markdown/)
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
Plan Index File with task detail stored as individual markdown files in a `{topic}/` subdirectory. No external tools or setup required.
|
|
20
20
|
|
|
21
21
|
- **Pros**: Zero setup, works offline, human-readable, easy to edit in any text editor
|
|
22
|
-
- **Cons**: No visual board, everything in
|
|
22
|
+
- **Cons**: No visual board, everything in markdown can get long for complex features, no dependency graph
|
|
23
23
|
- **Best for**: Simple features, small plans, quick iterations
|
|
24
24
|
|
|
25
25
|
### Linear
|
|
26
26
|
format: `linear`
|
|
27
27
|
|
|
28
|
-
adapter: [
|
|
28
|
+
adapter: [linear/](output-formats/linear/)
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
Tasks managed as Linear issues within a Linear project. A thin Plan Index File points to the Linear project; Linear is the source of truth.
|
|
@@ -33,27 +33,3 @@ Tasks managed as Linear issues within a Linear project. A thin Plan Index File p
|
|
|
33
33
|
- **Pros**: Visual tracking, team collaboration, real-time updates, integrates with existing Linear workflows
|
|
34
34
|
- **Cons**: Requires Linear account and MCP server, external dependency, not fully local
|
|
35
35
|
- **Best for**: Teams already using Linear, collaborative projects needing shared visibility
|
|
36
|
-
|
|
37
|
-
### Backlog.md
|
|
38
|
-
format: `backlog-md`
|
|
39
|
-
|
|
40
|
-
adapter: [output-backlog-md.md](output-formats/output-backlog-md.md)
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
Individual task files in a `backlog/` directory with a local Kanban board. Each task is a self-contained markdown file with frontmatter for status, priority, labels, and dependencies.
|
|
44
|
-
|
|
45
|
-
- **Pros**: Visual Kanban (terminal + web), individual task files for focused editing, version-controlled, MCP integration, auto-commit
|
|
46
|
-
- **Cons**: Requires npm install, flat directory (phases via labels not folders), external tool dependency
|
|
47
|
-
- **Best for**: Solo developers wanting a local Kanban board with per-task files
|
|
48
|
-
|
|
49
|
-
### Beads
|
|
50
|
-
format: `beads`
|
|
51
|
-
|
|
52
|
-
adapter: [output-beads.md](output-formats/output-beads.md)
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
Git-backed graph issue tracker with hierarchical tasks (epics → phases → tasks) and native dependency management. Uses JSONL storage with a CLI interface.
|
|
56
|
-
|
|
57
|
-
- **Pros**: Native dependency graph, `bd ready` surfaces unblocked work, hierarchical task structure, multi-agent coordination, hash-based IDs prevent merge conflicts
|
|
58
|
-
- **Cons**: Requires CLI install, JSONL not human-editable, learning curve, less familiar tooling
|
|
59
|
-
- **Best for**: Complex multi-phase features with many dependencies, AI-agent-driven workflows
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
# Analyze Task Graph
|
|
2
|
+
|
|
3
|
+
*Reference for **[technical-planning](../../SKILL.md)***
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
This step uses the `planning-dependency-grapher` agent (`.claude/agents/planning-dependency-grapher.md`) to analyze all authored tasks, establish internal dependencies, assign priorities, and detect cycles. You invoke the agent, present its output, and handle the approval gate.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Analyze Dependencies and Priorities
|
|
12
|
+
|
|
13
|
+
Orient the user:
|
|
14
|
+
|
|
15
|
+
> "All tasks are authored. Now I'll analyze internal dependencies and priorities across the full plan."
|
|
16
|
+
|
|
17
|
+
Read **[output-formats.md](../output-formats.md)**, find the entry matching the `format:` field in the Plan Index File, and load the format's **[reading.md](../output-formats/{format}/reading.md)** and **[graph.md](../output-formats/{format}/graph.md)**.
|
|
18
|
+
|
|
19
|
+
### Invoke the Agent
|
|
20
|
+
|
|
21
|
+
Invoke `planning-dependency-grapher` with these file paths:
|
|
22
|
+
|
|
23
|
+
1. **Plan Index File path**: `docs/workflow/planning/{topic}.md`
|
|
24
|
+
2. **reading.md**: the format's reading reference loaded above
|
|
25
|
+
3. **graph.md**: the format's graph reference loaded above
|
|
26
|
+
|
|
27
|
+
The agent clears any existing dependencies/priorities, analyzes all tasks, and — if no cycles — applies the new graph data directly. It returns a structured summary of what was done.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Review and Approve
|
|
32
|
+
|
|
33
|
+
#### If the agent reports no changes needed (`STATUS: no-changes`)
|
|
34
|
+
|
|
35
|
+
The natural task order is already correct. Present this to the user:
|
|
36
|
+
|
|
37
|
+
> "I've analyzed all {M} tasks and the natural execution order is already correct — no explicit dependencies or priorities are needed.
|
|
38
|
+
>
|
|
39
|
+
> {notes from agent output}"
|
|
40
|
+
|
|
41
|
+
> **To proceed:**
|
|
42
|
+
> - **`y`/`yes`** — Confirmed.
|
|
43
|
+
> - **Or tell me what to change.**
|
|
44
|
+
|
|
45
|
+
**STOP.** Wait for the user's response.
|
|
46
|
+
|
|
47
|
+
#### If the agent reports a cycle (`STATUS: blocked`)
|
|
48
|
+
|
|
49
|
+
No changes were applied. Present the cycle to the user:
|
|
50
|
+
|
|
51
|
+
> "The dependency analysis found a circular dependency:
|
|
52
|
+
>
|
|
53
|
+
> {cycle chain from agent output}
|
|
54
|
+
>
|
|
55
|
+
> This must be resolved before continuing. The cycle usually means two tasks each assume the other is done first — one needs to be restructured or the dependency removed."
|
|
56
|
+
|
|
57
|
+
**STOP.** Wait for the user to decide how to resolve. Options include adjusting task scope, merging tasks, or removing a dependency. Re-invoke the agent after changes.
|
|
58
|
+
|
|
59
|
+
#### If the agent applied changes successfully (`STATUS: complete`)
|
|
60
|
+
|
|
61
|
+
Dependencies and priorities have already been written to the task files. Present the summary:
|
|
62
|
+
|
|
63
|
+
> "I've analyzed and applied dependencies and priorities across all {M} tasks:
|
|
64
|
+
>
|
|
65
|
+
> **Dependencies** ({count} relationships):
|
|
66
|
+
> {dependency list from agent output}
|
|
67
|
+
>
|
|
68
|
+
> **Priorities**:
|
|
69
|
+
> {priority list from agent output}
|
|
70
|
+
>
|
|
71
|
+
> {any notes from agent output}"
|
|
72
|
+
|
|
73
|
+
> **To proceed:**
|
|
74
|
+
> - **`y`/`yes`** — Approved.
|
|
75
|
+
> - **Or tell me what to change.**
|
|
76
|
+
|
|
77
|
+
**STOP.** Wait for the user's response.
|
|
78
|
+
|
|
79
|
+
#### If the user provides feedback
|
|
80
|
+
|
|
81
|
+
Re-invoke `planning-dependency-grapher` with all original inputs PLUS:
|
|
82
|
+
- **Previous output**: the current analysis
|
|
83
|
+
- **User feedback**: what to change
|
|
84
|
+
|
|
85
|
+
The agent will clear all existing graph data and re-analyze from scratch. Present the revised analysis in full. Ask the same choice again. Repeat until approved.
|
|
86
|
+
|
|
87
|
+
#### If approved
|
|
88
|
+
|
|
89
|
+
Commit: `planning({topic}): analyze task dependencies and priorities`
|
|
@@ -21,11 +21,11 @@ Invoke `planning-task-author` with these file paths:
|
|
|
21
21
|
5. **All approved phases**: the complete phase structure from the Plan Index File body
|
|
22
22
|
6. **Task list for current phase**: the approved task table
|
|
23
23
|
7. **Target task**: the task name, edge cases, and ID from the table
|
|
24
|
-
8. **Output format
|
|
24
|
+
8. **Output format authoring reference**: path to the format's `authoring.md` (e.g., `.claude/skills/technical-planning/references/output-formats/{format}/authoring.md`)
|
|
25
25
|
|
|
26
26
|
### Present the Output
|
|
27
27
|
|
|
28
|
-
The agent returns complete task detail
|
|
28
|
+
The agent returns complete task detail following the task template from task-design.md. Present it to the user **exactly as it will be written** — what the user sees is what gets logged.
|
|
29
29
|
|
|
30
30
|
After presenting, ask:
|
|
31
31
|
|
|
@@ -54,7 +54,7 @@ Present the revised task in full. Ask the same choice again. Repeat until approv
|
|
|
54
54
|
|
|
55
55
|
> **CHECKPOINT**: Before logging, verify: (1) You presented this exact content, (2) The user explicitly approved with `y`/`yes` or equivalent — not a question, comment, or "okay" in passing, (3) You are writing exactly what was approved with no modifications.
|
|
56
56
|
|
|
57
|
-
1. Write the task to the output format (format-specific — see
|
|
57
|
+
1. Write the task to the output format (format-specific — see authoring.md)
|
|
58
58
|
2. Update the task table in the Plan Index File: set `status: authored`
|
|
59
59
|
3. Advance the `planning:` block in frontmatter to the next pending task (or next phase if this was the last task)
|
|
60
60
|
4. Commit: `planning({topic}): author task {task-id} ({task name})`
|
|
@@ -44,11 +44,10 @@ Read the plan end-to-end — carefully, as if you were about to implement it. Fo
|
|
|
44
44
|
- Phase boundaries make sense (not arbitrary groupings)
|
|
45
45
|
|
|
46
46
|
4. **Dependencies and Ordering**
|
|
47
|
-
-
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
- An implementer can infer execution order from the plan structure
|
|
47
|
+
- Task dependencies are explicit and correct — each dependency reflects a genuine data or capability requirement
|
|
48
|
+
- No circular dependencies exist in the task graph
|
|
49
|
+
- Priority assignments reflect graph position — foundation tasks and tasks that unblock others are prioritised appropriately
|
|
50
|
+
- An implementer can determine execution order from the dependency graph and priorities alone
|
|
52
51
|
|
|
53
52
|
5. **Task Self-Containment**
|
|
54
53
|
- Each task contains all context needed for execution
|
|
@@ -104,6 +104,8 @@ Ask: "Can I write a test for this task that passes without any other task being
|
|
|
104
104
|
|
|
105
105
|
## Task Template
|
|
106
106
|
|
|
107
|
+
This is the canonical task format. The planning skill owns task content — output format adapters only define where/how this content is stored.
|
|
108
|
+
|
|
107
109
|
Every task should follow this structure:
|
|
108
110
|
|
|
109
111
|
```markdown
|
|
@@ -130,9 +132,15 @@ Every task should follow this structure:
|
|
|
130
132
|
- `"it handles edge case correctly"`
|
|
131
133
|
- `"it fails appropriately for invalid input"`
|
|
132
134
|
|
|
135
|
+
**Edge Cases**: (when relevant)
|
|
136
|
+
- Boundary condition details
|
|
137
|
+
- Unusual inputs or race conditions
|
|
138
|
+
|
|
133
139
|
**Context**: (when relevant)
|
|
134
140
|
> Relevant details from specification: code examples, architectural decisions,
|
|
135
141
|
> data models, or constraints that inform implementation.
|
|
142
|
+
|
|
143
|
+
**Spec Reference**: `docs/workflow/specification/{topic}.md` (if specification was provided)
|
|
136
144
|
```
|
|
137
145
|
|
|
138
146
|
### Field Requirements
|
|
@@ -145,7 +153,9 @@ Every task should follow this structure:
|
|
|
145
153
|
| Do | Yes | At least one concrete action |
|
|
146
154
|
| Acceptance Criteria | Yes | At least one pass/fail criterion |
|
|
147
155
|
| Tests | Yes | At least one test name; include edge cases, not just happy path |
|
|
156
|
+
| Edge Cases | When relevant | Boundary conditions, unusual inputs |
|
|
148
157
|
| Context | When relevant | Only include when spec has details worth pulling forward |
|
|
158
|
+
| Spec Reference | When provided | Path to specification for ambiguity resolution. Include when a specification file was provided as input. Omit if planning from inline context or other non-file sources. |
|
|
149
159
|
|
|
150
160
|
### The Template as Quality Gate
|
|
151
161
|
|
|
@@ -74,7 +74,7 @@ Plan (tasks + acceptance criteria)
|
|
|
74
74
|
→ Check Code Quality (readable, conventions)
|
|
75
75
|
```
|
|
76
76
|
|
|
77
|
-
**Use parallel `
|
|
77
|
+
**Use parallel `review-task-verifier` subagents** to verify ALL plan tasks simultaneously. Each verifier checks one task for implementation, tests, and quality. This enables comprehensive review without sequential bottlenecks.
|
|
78
78
|
|
|
79
79
|
## What You Verify (Per Task)
|
|
80
80
|
|
|
@@ -115,8 +115,8 @@ Review as a senior architect would:
|
|
|
115
115
|
1. **Read the plan** - Understand all phases, tasks, and acceptance criteria
|
|
116
116
|
2. **Read the specification** - Load context for the feature being reviewed
|
|
117
117
|
3. **Extract all tasks** - List every task from every phase
|
|
118
|
-
4. **Spawn
|
|
119
|
-
5. **Aggregate findings** - Collect reports from all
|
|
118
|
+
4. **Spawn review-task-verifiers in parallel** - One subagent per task, all running simultaneously
|
|
119
|
+
5. **Aggregate findings** - Collect reports from all review-task-verifiers
|
|
120
120
|
6. **Check project skills** - Framework/language conventions
|
|
121
121
|
7. **Produce review** - Structured feedback covering all tasks
|
|
122
122
|
|
|
@@ -26,18 +26,18 @@ From the plan, list every task across all phases:
|
|
|
26
26
|
|
|
27
27
|
### Parallel Verification
|
|
28
28
|
|
|
29
|
-
Spawn `
|
|
29
|
+
Spawn `review-task-verifier` subagents **in parallel** for ALL tasks:
|
|
30
30
|
|
|
31
31
|
```
|
|
32
|
-
Task 1 ──▶ [
|
|
33
|
-
Task 2 ──▶ [
|
|
34
|
-
Task 3 ──▶ [
|
|
35
|
-
Task 4 ──▶ [
|
|
32
|
+
Task 1 ──▶ [review-task-verifier] ──▶ Findings
|
|
33
|
+
Task 2 ──▶ [review-task-verifier] ──▶ Findings
|
|
34
|
+
Task 3 ──▶ [review-task-verifier] ──▶ Findings (all running in parallel)
|
|
35
|
+
Task 4 ──▶ [review-task-verifier] ──▶ Findings
|
|
36
36
|
...
|
|
37
|
-
Task N ──▶ [
|
|
37
|
+
Task N ──▶ [review-task-verifier] ──▶ Findings
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
-
**How to invoke each
|
|
40
|
+
**How to invoke each review-task-verifier:**
|
|
41
41
|
|
|
42
42
|
Provide:
|
|
43
43
|
- The specific task (with acceptance criteria)
|
|
@@ -45,14 +45,14 @@ Provide:
|
|
|
45
45
|
- Path to plan (for phase context)
|
|
46
46
|
- Implementation scope (files/directories changed)
|
|
47
47
|
|
|
48
|
-
**Each
|
|
48
|
+
**Each review-task-verifier checks:**
|
|
49
49
|
1. Implementation exists and matches acceptance criteria
|
|
50
50
|
2. Tests are adequate (not under-tested, not over-tested)
|
|
51
51
|
3. Code quality is acceptable
|
|
52
52
|
|
|
53
53
|
**Aggregate the findings:**
|
|
54
54
|
|
|
55
|
-
Once all
|
|
55
|
+
Once all review-task-verifiers complete, synthesize their reports:
|
|
56
56
|
- Collect all incomplete/failed tasks as blocking issues
|
|
57
57
|
- Collect all test issues (under/over-tested)
|
|
58
58
|
- Collect all code quality concerns
|
|
@@ -60,7 +60,7 @@ Once all chain-verifiers complete, synthesize their reports:
|
|
|
60
60
|
|
|
61
61
|
## Per-Task Verification Details
|
|
62
62
|
|
|
63
|
-
For each task, the
|
|
63
|
+
For each task, the review-task-verifier checks:
|
|
64
64
|
|
|
65
65
|
### Implementation
|
|
66
66
|
|