tracerkit 1.18.3 → 1.19.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.
@@ -3,8 +3,6 @@ description: Verify implementation against plan. Shows progress, finds blockers,
3
3
  argument-hint: '[slug]'
4
4
  ---
5
5
 
6
- **Config**: read `.tracerkit/config.json` (default: `local`). Follow matching `<!-- if:local/github -->` blocks.
7
-
8
6
  # Check Implementation
9
7
 
10
8
  Check implementation against a plan. Update checks, stamp findings, transition status, and mark complete when done.
@@ -13,13 +11,7 @@ Check implementation against a plan. Update checks, stamp findings, transition s
13
11
 
14
12
  ## Pre-loaded context
15
13
 
16
- <!-- if:local -->
17
-
18
14
  - Available plans: !`ls .tracerkit/plans/*.md 2>/dev/null || echo "(none)"`
19
- <!-- end:local -->
20
- <!-- if:github -->
21
- - Available plans: list open GitHub Issues with label `{{github.labels.plan}}`
22
- <!-- end:github -->
23
15
 
24
16
  ## Input
25
17
 
@@ -35,24 +27,13 @@ If no argument is provided, build a summary table before asking which one to che
35
27
  | <slug> | ... | 3/7 |
36
28
  ```
37
29
 
38
- <!-- if:local -->
39
-
40
30
  For each `.md` file in `.tracerkit/prds/`:
41
31
 
42
32
  1. Read the file, parse YAML frontmatter (block between `---` fences)
43
33
  2. Extract `status` — use `unknown` if missing
44
34
  3. If `.tracerkit/plans/<slug>.md` exists, count progress (see Progress Algorithm below). Show `—` if no plan.
45
- <!-- end:local -->
46
- <!-- if:github -->
47
-
48
- List open GitHub Issues with label `{{github.labels.prd}}`:
49
35
 
50
- 4. For each PRD issue, extract `status` from labels (`tk:created`, `tk:in-progress`)
51
- 5. Find matching plan issue with label `{{github.labels.plan}}` and same slug in title
52
- 6. If plan issue exists, count progress from checkboxes in its body (see Progress Algorithm below). Show `—` if no plan.
53
- <!-- end:github -->
54
-
55
- Present each feature as an option and let the user pick which to verify.
36
+ Present each feature as a numbered option and wait for the user's choice.
56
37
 
57
38
  ## Progress Algorithm
58
39
 
@@ -62,30 +43,12 @@ Count `- [x]` and `- [ ]` lines under each `## Phase N` heading. Per-phase: `Pha
62
43
 
63
44
  ### 1. Load the plan
64
45
 
65
- <!-- if:local -->
66
-
67
- Read `.tracerkit/plans/<slug>.md`. If missing, list plans and ask the user to select one.
68
-
69
- <!-- end:local -->
70
- <!-- if:github -->
71
-
72
- Find plan issue: open issue with label `{{github.labels.plan}}`, title matching `[{{github.labels.plan}}] <slug>:`. If missing, list plans and ask the user to select one.
73
-
74
- <!-- end:github -->
46
+ Read `.tracerkit/plans/<slug>.md`. If missing, list plans as numbered options and wait for the user's choice.
75
47
 
76
48
  ### 2. Load the PRD
77
49
 
78
- <!-- if:local -->
79
-
80
50
  Read source PRD referenced in plan header (`> Source PRD: ...`).
81
51
 
82
- <!-- end:local -->
83
- <!-- if:github -->
84
-
85
- Read source PRD issue referenced in plan body (`> Source PRD: #<number>`).
86
-
87
- <!-- end:github -->
88
-
89
52
  ### 3. Fast-path: check if implementation exists
90
53
 
91
54
  If primary module file(s) from Phase 1 don't exist, skip subagent — report `0/N — not yet started`, list Phase 1 done-when items, jump to Step 5.
@@ -108,17 +71,8 @@ Collect findings into two categories:
108
71
 
