playbook-ai 1.5.0 → 1.5.2
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/CHANGELOG.md +22 -0
- package/VERSION +1 -1
- package/commands/chess.md +74 -70
- package/commands/future.md +167 -93
- package/commands/handoff.md +72 -31
- package/commands/plan.md +30 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
All notable updates to Playbook are documented here. Only impactful changes are listed — new commands, upgraded behavior, and things that make your workflow better. Cosmetic fixes and internal housekeeping are omitted.
|
|
4
4
|
|
|
5
|
+
## [1.5.2] — 2026-05-28
|
|
6
|
+
|
|
7
|
+
### Architecture
|
|
8
|
+
- **Subagent model replaces manual handoffs** — `/chess`, `/future`, and `/plan` no longer generate copy-paste prompt blocks for new terminals. All three now spawn Agent subagents directly, with the appropriate model (Opus 4.6 for `/chess` Human Mode and `/future` narratives; Sonnet for `/plan` and `/chess` System Mode). Fresh context window, results return automatically to the main session. No terminal switching, no copy-pasting.
|
|
9
|
+
- **Brief file pattern** — all commands write a structured `.md` brief before spawning. The subagent reads the file (intake data + execution framework); the user reviews a short intake summary in chat (~150-250 words), not the full brief. Output is appended to the same file — brief and results live together as one artifact. Full brief available at `docs/chess/`, `docs/futures/`, or `docs/plans/` for review or editing before running.
|
|
10
|
+
- **`/handoff` rewritten** — now defines the canonical subagent pattern: write brief → show summary → cost warning (Opus only) → spawn Agent → receive results → continue in main session. Used as the reference by `/chess`, `/future`, and `/plan`.
|
|
11
|
+
|
|
12
|
+
### Commands
|
|
13
|
+
- **`/plan`** — Phase 1 stays inline (conversational direction-setting). Phases 2+3 (hardening + implementation steps) now spawn a Sonnet subagent for complex plans, keeping the main session lean. Simple plans continue inline. Self-contained — no `/start` required.
|
|
14
|
+
- **`/chess`** — Self-contained. Intake summary shown in chat for approval; cost warning before Opus spawn. Chess brief written to `docs/chess/YYYY-MM-DD-[slug].md`; full debrief appended to same file. System Mode: inline Sonnet for simple systems, Sonnet subagent for complex, Opus subagent only when system complexity genuinely warrants it.
|
|
15
|
+
- **`/future`** — `/chess` bridge updated: each swing-state adversarial decision gets a 3-sentence context block (what it is, why it's adversarial, what's at stake) plus an explicit recommendation (run / skip) and a direct *"Run /chess on this?"* confirmation. High threshold for recommending run — both material AND genuinely adversarial. Conservative by default: most runs surface zero chess candidates.
|
|
16
|
+
|
|
17
|
+
## [1.5.1] — 2026-05-28
|
|
18
|
+
|
|
19
|
+
### Strategy
|
|
20
|
+
- **`/future` upgraded to handoff model** — now runs the same way as `/chess`: intake and assumption check in the main session (Sonnet), three narratives and synthesis in a fresh Opus 4.6 parallel session. Keeps main session clean; returns the one-screen primary output via return prompt so the user can discuss it immediately. Self-contained — does not require `/start` to have been run first.
|
|
21
|
+
- **Retrospective mode** — on startup, `/future` checks `docs/futures/` for prior runs. If found, offers to run an update that reads what's changed since the prior session and revises the scenarios with actual data. Turns a one-time exercise into a navigation system.
|
|
22
|
+
- **Assumption check** — brief pre-scenario check (borrowed from `/plan`): surfaces the 2–3 assumptions baked into the user's success scenario and asks which feel shaky. Shaky assumptions seed The Unraveling, making it specific rather than generic.
|
|
23
|
+
- **Synthesis verdicts** — quadrant output now uses ✅ / ⚠️ / ❌ format (borrowed from `/chess` System Mode) for scannability.
|
|
24
|
+
- **`/chess` bridge** — swing-state decisions with a real counterparty are flagged `[/chess candidate]` in the output. Creates a natural hand-off between strategic planning and adversarial analysis.
|
|
25
|
+
- **Saves to `docs/futures/`** — full output (all three narratives + synthesis + primary output) persisted as a dated file. Primary output returned verbatim to main session for discussion.
|
|
26
|
+
|
|
5
27
|
## [1.5.0] — 2026-05-27
|
|
6
28
|
|
|
7
29
|
### Strategy
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.5.
|
|
1
|
+
1.5.2
|
package/commands/chess.md
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
Adversarial strategy analysis and technical stress-testing. Two modes: Human Mode (opponent-modeled, branch-traced) for situations with a real adversary; System Mode (assumption-attack, failure-traced) for technical plans with no human counterparty.
|
|
1
|
+
Adversarial strategy analysis and technical stress-testing. Two modes: Human Mode (opponent-modeled, branch-traced) for situations with a real adversary; System Mode (assumption-attack, failure-traced) for technical plans with no human counterparty.
|
|
2
|
+
|
|
3
|
+
**Self-contained.** Does not require `/start`. Reads its own context.
|
|
2
4
|
|
|
3
5
|
---
|
|
4
6
|
|
|
@@ -14,15 +16,13 @@ Three routes. Assess before doing anything else.
|
|
|
14
16
|
|
|
15
17
|
**Borderline:** Name what makes it ambiguous. Ask the user to confirm before proceeding.
|
|
16
18
|
|
|
17
|
-
The pre-flight runs on Sonnet. Do not begin intake until the route is confirmed.
|
|
18
|
-
|
|
19
19
|
---
|
|
20
20
|
|
|
21
21
|
## Human Mode
|
|
22
22
|
|
|
23
|
-
### Intake
|
|
23
|
+
### Intake
|
|
24
24
|
|
|
25
|
-
Run in the
|
|
25
|
+
Run in the main session on Sonnet. Ask conversationally — not as a numbered list. Group related questions naturally. Use follow-ups where the answer is thin.
|
|
26
26
|
|
|
27
27
|
**The situation**
|
|
28
28
|
- What is the decision, negotiation, or situation you're navigating?
|
|
@@ -49,55 +49,61 @@ Run in the primary session on Sonnet. Ask these questions conversationally — n
|
|
|
49
49
|
- What moves are you currently considering?
|
|
50
50
|
- What counts as a win? An acceptable outcome? A loss?
|
|
51
51
|
|
|
52
|
-
Once intake is complete, read the summary back to the user and confirm it's accurate before generating the handoff prompt.
|
|
53
|
-
|
|
54
52
|
---
|
|
55
53
|
|
|
56
|
-
### Generate the
|
|
57
|
-
|
|
58
|
-
Compile everything from intake into a self-contained chess brief. Fill in all [BRACKETS] with real values — current date, actual repo path (use the current working directory), and a short topic slug derived from the situation (e.g., `hilldun-negotiation`, `board-vote`, `vendor-renewal`).
|
|
54
|
+
### Generate the brief and spawn subagent
|
|
59
55
|
|
|
60
|
-
|
|
56
|
+
Once intake is complete, compile everything into a chess brief file and spawn an Opus 4.6 subagent. Follow the `/handoff` pattern.
|
|
61
57
|
|
|
62
|
-
|
|
58
|
+
**1. Write the brief**
|
|
63
59
|
|
|
64
|
-
|
|
60
|
+
Create `docs/chess/` if it doesn't exist. Write `docs/chess/YYYY-MM-DD-[slug].md` using the template below. Fill in all [BRACKETS] with real values.
|
|
65
61
|
|
|
66
62
|
---
|
|
67
63
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
You are running a chess-style adversarial analysis. Intake is complete — all context is below. Your job is to think several moves ahead, model each adversary's rational behavior, and produce a debrief the user can act on. Do not ask questions. Do not invoke any slash commands. Run straight through.
|
|
73
|
-
|
|
74
|
-
Run on Opus 4.6 (`claude-opus-4-6`). Do not switch models.
|
|
64
|
+
```
|
|
65
|
+
# Chess Brief — [YYYY-MM-DD] — [slug]
|
|
66
|
+
*Human Mode*
|
|
75
67
|
|
|
76
|
-
|
|
68
|
+
## Run instructions
|
|
69
|
+
Run on Opus 4.6 (claude-opus-4-6). Do not switch models. Do not ask questions. Do not invoke slash commands. Surface reasoning in chat as you go. Append all output under ## Output in this file.
|
|
77
70
|
|
|
78
|
-
|
|
79
|
-
[
|
|
71
|
+
## Situation
|
|
72
|
+
[Situation summary]
|
|
80
73
|
|
|
81
|
-
|
|
74
|
+
## Objective
|
|
82
75
|
[What the user is trying to achieve]
|
|
83
76
|
|
|
84
|
-
|
|
77
|
+
## Time horizon
|
|
85
78
|
[One-time / ongoing / deadline: YYYY-MM-DD]
|
|
86
79
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
80
|
+
## Your position
|
|
81
|
+
Standing: [stronger / equal / weaker]
|
|
82
|
+
BATNA: [best alternative if this doesn't go their way]
|
|
83
|
+
Non-negotiables: [what they won't concede]
|
|
84
|
+
Information held back: [what they're not disclosing]
|
|
85
|
+
What adversary likely assumes: [their read of the user's position]
|
|
86
|
+
|
|
87
|
+
## Adversaries
|
|
88
|
+
[For each adversary:]
|
|
89
|
+
**[Name / Role]**
|
|
90
|
+
- Primary goal: [what they want most]
|
|
91
|
+
- Secondary interests: [other things they care about]
|
|
92
|
+
- Motivations: [financial / ego / power / relationship / legal / other]
|
|
93
|
+
- Aggression level: [passive / moderate / aggressive]
|
|
94
|
+
- BATNA: [their best alternative]
|
|
95
|
+
- Constraints: [budget limits, authority limits, approvals needed, external pressures]
|
|
96
|
+
- What they know: [their read of the user's position]
|
|
97
|
+
|
|
98
|
+
## The board
|
|
99
|
+
Current state: [what's happening right now]
|
|
100
|
+
Moves already made: [what's been said or done that constrains the situation]
|
|
101
|
+
Moves under consideration: [what the user is thinking about doing]
|
|
102
|
+
Win: [definition]
|
|
103
|
+
Acceptable: [definition]
|
|
104
|
+
Loss: [definition]
|
|
105
|
+
|
|
106
|
+
## Chess reasoning framework
|
|
101
107
|
|
|
102
108
|
**Step 1 — Inhabit each adversary**
|
|
103
109
|
|
|
@@ -110,7 +116,6 @@ Stay strictly within rational human motivation. Model what a reasonable person i
|
|
|
110
116
|
For each move the user is considering, trace the likely sequence of responses 3–4 moves deep, or until the path reaches a clearly labeled terminal state. Prune branches that are implausible given the adversary's model — don't trace everything, trace what matters.
|
|
111
117
|
|
|
112
118
|
Format each branch as:
|
|
113
|
-
|
|
114
119
|
```
|
|
115
120
|
Your move → Adversary response → Your counter → Their counter → Terminal: [favorable / acceptable / problematic]
|
|
116
121
|
→ Risk branch: if [X] instead → Terminal: [recovery cost]
|
|
@@ -126,56 +131,53 @@ Where in the move tree can you shift a terminal state? What moves create future
|
|
|
126
131
|
|
|
127
132
|
**Step 5 — Recommended line**
|
|
128
133
|
|
|
129
|
-
State the recommended opening move clearly. Explain why it scores better than the alternatives across the terminal states. Include the top 2 contingency responses for the most likely adversary deviation
|
|
134
|
+
State the recommended opening move clearly. Explain why it scores better than the alternatives across the terminal states. Include the top 2 contingency responses for the most likely adversary deviation.
|
|
130
135
|
|
|
131
136
|
Be specific: *"Open with X. If they respond with Y, do Z. If they respond with W instead, do V."*
|
|
132
137
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
+
## Output format
|
|
139
|
+
Structure the output as:
|
|
140
|
+
1. Adversary models — internal model for each adversary
|
|
141
|
+
2. Move tree — branches traced per Step 2
|
|
142
|
+
3. Recommended line — the opening move and top 2 contingencies
|
|
143
|
+
4. Assumption flags — where the analysis is most fragile
|
|
138
144
|
|
|
139
|
-
|
|
140
|
-
- Create the directory if it doesn't exist
|
|
141
|
-
- Structure: Situation → Adversary models → Move tree → Recommended line → Contingencies → Assumption flags
|
|
145
|
+
---
|
|
142
146
|
|
|
143
|
-
|
|
147
|
+
## Output
|
|
144
148
|
|
|
145
|
-
|
|
149
|
+
*(appended by subagent)*
|
|
150
|
+
```
|
|
146
151
|
|
|
147
152
|
---
|
|
148
|
-
**Return prompt — paste this into your original session:**
|
|
149
153
|
|
|
150
|
-
|
|
151
|
-
---
|
|
154
|
+
**2. Show intake summary and get approval**
|
|
152
155
|
|
|
153
|
-
|
|
156
|
+
Display a short summary in chat: situation in one sentence, objective, adversaries named, key position details (standing, BATNA, non-negotiables). Do NOT show the full framework. Say: *"Here's what I captured — [summary]. Does this look right?"*
|
|
154
157
|
|
|
155
|
-
|
|
156
|
-
Chess session complete. You can close this window.
|
|
157
|
-
(Do not run /end — the primary session handles closeout.)
|
|
158
|
-
```
|
|
158
|
+
If the user wants to review or edit before running: *"The full brief is at [path] if you want to adjust anything first."*
|
|
159
159
|
|
|
160
|
-
|
|
160
|
+
**3. Cost warning**
|
|
161
161
|
|
|
162
|
-
|
|
162
|
+
*"This runs on Opus 4.6 — noticeably more expensive than a standard session. Proceed?"*
|
|
163
163
|
|
|
164
|
-
|
|
164
|
+
**4. Spawn the subagent**
|
|
165
|
+
|
|
166
|
+
Spawn an Agent (`model: 'opus'`): *"Read [absolute path to brief file] in full, then execute exactly as instructed. Do not ask questions. Do not invoke slash commands. Append all output under ## Output in that file."*
|
|
165
167
|
|
|
166
|
-
|
|
168
|
+
**5. Surface results**
|
|
167
169
|
|
|
168
|
-
|
|
170
|
+
When the subagent returns, present the recommended line and top contingencies in the main session. The full debrief is in the brief file at `docs/chess/[filename]`.
|
|
169
171
|
|
|
170
172
|
---
|
|
171
173
|
|
|
172
174
|
## System Mode
|
|
173
175
|
|
|
174
|
-
### Intake
|
|
176
|
+
### Intake
|
|
175
177
|
|
|
176
178
|
If the system, plan, and constraints are already established in the conversation, skip directly to the stress-test. Only ask for information that's genuinely missing.
|
|
177
179
|
|
|
178
|
-
If context is thin, ask conversationally
|
|
180
|
+
If context is thin, ask conversationally:
|
|
179
181
|
|
|
180
182
|
**The system**
|
|
181
183
|
- What are you trying to build, fix, or change?
|
|
@@ -187,13 +189,15 @@ If context is thin, ask conversationally — not as a numbered list. Use follow-
|
|
|
187
189
|
- What outcome are you trying to guarantee?
|
|
188
190
|
- What's an acceptable failure mode vs. an unacceptable one?
|
|
189
191
|
|
|
190
|
-
Once you have sufficient context, proceed directly — no need to read it back unless something is ambiguous.
|
|
191
|
-
|
|
192
192
|
---
|
|
193
193
|
|
|
194
|
-
### System stress-test
|
|
194
|
+
### System stress-test
|
|
195
|
+
|
|
196
|
+
**Simple systems** (single service, clear dependencies, limited blast radius): run inline on Sonnet. No subagent needed.
|
|
197
|
+
|
|
198
|
+
**Complex systems** (multiple interacting services, deep dependency chains, complex state machines): follow the `/handoff` pattern. Write a brief to `docs/chess/YYYY-MM-DD-[slug]-system.md` with the system description, plan, and the framework below. Spawn a Sonnet subagent (`model: 'sonnet'`). Escalate the subagent to Opus 4.6 (`model: 'opus'`) only when the system complexity genuinely warrants it.
|
|
195
199
|
|
|
196
|
-
|
|
200
|
+
Surface reasoning in chat as you go.
|
|
197
201
|
|
|
198
202
|
**Step 1 — Map the assumptions**
|
|
199
203
|
|
package/commands/future.md
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
Scenario planning via three futures. Rewinds each path month by month to today, synthesizes the decisions that mattered most, and delivers a one-screen action guide with a clear first move.
|
|
2
2
|
|
|
3
|
+
**Self-contained.** Does not require `/start`. Reads its own context.
|
|
4
|
+
|
|
3
5
|
---
|
|
4
6
|
|
|
5
|
-
## Pre-flight
|
|
7
|
+
## Pre-flight (Sonnet, inline)
|
|
6
8
|
|
|
7
9
|
Silently read the following before doing anything else:
|
|
8
10
|
- `WORK_LOG.md` in the current project
|
|
@@ -10,172 +12,244 @@ Silently read the following before doing anything else:
|
|
|
10
12
|
- Recent git log (last 20 commits) if available
|
|
11
13
|
- Any open/in-progress PM tasks if a PM MCP is connected
|
|
12
14
|
|
|
13
|
-
Do not summarize this to the user. Use it to ground the scenarios in the actual project
|
|
15
|
+
Do not summarize this to the user. Use it to ground the scenarios in the actual project.
|
|
16
|
+
|
|
17
|
+
**Check for prior runs.** Look for files in `docs/futures/`.
|
|
18
|
+
|
|
19
|
+
- If prior run(s) exist: note the most recent file and say: *"I see a /future from [date] — start fresh, or run an update? An update reads what's changed and revises the scenarios with actual data."*
|
|
20
|
+
- If no prior runs: proceed to intake.
|
|
14
21
|
|
|
15
22
|
---
|
|
16
23
|
|
|
17
|
-
## Intake
|
|
24
|
+
## Intake (Sonnet, inline)
|
|
18
25
|
|
|
19
|
-
Ask
|
|
26
|
+
Ask conversationally — not as a numbered list. One question at a time. Follow up where answers are thin.
|
|
20
27
|
|
|
21
|
-
**
|
|
22
|
-
What does massive success look like in concrete terms? Not "we grew a lot" — what's the specific outcome
|
|
28
|
+
**The north star**
|
|
29
|
+
What does massive success look like in concrete terms? Not "we grew a lot" — what's the specific outcome you'd be genuinely proud of? Name it as if it already happened.
|
|
23
30
|
|
|
24
|
-
**
|
|
25
|
-
What's the specific failure that keeps you up at night? The
|
|
31
|
+
**The fear**
|
|
32
|
+
What's the specific failure that keeps you up at night? The one you'd be embarrassed to explain to someone who believed in you.
|
|
26
33
|
|
|
27
|
-
**
|
|
28
|
-
What are the hard limits right now? Runway, team size, a deadline that
|
|
34
|
+
**The constraints**
|
|
35
|
+
What are the hard limits right now? Runway, team size, a deadline that can't move, a dependency you're waiting on.
|
|
29
36
|
|
|
30
37
|
**Timeframe**
|
|
31
|
-
Based on
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
38
|
+
Based on project context and what the user described, propose a timeframe:
|
|
39
|
+
- 3–6 months: specific launch, campaign, or sprint with a hard end date
|
|
40
|
+
- 12 months: default for most products and ventures
|
|
41
|
+
- 18–24 months: platforms, infrastructure, or early-stage ventures
|
|
35
42
|
|
|
36
|
-
|
|
43
|
+
Say: *"Based on what you've described, I'd suggest a [N]-month horizon — does that feel right?"* Confirm before proceeding.
|
|
37
44
|
|
|
38
45
|
---
|
|
39
46
|
|
|
40
|
-
##
|
|
47
|
+
## Assumption check (Sonnet, inline)
|
|
48
|
+
|
|
49
|
+
Brief — not a full /plan. Restate the user's success scenario in one sentence, then surface 2-3 assumptions it rests on. Ask which feel solid and which feel shaky.
|
|
41
50
|
|
|
42
|
-
|
|
51
|
+
*"Your success scenario — [restate it] — rests on a few things being true: [A], [B], [C]. Which of these feel solid, and which feel like open questions? Anything shaky will shape what The Unraveling looks like."*
|
|
43
52
|
|
|
44
|
-
|
|
53
|
+
Note the shaky ones. They go into the brief.
|
|
45
54
|
|
|
46
55
|
---
|
|
47
56
|
|
|
48
|
-
|
|
57
|
+
## Retrospective step (Sonnet subagent — only if prior run exists)
|
|
49
58
|
|
|
50
|
-
|
|
59
|
+
If the user chose the update path: before writing the main brief, spawn a lightweight Sonnet subagent to do the comparison work.
|
|
51
60
|
|
|
52
|
-
|
|
61
|
+
Subagent receives:
|
|
62
|
+
- The prior /future output (read from `docs/futures/[most-recent-file].md` — the ## Output section only)
|
|
63
|
+
- The user's answer to: *"What's the most significant thing that's changed since then — in the project, market, or your constraints?"*
|
|
53
64
|
|
|
54
|
-
|
|
55
|
-
- The decisions that compounded (small early, large later)
|
|
56
|
-
- The things you *didn't* do that turned out to matter
|
|
57
|
-
- The external factors that helped — and what you did to be positioned to benefit from them
|
|
65
|
+
Subagent produces: a 200-300 word comparison note — what the prior thesis got right, where reality diverged, what that changes going into the updated scenarios. This note gets included in the main brief so the Opus subagent doesn't need to re-read the full prior file.
|
|
58
66
|
|
|
59
67
|
---
|
|
60
68
|
|
|
61
|
-
|
|
69
|
+
## Generate the brief and spawn subagent
|
|
62
70
|
|
|
63
|
-
|
|
71
|
+
Compile everything into a futures brief file and spawn an Opus 4.6 subagent. Follow the `/handoff` pattern.
|
|
64
72
|
|
|
65
|
-
|
|
73
|
+
**1. Write the brief**
|
|
66
74
|
|
|
67
|
-
|
|
68
|
-
- What was tempting but harmful (the anti-patterns that looked like good ideas)
|
|
69
|
-
- What was delayed past the point of recovery
|
|
70
|
-
- What the earliest warning sign was — before it became obvious
|
|
71
|
-
- What you'd tell yourself in month 2 if you could
|
|
75
|
+
Create `docs/futures/` if it doesn't exist. Write `docs/futures/YYYY-MM-DD-[slug].md` using the template below. Fill in all [BRACKETS] with real values.
|
|
72
76
|
|
|
73
77
|
---
|
|
74
78
|
|
|
75
|
-
|
|
79
|
+
```
|
|
80
|
+
# Future Brief — [YYYY-MM-DD] — [slug]
|
|
81
|
+
[Fresh run / Retrospective update from [prior date]]
|
|
76
82
|
|
|
77
|
-
|
|
83
|
+
## Run instructions
|
|
84
|
+
Run on Opus 4.6 (claude-opus-4-6). Do not switch models. Do not ask questions. Do not invoke slash commands. Surface reasoning in chat as you go. Append all output under ## Output in this file.
|
|
78
85
|
|
|
79
|
-
|
|
86
|
+
## Project context
|
|
87
|
+
[3-5 bullet points from WORK_LOG + CLAUDE.md: current state, recent decisions, known constraints. Enough to ground the scenarios — not a wall of text.]
|
|
80
88
|
|
|
81
|
-
|
|
89
|
+
## Intake
|
|
90
|
+
- North star: [specific success outcome, past tense]
|
|
91
|
+
- Fear: [specific failure]
|
|
92
|
+
- Constraints: [runway, team, deadlines, dependencies]
|
|
93
|
+
- Timeframe: [N months]
|
|
94
|
+
- Shaky assumptions: [the ones the user flagged as uncertain]
|
|
82
95
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
-
|
|
86
|
-
- The difference between "bad luck" and "we were fragile in a way we could have fixed"
|
|
87
|
-
- What "doing everything right" actually looked like in this world
|
|
96
|
+
[If retrospective:]
|
|
97
|
+
## What's changed since [prior date]
|
|
98
|
+
[The 200-300 word comparison note from the Sonnet retrospective step]
|
|
88
99
|
|
|
89
|
-
|
|
100
|
+
## Futures framework
|
|
90
101
|
|
|
91
|
-
|
|
102
|
+
**Three narratives**
|
|
92
103
|
|
|
93
|
-
|
|
104
|
+
Write all three in past tense. Voice: explaining what happened to someone who loves you and won't let you bullshit them. Start each at the end of the timeframe and rewind month by month to today. Name decisions, not themes. Name the fork points.
|
|
94
105
|
|
|
95
|
-
**
|
|
96
|
-
|
|
106
|
+
**The Win**
|
|
107
|
+
Massive success. What decisions and actions were instrumental? What did you do in month 2 that set up month 8? What did you resist that would have derailed you?
|
|
97
108
|
|
|
98
|
-
|
|
99
|
-
-
|
|
100
|
-
-
|
|
101
|
-
-
|
|
109
|
+
Cover:
|
|
110
|
+
- The decisions that compounded early and paid off late
|
|
111
|
+
- The things you didn't do that turned out to matter
|
|
112
|
+
- The moment it could have gone either way — and what made it go right
|
|
113
|
+
- External factors that helped, and what you did to be positioned for them
|
|
102
114
|
|
|
103
|
-
**
|
|
104
|
-
|
|
115
|
+
**The Unraveling**
|
|
116
|
+
Massive failure. Anchor this in the shaky assumptions from intake — show how they played out.
|
|
117
|
+
|
|
118
|
+
Cover:
|
|
119
|
+
- What was tempting but harmful (looked like a good idea at the time)
|
|
120
|
+
- What was delayed past the point of recovery
|
|
121
|
+
- The earliest warning sign — before it became obvious
|
|
122
|
+
- What you'd tell yourself in month 2 if you could
|
|
105
123
|
|
|
106
|
-
**
|
|
107
|
-
|
|
108
|
-
- **Hard to reverse** — hiring, pricing model, core tech choices, pivots, strategic commitments
|
|
109
|
-
- **Iterable** — things you can course-correct on without major cost
|
|
124
|
+
**The Headwind**
|
|
125
|
+
You did almost everything right. The universe didn't cooperate. This scenario teaches what you need to be resilient against, not just what to do differently.
|
|
110
126
|
|
|
111
|
-
|
|
127
|
+
Cover:
|
|
128
|
+
- What external forces hit that you couldn't have fully predicted
|
|
129
|
+
- What exposure you had that you didn't need
|
|
130
|
+
- What resilience you had — and what you wish you'd built
|
|
131
|
+
- The real ceiling on what was achievable, even with strong execution
|
|
112
132
|
|
|
113
|
-
|
|
114
|
-
Sort all output items by *when* the decision needs to be made, not by abstract importance. Timing drives action; importance doesn't.
|
|
133
|
+
[If retrospective:] For each narrative, note where the prior projections diverged from what actually happened. What did the prior /future get right? What did it miss?
|
|
115
134
|
|
|
116
135
|
---
|
|
117
136
|
|
|
118
|
-
|
|
137
|
+
**Synthesis**
|
|
119
138
|
|
|
120
|
-
|
|
139
|
+
Do this reasoning internally. Only the output appears in the final results.
|
|
121
140
|
|
|
122
|
-
|
|
141
|
+
**Quadrant analysis** — classify every significant decision/action across the three scenarios:
|
|
142
|
+
- ✅ Double-confirmed critical — appears in The Win AND its absence drives The Unraveling. Highest-confidence levers.
|
|
143
|
+
- ⚠️ Swing-state — present in both Win and Unraveling but executed differently. Hard calls, not obvious moves. Flag each — don't flatten them.
|
|
144
|
+
- ❌ Failure driver — appears in The Unraveling, absent from The Win. Anti-patterns.
|
|
145
|
+
- Resilience gap — surfaces from The Headwind. Within your control but requires deliberate preparation.
|
|
123
146
|
|
|
124
|
-
**
|
|
147
|
+
**Leading indicators** — for each ❌ and ⚠️ item: what was the earliest signal it was going wrong? Not month 8 — month 2. Extract from the narratives, not asked of the user.
|
|
125
148
|
|
|
126
|
-
|
|
149
|
+
**Irreversibility** — tag each ✅ and ⚠️ item:
|
|
150
|
+
- *(irreversible)* — hiring, pricing model, core tech choices, pivots, strategic commitments
|
|
151
|
+
- *(iterable)* — can be course-corrected without major cost
|
|
152
|
+
|
|
153
|
+
**Order by when** — sort output items by when the decision needs to be made. Timing drives action.
|
|
154
|
+
|
|
155
|
+
**Chess candidates** — for each ⚠️ swing-state decision: does it involve a real counterparty with genuinely competing interests? If yes, note it internally. These get surfaced in the /chess bridge section of the output.
|
|
127
156
|
|
|
128
157
|
---
|
|
129
158
|
|
|
130
|
-
**
|
|
159
|
+
**Primary output**
|
|
131
160
|
|
|
132
|
-
|
|
133
|
-
- **The decision** — what it is, stated plainly
|
|
134
|
-
- **When it needs to be made** — a specific window ("before month 3," "within the next 6 weeks"), not "eventually"
|
|
135
|
-
- **Early warning sign** — the earliest signal that this is going wrong, before it's obvious
|
|
136
|
-
- Mark hard-to-reverse decisions with *(irreversible)*
|
|
161
|
+
Write the one-screen summary. Tight — everything that matters, nothing that doesn't.
|
|
137
162
|
|
|
138
|
-
|
|
163
|
+
**The thesis**
|
|
164
|
+
One paragraph. The single most important variable separating The Win from The Unraveling. Name the one fork in the road.
|
|
139
165
|
|
|
140
|
-
|
|
166
|
+
[If retrospective:] One sentence first: whether the prior thesis still holds or has shifted.
|
|
141
167
|
|
|
142
|
-
**3
|
|
168
|
+
**3 load-bearing decisions** (✅ double-confirmed, ordered by when)
|
|
143
169
|
|
|
144
|
-
|
|
145
|
-
- **The
|
|
146
|
-
- **
|
|
147
|
-
- **
|
|
170
|
+
For each:
|
|
171
|
+
- **The decision** — stated plainly
|
|
172
|
+
- **When** — specific window, not "eventually"
|
|
173
|
+
- **Early warning sign** — earliest signal it's going wrong
|
|
174
|
+
- Mark *(irreversible)* where it applies
|
|
148
175
|
|
|
149
|
-
Three max.
|
|
176
|
+
Three max.
|
|
150
177
|
|
|
151
|
-
|
|
178
|
+
**3 things not to do** (❌ failure drivers)
|
|
179
|
+
|
|
180
|
+
For each:
|
|
181
|
+
- **The anti-pattern** — what it is
|
|
182
|
+
- **Why it's tempting** — if it weren't, you wouldn't need the warning
|
|
183
|
+
- **The signal you're sliding into it** — earliest sign
|
|
184
|
+
|
|
185
|
+
Three max.
|
|
152
186
|
|
|
153
187
|
**Your move this week**
|
|
188
|
+
One or two specific actions, this week. Entry point into the critical path.
|
|
189
|
+
|
|
190
|
+
---
|
|
154
191
|
|
|
155
|
-
|
|
192
|
+
*Full narratives, complete quadrant, and everything else surfaced are in the appendix. Ask to see it.*
|
|
156
193
|
|
|
157
194
|
---
|
|
158
195
|
|
|
159
|
-
|
|
196
|
+
## Output
|
|
197
|
+
|
|
198
|
+
*(appended by subagent)*
|
|
199
|
+
```
|
|
160
200
|
|
|
161
201
|
---
|
|
162
202
|
|
|
163
|
-
**
|
|
203
|
+
**2. Show intake summary and get approval**
|
|
164
204
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
205
|
+
Display a short summary in chat: north star in one sentence, fear, constraints, timeframe, shaky assumptions. Do NOT show the full framework. Say: *"Here's what I captured — [summary]. Does this look right?"*
|
|
206
|
+
|
|
207
|
+
If the user wants to review or edit: *"The full brief is at [path] if you want to adjust anything first."*
|
|
208
|
+
|
|
209
|
+
**3. Cost warning**
|
|
210
|
+
|
|
211
|
+
*"This runs on Opus 4.6 — noticeably more expensive than a standard session. Proceed?"*
|
|
212
|
+
|
|
213
|
+
**4. Spawn the subagent**
|
|
214
|
+
|
|
215
|
+
Spawn an Agent (`model: 'opus'`): *"Read [absolute path to brief file] in full, then execute exactly as instructed. Do not ask questions. Do not invoke slash commands. Append all output under ## Output in that file."*
|
|
168
216
|
|
|
169
|
-
|
|
217
|
+
**5. Surface results**
|
|
218
|
+
|
|
219
|
+
When the subagent returns, present the one-screen primary output (thesis → 3 decisions → 3 anti-patterns → your move this week) in the main session for discussion.
|
|
170
220
|
|
|
171
221
|
---
|
|
172
222
|
|
|
173
|
-
##
|
|
223
|
+
## /chess bridge (after results return)
|
|
224
|
+
|
|
225
|
+
After presenting the primary output, evaluate the chess candidates the subagent identified. For each ⚠️ swing-state decision that involves a real counterparty:
|
|
226
|
+
|
|
227
|
+
Apply a strict filter before surfacing. BOTH must be true:
|
|
228
|
+
1. **Real adversarial tension** — a counterparty whose interests genuinely compete with yours, not just a vendor you're selecting or a partner whose goals are aligned
|
|
229
|
+
2. **Material and hard to reverse** — significant money, a strategic dependency, or a relationship where getting it wrong costs you something you can't easily get back
|
|
230
|
+
|
|
231
|
+
If both aren't true, don't mention /chess. Most /future runs surface zero chess candidates. One is meaningful.
|
|
232
|
+
|
|
233
|
+
**When a candidate clears the filter**, present it as:
|
|
234
|
+
|
|
235
|
+
> **[Decision name]**
|
|
236
|
+
> [One sentence: what the decision is and who the counterparty is.]
|
|
237
|
+
> [One sentence: what their competing interest is and why that creates genuine tension.]
|
|
238
|
+
> [One sentence: what's at stake — the material downside or opportunity cost if this goes wrong.]
|
|
239
|
+
> **Recommendation: [Run /chess / Skip /chess]** — [one-line rationale]
|
|
240
|
+
>
|
|
241
|
+
> *Run /chess on this?*
|
|
174
242
|
|
|
175
|
-
If the
|
|
243
|
+
The recommendation to run should be conservative. If the stakes are meaningful and the outcome is genuinely uncertain, recommend run. If the adversarial component is minor, the counterparty's interests are broadly aligned, or the decision is iterable — recommend skip.
|
|
176
244
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
245
|
+
If no candidates clear the filter, say nothing about /chess.
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## Follow-up
|
|
250
|
+
|
|
251
|
+
After the /chess bridge (or if no chess candidates), offer once:
|
|
252
|
+
- If ClickUp MCP is connected: *"Want me to create a ClickUp task to review the load-bearing decisions 30 days from now?"*
|
|
253
|
+
- Otherwise: *"Want me to add a 30-day review reminder to WORK_LOG.md?"*
|
|
180
254
|
|
|
181
|
-
|
|
255
|
+
One line. Don't push it.
|
package/commands/handoff.md
CHANGED
|
@@ -1,41 +1,82 @@
|
|
|
1
|
-
This command is for
|
|
1
|
+
This command is for Claude to invoke — not the user. It defines the canonical subagent pattern used by /chess, /future, /plan, and any task that benefits from a fresh context window. Replaces the old copy-paste terminal approach entirely.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
---
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
- The task is substantial enough to benefit from a fresh context window
|
|
7
|
-
- The task is independent from the main session's current work
|
|
8
|
-
- Continuing in the main session would materially degrade output quality
|
|
9
|
-
- A subagent within this session can't handle it (too large, needs its own lifecycle)
|
|
5
|
+
## The pattern
|
|
10
6
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
- A subagent would suffice
|
|
14
|
-
- The overhead of context-switching outweighs the benefit
|
|
7
|
+
**Step 1 — Intake in main session (Sonnet)**
|
|
8
|
+
Run intake conversationally. Collect everything the subagent needs to execute without asking questions.
|
|
15
9
|
|
|
16
|
-
|
|
10
|
+
**Step 2 — Write the brief**
|
|
11
|
+
Compile intake data + execution framework into a structured .md file. Use the relevant subdirectory:
|
|
12
|
+
- `/chess` → `docs/chess/YYYY-MM-DD-[slug].md`
|
|
13
|
+
- `/future` → `docs/futures/YYYY-MM-DD-[slug].md`
|
|
14
|
+
- `/plan` → `docs/plans/YYYY-MM-DD-[slug].md`
|
|
15
|
+
- Generic → `docs/handoffs/YYYY-MM-DD-[slug].md`
|
|
17
16
|
|
|
18
|
-
Create
|
|
17
|
+
Create the directory if it doesn't exist.
|
|
19
18
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
4. **Output instructions** — Tell the new session to:
|
|
24
|
-
- Save all artifacts to files (not just terminal output)
|
|
25
|
-
- Write a brief summary to `HANDOFF_RESULT.md` in the project root: what was done, what files changed, any decisions made
|
|
26
|
-
- Do NOT run /end — no WORK_LOG update, no PM tool update, no commit. Just do the work and stop.
|
|
27
|
-
- The user will close the terminal when done.
|
|
19
|
+
**Brief file structure:**
|
|
20
|
+
```
|
|
21
|
+
# [Command] Brief — [YYYY-MM-DD] — [slug]
|
|
28
22
|
|
|
29
|
-
##
|
|
23
|
+
## Run instructions
|
|
24
|
+
Run on [model]. Do not ask questions. Do not invoke slash commands.
|
|
25
|
+
Append all output under ## Output in this file.
|
|
30
26
|
|
|
31
|
-
|
|
32
|
-
- One sentence explaining what the parallel session will do
|
|
33
|
-
- "Open a new Claude Code terminal and paste the block below. When it's done, come back here and tell me 'parallel done.'"
|
|
27
|
+
## [Intake data — context, goals, constraints, situation]
|
|
34
28
|
|
|
35
|
-
##
|
|
29
|
+
## Framework
|
|
30
|
+
[Full execution instructions for the subagent]
|
|
36
31
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Output
|
|
35
|
+
|
|
36
|
+
*(appended by subagent)*
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Step 3 — Show intake summary in chat**
|
|
40
|
+
Display 150-250 words covering what was captured. This is what the user reviews and approves — not the full brief or the framework. Say: *"Here's what I captured — [summary]. Does this look right?"*
|
|
41
|
+
|
|
42
|
+
If the user wants to inspect or edit before running: *"The full brief is at [path] if you want to adjust anything first."*
|
|
43
|
+
|
|
44
|
+
**Step 4 — Cost warning for Opus**
|
|
45
|
+
If the subagent will run on Opus 4.6, say before spawning: *"This runs on Opus 4.6 — noticeably more expensive than a standard session. Proceed?"*
|
|
46
|
+
|
|
47
|
+
**Step 5 — Spawn the subagent**
|
|
48
|
+
After the user confirms, spawn an Agent with the appropriate model:
|
|
49
|
+
- Opus 4.6 (`model: 'opus'`): /chess Human Mode, /future narratives + synthesis. **Never Opus 4.7.**
|
|
50
|
+
- Sonnet (`model: 'sonnet'`): /plan Phases 2+3, /chess System Mode, generic handoffs
|
|
51
|
+
|
|
52
|
+
Subagent prompt: *"Read [absolute path to brief file] in full, then execute exactly as instructed in that file. Do not ask questions. Do not invoke slash commands. Append all output under the ## Output section of that same file."*
|
|
53
|
+
|
|
54
|
+
**Step 6 — Receive and surface results**
|
|
55
|
+
The subagent appends output to the brief file and returns a summary to the main session. Present the key findings to the user for discussion.
|
|
56
|
+
|
|
57
|
+
**Step 7 — Continue in main session**
|
|
58
|
+
Discussion, follow-up decisions, and next steps happen here. Do not start a new session for the debrief.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## When to use subagents vs. inline
|
|
63
|
+
|
|
64
|
+
Use a subagent when:
|
|
65
|
+
- The task will generate substantial output (3,000+ tokens) that would bloat main session
|
|
66
|
+
- A fresh context window produces meaningfully better output (adversarial analysis, scenario narratives)
|
|
67
|
+
- The task is independent enough to run without back-and-forth
|
|
68
|
+
|
|
69
|
+
Stay inline when:
|
|
70
|
+
- The task is conversational or needs real-time course-correction
|
|
71
|
+
- The output is short and immediately actionable
|
|
72
|
+
- The overhead of a subagent isn't worth it
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Generic handoff (no specific command)
|
|
77
|
+
|
|
78
|
+
When handing off work not covered by /chess, /future, or /plan:
|
|
79
|
+
1. Summarize task + context into a brief
|
|
80
|
+
2. Save to `docs/handoffs/YYYY-MM-DD-[slug].md`
|
|
81
|
+
3. Follow steps 3-7 above
|
|
82
|
+
4. After return: read the Output section, integrate results into the main session's work
|
package/commands/plan.md
CHANGED
|
@@ -1,18 +1,30 @@
|
|
|
1
1
|
Before making any changes, assess the task and create a structured plan.
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**Self-contained.** Does not require `/start` to have been run.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Phase 1: Assess Complexity (Sonnet, inline)
|
|
4
8
|
|
|
5
9
|
Read all relevant files first. Then determine:
|
|
6
|
-
- **Is this straightforward?** (One obvious approach, clear requirements) →
|
|
10
|
+
- **Is this straightforward?** (One obvious approach, clear requirements) → proceed directly to Phase 2 inline.
|
|
7
11
|
- **Are there meaningful tradeoffs?** (Multiple approaches, architectural choices, unclear requirements) → Brainstorm first:
|
|
8
12
|
- Present 2-3 approaches with pros/cons in short, scannable sections
|
|
9
13
|
- Flag which approach you'd recommend and why
|
|
10
14
|
- Wait for approval of a direction before proceeding
|
|
11
15
|
- Save the decision to `docs/decisions/YYYY-MM-DD-<topic>.md` if it's non-trivial
|
|
12
16
|
|
|
17
|
+
Once the direction is approved, assess whether the plan warrants a subagent:
|
|
18
|
+
- **Simple plan** (single file, clear scope, low risk surface) → continue inline for Phases 2+3
|
|
19
|
+
- **Complex plan** (multi-file, architectural choices, meaningful risk surface, current session context is already heavy) → spawn a Sonnet subagent for Phases 2+3
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
13
23
|
## Phase 2: Harden the Direction
|
|
14
24
|
|
|
15
|
-
|
|
25
|
+
**Simple plans — inline (Sonnet):**
|
|
26
|
+
|
|
27
|
+
Before writing implementation steps, stress-test the chosen direction.
|
|
16
28
|
|
|
17
29
|
1. **Assumption audit** — List every assumption the direction makes. Validate each one against actual code, docs, APIs, or data. Flag any that are unverified or risky.
|
|
18
30
|
2. **Risk war-game** — For each meaningful risk:
|
|
@@ -23,6 +35,21 @@ Before writing implementation steps, stress-test the chosen direction. Scale dep
|
|
|
23
35
|
|
|
24
36
|
Fold the results back: drop wrong assumptions and adjust the direction before writing steps. Add a **Risks & Mitigations** summary — a scannable table or bullet list.
|
|
25
37
|
|
|
38
|
+
**Complex plans — Sonnet subagent (follow `/handoff` pattern):**
|
|
39
|
+
|
|
40
|
+
Write a brief to `docs/plans/YYYY-MM-DD-[slug].md` containing:
|
|
41
|
+
- The approved direction and all relevant context (file paths, schemas, APIs, constraints)
|
|
42
|
+
- The Phase 2+3 framework below
|
|
43
|
+
- Instruction to return the complete hardened plan in its response
|
|
44
|
+
|
|
45
|
+
Show the user a short summary of the direction and context captured. Confirm before spawning.
|
|
46
|
+
|
|
47
|
+
Spawn a Sonnet subagent (`model: 'sonnet'`): *"Read [absolute path] in full, then execute exactly as instructed. Do not ask questions. Do not invoke slash commands. Append all output under ## Output in that file."*
|
|
48
|
+
|
|
49
|
+
When the subagent returns, present the hardened plan to the user and wait for approval before making any changes.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
26
53
|
## Phase 3: Implementation Steps
|
|
27
54
|
|
|
28
55
|
Direction is hardened. Write the execution plan once, correctly.
|