aboutsummaryrefslogtreecommitdiff
path: root/claude-rules/commits.md
diff options
context:
space:
mode:
Diffstat (limited to 'claude-rules/commits.md')
-rw-r--r--claude-rules/commits.md23
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,