<feed xmlns='http://www.w3.org/2005/Atom'>
<title>chime/.claude/hooks, branch main</title>
<subtitle>Emacs chimes, notifications, and modeline reminders so you don't miss events
</subtitle>
<id>https://git.cjennings.net/chime/atom?h=main</id>
<link rel='self' href='https://git.cjennings.net/chime/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/chime/'/>
<updated>2026-06-24T02:00:33+00:00</updated>
<entry>
<title>chore: stop tracking local dev tooling</title>
<updated>2026-06-24T02:00:33+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-24T02:00:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/chime/commit/?id=1587c119ceeba4698974f402eda17482e68202e8'/>
<id>urn:sha1:1587c119ceeba4698974f402eda17482e68202e8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>chore: refresh .claude rules and hooks to rulesets canonical</title>
<updated>2026-06-12T23:14:19+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-06-12T23:14:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/chime/commit/?id=b39633d9d482b6510e5626e0c5441ad211508a6e'/>
<id>urn:sha1:b39633d9d482b6510e5626e0c5441ad211508a6e</id>
<content type='text'>
The startup language-bundle sync repaired drift in these rulesets-owned files. Committing them at canonical so future syncs stay no-ops.
</content>
</entry>
<entry>
<title>fix: scope validate-el.sh hook to in-project files</title>
<updated>2026-05-13T18:48:56+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-05-13T18:48:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/chime/commit/?id=997d839ca41b7a6fc46f3fba722476e6558688ab'/>
<id>urn:sha1:997d839ca41b7a6fc46f3fba722476e6558688ab</id>
<content type='text'>
The PostToolUse hook tried to byte-compile every .el file edited, including ones outside the chime project. Out-of-project files typically require packages that aren't on the hook's -L paths, so validation failed for unrelated reasons. Exit 0 when the edited file isn't under $PROJECT_ROOT.
</content>
</entry>
<entry>
<title>fix(hooks): run validate-el test phase from tests/ directory</title>
<updated>2026-04-22T01:38:18+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-22T01:38:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/chime/commit/?id=b2e903826e9baf1b0a1a8c400c90625022a00dd8'/>
<id>urn:sha1:b2e903826e9baf1b0a1a8c400c90625022a00dd8</id>
<content type='text'>
Test files start with (require 'test-bootstrap (expand-file-name "test-bootstrap.el")). The expand-file-name call resolves against default-directory, which in batch mode is the directory the shell was in when emacs started. The hook ran emacs from the project root, so the require looked for the bootstrap at the project root and could not find it. Every Edit or Write to a test file failed the hook.

The fix is to cd into PROJECT_ROOT/tests inside the subshell before launching emacs, so the bootstrap require resolves to tests/test-bootstrap.el where the file actually lives.
</content>
</entry>
<entry>
<title>chore(claude): 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/chime/commit/?id=592142e3788e55ae166103cc6b653b9531bba38a'/>
<id>urn:sha1:592142e3788e55ae166103cc6b653b9531bba38a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>chore: add Claude Code ruleset via ~/code/rulesets install-elisp</title>
<updated>2026-04-19T17:46:59+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-19T17:46:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/chime/commit/?id=6d72c4eed04c7d28639ee31789e6201275e7d9b7'/>
<id>urn:sha1:6d72c4eed04c7d28639ee31789e6201275e7d9b7</id>
<content type='text'>
Installs the Elisp ruleset from the rulesets repo:

  - CLAUDE.md (project instructions template)
  - .claude/rules/ (testing, verification, elisp, elisp-testing)
  - .claude/hooks/validate-el.sh (check-parens + byte-compile + run
    matching tests on every .el edit via PostToolUse)
  - .claude/settings.json (permission allowlist + hook wiring)
  - githooks/pre-commit (secret scan + staged-file paren check)

core.hooksPath set to githooks/ so the pre-commit activates automatically.
Hooks use \$CLAUDE_PROJECT_DIR with a script-relative fallback, so a
fresh clone works without path edits.

.gitignore extended with personal-override entries (settings.local.json,
.cache/) and byte-compile artifacts (*.elc, *.eln).
</content>
</entry>
</feed>