109
72
  ### 3c. Update checkboxes
110
73
 
111
- <!-- if:local -->
112
-
113
74
  Using the subagent's report, update each checkbox in `.tracerkit/plans/<slug>.md` to `[x]` or `[ ]`.
114
75
 
115
- <!-- end:local -->
116
- <!-- if:github -->
117
-
118
- Using the subagent's report, update each checkbox in the plan issue body to `[x]` or `[ ]` by editing the issue.
119
-
120
- <!-- end:github -->
121
-
122
76
  ### 4. Determine outcome
123
77
 
124
78
  Based on checks and findings, decide the status transition:
@@ -153,17 +107,8 @@ Total: checked/total
153
107
 
154
108
  ### 6. Stamp the plan
155
109
 
156
- <!-- if:local -->
157
-
158
110
  Append a verdict block at the bottom of `.tracerkit/plans/<slug>.md`:
159
111
 
160
- <!-- end:local -->
161
- <!-- if:github -->
162
-
163
- Append a verdict block at the bottom of the plan issue body by editing the issue:
164
-
165
- <!-- end:github -->
166
-
167
112
  ```markdown
168
113
  ---
169
114
 
@@ -181,24 +126,9 @@ If a previous verdict block exists, replace it with the new one.
181
126
 
182
127
  If all checks pass and zero BLOCKERS:
183
128
 
184
- <!-- if:local -->
185
-
186
129
  1. Update PRD frontmatter: `status: done`, add `completed: <UTC ISO 8601>`
187
130
  2. Update plan frontmatter: `status: done`, add `completed: <UTC ISO 8601>`
188
131
 
189
- <!-- end:local -->
190
- <!-- if:github -->
191
-
192
- 1. If on a feature branch with commits ahead of default:
193
- a. Push branch if not pushed
194
- b. Open PR with `Closes #<prd-number>, Closes #<plan-number>` (or update existing PR body)
195
- 2. Search merged PRs matching slug: `gh pr list --search <slug> --state merged` — add comment on PRD issue linking found PRs
196
- 3. PRD issue: add `tk:done`, remove `tk:in-progress`, update metadata `status: done` + `completed` timestamp
197
- 4. Close PRD issue (reason: `completed`)
198
- 5. Close plan issue (reason: `completed`)
199
-
200
- <!-- end:github -->
201
-
202
132
  ### 8. On `in_progress` (no blockers)
203
133
 
204
134
  Show progress summary (checked/total per phase), list the next unchecked items to implement. Keep going.
@@ -3,71 +3,39 @@ description: Turn a PRD into a multi-phase implementation plan using tracer-bull
3
3
  argument-hint: '[slug]'
4
4
  ---
5
5
 
6
- **Config**: read `.tracerkit/config.json` (default: `local`). Follow matching `<!-- if:local/github -->` blocks.
7
-
8
6
  # PRD to Plan
9
7
 
10
8
  Break a PRD into phased vertical slices (tracer bullets).
11
9
 
12
10
  **Interactive prompts**: present options as a numbered list and wait for the user's choice.
13
11
 
14
- <!-- if:local -->
15
-
16
12
  Output: `.tracerkit/plans/<slug>.md`.
17
13
 
18
- <!-- end:local -->
19
- <!-- if:github -->
20
-
21
- Output: a GitHub Issue with label `{{github.labels.plan}}`.
22
-
23
- <!-- end:github -->
24
-
25
14
  ## Pre-loaded context
26
15
 
27
- <!-- if:local -->
28
-
29
16
  - Available PRDs: !`ls .tracerkit/prds/*.md 2>/dev/null || echo "(none)"`
30
- <!-- end:local -->
31
- <!-- if:github -->
32
- - Available PRDs: list open GitHub Issues with label `{{github.labels.prd}}`
33
- <!-- end:github -->
34
17
 
35
18
  ## Input
36
19
 
