{"slug": "i-sold-you-on-scratchpad-then-i-migrated-to-note", "title": "I sold you on /scratchpad. Then I migrated to /note.", "summary": "Author's migration from using a structured \"/scratchpad\" workflow with JSON step blocks and status flags to a simpler \"/note\" approach for AI-assisted coding tasks. The author realized that the elaborate scaffolding of /scratchpad was causing excessive token consumption and redundancy, as Claude had improved enough to handle multi-step organization without such rigid control structures. The key insight was that the author was paying a \"ceremony tax\" on every session by having the LLM write duplicate information in different formats, and switching to /note eliminated this overhead while maintaining effectiveness.", "body_md": "This is the third post in a series that started with [vibe guiding](https://dev.to/couimet/from-vide-coding-to-supercharged-vibe-guiding-6nm) and continued with an [efficiency audit](https://dev.to/couimet/i-thought-i-was-dry-ing-i-may-have-been-double-paying-5dli). Two months ago I laid out the four-skill loop: `/start-issue`\n\nwrites a `/scratchpad`\n\n, `/tackle-scratchpad-block`\n\nexecutes one step at a time, status flags transition from `pending`\n\nto `done`\n\n, and `/finish-issue`\n\nreads what shipped and writes the PR title + description.\n\n## Why I changed my mind\n\nThe driver was token consumption. My employer gave each team dashboards of our AI tool usage and I was always the top consumer on mine — fairly high on the department chart too. That's when I started to suspect it was not what I was building but how I was working with the tools.\n\n`/scratchpad`\n\n's JSON step block and `/tackle-scratchpad-block`\n\nchain meant every task paid the same ceremony tax: status flags to transition, JSON to validate, a fenced block to parse. Useful scaffolding for multi-hour work. Overhead I was paying on every session. If my process was the reason I topped the dashboard, revisiting it was the cheapest experiment I could run.\n\nOnce I started looking, the redundancy wasn't only scratchpad-vs-note. The templates the composite skills were generating — what `/start-issue`\n\n, `/start-side-quest`\n\n, `/tackle-pr-comment`\n\n, and `/finish-issue`\n\nwrote into their output documents — carried weight they didn't need. A few examples from the audit that led to [PR 130](https://github.com/couimet/my-claude-skills/pull/130):\n\n-\n`## Files to Modify`\n\nre-grouped information the Plan steps already named, just organized by file. -\n`## Documentation & Discoverability`\n\nwas a pre-populated checklist that`/finish-issue`\n\nalready re-derived systematically at wrap-up time. -\n`## Acceptance Criteria`\n\nhad Claude copy criteria verbatim from the issue body it already had in context. -\n`## Why Split This Out`\n\nwas three hardcoded bullets that matched every side-quest ever created.\n\nEach of these was small on its own. Cumulatively they were a per-session surtax, paid every time a skill fired. Defaulting to `/note`\n\ninstead of `/scratchpad`\n\nwas the biggest single cut, but the pattern of the change was wider: stop having the LLM write the same information twice, in different shapes, into different documents.\n\n## Claude was changing too\n\nThe other thing that shifted in those months was Claude itself. When I first wrote about this, the hard stops at every step made sense for the Claude that was around then. By the time [PR 130](https://github.com/couimet/my-claude-skills/pull/130) landed, Claude had gotten noticeably better at multi-step self-organization across an issue. I could lower my guard a bit. The *control-freak posture* I had started with was no longer needed. If I wanted an explicit checkpoint to manually review and commit, I could simply add a step in the generated `/note`\n\n.\n\nParallelism shifted too. Claude gained the ability to fan out workers and run agents in parallel within a single session, which meant on issues with independent pieces Claude could organize its own throughput faster than I could shepherd it through the `/tackle-scratchpad-block`\n\nchain. The gates that had once added safety started adding latency. By gating with `/tackle-scratchpad-block`\n\n, I was slowing Claude down by asking for more control.\n\n## What `/note`\n\nlooks like\n\nA `/scratchpad`\n\n's `## Implementation Plan`\n\nsection is a fenced JSON block with status fields, dependency arrays, and task lists:\n\n```\n{\n  \"finish_issue_on_complete\": false,\n  \"steps\": [\n    {\n      \"id\": \"S001\",\n      \"title\": \"Swap the token library\",\n      \"status\": \"pending\",\n      \"done_when\": \"Old lib removed from package.json, new one imported and passing existing tests\",\n      \"depends_on\": [],\n      \"files\": [\"package.json\", \"src/auth/token.ts\"],\n      \"tasks\": [\n        \"npm install new-token-lib, npm remove old-token-lib\",\n        \"Update src/auth/token.ts imports\",\n        \"Run the token test suite\"\n      ]\n    },\n    {\n      \"id\": \"S002\",\n      \"title\": \"Update callers to match new token API\",\n      \"status\": \"pending\",\n      \"depends_on\": [\"S001\"],\n      \"files\": [\"src/middleware/auth.ts\", \"src/routes/login.ts\"],\n      \"tasks\": [\n        \"Update verifyToken() call sites to new API shape\",\n        \"Run full test suite\"\n      ]\n    }\n  ]\n}\n```\n\nA `/note`\n\n's `## Plan`\n\nsection is the same information without the scaffolding:\n\n```\n1. Swap the token library — npm install new-token-lib, update imports, run the token test suite\n2. Update callers to match the new token API — verifyToken() call sites, full test suite\n```\n\nNo fenced JSON block. No `status: pending`\n\n. The plan says what to do and in what order; the LLM organizes its own execution in-session. The hard stops from the original workflow are still there: I read the plan before saying \"go ahead\", I review the diff, I commit when I'm satisfied. The commit lands at the end of the note, not after every step. If I want an earlier checkpoint, I add an explicit gate in the plan.\n\n`/scratchpad`\n\nis still there. You opt in two ways: pass `--scratchpad`\n\nto the invoking skill, or use one of the natural-language triggers the skill watches for (\"use a scratchpad\", \"with step tracking\", \"formal plan\", \"track steps\"). I still reach for it when I'm working through a larger GitHub issue and want a commit after each step instead of one at the end. This is especially helpful when I'm juggling two or three worktrees on the same project — iterative commits and step tracking keep me oriented when my attention is split across parallel branches.\n\n## What I am taking away\n\nThe `/note`\n\nflow still stops for plan review before anything happens, then gives the LLM more autonomy to fan out and move faster. The `/scratchpad`\n\nflow is still powerful — but you don't always need a bazooka to kill a fly. Most days the lighter tool is enough, ending on a high *note*.\n\n## If you already use these skills\n\nPull the latest from the repo and run `./setup.sh`\n\nto symlink the updated set. `/start-issue`\n\nwill produce a `/note`\n\non your next invocation. Nothing else changes — the rest of the loop carries on. If you want the old behavior, type `--scratchpad`\n\n.\n\n*Written using the same skills it describes, starting from issue #139. The plan was a note this time.*", "url": "https://wpnews.pro/news/i-sold-you-on-scratchpad-then-i-migrated-to-note", "canonical_source": "https://dev.to/couimet/i-sold-you-on-scratchpad-then-i-migrated-to-note-4n1o", "published_at": "2026-05-21 13:21:14+00:00", "updated_at": "2026-05-21 13:32:50.688248+00:00", "lang": "en", "topics": ["developer-tools", "artificial-intelligence", "large-language-models", "products", "enterprise-software"], "entities": [], "alternates": {"html": "https://wpnews.pro/news/i-sold-you-on-scratchpad-then-i-migrated-to-note", "markdown": "https://wpnews.pro/news/i-sold-you-on-scratchpad-then-i-migrated-to-note.md", "text": "https://wpnews.pro/news/i-sold-you-on-scratchpad-then-i-migrated-to-note.txt", "jsonld": "https://wpnews.pro/news/i-sold-you-on-scratchpad-then-i-migrated-to-note.jsonld"}}