tracerkit 1.18.3 → 1.19.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 CHANGED
@@ -21,7 +21,16 @@ Named after the tracer-bullet technique from _The Pragmatic Programmer_: **Trace
21
21
 
22
22
  AI assistants work best with small, well-scoped tasks — not sprawling layers or flat task lists. TracerKit structures every feature as **tracer-bullet vertical slices**: each phase cuts through every layer (schema → service → API → UI → tests) and is demoable on its own. Integration problems surface early, not at the end.
23
23
 
24
- Three skills drive the workflow: **define** (`/tk:prd`), **plan** (`/tk:plan`), **verify** (`/tk:check`). The AI reads your specs directly, counts progress, and marks completed work done. Pure Markdown, zero runtime deps.
24
+ Four skills drive the workflow: **define** (`/tk:prd`), **plan** (`/tk:plan`), **build** (`/tk:build`), **verify** (`/tk:check`). The AI reads your specs directly, counts progress, and marks completed work done. Pure Markdown, zero runtime deps.
25
+
26
+ ```
27
+ DEFINE PLAN BUILD VERIFY
28
+ /tk:prd ───▶ /tk:plan ───▶ /tk:build ───▶ /tk:check
29
+ │ │ │ │
30
+ ▼ ▼ ▼ ▼
31
+ PRD doc Phased plan Implement phase Pass/fail
32
+ + feedback loops + status
33
+ ```
25
34
 
26
35
  ## Get Started
27
36
 
@@ -111,7 +120,9 @@ AI: Phase 1 — Theme visible end-to-end
111
120
  Written .tracerkit/plans/dark-mode-support.md
112
121
  Run `/tk:check dark-mode-support` when ready?
113
122
 
114
- You: # open the plan, implement each phase, write tests...
123
+ You: /tk:build dark-mode-support
124
+ AI: Phase 1 — Theme visible end-to-end (3 remaining)
125
+ Implementing... all checks pass. Commit?
115
126
 
116
127
  You: /tk:check dark-mode-support
117
128
  AI: Status: done | Total: 5/5
@@ -158,6 +169,7 @@ Direction is inferred from the current `storage` config. All artifacts are migra
158
169
  | ------------------ | ------------------------------------------------------ | ----------------------------------------------------------------------------------------------- |
159
170
  | `/tk:prd <idea>` | Interview → codebase scan → structured PRD | `.tracerkit/prds/<slug>.md` or GitHub Issue |
160
171
  | `/tk:plan <slug>` | PRD → phased vertical slices, each demoable on its own | `.tracerkit/plans/<slug>.md` or GitHub Issue |
172
+ | `/tk:build <slug>` | Implement next incomplete phase, run feedback loops | Code changes + checked items in plan |
161
173
  | `/tk:brief` | Feature dashboard with progress and suggested focus | Terminal only, no files |
162
174
  | `/tk:check [slug]` | Verify done-when checkboxes against codebase and tests | Verdict block in plan. On `done`: status updated (local) or issues closed + PRs linked (GitHub) |
163
175
 
package/dist/bin.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { a as e, f as t, i as n, l as r, n as i, o as a, p as o, r as s, s as c, t as l, u } from "./uninstall-CNw_7khV.js";
2
+ import { a as e, f as t, i as n, l as r, n as i, o as a, p as o, r as s, s as c, t as l, u } from "./uninstall-CNGQ7MEU.js";
3
3
  import { existsSync as d, readFileSync as f, statSync as p } from "node:fs";
4
4
  import { dirname as m, join as h, resolve as g } from "node:path";
5
5
  import { fileURLToPath as _ } from "node:url";
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import { c as e, i as t, n, o as r, r as i, t as a, u as o } from "./uninstall-CNw_7khV.js";
1
+ import { c as e, i as t, n, o as r, r as i, t as a, u as o } from "./uninstall-CNGQ7MEU.js";
2
2
  export { r as COMMANDS, e as DEPRECATED_SKILLS, o as SKILL_NAMES, i as init, n as migrateStorage, a as uninstall, t as update };
