the zip holds one folder containing SKILL.md — the shape a skill uploader expects
Window Planning — Shape the Day Backwards From the Drain
The one idea
A high-leverage day is not a list of tasks fit into free time — it is a finish-line win with the day reverse-engineered to feed it. You name the big outcome first, then work backwards: what must the focused block produce to make the drain possible, and what must the low-attention blocks unblock to make the focused block possible. And time is typed by attention bandwidth, not just availability — a two-hour block with kids and a two-hour block at the terminal are not the same capacity, so they don’t get the same work.
Name the win first; reverse-engineer the day to feed it. Each window holds only the work its attention-bandwidth allows.
This is the operationalization of an older rule — schedule by cognitive mode, not by task. That rule named the window-types; this skill makes them a daily shape by pinning them to a single finish-line deliverable.
When to reach for this
- You have a known set of windows ahead (tonight, tomorrow, a travel week) and want to land something material rather than make incremental progress on everything.
- The windows are unequal — some are phone-only/with-kids, some are focused terminal time, one is a locked drain. (Equal blocks don’t need this; the value is in the typing.)
- You’re tempted to just write a to-do list and start at the top. That’s the drift path; this is the replacement.
The anatomy — the moves that make it work
-
Win-first, backwards-planned. Define the finish-line win before anything else, then work backwards through the blocks. The win is the spec; earlier blocks exist only to make it reachable. Why: forward planning fills time with whatever’s next; backwards planning subordinates the whole day to one outcome, so nothing in the day is busywork.
-
Type each window by attention bandwidth, not just availability. The three native types: async / low-attention (with kids, phone-only) → copy-paste side quests + pre-scoped minimal-question build prompts; terminal / high-attention → focused build; locked drain → short, 0–100%, one big win. Why: treating a distracted block and a focused block as interchangeable capacity either wastes the focused one on async-able work or tries to force focused work into a window that can’t hold it.
-
Feeders must earn their slot by unblocking the next block. Low-attention blocks aren’t filler — they run the research/scoping side quests that de-risk and scope the high-attention block, which in turn sets up the drain. Always ask explicitly: “what side quest in the async window unblocks the focused window?” Why: this is what makes early blocks load-bearing instead of decorative — each one removes a discovery/decision tax that would otherwise eat the expensive window.
-
The grid: candidate wins, scored, recommended, paused. Before committing the day, generate a menu of finish-line wins, score each against your backlog framework (effort, user-visible value, does-it-speed-future-development, what it teaches, plus blast radius and lane), lead with a recommendation, and stop for a single-number pick. Why: choosing the wrong win wastes the whole day’s structure. The grid makes the highest-stakes decision — what’s worth a full day — explicit, scored, and yours. It’s maker-checker applied to the day itself.
-
Drain both model pools, not just one. A five-hour premium window maxes to 100% while the cheaper pool sits untouched — that’s unused capacity. Route draftable work (first passes, scoping, drafts) to the cheaper pool; reserve the premium pool for the iterate-and-ship pass. Why: two credit pools is two resources; leaving one full is leaving capacity on the table. This is draft-cheap / iterate-expensive applied at the schedule level, not just the task level.
-
Efficiency rules embedded in every step. Short targeted responses; multiple-choice on every fork; multiple-choice whenever the assistant is unsure which “root” you’re at. Why: in a finite window, a clarification loop or a wall of prose is spent budget. Forks-as-buttons keep decisions cheap and the window moving.
-
Park future-state worries with an expiry — don’t solve them now. Capture the worry (the travel/resilience scenario, the thing that might break next week) to the backlog with a do-not-explore-now tag and an event-based retire trigger (“before Thursday”). Why: an unparked worry derails the current window; a parked one with a trigger is off your mind AND won’t be forgotten. Scaffold-with-expiry pointed at anxiety.
-
Memorialize the run as a meta-task, deferred to the wrap. Flag that the approach itself will be captured, but don’t interrupt the work to do it — surface it near handoff with a few candidate slices. Why: process documentation mid-flow is a tax; at the wrap it’s free and the run is fresh.
Candidate multipliers — confirm which were real
Honest framing: this is the plan that produced an outsized result, not the execution log. These are the moves worth betting drove the outperformance — mark which actually moved it, because that’s the signal for what to keep load-bearing vs. trim:
- Backwards-from-the-win meant zero busywork — every block visibly fed the next.
- Attention-typing meant the focused window wasn’t burned on work the async window could have absorbed.
- Side-quest-as-feeder meant the focused block opened with its discovery tax already paid.
- The grid forced the “what’s worth a whole day” decision up front, so the day committed to a scored win instead of drifting toward one.
- Dual-pool routing meant the cheaper pool absorbed the draft load instead of sitting idle.
Refinements already visible
- Tier the grid like you tier the backlog. Ten scored options is expensive. Once the families of wins are known, a 3–5 option grid keyed to lanes likely captures 90% of the value at a fraction of the cost. Reserve the full ten for genuinely open days.
- Set the reserve from the work, not a round number. “Save 30–50% usage” is a guess. Size the reserve from what the focused block actually needs to produce for the drain.
- Make the block-type → work-type mapping a lookup, not a re-derivation. (async → [research, scoping, pre-scoped build prompt]; terminal → [build, fire-test, stage-the-drain-prompt]; drain → [one locked win]). Stop re-deriving it each day.
- Enter the drain with the prompt already written. The locked hour is exactly the place to
arrive with the build prompt built (the
cc-build-promptsmove) so the window is pure execution. Stage the drain’s prompt during the focused block. A drain that opens on scoping has already lost a chunk of its hour. - Pre-mortem the drain. Before the locked window, name the one thing most likely to blow the hour — a clarification loop, a known deploy-friction blocker — and neutralize it upstream in the focused block.
The deeper principle (the transfer)
This is capacity planning pointed at your own week. Time is the scarce resource; you allocate it by work-type, set a reserve, and reverse-engineer from the deliverable. Materiality shows up again: the size of the win sets the depth of the planning (a drain-worthy win earns the full grid; a side quest doesn’t). It is also exactly how you shape an agent fleet’s day — high-attention human-in-the-loop windows for design and review, low-ceremony autonomous windows for laned one-shots, a reserve held back, all reverse-engineered from the deliverable that has to ship.
The deliverable is the plan; the day is the reverse-engineering.
Template (skeleton)
FINISH-LINE WIN (define FIRST): <the one outcome this day exists to produce>
Lane: <one-shot|bounded|design> · Blast radius: <L|M|H> · Drain window: <start–end, 0-100%>
GRID (only if the win isn't obvious):
3–5 candidates if families are known, up to 10 if the day is genuinely open. Each scored:
Effort(low=good) · User value · Speeds future dev · Teaching · Blast radius · Lane
→ lead with a recommendation → PAUSE for a single number.
WINDOWS (type each by attention bandwidth, then assign work it can hold):
┌ async / low-attention (<times>, phone / with-kids)
│ → copy-paste side quests + pre-scoped minimal-question build prompts
│ → MUST unblock the focused block — name the unblock explicitly
├ terminal / high-attention (<times>)
│ → focused build + fire-tests
│ → STAGE the drain's build prompt here; size the reserve from THIS block's work
└ locked drain (<times>, 0-100%)
→ enter with the prompt already written; one win; pure execution
MODEL-POOL ROUTING: draftable passes → the cheaper pool; iterate-and-ship → premium.
PARKING LOT: capture future-state worries with a do-not-explore tag + event-based retire trigger.
PRE-MORTEM (drain only): name the one thing most likely to blow the hour; neutralize it upstream.
MEMORIALIZE: flag the meta-capture; do it at the wrap, not mid-flow.
Anti-patterns — the day that drifts
- Forward-planning into free time → the day fills with whatever’s next instead of feeding one win.
- Treating all free blocks as equal capacity → the focused window gets burned on async-able work, or focused work gets shoved into a distracted one.
- Filler side quests → low-attention blocks that don’t unblock anything are just motion.
- Skipping the grid on a drain-worthy day → the day commits to a win nobody scored.
- Leaving the cheaper pool idle → unused capacity; the premium pool does work the second pool could have absorbed.
- Entering the drain without the prompt written → the locked hour spends its budget on scoping instead of shipping.
- Solving the future-state worry now → an unparked anxiety derails the present window.
Provenance
Evolved from an older rule — schedule by cognitive mode, not by task — into a concrete daily shape: a finish-line win, reverse-engineered through attention-typed windows, with feeder side quests, a scored grid, and dual-pool drain. The operator’s read after the first run: it worked about twice as well as expected. The candidate multipliers and the visible refinements are flagged in-skill on purpose, so the next run keeps what was load-bearing and trims what wasn’t — calibration-earned, like everything else.
the zip holds one folder containing SKILL.md — the shape a skill uploader expects
or take the raw file: SKILL.md · all six skills