<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs/.claude/rules, branch load-graph-classify-start</title>
<subtitle>My Emacs configuration
</subtitle>
<id>https://git.cjennings.net/dotemacs/atom?h=load-graph-classify-start</id>
<link rel='self' href='https://git.cjennings.net/dotemacs/atom?h=load-graph-classify-start'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/'/>
<updated>2026-05-07T23:25:33+00:00</updated>
<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: sync validate-el.sh JSON channel + pairwise rule from rulesets</title>
<updated>2026-04-19T22:07:29+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-19T22:07:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=cf2d9d34be56c4cd19ad8775de4ce356b6a2295a'/>
<id>urn:sha1:cf2d9d34be56c4cd19ad8775de4ce356b6a2295a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>chore: sync testing rules — pyramid, overmocking, refactor-for-testability, interactive/internal split</title>
<updated>2026-04-19T18:16:18+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-19T18:16:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=e111f068622b626e312faba50b6d52ba1ba88245'/>
<id>urn:sha1:e111f068622b626e312faba50b6d52ba1ba88245</id>
<content type='text'>
</content>
</entry>
<entry>
<title>chore: sync elisp-testing.md (testutil pattern generalized)</title>
<updated>2026-04-19T18:09:54+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-19T18:09:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=d914986a59a66cf2284ea13cf5af29c58da2ff2b'/>
<id>urn:sha1:d914986a59a66cf2284ea13cf5af29c58da2ff2b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>chore: sync bundle — add commits.md rule, attribution suppression</title>
<updated>2026-04-19T18:06:57+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-19T18:06:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=ff747056a05792d6212ff05a9f5343fd804cbff0'/>
<id>urn:sha1:ff747056a05792d6212ff05a9f5343fd804cbff0</id>
<content type='text'>
Picks up upstream bundle changes:
- New .claude/rules/commits.md: no AI attribution, conventional prefixes.
- settings.json: attribution.commit and attribution.pr empty strings
  (suppresses Claude Code default attribution).
- CLAUDE.md: Git Workflow references commits.md instead of the
  (gitignored) docs/protocols.org.
</content>
</entry>
<entry>
<title>chore: sync .claude/ bundle — package-initialize, flat-layout, generic testing</title>
<updated>2026-04-19T17:47:20+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-19T17:47:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=1ce2e7c14d41062edb85c84aef59645b5d7e9597'/>
<id>urn:sha1:1ce2e7c14d41062edb85c84aef59645b5d7e9597</id>
<content type='text'>
Re-installed the elisp ruleset from ~/code/rulesets, picking up three
upstream bundle fixes:

  - validate-el.sh now calls (package-initialize) so byte-compile can
    resolve external packages (dash, etc.) via ~/.emacs.d/elpa/.
  - validate-el.sh Phase 2 (test runner) now matches any .el file
    outside tests/, not just modules/*.el. Supports flat-layout
    projects (Elisp package repos where sources live at project root).
  - .claude/rules/testing.md is now generic TDD principles (was
    Python/TS specific); language-specific testing rules live in
    elisp-testing.md, python-testing.md, etc.

elisp-testing.md gained a line referencing testing.md as the base.
</content>
</entry>
<entry>
<title>chore: track CLAUDE.md and .claude/ bundle, narrow gitignore</title>
<updated>2026-04-19T17:14:54+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-19T17:14:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=1172e4ef1e2d5dbcf2274820ca7759e3aa54b6c6'/>
<id>urn:sha1:1172e4ef1e2d5dbcf2274820ca7759e3aa54b6c6</id>
<content type='text'>
Swap blanket /CLAUDE.md + /.claude/ gitignore rules for personal-only
overrides (.claude/settings.local.json, .claude/.cache/). Add the
tracked bundle content from ~/code/rulesets install-elisp:

  - CLAUDE.md                    (project instructions)
  - .claude/rules/elisp.md
  - .claude/rules/elisp-testing.md
  - .claude/rules/verification.md
  - .claude/hooks/validate-el.sh (portable via $CLAUDE_PROJECT_DIR)
  - .claude/settings.json        (allowlist + hook wiring)

Hooks now use $CLAUDE_PROJECT_DIR with script-relative fallback, so a
fresh clone of this repo works on any machine without path edits.

Project-local skills under .claude/skills/ were stale DeepSat-flavored
copies; deleted and replaced with symlinks into ~/.claude/skills/ via
the rulesets repo's global install.
</content>
</entry>
</feed>