37
20
  The argument (if provided) is: $ARGUMENTS
38
21
 
39
- Use argument as `<slug>`. If empty, list available PRDs and ask the user to select one.
22
+ Use argument as `<slug>`. If empty, list PRDs as numbered options and wait for the user's choice.
40
23
 
41
24
  ## Workflow
42
25
 
43
26
  ### 1. Read the PRD
44
27
 
45
- <!-- if:local -->
28
+ Read `.tracerkit/prds/<slug>.md`. If missing, list PRDs as numbered options and wait for the user's choice.
46
29
 
47
- Read `.tracerkit/prds/<slug>.md`. If missing, list PRDs and ask the user to select one. If `.tracerkit/plans/<slug>.md` exists, ask: "Overwrite existing" / "Pick a new name".
30
+ If `.tracerkit/plans/<slug>.md` exists, present options and wait:
48
31
 
49
- <!-- end:local -->
50
- <!-- if:github -->
51
-
52
- Find PRD issue: open issue with label `{{github.labels.prd}}`, title matching `[{{github.labels.prd}}] <slug>:`. If missing, list PRDs and ask the user to select one. If plan issue with label `{{github.labels.plan}}` and matching title exists, ask: "Update existing plan" / "Use a new name".
53
-
54
- <!-- end:github -->
32
+ 1. Overwrite existing (Recommended)
33
+ 2. Pick a new name
55
34
 
56
35
  ### 1b. Update PRD status
57
36
 
58
- <!-- if:local -->
59
-
60
37
  Set `status: in_progress` in `.tracerkit/prds/<slug>.md` frontmatter. Change only `status`.
61
38
 
62
- <!-- end:local -->
63
- <!-- if:github -->
64
-
65
- Update the PRD issue:
66
-
67
- - Remove `tk:created` label, add `tk:in-progress` label
68
- - Update the `<!-- tk:metadata -->` comment in the issue body to `status: in_progress`
69
- <!-- end:github -->
70
-
71
39
  ### 2. Explore the codebase
72
40
 
73
41
  Map architecture, patterns, integration points. Skip if codebase context exists from prior step.
