<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rulesets/languages/elisp/claude/settings.json, 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:06:09+00:00</updated>
<entry>
<title>feat: add commits.md rule — no AI attribution anywhere</title>
<updated>2026-04-19T18:06:09+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-04-19T18:06:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/rulesets/commit/?id=1e65828d45d2209b23610111e03d088a5bd4b080'/>
<id>urn:sha1:1e65828d45d2209b23610111e03d088a5bd4b080</id>
<content type='text'>
New generic rule at claude-rules/commits.md covers author identity,
absence of Claude/Anthropic/LLM/AI attribution (messages, PRs,
comments, trailers, emojis), and conventional commit format. Applies
to all repos.

Bundle settings.json now sets attribution.commit: "" and
attribution.pr: "" so Claude Code's default attribution is suppressed
belt-and-suspenders with the written rule.

Elisp CLAUDE.md template trimmed to reference commits.md instead of
inlining the rules.
</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>
