<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs/.claude, branch main</title>
<subtitle>My Emacs configuration
</subtitle>
<id>https://git.cjennings.net/dotemacs/atom?h=main</id>
<link rel='self' href='https://git.cjennings.net/dotemacs/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/'/>
<updated>2026-06-05T19:16:44+00:00</updated>
<entry>
<title>chore(claude): add patterns-catalog pointer rule from bundle</title>
<updated>2026-06-05T19:16:44+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-05T19:16:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=619131d92ad9f442a89cb41ade707a8eb5bc3d3d'/>
<id>urn:sha1:619131d92ad9f442a89cb41ade707a8eb5bc3d3d</id>
<content type='text'>
Synced into .claude/rules/ by the startup language-bundle drift check. Points at the rulesets pattern catalog for interaction-design decisions.
</content>
</entry>
<entry>
<title>docs(rules): record auth-source credential cache in live-reload caveats</title>
<updated>2026-06-01T20:01:37+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-01T20:01:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=76f983eff93e6d37d0710d2854361a8314f63d79'/>
<id>urn:sha1:76f983eff93e6d37d0710d2854361a8314f63d79</id>
<content type='text'>
Updating authinfo.gpg in a running daemon does nothing until auth-source-forget-all-cached clears its two-hour result cache. I added the symptom, cause, and fix to the running-Emacs caveats so the next session reaches for the cache clear instead of re-diagnosing a "key not set" error.
</content>
</entry>
<entry>
<title>chore(claude): sync bundle rules and add coverage-summary script</title>
<updated>2026-05-31T19:49:39+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-31T19:49:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=8d8a9b8ec79ec2252b098713283884aeae80038e'/>
<id>urn:sha1:8d8a9b8ec79ec2252b098713283884aeae80038e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>chore(claude): sync rules and hooks with the rulesets bundle</title>
<updated>2026-05-26T12:47:03+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-26T12:47:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=85fa5f6b3d52c0c18043144653aaafeeb4dcf4a3'/>
<id>urn:sha1:85fa5f6b3d52c0c18043144653aaafeeb4dcf4a3</id>
<content type='text'>
Bring .claude/hooks/validate-el.sh and .claude/rules/interaction.md back in line with the shared bundle, and add the new keybinding-display.md rule.
</content>
</entry>
<entry>
<title>chore: sync bundled claude rules and git hooks</title>
<updated>2026-05-25T18:16:30+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-25T18:16:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=e0f6b54f41384e8bfdc33810b370ca6eaca9298f'/>
<id>urn:sha1:e0f6b54f41384e8bfdc33810b370ca6eaca9298f</id>
<content type='text'>
Routine sync of the .claude/rules and git hooks distributed with the language bundle. Adds the cross-project, emacs, interaction, todo-format, triggers, and working-files rules; refreshes the elisp and elisp-testing rules, the elisp validation hook, and the pre-commit hook.
</content>
</entry>
<entry>
<title>build: add make benchmark target and skip :perf tests by default</title>
<updated>2026-05-12T05:09:15+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-12T05:09:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=cd0b90dc74996f7bd7b897834bac7038ffb7f5b8'/>
<id>urn:sha1:cd0b90dc74996f7bd7b897834bac7038ffb7f5b8</id>
<content type='text'>
`make test', `make coverage', and the editor's PostToolUse test runner all selected `(not (tag :slow))', which let the now-`:perf'-tagged benchmark suite run alongside the unit tests. Each of those three filters now also excludes `:perf', and a new `make benchmark' target runs the benchmark file on its own. `make test-file' and `make test-name' keep their old filters so the suite stays reachable for ad-hoc runs.

`COVERAGE_EXCLUDE' loses `test-lorem-optimum-benchmark.el'. The tag filter handles it now, so the only entry left is `test-all-comp-errors.el', which byte-compiles modules and can't run under undercover's instrumentation.
</content>
</entry>
<entry>
<title>chore(hooks): eval load-prefer-newer before byte-compile and test runs</title>
<updated>2026-05-11T12:20:50+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-11T12:20:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=6045ba72c893a5718639217e4c25b948e7505cee'/>
<id>urn:sha1:6045ba72c893a5718639217e4c25b948e7505cee</id>
<content type='text'>
The validate-el.sh hook loaded stale `.elc` files when the matching `.el` was newer (e.g. after a sed-driven rename where the byte-compile hook never fires). `make test` already sets this. The hook didn't, so I added `(setq load-prefer-newer t)` to all three emacs invocations: the parens check, the byte-compile, and the test run.
</content>
</entry>
<entry>
<title>chore(hooks): drop PROJECT_ROOT guard from validate-el.sh</title>
<updated>2026-05-09T21:52:49+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-09T21:52:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=caa94e4482572bb1f30a4c4e6d8166dba9f99448'/>
<id>urn:sha1:caa94e4482572bb1f30a4c4e6d8166dba9f99448</id>
<content type='text'>
The PROJECT_ROOT guard skipped any .el file outside the project on the theory that out-of-tree files are owned by their own project's hooks. In practice, when I edit an .el file in another repo from a Claude session in this one, the other project often doesn't have its own hook running, so the file was getting no validation at all. I dropped the guard so any .el file edited from a Claude session here gets validated, regardless of which repo it lives in.
</content>
</entry>
<entry>
<title>chore: symlink claude rules to rulesets canonical</title>
<updated>2026-05-07T23:25:33+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-07T23:25:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=3efaf9b5218fa769a297df5821ec89837207e57d'/>
<id>urn:sha1:3efaf9b5218fa769a297df5821ec89837207e57d</id>
<content type='text'>
The .claude/rules/ files (commits.md, testing.md, verification.md) were local copies that drifted from the canonical at ~/code/rulesets. I replaced them with absolute symlinks pointing at the canonical files. This repo now picks up rule updates automatically.

The symlinks are absolute. Cloning this repo on a new machine needs ~/code/rulesets at the same path. Otherwise the symlinks dangle.
</content>
</entry>
<entry>
<title>chore(hooks): skip out-of-tree .el files in validate-el.sh</title>
<updated>2026-04-29T08:11:45+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-29T08:11:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=c30c38a4e5a8ecc35640e45b27723c199e1d0ade'/>
<id>urn:sha1:c30c38a4e5a8ecc35640e45b27723c199e1d0ade</id>
<content type='text'>
This PostToolUse hook validates .el edits via check-parens and byte-compile-file. It was firing on edits to files outside the project root too, which meant byte-compiling without the foreign package's load-path set up and leaving .elc droppings in the wrong tree. Added a four-line PROJECT_ROOT guard so out-of-tree files exit silently.
</content>
</entry>
</feed>
