<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Playbook on Tokenise</title><link>https://tokenise.rosvetic.com/tags/playbook/</link><description>Recent content in Playbook on Tokenise</description><generator>Hugo</generator><language>en-gb</language><lastBuildDate>Thu, 29 Oct 2026 07:13:00 +0000</lastBuildDate><atom:link href="https://tokenise.rosvetic.com/tags/playbook/index.xml" rel="self" type="application/rss+xml"/><item><title>Your overnight Claude Code run died at 2am. A StopFailure hook and a 30-line wrapper decide whether to wait or wake you</title><link>https://tokenise.rosvetic.com/posts/stopfailure-hook-overnight-retry-wrapper/</link><pubDate>Thu, 29 Oct 2026 07:13:00 +0000</pubDate><guid>https://tokenise.rosvetic.com/posts/stopfailure-hook-overnight-retry-wrapper/</guid><description>&lt;p&gt;A nightly job asks Claude Code to migrate forty files. At 2:14am the API returns a server error, the run ends mid-migration, and the cron job exits non-zero into a log nobody reads. At 8am the working tree is half changed, the log says &lt;code&gt;API Error&lt;/code&gt;, and the only way to find out whether that was a thirty-second blip or an expired key is to read it and guess.&lt;/p&gt;</description></item><item><title>A Claude Code status line that tells you when the diff is too big to review</title><link>https://tokenise.rosvetic.com/posts/statusline-diff-size-cache-clock/</link><pubDate>Wed, 21 Oct 2026 07:06:00 +0000</pubDate><guid>https://tokenise.rosvetic.com/posts/statusline-diff-size-cache-clock/</guid><description>&lt;p&gt;Somewhere around the third hour of a good agent session, the diff stops being something you can review. It started as a three-file change. Now it&amp;rsquo;s forty files, one of them renamed twice, and the pull request you were going to open at lunch needs an afternoon of reading before anyone else sees it. Nothing went wrong at any single step. Nobody was watching the number.&lt;/p&gt;</description></item><item><title>Pin a legacy function before an agent refactors it: record its outputs, then let StrykerJS grade the safety net</title><link>https://tokenise.rosvetic.com/posts/characterization-grid-stryker-before-refactor/</link><pubDate>Tue, 20 Oct 2026 07:07:00 +0000</pubDate><guid>https://tokenise.rosvetic.com/posts/characterization-grid-stryker-before-refactor/</guid><description>&lt;p&gt;A function nobody wants to touch decides what customers pay, and an agent has just been asked to tidy it. The tests are thin, the original author left in 2021, and the diff that comes back reads fine. That&amp;rsquo;s the trap. A refactor that reads fine and changes a rounding rule is the most expensive kind, because nothing fails until an invoice does.&lt;/p&gt;</description></item><item><title>Lint your Claude Code subagent files before commit, because a typo makes them quietly do nothing</title><link>https://tokenise.rosvetic.com/posts/lint-subagent-definitions-before-commit/</link><pubDate>Sat, 17 Oct 2026 07:04:00 +0000</pubDate><guid>https://tokenise.rosvetic.com/posts/lint-subagent-definitions-before-commit/</guid><description>&lt;p&gt;A teammate adds a &lt;code&gt;reviewer&lt;/code&gt; subagent to the repo. It reads well, the pull request gets approved, and from then on nobody notices that the agent never has the tool restrictions they wrote, or never loads at all. One field was spelled &lt;code&gt;maxturns&lt;/code&gt;. Another had a model name with a stray letter on the end.&lt;/p&gt;</description></item><item><title>A UserPromptSubmit hook that refuses prompts containing secrets and tells Claude which branch it's on</title><link>https://tokenise.rosvetic.com/posts/prompt-gate-hook-secrets-repo-state/</link><pubDate>Wed, 14 Oct 2026 07:06:00 +0000</pubDate><guid>https://tokenise.rosvetic.com/posts/prompt-gate-hook-secrets-repo-state/</guid><description>&lt;p&gt;It&amp;rsquo;s 6pm, a deploy is failing with a 403, and the fastest way to explain it to the agent is to paste the error plus the command you ran. The command has an access key in it. You hit Enter. The key is now in a request to a hosted model, in a transcript file on disk, and possibly in your prompt history.&lt;/p&gt;</description></item><item><title>Turn a failing deploy log into a draft incident timeline in one command</title><link>https://tokenise.rosvetic.com/posts/incident-draft-from-ci-log/</link><pubDate>Tue, 13 Oct 2026 07:03:00 +0000</pubDate><guid>https://tokenise.rosvetic.com/posts/incident-draft-from-ci-log/</guid><description>&lt;p&gt;It&amp;rsquo;s 3:40pm, the error-rate alert has been quiet for nine minutes, and someone has to write the incident summary before everyone forgets what happened. The raw material is a deploy log, three alert lines, a pager acknowledgement and a git history nobody has looked at since the rollback. Assembling that into a timeline is forty minutes of copy and paste, and it&amp;rsquo;s done by the person who is most tired.&lt;/p&gt;</description></item><item><title>Make Claude Code interview you, then keep the editor locked until you approve the spec</title><link>https://tokenise.rosvetic.com/posts/spec-gate-interview-skill/</link><pubDate>Mon, 12 Oct 2026 07:06:00 +0000</pubDate><guid>https://tokenise.rosvetic.com/posts/spec-gate-interview-skill/</guid><description>&lt;p&gt;The usual way an interview-first workflow fails is boring. The agent asks good questions, writes a good spec, and then the spec is a suggestion. Twenty minutes into the build it has touched a file the spec never mentioned, because it was nearby and the change looked sensible.&lt;/p&gt;</description></item></channel></rss>