@@ -112,7 +80,9 @@ Each phase: thin vertical slice through all layers (schema → service → API
112
80
 
113
81
  - 1 module touched → 2–3 phases max
114
82
  - 2–3 modules touched → 3–5 phases max
115
- - 4+ modules or 6+ phases → stop and ask: "PRD touches 4+ modules. Split before planning?" with options: "Split the PRD" (Recommended) / "Continue anyway".
83
+ - 4+ modules or 6+ phases → stop and present options:
84
+ 1. Split the PRD (Recommended)
85
+ 2. Continue anyway
116
86
 
117
87
  Count "modules touched" by scanning the PRD's New Modules and Schema Changes sections.
118
88
 
@@ -124,11 +94,15 @@ Assign an agent tag to tasks where appropriate:
124
94
 
125
95
  ### 5. Quiz the user
126
96
 
127
- Present breakdown (title, user stories covered, done-when per phase). Ask: "How's the granularity?" with options: "Looks good, proceed" (Recommended) / "Merge some phases" / "Split a phase". Iterate until approved.
97
+ Present breakdown (title, user stories covered, done-when per phase). Present options and wait:
128
98
 
129
- ### 6. Save plan
99
+ 1. Looks good, proceed (Recommended)
100
+ 2. Merge some phases
101
+ 3. Split a phase
130
102
 
131
- <!-- if:local -->
103
+ Iterate until approved.
104
+
105
+ ### 6. Save plan
132
106
 
133
107
  Save to `.tracerkit/plans/<slug>.md` (create dir if missing).
134
108
 
@@ -144,41 +118,7 @@ status: in_progress
144
118
  > Source PRD: `.tracerkit/prds/<slug>.md`
145
119
  ```
146
120
 
147
- Then update PRD frontmatter: add `plan: .tracerkit/plans/<slug>.md` field.
148
-
149
- <!-- end:local -->
150
- <!-- if:github -->
151
-
152
- Ensure labels exist: `gh label create {{github.labels.plan}} --force`, `gh label create tk:in-progress --force`.
153
-
154
- Create GitHub Issue — title: `[{{github.labels.plan}}] <slug>: Plan: <Feature Title>`, labels: `{{github.labels.plan}}`, `tk:in-progress`.
155
-
156
- ```markdown
157
- <!-- tk:metadata
158
- source_prd: #<PRD issue number>
159
- slug: <slug>
160
- status: in_progress
161
- -->
162
-
163
- # Plan: <Feature Name>
164
-
165
- > Source PRD: #<PRD issue number>
166
- ```
167
-
168
- <!-- end:github -->
169
-
170
- ### 6b. Backlink PRD
171
-
172
- <!-- if:local -->
173
-
174
- Already linked via PRD frontmatter `plan:` field (set in step 6).
175
-
176
- <!-- end:local -->
177
- <!-- if:github -->
178
-
179
- Add comment on PRD issue: "Plan: #<plan-issue-number>" (creates cross-reference).
180
-
181
- <!-- end:github -->
121
+ Then update PRD frontmatter: add `plan: .tracerkit/plans/<slug>.md` field (creates backlink).
182
122
 
183
123
  Use this structure for the plan body:
184
124
 
@@ -217,25 +157,15 @@ Carried forward from PRD verbatim.
217
157
  Gaps found in the PRD needing resolution. Blank if none.
218
158
  ```
219
159
 
220
- Print one line per phase: `Phase N — <title> (<condition summary>)`. Then ask: "What's next?" with options: "Start implementing" (Recommended) / "Run `/tk:check <slug>`" / "Done for now".
221
-
222
- ## Execution guidance
223
-
224
- When implementing this plan, **always offer to create a feature branch** before writing any code. Ask: "Create branch `feat/<slug>`?" with options: "Yes, create branch" (Recommended) / "No, stay on current branch". If accepted, create the branch from the default branch.
160
+ Print one line per phase: `Phase N — <title> (<condition summary>)`. Present options and wait:
225
161
 
226
- ### During implementation
162
+ 1. Run `/tk:build <slug>` (Recommended)
163
+ 2. Run `/tk:check <slug>`
164
+ 3. Done for now
227
165
 
228
- Mark each "Done when" checkbox `[x]` **immediately after verifying** the condition.
229
-
230
- Always update the local plan file (`.tracerkit/plans/<slug>.md`): change `- [ ]` → `- [x]`. This file is the working copy for both local and GitHub modes.
231
-
232
- <!-- if:github -->
233
-
234
- **Sync to GitHub at phase boundaries**: after completing all items in a phase, update the plan issue body with `gh issue edit` to reflect the local state. This avoids per-item API calls.
235
-
236
- After all phases, open a PR with body containing `Closes #<prd-issue>, Closes #<plan-issue>`.
166
+ ## Execution guidance
237
167
 
238
- <!-- end:github -->
168
+ To implement this plan phase by phase, run `/tk:build <slug>`. It handles branch creation, implementation, feedback loops, checkbox marking, and commits — one phase per invocation.
239
169
 
240
170
  ## Rules
241
171
 
@@ -243,10 +173,5 @@ After all phases, open a PR with body containing `Closes #<prd-issue>, Closes #<
243
173
  - Each phase must be demoable end-to-end on its own
244
174
  - "Done when" must be a checkbox list of testable conditions, not prose
245
175
  - **Safety valve**: if a phase has >5 "Done when" items, stop and split it into smaller phases before continuing
246
- <!-- if:local -->
247
176
  - Never modify the source PRD content — only update frontmatter status fields
248
- <!-- end:local -->
249
- <!-- if:github -->
250
- - Never modify the source PRD content — only update metadata and labels
251
- <!-- end:github -->
252
177
  - Carry PRD's Out of Scope forward verbatim
@@ -3,8 +3,6 @@ description: Create a PRD through user interview, codebase exploration, and modu
3
3
  argument-hint: <idea>
4
4
  ---
5
5
 
6
- **Config**: read `.tracerkit/config.json` (default: `local`). Follow matching `<!-- if:local/github -->` blocks.
7
-
8
6
  # PRD Writing
9
7
 
10
8
  Skip satisfied steps. If argument provided, skip to Step 2.
@@ -13,13 +11,7 @@ Skip satisfied steps. If argument provided, skip to Step 2.
13
11
 
14
12
  ## Pre-loaded context
15
13
 
16
- <!-- if:local -->
17
-
18
14
  - Existing PRDs: !`ls .tracerkit/prds/*.md 2>/dev/null || echo "(none)"`
19
- <!-- end:local -->
20
- <!-- if:github -->
21
- - Existing PRDs: list open GitHub Issues with label `{{github.labels.prd}}`
22
- <!-- end:github -->
23
15
 
24
16
  ## Input
25
17
 
@@ -34,16 +26,10 @@ If empty, go to Step 1; derive slug after gathering the idea. If provided, deriv
34
26
  5. Take the first 4 remaining words (or fewer if less exist)
35
27
  6. Join with hyphens → `<slug>`
36
28
 
37
- <!-- if:local -->
38
-
39
- Output: `.tracerkit/prds/<slug>.md`. If exists, ask: "Overwrite existing" / "Pick a new name".
40
-
41
- <!-- end:local -->
42
- <!-- if:github -->
43
-
44
- Output: GitHub Issue with label `{{github.labels.prd}}`, title `[{{github.labels.prd}}] <slug>: <Feature Title>`. If matching issue exists, ask: "Update existing issue" / "Use a new slug".
29
+ Output: `.tracerkit/prds/<slug>.md`. If file exists, present options and wait:
45
30
 
46
- <!-- end:github -->
31
+ 1. Overwrite existing (Recommended)
32
+ 2. Pick a new name
47
33
 
48
34
  ## Workflow
49
35
 
@@ -85,8 +71,6 @@ Present modules. Confirm which need tests.
85
71
 
86
72
  ### 5. Write PRD
87
73
 
88
- <!-- if:local -->
89
-
90
74
  Save to `.tracerkit/prds/<slug>.md` (create dir if missing).
91
75
 
92
76
  ```markdown
@@ -98,26 +82,7 @@ status: created
98
82
  # Feature Name
99
83
  ```
100
84
 
101
- <!-- end:local -->
102
- <!-- if:github -->
103
-
104
- Ensure labels exist: `gh label create {{github.labels.prd}} --force`, `gh label create tk:created --force`.
105
-
106
- Create GitHub Issue — title: `[{{github.labels.prd}}] <slug>: <Feature Title>`, labels: `{{github.labels.prd}}`, `tk:created`.
107
-
108
- ```markdown
109
- <!-- tk:metadata
110
- slug: <slug>
111
- created: <UTC ISO 8601>
112
- status: created
113
- -->
114
-
115
- # Feature Name
116
- ```
117
-
118
- <!-- end:github -->
119
-
120
- PRD body structure (same for local file and issue body). Omit empty sections. No file paths or code snippets.
85
+ PRD body structure. Omit empty sections. No file paths or code snippets.
121
86
 
122
87
  ```
123
88
  ## Problem Statement
@@ -136,4 +101,7 @@ PRD body structure (same for local file and issue body). Omit empty sections. No
136
101
 
137
102
  ---
138
103
 
139
- Then ask: "What's next?" with options: "Run `/tk:plan <slug>`" (Recommended) / "Done for now".
104
+ Present options and wait for the user's choice:
105
+
106
+ 1. Run `/tk:plan <slug>` (Recommended)
107
+ 2. Done for now