@@ -71,6 +71,7 @@ var C = [
71
71
  "tk:brief",
72
72
  "tk:prd",
73
73
  "tk:plan",
74
+ "tk:build",
74
75
  "tk:check"
75
76
  ], w = ["tk:verify"], T = {
76
77
  force: "--force",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "tracerkit",
3
- "version": "1.18.3",
4
- "description": "Spec-driven workflow for AI coding agents — PRD → plan → verify. Pure Markdown skills, zero runtime deps.",
3
+ "version": "1.19.0",
4
+ "description": "Spec-driven workflow for AI coding agents — PRD → plan → build → verify. Pure Markdown skills, zero runtime deps.",
5
5
  "license": "MIT",
6
6
  "author": {
7
7
  "name": "helderberto",
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: Session briefing — shows active features, progress, and suggested focus. Use at the start of a session to orient.
2
+ description: Session briefing — shows active features, progress, and suggested focus. Use at the start of a session, when asking what to work on, or when checking active features.
3
3
  ---
4
4
 
5
5
  **Config**: read `.tracerkit/config.json` (default: `local`). Follow matching `<!-- if:local/github -->` blocks.
@@ -0,0 +1,192 @@
1
+ ---
2
+ description: Implement one phase of a plan. Reads plan, finds next incomplete phase, implements it, runs feedback loops, marks checkboxes, offers commit. One phase per invocation. Use when the user wants to implement, code, build, or work on the next phase of a plan.
3
+ argument-hint: '[slug]'
4
+ ---
5
+
6
+ **Config**: read `.tracerkit/config.json` (default: `local`). Follow matching `<!-- if:local/github -->` blocks.
7
+
8
+ # Build Phase
9
+
10
+ Implement the next incomplete phase of a plan — one phase per invocation.
11
+
12
+ **Context window**: recommend `/clear` before starting to maximize token budget.
13
+
14
+ **Interactive prompts**: present options as a numbered list and wait for the user's choice.
15
+
16
+ ## Pre-loaded context
17
+
18
+ <!-- if:local -->
19
+
20
+ - Available plans: !`ls .tracerkit/plans/*.md 2>/dev/null || echo "(none)"`
21
+ <!-- end:local -->
22
+ <!-- if:github -->
23
+ - Available plans: list open GitHub Issues with label `{{github.labels.plan}}`
24
+ <!-- end:github -->
25
+
26
+ ## Input
27
+
28
+ The argument (if provided) is: $ARGUMENTS
29
+
30
+ Use argument as `<slug>`. If empty, list available plans and ask the user to select one.
31
+
32
+ Accepts slug or `@file` reference:
33
+
34
+ ```
35
+ /tk:build dark-mode-support
36
+ /tk:build @.tracerkit/plans/dark-mode-support.md
37
+ ```
38
+
39
+ If argument starts with `@`, treat it as a file path — read that file directly as the plan.
40
+
41
+ ## Workflow
42
+
43
+ ### 1. Load the plan
44
+
45
+ <!-- if:local -->
46
+
47
+ Read `.tracerkit/plans/<slug>.md`. If missing, list plans and ask the user to select one.
48
+
49
+ <!-- end:local -->
50
+ <!-- if:github -->
51
+
52
+ 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.
53
+
54
+ <!-- end:github -->
55
+
56
+ ### 2. Find the next incomplete phase
57
+
58
+ Scan the plan for `## Phase N` headings. For each phase, count `- [ ]` and `- [x]` checkboxes.
59
+
60
+ The **next incomplete phase** is the first phase that has at least one unchecked `- [ ]` item.
61
+
62
+ If all phases are complete (zero unchecked items across all phases):
63
+
64
+ > All phases complete. Run `/tk:check <slug>` to verify.
65
+
66
+ Stop here.
67
+
68
+ ### 3. Present the phase
69
+
70
+ Show the phase title and its unchecked items:
71
+
72
+ ```
73
+ Phase N — <title> (M remaining)
74
+ - [ ] First unchecked item
75
+ - [ ] Second unchecked item
76
+ ```
77
+
78
+ ### 4. Offer a feature branch
79
+
80
+ If on the default branch (main/master), ask:
81
+
82
+ > Create branch `feat/<slug>`?
83
+ >
84
+ > 1. Yes, create branch (Recommended)
85
+ > 2. No, stay on current branch
86
+
87
+ If accepted, create and switch to the branch.
88
+
89
+ If already on a feature branch, skip this step.
90
+
91
+ ### 5. Implement the phase
92
+
93
+ Work through each unchecked item in order. For each item:
94
+
95
+ 1. Read the plan's architectural decisions and the current item's context
96
+ 2. Explore relevant code to understand existing patterns and conventions
97
+ 3. Implement the change — follow the project's conventions (CLAUDE.md, linter config, test setup)
98
+ 4. Write tests alongside implementation (follow the project's existing test patterns)
99
+
100
+ **Do not** impose coding rules, style, or conventions. Follow what the project already uses.
101
+
102
+ **Do not** implement items from other phases. Stay within the current phase boundary.
103
+
104
+ ### 6. Run feedback loops
105
+
106
+ After implementing the phase, detect and run available project scripts. Check `package.json` for these scripts (run only what exists):
107
+
108
+ | Script pattern | Purpose |
109
+ | ---------------------------------- | ------------- |
110
+ | `typecheck`, `tsc`, `type-check` | Type checking |
111
+ | `test`, `vitest`, `jest` | Tests |
112
+ | `lint`, `eslint` | Linting |
113
+ | `format:check`, `prettier --check` | Formatting |
114
+
115
+ Run each detected script. If any fails:
116
+
117
+ 1. Read the error output
118
+ 2. Fix the issue
119
+ 3. Re-run the failing script
120
+ 4. Repeat until all pass (max 3 attempts per script)
121
+
122
+ If a script still fails after 3 attempts, treat it as a **blocker** — pause and ask the user for help:
123
+
124
+ > **Blocker**: `<script>` fails after 3 attempts.
125
+ > Last error: `<error summary>`
126
+ >
127
+ > How to proceed?
128
+ >
129
+ > 1. I'll fix it — pause and wait
130
+ > 2. Skip this check and continue
131
+ > 3. Abort this phase
132
+
133
+ Wait for the user's response before continuing.
134
+
135
+ ### 7. Mark checkboxes
136
+
137
+ After all feedback loops pass, update checkboxes in the plan file:
138
+
139
+ <!-- if:local -->
140
+
141
+ For each completed item, change `- [ ]` → `- [x]` in `.tracerkit/plans/<slug>.md`.
142
+
143
+ <!-- end:local -->
144
+ <!-- if:github -->
145
+
146
+ For each completed item, change `- [ ]` → `- [x]` in the plan issue body using `gh issue edit`.
147
+
148
+ <!-- end:github -->
149
+
150
+ ### 8. Offer commit
151
+
152
+ Present the changes and ask:
153
+
154
+ > Phase N complete — all checks pass. Commit?
155
+ >
156
+ > 1. Yes, commit
157
+ > 2. No, I'll review first
158
+
159
+ If the user chooses to commit:
160
+
161
+ 1. Stage the implementation files (not `.tracerkit/` artifacts unless the project dogfoods TracerKit)
162
+ 2. Create a commit with a message following the project's commit conventions
163
+ 3. Confirm: "Committed. Run `/tk:build <slug>` for Phase N+1, or `/tk:check <slug>` to verify."
164
+
165
+ If the user chooses to review:
166
+
167
+ > Ready for review. Run `/tk:build <slug>` again when ready to continue.
168
+
169
+ ### 9. Blockers during implementation
170
+
171
+ If implementation requires something the agent cannot provide (API key, external service, manual setup, design decision):
172
+
173
+ > **Blocker**: <description of what's needed>
174
+ >
175
+ > How to proceed?
176
+ >
177
+ > 1. I've resolved it — continue
178
+ > 2. Skip this item for now
179
+ > 3. Abort this phase
180
+
181
+ Wait for the user's response. Never guess or work around a blocker silently.
182
+
183
+ ## Rules
184
+
185
+ - **One phase per invocation** — never auto-advance to the next phase
186
+ - **Never modify PRD content** — the PRD is read-only
187
+ - **Never modify plan content** beyond marking checkboxes `[x]`
188
+ - **Never skip a phase** — phases must be completed in order
189
+ - **Never impose conventions** — follow the project's existing setup
190
+ - **HITL at every decision point** — commits, blockers, and branch creation require user approval
191
+ - **Feedback loops are mandatory** — always run available checks before marking items complete
192
+ - **Do not push to remote** — only commit locally
@@ -217,25 +217,11 @@ Carried forward from PRD verbatim.
217
217
  Gaps found in the PRD needing resolution. Blank if none.
218
218
  ```
219
219
 
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".
220
+ Print one line per phase: `Phase N — <title> (<condition summary>)`. Then ask: "What's next?" with options: "Run `/tk:build <slug>`" (Recommended) / "Run `/tk:check <slug>`" / "Done for now".
221
221
 
222
222
  ## Execution guidance
223
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.
225
-
226
- ### During implementation
227
-
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>`.
237
-
238
- <!-- end:github -->
224
+ 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
225
 
240
226
  ## Rules
241
227