tracerkit 1.9.2 → 1.9.4
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 +19 -23
- package/dist/bin.js +3 -3
- package/dist/index.js +2 -2
- package/dist/{uninstall-CyVs_ZgH.js → uninstall-C4dWMK0k.js} +8 -8
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
[](https://www.npmjs.com/package/tracerkit)
|
|
9
9
|
[](https://opensource.org/licenses/MIT)
|
|
10
10
|
|
|
11
|
-
Replace ad-hoc AI prompts with a repeatable spec-driven workflow: from idea to verified, archived
|
|
11
|
+
Replace ad-hoc AI prompts with a repeatable spec-driven workflow: from idea to verified, archived spec.
|
|
12
12
|
|
|
13
13
|
Named after the tracer-bullet technique from _The Pragmatic Programmer_: **Tracer** + **Kit**.
|
|
14
14
|
|
|
15
|
-
**
|
|
15
|
+
**Markdown skills, one CLI.** No build step, no project dependencies.
|
|
16
16
|
|
|
17
17
|
</div>
|
|
18
18
|
|
|
@@ -30,26 +30,11 @@ TracerKit takes a different approach: **tracer-bullet vertical slices**. Each ph
|
|
|
30
30
|
npx tracerkit init
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
-
Skills are installed globally to `~/.claude/skills/`, available in every project.
|
|
33
|
+
Skills are installed globally to `~/.claude/skills/`, available in every project. Safe to re-run — adds missing skills without overwriting ones you've modified.
|
|
34
34
|
|
|
35
35
|
### Workflow
|
|
36
36
|
|
|
37
37
|
```
|
|
38
|
-
You: /tk:brief
|
|
39
|
-
AI: | Feature | Status | Age | Progress | Next |
|
|
40
|
-
|-------------------|-------------|-----|----------|------------------------------|
|
|
41
|
-
| dark-mode-support | in_progress | 3d | 3/7 | Toggle component renders ... |
|
|
42
|
-
|
|
43
|
-
**Focus → dark-mode-support**
|
|
44
|
-
|
|
45
|
-
You: # continue working on dark-mode-support...
|
|
46
|
-
|
|
47
|
-
You: /tk:check dark-mode-support
|
|
48
|
-
AI: Status: done | Total: 7/7
|
|
49
|
-
Archived to .tracerkit/archives/dark-mode-support/
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
38
|
You: /tk:prd add dark mode support
|
|
54
39
|
AI: Written .tracerkit/prds/dark-mode-support.md
|
|
55
40
|
Run `/tk:plan dark-mode-support` next?
|
|
@@ -67,6 +52,17 @@ AI: Status: done | Total: 5/5
|
|
|
67
52
|
Archived to .tracerkit/archives/dark-mode-support/
|
|
68
53
|
```
|
|
69
54
|
|
|
55
|
+
Use `/tk:brief` at the start of any session to see active features and pick up where you left off:
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
You: /tk:brief
|
|
59
|
+
AI: | Feature | Status | Age | Progress | Next |
|
|
60
|
+
|-------------------|-------------|-----|----------|------------------------------|
|
|
61
|
+
| dark-mode-support | in_progress | 3d | 3/7 | Toggle component renders ... |
|
|
62
|
+
|
|
63
|
+
**Focus → dark-mode-support**
|
|
64
|
+
```
|
|
65
|
+
|
|
70
66
|
See [Examples](docs/examples.md) for full walkthroughs.
|
|
71
67
|
|
|
72
68
|
<details>
|
|
@@ -86,27 +82,27 @@ npx tracerkit uninstall . # remove project-scoped skills
|
|
|
86
82
|
|
|
87
83
|
TracerKit ships three skills that take a feature from idea to verified archive.
|
|
88
84
|
|
|
89
|
-
|
|
85
|
+
### `/tk:prd <idea>`: Write a PRD
|
|
90
86
|
|
|
91
87
|
Interactive interview that explores your codebase, asks scoping questions one at a time, designs deep modules, and writes a structured PRD.
|
|
92
88
|
|
|
93
89
|
**Output:** `.tracerkit/prds/<slug>.md`
|
|
94
90
|
|
|
95
|
-
|
|
91
|
+
### `/tk:plan <slug>`: Create an implementation plan
|
|
96
92
|
|
|
97
93
|
Reads a PRD and breaks it into phased **tracer-bullet vertical slices**. Each phase is a thin but complete path through every layer (schema, service, API, UI, tests), demoable on its own.
|
|
98
94
|
|
|
99
95
|
**Output:** `.tracerkit/plans/<slug>.md`
|
|
100
96
|
|
|
101
|
-
|
|
97
|
+
### `/tk:brief`: Session briefing
|
|
102
98
|
|
|
103
99
|
Shows active features, their progress, and suggested focus. Use at the start of a session to orient.
|
|
104
100
|
|
|
105
101
|
**Output:** Feature dashboard in the terminal — no files written.
|
|
106
102
|
|
|
107
|
-
|
|
103
|
+
### `/tk:check [slug]`: Verify and archive
|
|
108
104
|
|
|
109
|
-
|
|
105
|
+
Verifies the codebase against the plan's done-when checkboxes. Runs tests, validates user stories, updates phase progress, and transitions the PRD status. On `done`, archives the PRD and plan to `.tracerkit/archives/<slug>/` automatically.
|
|
110
106
|
|
|
111
107
|
Without arguments, shows a feature dashboard with status and progress before asking which feature to check.
|
|
112
108
|
|
package/dist/bin.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { c as e, i as t, n, o as r, r as i, t as a } from "./uninstall-
|
|
2
|
+
import { c as e, i as t, n, o as r, r as i, t as a } from "./uninstall-C4dWMK0k.js";
|
|
3
3
|
import { existsSync as o, mkdirSync as s, readFileSync as c, readdirSync as l, rmSync as u, unlinkSync as d, writeFileSync as f } from "node:fs";
|
|
4
4
|
import { dirname as p, join as m, resolve as h } from "node:path";
|
|
5
5
|
import { fileURLToPath as g } from "node:url";
|
|
@@ -172,9 +172,9 @@ function L(e) {
|
|
|
172
172
|
let t = e[0], o = e.slice(1);
|
|
173
173
|
switch (t) {
|
|
174
174
|
case "brief": return A(F(o, process.cwd()));
|
|
175
|
-
case "init": return
|
|
175
|
+
case "init": return n(F(o));
|
|
176
176
|
case "update": {
|
|
177
|
-
let e = o.includes(r.force), t =
|
|
177
|
+
let e = o.includes(r.force), t = i(F(o.filter((e) => e !== r.force)), { force: e });
|
|
178
178
|
return t.push("", "Updated to the latest TracerKit."), t.push("If using Claude Code, restart your session to load changes."), t;
|
|
179
179
|
}
|
|
180
180
|
case "uninstall": return a(F(o));
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as e, i as t, n, r, s as i, t as a } from "./uninstall-
|
|
2
|
-
export { t as COMMANDS, e as DEPRECATED_SKILLS, i as SKILL_NAMES,
|
|
1
|
+
import { a as e, i as t, n, r, s as i, t as a } from "./uninstall-C4dWMK0k.js";
|
|
2
|
+
export { t as COMMANDS, e as DEPRECATED_SKILLS, i as SKILL_NAMES, n as init, a as uninstall, r as update };
|
|
@@ -104,15 +104,8 @@ function x(t, r) {
|
|
|
104
104
|
};
|
|
105
105
|
}
|
|
106
106
|
//#endregion
|
|
107
|
-
//#region src/commands/init.ts
|
|
108
|
-
function S(t) {
|
|
109
|
-
for (let n of f) if (e(s(t, ".claude", "skills", n))) throw Error(`.claude/skills/${n}/ already exists — run \`tracerkit update\` to add new skills, or \`tracerkit update --force\` to replace all skills`);
|
|
110
|
-
let { copied: n } = y(t, d(t));
|
|
111
|
-
return n.map((e) => `✓ ${e}`);
|
|
112
|
-
}
|
|
113
|
-
//#endregion
|
|
114
107
|
//#region src/commands/update.ts
|
|
115
|
-
function
|
|
108
|
+
function S(t, n) {
|
|
116
109
|
if (!f.some((n) => e(s(t, ".claude", "skills", n)))) throw Error("TracerKit not initialized — run `tracerkit init` first");
|
|
117
110
|
let r = d(t), { unchanged: a, modified: o, missing: c } = x(t, r), l = [];
|
|
118
111
|
for (let n of p) {
|
|
@@ -140,6 +133,13 @@ function C(t, n) {
|
|
|
140
133
|
return l;
|
|
141
134
|
}
|
|
142
135
|
//#endregion
|
|
136
|
+
//#region src/commands/init.ts
|
|
137
|
+
function C(t) {
|
|
138
|
+
if (f.some((n) => e(s(t, ".claude", "skills", n)))) return S(t);
|
|
139
|
+
let { copied: n } = y(t, d(t));
|
|
140
|
+
return n.map((e) => `✓ ${e}`);
|
|
141
|
+
}
|
|
142
|
+
//#endregion
|
|
143
143
|
//#region src/commands/uninstall.ts
|
|
144
144
|
function w(t) {
|
|
145
145
|
if (!f.some((n) => e(s(t, ".claude", "skills", n)))) throw Error("TracerKit not initialized — nothing to uninstall");
|