tracerkit 1.0.1 → 1.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 CHANGED
@@ -58,24 +58,87 @@ npx tracerkit uninstall .
58
58
 
59
59
  ## Skills
60
60
 
61
- ### `/tk:prd <idea>` — Write a PRD
61
+ ### Core skills
62
+
63
+ The three-step workflow that takes a feature from idea to verified archive.
64
+
65
+ #### `/tk:prd <idea>` — Write a PRD
62
66
 
63
67
  Interactive interview to define a feature. Explores the codebase, asks scoping questions one at a time, designs deep modules, and writes a structured PRD.
64
68
 
65
69
  **Output:** `prds/<slug>.md`
66
70
 
67
- ### `/tk:plan <slug>` — Create an implementation plan
71
+ #### `/tk:plan <slug>` — Create an implementation plan
68
72
 
69
73
  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.
70
74
 
71
75
  **Output:** `plans/<slug>.md`
72
76
 
73
- ### `/tk:verify <slug>` — Verify and archive
77
+ #### `/tk:verify <slug>` — Verify and archive
74
78
 
75
79
  Read-only review that compares the codebase against the plan's done-when conditions. Runs tests, checks user stories, and stamps a **PASS** or **NEEDS_WORK** verdict. On PASS, automatically archives the PRD and plan to `archive/<slug>/`.
76
80
 
77
81
  **Output:** Verdict block in `plans/<slug>.md` — on PASS: `archive/<slug>/prd.md` + `archive/<slug>/plan.md`
78
82
 
83
+ ### Helper skills
84
+
85
+ Useful but optional — this category will grow over time.
86
+
87
+ #### `/tk:status` — Workflow dashboard
88
+
89
+ Scans `prds/` and prints a table of all features grouped by status (`in_progress`, `created`, `done`), with age, latest verdict, and blocker/suggestion counts. Read-only — no files are modified.
90
+
91
+ ## Metadata Lifecycle
92
+
93
+ Each PRD carries YAML frontmatter that tracks its position in the workflow. The skills update it automatically — you never need to edit it by hand.
94
+
95
+ **Fields:**
96
+
97
+ - `created` — ISO 8601 UTC timestamp, set when the PRD is written
98
+ - `status` — `created` | `in_progress` | `done`
99
+ - `completed` — ISO 8601 UTC timestamp, set when verification passes
100
+
101
+ **How it changes:**
102
+
103
+ | Stage | Skill | Frontmatter |
104
+ | -------- | ------------------- | ---------------------------------------------------- |
105
+ | Defined | `/tk:prd` | `created: 2025-06-15T14:30:00Z`<br>`status: created` |
106
+ | Planning | `/tk:plan` | `status: in_progress` |
107
+ | Verified | `/tk:verify` (PASS) | `status: done`<br>`completed: 2025-06-20T09:00:00Z` |
108
+
109
+ <details>
110
+ <summary>Example frontmatter at each stage</summary>
111
+
112
+ After `/tk:prd`:
113
+
114
+ ```yaml
115
+ ---
116
+ created: 2025-06-15T14:30:00Z
117
+ status: created
118
+ ---
119
+ ```
120
+
121
+ After `/tk:plan`:
122
+
123
+ ```yaml
124
+ ---
125
+ created: 2025-06-15T14:30:00Z
126
+ status: in_progress
127
+ ---
128
+ ```
129
+
130
+ After `/tk:verify` (PASS):
131
+
132
+ ```yaml
133
+ ---
134
+ created: 2025-06-15T14:30:00Z
135
+ status: done
136
+ completed: 2025-06-20T09:00:00Z
137
+ ---
138
+ ```
139
+
140
+ </details>
141
+
79
142
  ## Why TracerKit?
80
143
 
81
144
  Most planning tools produce horizontal task lists — nothing works until everything is done. TracerKit uses **tracer-bullet vertical slices** instead: each phase cuts through every layer (schema → service → API → UI → tests), so every phase is demoable on its own. Integration problems surface early, context stays focused, and AI assistants get small well-scoped phases instead of sprawling layers.
package/dist/bin.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { n as e, r as t, t as n } from "./uninstall-BWCq5Ivr.js";
2
+ import { n as e, r as t, t as n } from "./uninstall-B9BzyN-s.js";
3
3
  import { resolve as r } from "node:path";
4
4
  import { homedir as i } from "node:os";
5
5
  //#region src/cli.ts
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import { i as e, n as t, r as n, t as r } from "./uninstall-BWCq5Ivr.js";
1
+ import { i as e, n as t, r as n, t as r } from "./uninstall-B9BzyN-s.js";
2
2
  export { e as SKILL_NAMES, n as init, r as uninstall, t as update };
@@ -6,7 +6,8 @@ import { fileURLToPath as l } from "node:url";
6
6
  var u = [
7
7
  "tk:prd",
8
8
  "tk:plan",
9
- "tk:verify"
9
+ "tk:verify",
10
+ "tk:status"
10
11
  ], d = s(o(l(import.meta.url)), "..", "templates");
