<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rulesets/README.org, 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-04-19T18:09:45+00:00</updated>
<entry>
<title>chore: remove project-specific references</title>
<updated>2026-04-19T18:09:45+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-19T18:09:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rulesets/commit/?id=2d026369b616e51199579ff039cc34be4d5c2ef9'/>
<id>urn:sha1:2d026369b616e51199579ff039cc34be4d5c2ef9</id>
<content type='text'>
- elisp-testing.md: generalized testutil description. The specific files
  testutil-general.el / testutil-filesystem.el / testutil-org.el only
  exist in one project; bundle should describe the pattern, not name
  specific files.
- README.org: install examples use ~/code/ path to match actual layout.
</content>
</entry>
<entry>
<title>feat: add per-project language bundles + elisp ruleset</title>
<updated>2026-04-19T16:57:23+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-19T16:57:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rulesets/commit/?id=18fcaf9f27d03849487078b30f667c3b574e6554'/>
<id>urn:sha1:18fcaf9f27d03849487078b30f667c3b574e6554</id>
<content type='text'>
Introduces a second install mode alongside the existing global symlinks:
per-project language bundles that copy a language-specific Claude Code
setup (rules, hooks, settings, pre-commit) into a target project.

Layout additions:
  languages/elisp/       - Emacs Lisp bundle (rules, hooks, settings, CLAUDE.md)
  scripts/install-lang.sh - shared install logic

Makefile additions:
  make help              - unified help text
  make install-lang LANG=&lt;lang&gt; PROJECT=&lt;path&gt; [FORCE=1]
  make install-elisp PROJECT=&lt;path&gt; [FORCE=1]   (shortcut)
  make list-languages    - show available bundles

Elisp bundle contents:
  - CLAUDE.md template (seed on first install, preserved on update)
  - .claude/rules/elisp.md, elisp-testing.md, verification.md
  - .claude/hooks/validate-el.sh (check-parens, byte-compile, run matching tests)
  - .claude/settings.json (permission allowlist, hook wiring)
  - githooks/pre-commit (secret scan + staged-file paren check)
  - gitignore-add.txt (append .claude/settings.local.json)

Hooks use \$CLAUDE_PROJECT_DIR with a script-relative fallback, so the
same bundle works on any machine or clone path. Install activates git
hooks via core.hooksPath=githooks automatically. Re-running install is
idempotent; CLAUDE.md is never overwritten without FORCE=1.
</content>
</entry>
</feed>
