<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rulesets/.claude/commands/review-code.md, branch main</title>
<subtitle>Claude Code skills, rules, and language bundles
</subtitle>
<id>https://git.cjennings.net/rulesets/atom?h=main</id>
<link rel='self' href='https://git.cjennings.net/rulesets/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rulesets/'/>
<updated>2026-05-20T14:47:13+00:00</updated>
<entry>
<title>refactor(skills): convert review-code from command to skill</title>
<updated>2026-05-20T14:47:13+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-20T14:47:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rulesets/commit/?id=b9da9b5142f1d343378e8d4f5aa6780ee8728cd4'/>
<id>urn:sha1:b9da9b5142f1d343378e8d4f5aa6780ee8728cd4</id>
<content type='text'>
review-code was a command with disable-model-invocation set, so the model could never reach for it on its own. Every time a review fit the moment, the agent had to hand back to me to type the slash command. Moving it to a skill makes it model-invocable while it stays slash-invocable as /review-code.

git mv keeps the file history (99% rename). The frontmatter drops disable-model-invocation and gains name: review-code; the body is unchanged. It also drops the discovery-check paragraph in commits.md, which only existed to find the command on disk when it was missing from the skills list, moot now that the skill shows up there.
</content>
</entry>
<entry>
<title>docs(review-code): frame code review as a coaching channel</title>
<updated>2026-05-14T00:24:05+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-14T00:24:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rulesets/commit/?id=d5dab9b715339b4386b15387bda4fe52137f2dfa'/>
<id>urn:sha1:d5dab9b715339b4386b15387bda4fe52137f2dfa</id>
<content type='text'>
Coaching guidance was buried under Inline Comment Voice at the bottom of the skill, where it read as a tone afterthought rather than the skill's purpose. This change threads it through Intent, Strengths, the Important-issue shape, Critical Rules, and Anti-Patterns so each step reads as mentoring with audit as the method.
</content>
</entry>
<entry>
<title>chore(commands): mark user-invoked commands disable-model-invocation</title>
<updated>2026-05-07T02:59:52+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-07T02:59:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rulesets/commit/?id=5710b7865549b923467f5e4b1056e040273fc6aa'/>
<id>urn:sha1:5710b7865549b923467f5e4b1056e040273fc6aa</id>
<content type='text'>
Add disable-model-invocation: true to the user-triggered slash commands so the harness drops their descriptions from the model's preloaded skill listing while keeping /&lt;name&gt; routing intact. Skills meant for model recommendation (add-tests, debug, five-whys, frontend-design, humanizer, pairwise-tests, playwright-js, playwright-py, root-cause-trace) are unchanged.
</content>
</entry>
<entry>
<title>fix(commands): drop leftover name: frontmatter from converted commands</title>
<updated>2026-05-06T11:38:24+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-06T11:38:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rulesets/commit/?id=d4ff742e42832e889a4a3b10f6e8820f0a738010'/>
<id>urn:sha1:d4ff742e42832e889a4a3b10f6e8820f0a738010</id>
<content type='text'>
The conversion commit ran sed -i to strip the name: line, but the staged
version from git mv was captured before the sed ran. Result: the commit
shipped the original frontmatter, and the sed cleanup was sitting in the
working tree. This commit lands the cleanup that should have been in
aa69245.
</content>
</entry>
<entry>
<title>refactor(skills): convert 16 user-invoked skills to commands</title>
<updated>2026-05-06T11:17:08+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-06T11:17:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rulesets/commit/?id=aa6924591127970d3241ab6b1a50f4bab457da27'/>
<id>urn:sha1:aa6924591127970d3241ab6b1a50f4bab457da27</id>
<content type='text'>
I converted 16 user-invoked skills to commands. Skills cost ~150-300 tokens each per session for descriptions the model uses to auto-route. Commands cost nothing until you type the slash. These 16 are workflows I always trigger deliberately. The auto-routing wasn't earning its keep. This reclaims ~4-5k tokens per session.

Nine skills stayed where auto-routing genuinely helps: debug, root-cause-trace, five-whys, add-tests, frontend-design, humanizer, playwright-js, playwright-py, and pairwise-tests. Pairwise-tests stays a skill because its helper files don't fit a single-file command shape.

For arch-decide, I preserved the upstream MIT LICENSE alongside the command at .claude/commands/arch-decide.LICENSE so attribution stays intact.
</content>
</entry>
</feed>