11
12
  function f(e, t = "") {
12
13
  let n = r(e, { withFileTypes: !0 }), i = [];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tracerkit",
3
- "version": "1.0.1",
3
+ "version": "1.1.0",
4
4
  "description": "Stack-agnostic spec-driven workflow for AI coding assistants",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -1,7 +1,6 @@
1
1
  ---
2
2
  description: Turn a PRD into a multi-phase implementation plan using tracer-bullet vertical slices, saved to plans/. Use after /tk:prd.
3
3
  argument-hint: '[slug]'
4
- disable-model-invocation: true
5
4
  ---
6
5
 
7
6
  # PRD to Plan
@@ -26,6 +25,12 @@ Read `prds/<slug>.md`. If it does not exist, list available PRDs and ask.
26
25
 
27
26
  If `plans/<slug>.md` already exists, tell the user and ask whether to overwrite or pick a new name.
28
27
 
28
+ ### 1b. Update PRD status
29
+
30
+ Update the YAML frontmatter in `prds/<slug>.md` to `status: in_progress`. Change only the `status` field — do not touch any other frontmatter fields or the markdown content below the closing `---`.
31
+
32
+ If the PRD has no frontmatter, skip this step silently.
33
+
29
34
  ### 2. Explore the codebase
30
35
 
31
36
  Understand current architecture, existing patterns, and integration points.
@@ -1,7 +1,6 @@
1
1
  ---
2
2
  description: Create a PRD through user interview, codebase exploration, and module design, saved to prds/. Use when starting a new feature or change.
3
3
  argument-hint: <idea>
4
- disable-model-invocation: true
5
4
  ---
6
5
 
7
6
  # PRD Writing
@@ -55,6 +54,11 @@ Present modules to user. Confirm which need tests.
55
54
  Save to `prds/<slug>.md` (create `prds/` if missing).
56
55
 
57
56
  ```markdown
57
+ ---
58
+ created: <current UTC timestamp, ISO 8601, e.g. 2025-06-15T14:30:00Z>
59
+ status: created
60
+ ---
61
+
58
62
  # Feature Name
59
63
 
60
64
  ## Problem Statement
@@ -0,0 +1,64 @@
1
+ ---
2
+ description: Show a dashboard of all features and their workflow status. Use any time to check progress.
3
+ ---
4
+
5
+ # Workflow Dashboard
6
+
7
+ Scan all PRDs and display a status overview of every feature in the workflow.
8
+
9
+ ## Workflow
10
+
11
+ ### 1. Scan PRDs
12
+
13
+ List all `.md` files in `prds/`. If the directory is missing or empty, print "No features found — run `/tk:prd` to start one." and stop.
14
+
15
+ ### 2. Parse each PRD
16
+
17
+ For each file `prds/<slug>.md`:
18
+
19
+ 1. Read YAML frontmatter (between opening and closing `---` delimiters)
20
+ 2. Extract fields: `created`, `status`, `completed`
21
+ 3. If no frontmatter exists, treat as `status: unknown` with no age
22
+
23
+ ### 3. Read verdict data
24
+
25
+ For each slug, check if `plans/<slug>.md` exists. If it does, find the last `## Verdict` block and extract:
26
+
27
+ - **Result**: PASS or NEEDS_WORK
28
+ - **BLOCKERS**: count
29
+ - **SUGGESTIONS**: count
30
+
31
+ If no plan or no verdict block exists, leave verdict columns blank.
32
+
33
+ ### 4. Print the table
34
+
35
+ Group features by status in this order: `in_progress`, `created`, `done`, `unknown`.
36
+
37
+ Within each group, sort by `created` date (oldest first). Features without a `created` date sort last.
38
+
39
+ Print a markdown table:
40
+
41
+ ```
42
+ ## Workflow Dashboard
43
+
44
+ | Feature | Status | Age | Verdict | Blockers | Suggestions |
45
+ |---------|--------|-----|---------|----------|-------------|
46
+ | <slug> | ... | ... | ... | ... | ... |
47
+ ```
48
+
49
+ Column definitions:
50
+
51
+ - **Feature**: the slug (filename without `.md`)
52
+ - **Status**: `created`, `in_progress`, `done`, or `unknown`
53
+ - **Age**: human-readable duration since `created` (e.g. "3d", "2w", "1mo") — blank if no `created`
54
+ - **Verdict**: latest verdict result or blank
55
+ - **Blockers**: blocker count from latest verdict or blank
56
+ - **Suggestions**: suggestion count from latest verdict or blank
57
+
58
+ After the table, print a one-line summary: `N features: X in progress, Y created, Z done`.
59
+
60
+ ## Rules
61
+
62
+ - Read-only — this skill must not create, edit, or delete any files
63
+ - Graceful degradation for missing frontmatter, missing plans, or missing verdicts
64
+ - No arguments accepted — always scans all PRDs
@@ -1,7 +1,6 @@
1
1
  ---
2
2
  description: Compare implementation against plan, emit BLOCKERS/SUGGESTIONS and a PASS or NEEDS_WORK verdict. Auto-archives on PASS. Use after implementing a plan.
3
3
  argument-hint: '[slug]'
4
- disable-model-invocation: true
5
4
  ---
6
5
 
7
6
  # Verify Implementation
@@ -80,9 +79,18 @@ Append a verdict block at the bottom of `plans/<slug>.md`:
80
79
 
81
80
  If a previous verdict block exists, replace it with the new one.
82
81
 
83
- ### 7. On PASS — archive
82
+ ### 7. On PASS — update PRD status and archive
84
83
 
85
- If the verdict is **PASS**, automatically archive:
84
+ If the verdict is **PASS**:
85
+
86
+ **First**, update the YAML frontmatter in `prds/<slug>.md`:
87
+
88
+ - Set `status: done`
89
+ - Add `completed: <current UTC timestamp, ISO 8601, e.g. 2025-06-15T14:30:00Z>`
90
+ - Do not touch any other frontmatter fields or the markdown content below the closing `---`
91
+ - If the PRD has no frontmatter, skip frontmatter update silently
92
+
93
+ **Then**, automatically archive:
86
94
 
87
95
  1. Create `archive/<slug>/` directory (and `archive/` if missing)
88
96
  2. Move `prds/<slug>.md` → `archive/<slug>/prd.md`