tuncss-plan-kit 0.1.0 → 0.2.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.
@@ -1,77 +1,78 @@
1
- ---
2
- name: handoff-plan
3
- description: Use after writing a plan when the user wants a short briefing message to paste into another LLM agent (Codex, Cursor, Copilot, etc.) so it can pick up execution. Triggered by /handoff-plan.
4
- ---
5
-
6
- # Handoff Plan
7
-
8
- Produce a short, paste-ready briefing message that another LLM agent can use to pick up an existing plan in this repo. The receiving agent is assumed to have filesystem access — the message points at files rather than inlining them.
9
-
10
- **Announce at start:** "Generating handoff message."
11
-
12
- ## Inputs
13
-
14
- - **If the user passes a plan path** (e.g. `/handoff-plan docs/plans/2026-05-13-foo.md`), use that file.
15
- - **Otherwise** pick the most recently modified `*.md` in `docs/plans/`. If `docs/plans/` doesn't exist or is empty, stop and tell the user to run `/plan-universal` first.
16
-
17
- If a spec matching the plan's slug exists in `docs/specs/`, include its path too. Best-effort match by filename slug; don't fabricate a path — omit the spec line if there's no clear match.
18
-
19
- ## What to extract from the plan
20
-
21
- Read the plan file and pull:
22
- - **Goal** — the one-line goal from the header
23
- - **Tech / dependencies** — the tech line from the header
24
- - **Task list** — every `### TASK-NN: <name>` heading (just the numbers and names, not the bodies)
25
-
26
- ## Repo context
27
-
28
- Get a one-line project descriptor:
29
- - Prefer `package.json` `name` + `description`
30
- - Fall back to the first non-empty line of `README.md`
31
- - One short sentence — no marketing language
32
-
33
- ## Output
34
-
35
- Write the message to `docs/handoffs/YYYY-MM-DD-<feature-slug>.md` (date = today, slug = same slug as the plan file). Create `docs/handoffs/` if missing.
36
-
37
- After writing, print only a single confirmation line to chat:
38
-
39
- > Handoff written to `docs/handoffs/<filename>.md`.
40
-
41
- Do not echo the message contents — the user will open the file.
42
-
43
- ## Message template
44
-
45
- ````text
46
- You're picking up an implementation plan in this repo.
47
-
48
- **Project:** <project name> — <one-line description>
49
-
50
- **Plan:** `<path/to/plan.md>`
51
- **Spec:** `<path/to/spec.md>` ← omit this line entirely if no spec found
52
-
53
- **Goal:** <goal line from plan>
54
-
55
- **Tech:** <tech line from plan>
56
-
57
- **Tasks:**
58
- - TASK-01: <name>
59
- - TASK-02: <name>
60
- - ...
61
-
62
- **How to execute (full execution contract is at the top of the plan file):**
63
- 1. When I ask for a task ("do TASK-03"), read **only** that task's block in the plan.
64
- 2. Stay strictly inside its **Targets** — don't edit files outside that list.
65
- 3. Follow the **Implementation Notes**; don't invent extra scope.
66
- 4. When **Done When** and **Verification** are satisfied, **stop and report**. Wait for my approval before moving on.
67
- 5. If verification fails, report and stop. Don't attempt fixes outside the task's Targets.
68
-
69
- Start by reading `<plan path>` end-to-end, then wait for me to ask for the first task. Don't begin TASK-01 until I ask.
70
- ````
71
-
72
- ## Rules
73
-
74
- - Don't summarize task bodies. The receiving agent reads the plan file itself.
75
- - Don't reformat the execution contract beyond the 5 numbered rules above. They are the contract; the plan file is the source of truth.
76
- - Keep the message under ~50 lines. If you're tempted to add more context, you're inlining the plan — stop.
77
- - Don't include this skill's name, your model name, or any Claude-specific framing in the output. The receiver doesn't need to know how the message was generated.
1
+ ---
2
+ name: handoff-plan
3
+ description: Use after writing a plan when the user wants a short briefing message to paste into another LLM agent (Codex, Cursor, Copilot, etc.) so it can pick up execution. Triggered by /handoff-plan.
4
+ ---
5
+
6
+ # Handoff Plan
7
+
8
+ Produce a short, paste-ready briefing message that another LLM agent can use to pick up an existing plan in this repo. The receiving agent is assumed to have filesystem access — the message points at files rather than inlining them.
9
+
10
+ **Announce at start:** "Generating handoff message."
11
+
12
+ ## Inputs
13
+
14
+ - **If the user passes a plan path** (e.g. `/handoff-plan docs/plans/2026-05-13-foo.md`), use that file.
15
+ - **Otherwise** pick the most recently modified `*.md` in `docs/plans/`. If `docs/plans/` doesn't exist or is empty, stop and tell the user to run `/plan-universal` first.
16
+
17
+ If a spec matching the plan's slug exists in `docs/specs/`, include its path too. Best-effort match by filename slug; don't fabricate a path — omit the spec line if there's no clear match.
18
+
19
+ ## What to extract from the plan
20
+
21
+ Read the plan file and pull:
22
+ - **Goal** — the one-line goal from the header
23
+ - **Tech / dependencies** — the tech line from the header
24
+ - **Task list** — every `### TASK-NN: <name>` heading (just the numbers and names, not the bodies)
25
+
26
+ ## Repo context
27
+
28
+ Get a one-line project descriptor:
29
+ - Prefer `package.json` `name` + `description`
30
+ - Fall back to the first non-empty line of `README.md`
31
+ - One short sentence — no marketing language
32
+
33
+ ## Output
34
+
35
+ Write the message to `docs/handoffs/YYYY-MM-DD-<feature-slug>.md` (date = today, slug = same slug as the plan file). Create `docs/handoffs/` if missing.
36
+
37
+ After writing, print only a single confirmation line to chat:
38
+
39
+ > Handoff written to `docs/handoffs/<filename>.md`.
40
+
41
+ Do not echo the message contents — the user will open the file.
42
+
43
+ ## Message template
44
+
45
+ ````text
46
+ You're picking up an implementation plan in this repo.
47
+
48
+ **Project:** <project name> — <one-line description>
49
+
50
+ **Plan:** `<path/to/plan.md>`
51
+ **Spec:** `<path/to/spec.md>` ← omit this line entirely if no spec found
52
+
53
+ **Goal:** <goal line from plan>
54
+
55
+ **Tech:** <tech line from plan>
56
+
57
+ **Tasks:**
58
+ - TASK-01: <name>
59
+ - TASK-02: <name>
60
+ - ...
61
+
62
+ **How to execute (full execution contract is at the top of the plan file):**
63
+ 1. When I ask for a task ("do TASK-03"), read **only** that task's block in the plan.
64
+ 2. Stay strictly inside its **Targets** — don't edit files outside that list.
65
+ 3. Follow the **Implementation Notes**; don't invent extra scope.
66
+ 4. When **Done When** and **Verification** are satisfied, write the changelog entry (rule 6), then **stop and report**. Wait for my approval before moving on.
67
+ 5. If verification fails, report and stop. Don't attempt fixes outside the task's Targets, and don't write a changelog entry.
68
+ 6. **Changelog entry:** use the `changelog` skill to append this task's entry to `docs/CHANGELOG.md`. Base it on the actual diff, not on what you set out to do.
69
+
70
+ Start by reading `<plan path>` end-to-end, then wait for me to ask for the first task. Don't begin TASK-01 until I ask.
71
+ ````
72
+
73
+ ## Rules
74
+
75
+ - Don't summarize task bodies. The receiving agent reads the plan file itself.
76
+ - Don't reformat the execution contract beyond the 6 numbered rules above. They are the contract; the plan file is the source of truth.
77
+ - Keep the message under ~50 lines. If you're tempted to add more context, you're inlining the plan — stop.
78
+ - Don't include this skill's name, your model name, or any Claude-specific framing in the output. The receiver doesn't need to know how the message was generated.
@@ -1,138 +1,139 @@
1
- ---
2
- name: plan-universal
3
- description: Use when you have an approved spec or a clear multi-step task and need to write the implementation plan before any code is written. Invoked via /plan-universal, usually after the brainstorm skill.
4
- ---
5
-
6
- # Writing Plans
7
-
8
- Turn a spec into a plan an engineer can execute task by task without re-reading the spec. Assume they're capable but have zero context on this codebase or problem domain — every task must stand on its own.
9
-
10
- **Announce at start:** "Writing the implementation plan."
11
-
12
- **Save plans to:** `docs/plans/YYYY-MM-DD-<feature-name>.md` (override if the user has set a different location). Create `docs/plans/` if it doesn't exist.
13
-
14
- ## Scope check
15
-
16
- If the spec covers multiple independent subsystems, that should have been caught during brainstorming. If it slipped through, stop and propose splitting it into one plan per subsystem before writing tasks. Each plan should produce working, testable software on its own.
17
-
18
- ## File structure first
19
-
20
- Before defining tasks, map every file the plan will create or modify and what each is responsible for. Decomposition decisions get locked in here, not inside individual tasks.
21
-
22
- - One clear responsibility per file. Files that change together live together; split by responsibility, not technical layer.
23
- - Smaller, focused files are easier to edit reliably than large ones doing many things.
24
- - In an existing codebase, follow the patterns already there. If a file you're modifying has grown unwieldy and the work touches it heavily, including a focused split in the plan is reasonable. Don't bundle unrelated restructuring.
25
-
26
- This map is what makes the task list coherent. Each task should produce changes that make sense as a self-contained unit.
27
-
28
- ## Plan document structure
29
-
30
- Every plan starts with this header:
31
-
32
- ````markdown
33
- # <Feature Name> — Implementation Plan
34
-
35
- <!-- EXECUTION CONTRACT — read before touching any task -->
36
- > When the user asks for a specific task (e.g. "do TASK-03"):
37
- > 1. Read **only** that task's block. Do not preview other tasks.
38
- > 2. Stay strictly inside its **Targets** — do not edit files outside that list.
39
- > 3. Follow the **Implementation Notes**; do not invent extra scope.
40
- > 4. When **Done When** and **Verification** are satisfied, **stop and report**. Wait for approval before moving to the next task.
41
- > 5. If verification fails, report the failure and stop. Do not attempt fixes outside the task's Targets.
42
-
43
- **Goal:** <one sentence>
44
-
45
- **Architecture:** <2-3 sentences on the approach>
46
-
47
- **Tech / dependencies:** <key libraries, runtimes, services>
48
-
49
- **File map:**
50
- - `path/to/a.ts` — <responsibility>
51
- - `path/to/b.ts` — <responsibility>
52
- - `tests/...` — <what's covered, if anything>
53
-
54
- ---
55
- ````
56
-
57
- ## Model tiers
58
-
59
- Every task gets a recommended tier. These are the cost/capability brackets for the model that should execute it:
60
-
61
- - **T1 — Fast:** trivial edits, renames, formatting, single-file boilerplate
62
- - **T2 — Balanced:** standard feature work in one component, contained logic
63
- - **T3 — Power:** multi-file changes, non-trivial logic, refactors with consequence
64
- - **T4 — Reasoning:** architecture decisions, gnarly debugging, cross-cutting design
65
-
66
- When in doubt, pick the lower tier. Upgrades are cheap; over-spending isn't.
67
-
68
- ## Task structure
69
-
70
- Every task uses this shape:
71
-
72
- ````markdown
73
- ### TASK-01: <short name>
74
-
75
- **Targets:**
76
- - `exact/path/to/file.ts` (create | modify | delete)
77
- - `exact/path/to/other.ts` (modify)
78
-
79
- **Model Tier:** T2 <!-- T1 Fast | T2 Balanced | T3 Power | T4 Reasoning -->
80
-
81
- **Implementation Notes:**
82
- - What this task does, in plain language
83
- - Any non-obvious decision and why
84
- - Concrete code, types, function signatures, or commands the engineer needs — not "implement the handler" but the actual handler shape
85
- - If a public interface from an earlier task is consumed here, restate its signature; don't make the reader page back
86
-
87
- **Done When:**
88
- - Bullet list of observable outcomes
89
- - E.g. "endpoint returns 200 with `{ id, status }` body for valid input"
90
- - E.g. "type `Foo` exported from `src/foo.ts`"
91
-
92
- **Verification:**
93
- - Manual: <commands the engineer runs and what they should see>
94
- - Automated (optional): <test files, scripts, or `npm test -- foo` commands and expected output, only if automated coverage genuinely belongs here>
95
- ````
96
-
97
- Tasks are self-contained because the executor reads exactly one block per turn (see the Execution Contract). If TASK-07 needs the shape of something defined in TASK-02, restate it in TASK-07 — don't make the reader scroll.
98
-
99
- ## Granularity
100
-
101
- Each task should be a self-contained slice that produces something testable. Not microsteps like "write the failing test" / "make it pass" — that's noise. A task is roughly: a feature surface, a module, an endpoint, a screen, a migration. Split when:
102
- - Targets cross unrelated areas
103
- - The verification step would need multiple unrelated checks
104
- - The Implementation Notes start branching ("either X or Y depending on…")
105
-
106
- Merge when a task is so small it has no meaningful Done When of its own.
107
-
108
- ## Tests are not mandatory
109
-
110
- Don't dictate TDD or per-task test coverage. Add Automated Verification only when an automated check genuinely belongs in that task (a regression test for a known-bug fix, a contract test for a new public API). For most tasks, **Done When** + Manual Verification is enough. Let the executor judge whether more coverage pays for itself.
111
-
112
- ## No placeholders
113
-
114
- These are **plan failures**. Never write them:
115
- - "TBD", "TODO", "implement later", "fill in details"
116
- - "Add appropriate error handling" / "validate input" / "handle edge cases" — name the cases
117
- - "Write tests for the above" without the actual test names and what they assert
118
- - "Similar to TASK-N" — repeat what's needed; the executor reads tasks out of order
119
- - Steps that describe *what* without showing *how* — if a task changes code, show the code shape, the type, or the exact command
120
- - References to types, functions, or files not defined in any task or in the file map
121
-
122
- ## Self-review
123
-
124
- After the plan is written, re-read it against the spec with fresh eyes. Fix issues inline; no second review pass.
125
-
126
- 1. **Spec coverage** — go through each requirement in the spec. Can you point to the task that implements it? Add tasks for any gap.
127
- 2. **Placeholder scan** — anything from the "No placeholders" list? Fix.
128
- 3. **Name and type consistency** — a function called `clearLayers()` in TASK-03 but `clearFullLayers()` in TASK-07 is a bug. Same for types, file paths, env vars, table names.
129
- 4. **Targets isolation** — does any task's Targets list overlap awkwardly with another in a way that will force out-of-order edits? If so, resequence or merge.
130
- 5. **Verification reality** — every Done When has a corresponding Verification step that an engineer can actually run.
131
-
132
- ## After the plan
133
-
134
- Save the plan, commit it, and tell the user:
135
-
136
- > Plan saved to `<path>` and committed. To execute, ask for tasks one at a time (e.g. "do TASK-01") — I'll stay inside that task's Targets and stop for approval before moving on, per the execution contract at the top of the plan. Or, if you want to hand this off to another LLM agent, run `/handoff-plan`.
137
-
138
- Do not start implementing in the same turn. Wait for the user to request the first task.
1
+ ---
2
+ name: plan-universal
3
+ description: Use when you have an approved spec or a clear multi-step task and need to write the implementation plan before any code is written. Invoked via /plan-universal, usually after the brainstorm skill.
4
+ ---
5
+
6
+ # Writing Plans
7
+
8
+ Turn a spec into a plan an engineer can execute task by task without re-reading the spec. Assume they're capable but have zero context on this codebase or problem domain — every task must stand on its own.
9
+
10
+ **Announce at start:** "Writing the implementation plan."
11
+
12
+ **Save plans to:** `docs/plans/YYYY-MM-DD-<feature-name>.md` (override if the user has set a different location). Create `docs/plans/` if it doesn't exist.
13
+
14
+ ## Scope check
15
+
16
+ If the spec covers multiple independent subsystems, that should have been caught during brainstorming. If it slipped through, stop and propose splitting it into one plan per subsystem before writing tasks. Each plan should produce working, testable software on its own.
17
+
18
+ ## File structure first
19
+
20
+ Before defining tasks, map every file the plan will create or modify and what each is responsible for. Decomposition decisions get locked in here, not inside individual tasks.
21
+
22
+ - One clear responsibility per file. Files that change together live together; split by responsibility, not technical layer.
23
+ - Smaller, focused files are easier to edit reliably than large ones doing many things.
24
+ - In an existing codebase, follow the patterns already there. If a file you're modifying has grown unwieldy and the work touches it heavily, including a focused split in the plan is reasonable. Don't bundle unrelated restructuring.
25
+
26
+ This map is what makes the task list coherent. Each task should produce changes that make sense as a self-contained unit.
27
+
28
+ ## Plan document structure
29
+
30
+ Every plan starts with this header:
31
+
32
+ ````markdown
33
+ # <Feature Name> — Implementation Plan
34
+
35
+ <!-- EXECUTION CONTRACT — read before touching any task -->
36
+ > When the user asks for a specific task (e.g. "do TASK-03"):
37
+ > 1. Read **only** that task's block. Do not preview other tasks.
38
+ > 2. Stay strictly inside its **Targets** — do not edit files outside that list.
39
+ > 3. Follow the **Implementation Notes**; do not invent extra scope.
40
+ > 4. When **Done When** and **Verification** are satisfied, write the changelog entry (rule 6), then **stop and report**. Wait for approval before moving to the next task.
41
+ > 5. If verification fails, report the failure and stop. Do not attempt fixes outside the task's Targets, and do not write a changelog entry.
42
+ > 6. **Changelog entry:** use the `changelog` skill to append this task's entry to `docs/CHANGELOG.md`. Base it on the actual diff, not on what you set out to do.
43
+
44
+ **Goal:** <one sentence>
45
+
46
+ **Architecture:** <2-3 sentences on the approach>
47
+
48
+ **Tech / dependencies:** <key libraries, runtimes, services>
49
+
50
+ **File map:**
51
+ - `path/to/a.ts` — <responsibility>
52
+ - `path/to/b.ts` — <responsibility>
53
+ - `tests/...` — <what's covered, if anything>
54
+
55
+ ---
56
+ ````
57
+
58
+ ## Model tiers
59
+
60
+ Every task gets a recommended tier. These are the cost/capability brackets for the model that should execute it:
61
+
62
+ - **T1 — Fast:** trivial edits, renames, formatting, single-file boilerplate
63
+ - **T2 — Balanced:** standard feature work in one component, contained logic
64
+ - **T3 — Power:** multi-file changes, non-trivial logic, refactors with consequence
65
+ - **T4 — Reasoning:** architecture decisions, gnarly debugging, cross-cutting design
66
+
67
+ When in doubt, pick the lower tier. Upgrades are cheap; over-spending isn't.
68
+
69
+ ## Task structure
70
+
71
+ Every task uses this shape:
72
+
73
+ ````markdown
74
+ ### TASK-01: <short name>
75
+
76
+ **Targets:**
77
+ - `exact/path/to/file.ts` (create | modify | delete)
78
+ - `exact/path/to/other.ts` (modify)
79
+
80
+ **Model Tier:** T2 <!-- T1 Fast | T2 Balanced | T3 Power | T4 Reasoning -->
81
+
82
+ **Implementation Notes:**
83
+ - What this task does, in plain language
84
+ - Any non-obvious decision and why
85
+ - Concrete code, types, function signatures, or commands the engineer needs — not "implement the handler" but the actual handler shape
86
+ - If a public interface from an earlier task is consumed here, restate its signature; don't make the reader page back
87
+
88
+ **Done When:**
89
+ - Bullet list of observable outcomes
90
+ - E.g. "endpoint returns 200 with `{ id, status }` body for valid input"
91
+ - E.g. "type `Foo` exported from `src/foo.ts`"
92
+
93
+ **Verification:**
94
+ - Manual: <commands the engineer runs and what they should see>
95
+ - Automated (optional): <test files, scripts, or `npm test -- foo` commands and expected output, only if automated coverage genuinely belongs here>
96
+ ````
97
+
98
+ Tasks are self-contained because the executor reads exactly one block per turn (see the Execution Contract). If TASK-07 needs the shape of something defined in TASK-02, restate it in TASK-07 — don't make the reader scroll.
99
+
100
+ ## Granularity
101
+
102
+ Each task should be a self-contained slice that produces something testable. Not microsteps like "write the failing test" / "make it pass" — that's noise. A task is roughly: a feature surface, a module, an endpoint, a screen, a migration. Split when:
103
+ - Targets cross unrelated areas
104
+ - The verification step would need multiple unrelated checks
105
+ - The Implementation Notes start branching ("either X or Y depending on…")
106
+
107
+ Merge when a task is so small it has no meaningful Done When of its own.
108
+
109
+ ## Tests are not mandatory
110
+
111
+ Don't dictate TDD or per-task test coverage. Add Automated Verification only when an automated check genuinely belongs in that task (a regression test for a known-bug fix, a contract test for a new public API). For most tasks, **Done When** + Manual Verification is enough. Let the executor judge whether more coverage pays for itself.
112
+
113
+ ## No placeholders
114
+
115
+ These are **plan failures**. Never write them:
116
+ - "TBD", "TODO", "implement later", "fill in details"
117
+ - "Add appropriate error handling" / "validate input" / "handle edge cases" — name the cases
118
+ - "Write tests for the above" without the actual test names and what they assert
119
+ - "Similar to TASK-N" — repeat what's needed; the executor reads tasks out of order
120
+ - Steps that describe *what* without showing *how* — if a task changes code, show the code shape, the type, or the exact command
121
+ - References to types, functions, or files not defined in any task or in the file map
122
+
123
+ ## Self-review
124
+
125
+ After the plan is written, re-read it against the spec with fresh eyes. Fix issues inline; no second review pass.
126
+
127
+ 1. **Spec coverage** — go through each requirement in the spec. Can you point to the task that implements it? Add tasks for any gap.
128
+ 2. **Placeholder scan** — anything from the "No placeholders" list? Fix.
129
+ 3. **Name and type consistency** — a function called `clearLayers()` in TASK-03 but `clearFullLayers()` in TASK-07 is a bug. Same for types, file paths, env vars, table names.
130
+ 4. **Targets isolation** — does any task's Targets list overlap awkwardly with another in a way that will force out-of-order edits? If so, resequence or merge.
131
+ 5. **Verification reality** — every Done When has a corresponding Verification step that an engineer can actually run.
132
+
133
+ ## After the plan
134
+
135
+ Save the plan, commit it, and tell the user:
136
+
137
+ > Plan saved to `<path>` and committed. To execute, ask for tasks one at a time (e.g. "do TASK-01") — I'll stay inside that task's Targets and stop for approval before moving on, per the execution contract at the top of the plan. Or, if you want to hand this off to another LLM agent, run `/handoff-plan`.
138
+
139
+ Do not start implementing in the same turn. Wait for the user to request the first task.
@@ -1,11 +1,12 @@
1
1
  <!-- tuncss-plan-kit:start -->
2
2
  ## Plan Kit
3
3
 
4
- This project uses tuncss-plan-kit. Three slash commands are available:
4
+ This project uses tuncss-plan-kit. Four slash commands are available:
5
5
 
6
6
  - `/brainstorm` — turn an idea into an approved spec (writes to `docs/specs/`)
7
7
  - `/plan-universal` — turn a spec into an executable plan (writes to `docs/plans/`)
8
8
  - `/handoff-plan` — generate a paste-ready handoff for another LLM agent (writes to `docs/handoffs/`)
9
+ - `/changelog` — record what changed, in plain sentences (writes to `docs/CHANGELOG.md`)
9
10
 
10
- Plans contain an execution contract at the top. When asked for a specific task ("do TASK-03"), read only that task's block, stay inside its Targets, stop and report when Done When + Verification are satisfied.
11
+ Plans contain an execution contract at the top. When asked for a specific task ("do TASK-03"), read only that task's block, stay inside its Targets, write the changelog entry, then stop and report when Done When + Verification are satisfied.
11
12
  <!-- tuncss-plan-kit:end -->