diff options
| -rw-r--r-- | claude-rules/commits.md | 66 | ||||
| -rw-r--r-- | languages/elisp/CLAUDE.md | 8 | ||||
| -rw-r--r-- | languages/elisp/claude/settings.json | 4 |
3 files changed, 75 insertions, 3 deletions
diff --git a/claude-rules/commits.md b/claude-rules/commits.md new file mode 100644 index 0000000..301c6ff --- /dev/null +++ b/claude-rules/commits.md @@ -0,0 +1,66 @@ +# Commit Rules + +Applies to: `**/*` + +## Author Identity + +All commits are authored as the user (repo owner / maintainer), never as +Claude, Claude Code, Anthropic, or any AI tool. Git uses the configured +`user.name` and `user.email` — do not modify git config to attribute +otherwise. + +## No AI Attribution — Anywhere + +Absolutely no AI/LLM/Claude/Anthropic attribution in: + +- Commit messages (subject or body) +- PR descriptions and titles +- Issue comments and reviews +- Code comments +- Commit trailers +- Release notes, changelogs, and any public-facing artifact + +This means: + +- **No** `Co-Authored-By: Claude …` (or Claude Code, or any AI) trailers +- **No** "Generated with Claude Code" footers or equivalents +- **No** 🤖 emojis or similar markers implying AI authorship +- **No** references to "Claude", "Anthropic", "LLM", "AI tool" as a credited contributor +- **No** attribution added via template defaults — strip them before committing + +If a tool, template, or default config inserts attribution, remove it. If +settings.json needs it, set `attribution.commit: ""` and `attribution.pr: ""` +to suppress the defaults. + +## Commit Message Format + +Conventional prefixes: + +- `feat:` — new feature +- `fix:` — bug fix +- `refactor:` — code restructuring, no behavior change +- `test:` — adding or updating tests +- `docs:` — documentation only +- `chore:` — build, tooling, meta + +Subject line ≤72 characters. Body explains the *why* when not obvious. +Skip the body entirely when the subject line is self-explanatory. + +## Before Committing + +1. Check author identity: `git log -1 --format='%an <%ae>'` — should be the user. +2. Scan the message for AI-attribution language (including emojis and footers). +3. Review the diff — only intended changes staged; no unrelated files. +4. Run tests and linters (see `verification.md`). + +## If You Catch Yourself + +Typing any of the following — stop, delete, rewrite: + +- `Co-Authored-By: Claude` +- `🤖 Generated with …` +- "Created with Claude Code" +- "Assisted by AI" + +Rewrite the commit as the user would write it: concise, focused on the +change, no mention of how the change was produced. diff --git a/languages/elisp/CLAUDE.md b/languages/elisp/CLAUDE.md index 9b95e4f..2562695 100644 --- a/languages/elisp/CLAUDE.md +++ b/languages/elisp/CLAUDE.md @@ -35,9 +35,11 @@ See rule files in `.claude/rules/`: ## Git Workflow -- Conventional commit prefixes: `feat:`, `fix:`, `refactor:`, `test:`, `docs:`, `chore:` -- Pre-commit hook in `githooks/` scans for secrets and runs `check-parens` on staged `.el` files -- Activate on fresh clone: `git config core.hooksPath githooks` +Commit conventions: see `.claude/rules/commits.md` (author identity, +no AI attribution, message format). + +Pre-commit hook in `githooks/` scans for secrets and runs `check-parens` on +staged `.el` files. Activate on fresh clone with `git config core.hooksPath githooks`. ## Problem-Solving Approach diff --git a/languages/elisp/claude/settings.json b/languages/elisp/claude/settings.json index cca0eaa..9ab9f12 100644 --- a/languages/elisp/claude/settings.json +++ b/languages/elisp/claude/settings.json @@ -1,4 +1,8 @@ { + "attribution": { + "commit": "", + "pr": "" + }, "permissions": { "allow": [ "Bash(make)", |
