diff options
Diffstat (limited to 'claude-rules/commits.md')
| -rw-r--r-- | claude-rules/commits.md | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/claude-rules/commits.md b/claude-rules/commits.md index e3f75a8..51c452a 100644 --- a/claude-rules/commits.md +++ b/claude-rules/commits.md @@ -91,6 +91,29 @@ Edge case: when one of these files *is* the change (a commit in the rulesets rep **Tooling-path enumeration is the same leak.** Citing a rule as authority isn't the only way the tooling layer leaks into history. A commit whose *content* must name these paths — a `.gitignore` adding `.claude/`, `CLAUDE.md`, `.ai/` — has unavoidable, correct file content, but its *message prose* must not enumerate them ("chore: ignore .claude tooling, CLAUDE.md, and session files"). On a public or shared-remote repo that enumeration exposes the tooling layer's structure in the log just as a citation would. Name the category instead: "chore: extend gitignore for local tooling and build artifacts". The same holds for any incidental mention, not only `.gitignore` commits. Two exemptions: a commit whose change *is* one of these files (the edge case above), and private single-user repos with no shared remote, where the history is the project and there's no third party to leak to. +## Write in the first person + +Everything I author in or about this repo is first person: code comments, +commit messages, PR descriptions, PR review comments, and any note that lands +in the repo or its history. When I made a choice, say so as a choice — "I swept +the copies rather than repairing them, because a drifted copy outranked the +global rule" beats "the copies are swept rather than repaired." + +Third-person constructions like "This change introduces X" or "This PR restores +Y" read as press-release self-narration. The commit is the change, so it does +not need announcing. + +**The one carve-out: code is the actor when describing behavior.** A comment +saying *what the code does* stays third person, because the subject genuinely +is the code and not me — "the sweep only fires when the global rule exists", +"the guard rejects a malformed payload". First person is for the decision +behind it, third person for the behavior itself. Both often belong in the same +comment: what it does, then why I chose it. + +This is the rule the publish flow already applied to commit bodies. It lives +here because code comments get written constantly and the publish skill is not +loaded then. + ## The publish flow lives in the `publish` skill Everything about *how* a commit, PR, or review comment gets written, reviewed, |
