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.
- package/README.md +30 -40
- package/dist/bin.js +23 -78
- package/dist/index.js +2 -2
- package/dist/uninstall-4Qp75twq.js +130 -0
- package/package.json +2 -2
- package/skills/brief/SKILL.md +5 -43
- package/skills/build/SKILL.md +164 -0
- package/skills/check/SKILL.md +2 -72
- package/skills/plan/SKILL.md +22 -97
- package/skills/prd/SKILL.md +8 -40
- package/dist/uninstall-CNw_7khV.js +0 -467
package/skills/check/SKILL.md
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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.
|
package/skills/plan/SKILL.md
CHANGED
|
@@ -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
|
|
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
|
-
|
|
28
|
+
Read `.tracerkit/prds/<slug>.md`. If missing, list PRDs as numbered options and wait for the user's choice.
|
|
46
29
|
|
|
47
|
-
|
|
30
|
+
If `.tracerkit/plans/<slug>.md` exists, present options and wait:
|
|
48
31
|
|
|
49
|
-
|
|
50
|
-
|
|
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
|
|
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).
|
|
97
|
+
Present breakdown (title, user stories covered, done-when per phase). Present options and wait:
|
|
128
98
|
|
|
129
|
-
|
|
99
|
+
1. Looks good, proceed (Recommended)
|
|
100
|
+
2. Merge some phases
|
|
101
|
+
3. Split a phase
|
|
130
102
|
|
|
131
|
-
|
|
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>)`.
|
|
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
|
-
|
|
162
|
+
1. Run `/tk:build <slug>` (Recommended)
|
|
163
|
+
2. Run `/tk:check <slug>`
|
|
164
|
+
3. Done for now
|
|
227
165
|
|
|
228
|
-
|
|
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
|
-
|
|
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
|
package/skills/prd/SKILL.md
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
104
|
+
Present options and wait for the user's choice:
|
|
105
|
+
|
|
106
|
+
1. Run `/tk:plan <slug>` (Recommended)
|
|
107
|
+
2. Done for now
|