[{"data":1,"prerenderedAt":171},["ShallowReactive",2],{"post:claude-code-plan-tracker":3,"posts":123},{"slug":4,"title":5,"date":6,"dateNice":7,"dateShort":8,"lastEdited":6,"excerpt":9,"tags":10,"readTime":14,"emoji":15,"cover":15,"body":16},"claude-code-plan-tracker","Making Claude Code finish the whole plan with plan-tracker","2026-10-10","October 10, 2026","Oct 10","Claude Code sometimes drops items from a long plan and moves on. This post covers plan-tracker, a mod that checks each item off with evidence and sends Claude back for whatever it skipped.",[11,12,13],"claude-code","tooling","notes",3,null,[17,20,22,24,27,30,32,34,40,42,44,46,48,50,52,54,56,58,60,64,66,68,70,75,77,79,81,83,89,91,93,95,97,101,103,105,107,109,111,113,115,117,121],{"type":18,"html":19},"p","When I give Claude Code a long plan, it sometimes skips a few things. It gets through most of the work, writes a confident summary, and stops. Unless I compare what it did against the original plan, I might never notice what’s missing.",{"type":18,"html":21},"I got tired of doing that comparison myself, so I built \u003Cstrong>plan-tracker\u003C\u002Fstrong>. It keeps the approved plan beside the conversation, checks completed items against the work Claude actually did, and sends Claude back for anything it missed.",{"type":18,"html":23},"Here’s how it works, what the buttons do, and how to install it.",{"type":25,"html":26},"h2","What plan-tracker does",{"type":28,"url":29},"image","\u002Fnotion-cache\u002F7a99a96a4e781b5f.png",{"type":18,"html":31},"Claude Code is Anthropic’s coding assistant for the terminal. In plan mode, it writes a plan for you to review before it starts working.",{"type":18,"html":33},"plan-tracker takes that approved plan, splits it into numbered items, and displays them in a pane beside the conversation. Each item has one of three statuses:",{"type":35,"items":36},"ul",[37,38,39],"\u003Ccode>○\u003C\u002Fcode> \u003Cstrong>Open:\u003C\u002Fstrong> still needs doing.","\u003Ccode>⚠\u003C\u002Fcode> \u003Cstrong>Claimed:\u003C\u002Fstrong> Claude says it’s done, but the checker disagrees. The reason appears beside it.","\u003Ccode>✓\u003C\u002Fcode> \u003Cstrong>Verified:\u003C\u002Fstrong> checked and backed by evidence.",{"type":18,"html":41},"The terminal’s status line also shows a count like \u003Ccode>plan 0\u002F27\u003C\u002Fcode>. Even if you aren’t looking at the pane, you can see how much is left.",{"type":25,"html":43},"How the checking works",{"type":18,"html":45},"I didn’t want another checklist that Claude could tick off just by saying “done.”",{"type":18,"html":47},"To complete an item, Claude calls a tool named \u003Ccode>mark_done\u003C\u002Fcode> with the item number and a short explanation of what it did. A separate Claude Opus call checks that claim against the session’s edits, commands, and command output.",{"type":18,"html":49},"If the evidence doesn’t support the claim, the item stays marked \u003Ccode>⚠\u003C\u002Fcode>, with an explanation of what’s missing.",{"type":18,"html":51},"The tracker also puts unfinished items back into Claude’s instructions on every turn. That keeps the remaining work visible as the conversation gets longer.",{"type":25,"html":53},"Sending Claude back for what it missed",{"type":18,"html":55},"This is the part I wanted most: I shouldn’t have to keep saying, “You forgot steps four and seven.”",{"type":18,"html":57},"If Claude finishes a turn with items still open, the tracker automatically queues a follow-up prompt, such as “Work on plan items #4 #7.” It includes the checker’s feedback so Claude knows what still needs attention.",{"type":18,"html":59},"There are two limits to this:",{"type":35,"items":61},[62,63],"\u003Cstrong>If Claude needs my input, it waits.\u003C\u002Fstrong> That includes questions, decisions, or errors it couldn’t resolve. The group shows “waiting on you.”","\u003Cstrong>Each item gets two automatic nudges at most.\u003C\u002Fstrong> After that, the row shows \u003Ccode>↻2\u003C\u002Fcode> and leaves it to me.",{"type":18,"html":65},"That gives Claude a chance to finish the work without getting stuck retrying the same item indefinitely.",{"type":25,"html":67},"The two buttons",{"type":18,"html":69},"Sometimes I want to send Claude back to a particular item, or correct a check myself. That’s what these controls are for:",{"type":35,"items":71},[72,73,74],"\u003Cstrong>▶ Send prompt\u003C\u002Fstrong> asks Claude to work on one specific item. It sends a fresh prompt containing the item and the plan file.","\u003Cstrong>✓\u003C\u002Fstrong> lets me manually mark an item done when the checker gets it wrong.","\u003Cstrong>Verify all\u003C\u002Fstrong> re-checks every unverified item in a single call. It leaves verified items alone and doesn’t ask Claude to do any more work.",{"type":25,"html":76},"What it costs",{"type":28,"url":78},"\u002Fnotion-cache\u002F88850f0f48c2afc7.png",{"type":18,"html":80},"The checks use model calls, so there’s an extra cost.",{"type":18,"html":82},"According to the README, plan-tracker makes one Opus call:",{"type":35,"items":84},[85,86,87,88],"When you approve a plan.","Each time Claude calls \u003Ccode>mark_done\u003C\u002Fcode>.","Each time you click \u003Cstrong>Verify all\u003C\u002Fstrong>.","After a turn that changed files, if there are still open items.",{"type":18,"html":90},"Turns where Claude only reads things don’t add any checking cost.",{"type":25,"html":92},"Setting it up",{"type":18,"html":94},"plan-tracker is available through \u003Cstrong>gingermarket\u003C\u002Fstrong>, my Claude Code plugin marketplace on GitHub.",{"type":18,"html":96},"Run this inside Claude Code:",{"type":98,"lang":99,"text":100},"code","plain text","\u002Fplugin install plan-tracker --marketplace EdmundHee\u002Fgingermarket",{"type":18,"html":102},"This adds the marketplace and installs the plugin. Answer \u003Ccode>y\u003C\u002Fcode> when prompted, then choose the \u003Cstrong>user\u003C\u002Fstrong> scope if you want it available across your projects.",{"type":18,"html":104},"The next time you approve a plan, you’ll see a notice showing how many items the tracker picked up. Those items will appear in the side pane.",{"type":18,"html":106},"If your terminal is too narrow to show the pane automatically, type \u003Ccode>\u002Fplan-tracker\u003C\u002Fcode> to open it.",{"type":25,"html":108},"Would I use it for every plan?",{"type":18,"html":110},"For a short task, I probably wouldn’t bother. But once a plan gets long enough that I have to scroll back and compare it against Claude’s summary, I want the tracker there.",{"type":18,"html":112},"The checker can still get things wrong—that’s why I added the manual controls. What helps me most is having a visible list of what’s finished, what’s disputed, and what Claude hasn’t touched yet. I can spend less time checking whether it remembered the plan and more time reviewing the actual work.",{"type":114},"hr",{"type":25,"html":116},"References",{"type":35,"items":118},[119,120],"\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FEdmundHee\u002Fgingermarket\" target=\"_blank\" rel=\"noopener noreferrer\">EdmundHee\u002Fgingermarket on GitHub\u003C\u002Fa>","\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FEdmundHee\u002Fgingermarket\u002Ftree\u002Fmain\u002Fplan-tracker\" target=\"_blank\" rel=\"noopener noreferrer\">plan-tracker README\u003C\u002Fa>",{"type":18,"html":122},"",[124,126,136,144,152,161],{"slug":4,"title":5,"date":6,"dateNice":7,"dateShort":8,"lastEdited":6,"excerpt":9,"tags":125,"readTime":14,"emoji":15,"cover":15},[11,12,13],{"slug":127,"title":128,"date":129,"dateNice":130,"dateShort":131,"lastEdited":129,"excerpt":132,"tags":133,"readTime":14,"emoji":15,"cover":15},"running-claude-code-on-sakana-fugu","Running Claude Code on Sakana's Fugu models","2026-06-23","June 23, 2026","Jun 23","Sakana shipped Fugu yesterday — a single API that quietly farms your request out to a pool of frontier models. I pointed Claude Code at it and watched a five-hour budget evaporate in twenty minutes.",[11,134,135],"fugu-ultra","sakana-ai",{"slug":137,"title":138,"date":139,"dateNice":140,"dateShort":141,"lastEdited":139,"excerpt":142,"tags":143,"readTime":14,"emoji":15,"cover":15},"installing-claude-code-with-one-command","Installing Claude Code with one command","2026-06-16","June 16, 2026","Jun 16","Setting up a coding tool usually means a checklist of installs before you even start. I wrote a one-command script that handles the whole thing — with a preview mode — for non-technical users.",[11,12],{"slug":145,"title":146,"date":147,"dateNice":148,"dateShort":149,"lastEdited":147,"excerpt":150,"tags":151,"readTime":14,"emoji":15,"cover":15},"deepseek-monitor-github-pull-requests","I let DeepSeek read every pull request so I don't have to","2026-06-04","June 4, 2026","Jun 4","AI made writing code cheap, but reviewing it still eats my mornings. So I built a small tool that hands the first-pass pull request review to DeepSeek for about a dollar a day.",[11,12,13],{"slug":153,"title":154,"date":155,"dateNice":156,"dateShort":157,"lastEdited":155,"excerpt":158,"tags":159,"readTime":160,"emoji":15,"cover":15},"deepseek-v4-pro-vs-claude-code","DeepSeek V4 Pro: 519 million tokens for $7","2026-05-16","May 16, 2026","May 16","Our four-dev team blew through Claude Code's weekly budget, so we pointed everything at DeepSeek V4 Pro instead. Twelve days and $7 later, here's how it stacks up against Opus 4.7 and Sonnet 4.6 — and why the timing matters.",[11,12,13],4,{"slug":162,"title":163,"date":164,"dateNice":165,"dateShort":166,"lastEdited":155,"excerpt":167,"tags":168,"readTime":169,"emoji":170,"cover":15},"cutting-claude-code-tokens-with-caveman-mode","Cutting Claude Code tokens by ~75% with caveman mode","2026-05-14","May 14, 2026","May 14","An ultra-compressed prompt style that strips articles, filler, and pleasantries from Claude Code without losing technical substance. Here's what it costs, what it saves, and where it bites.",[11,12,13],6,"🪨",1791702239962]