aboutsummaryrefslogtreecommitdiff
path: root/claude-rules/commits.md
Commit message (Collapse)AuthorAgeFilesLines
* docs(commits): require @-mention of PR author in Slack notifyCraig Jennings2026-05-021-3/+3
|
* docs(commits): keep follow-up approvals terseCraig Jennings2026-05-021-0/+2
|
* docs(commits): drop "on" from Slack notify templatesCraig Jennings2026-05-021-2/+2
|
* docs(commits): add first-person voice as a personal-style passCraig Jennings2026-05-011-5/+5
| | | | | | I told Claude that the commit-message draft should sound personal, like it's coming from me. That move wasn't in the documented passes, so the drafts kept landing on impersonal third-person ("Add a test for X", "The change introduces Y"). I had to ask for the rewrite each time. First person is now the new pass (a) in all three subflows: commit messages, PR descriptions, PR review comments. The subject line and PR title stay imperative per Conventional Commits, and I left an exception for purely mechanical bodies where the subject already carries the message. I bumped the Multi-pass gate counts and the example announcement string to match.
* docs(commits): add post-review Slack notify + approve-vs-merge noteCraig Jennings2026-05-011-0/+7
| | | | | | | | Step 8 of the PR review/publish flow now sends a one-line message to channel C0AM2MWHCJU after every approve or changes-requested verdict. The new step skips humanizer and personal-style passes since the message is short and templated. The approve case sends "Approved on PR #N." with the PR URL on the next line. The changes-requested case sends "Changes Requested on PR #N" with the PR URL on the next line. I also added an explicit line saying approve doesn't authorize a merge. That keeps the merge decision with the PR author. The team's practice is approve-then-author-merges, not approve-and-merge.
* docs(commits): Conventional Commits spec + terminal-first reviewCraig Jennings2026-04-261-64/+135
| | | | | | | | | | | | | | | | | I reworked commits.md with two structural shifts and five smaller rule changes. Structural: - Drafts print inline in the terminal. `emacsclient` only opens when asked. Was: editor by default, humanize after. - Adopted the full Conventional Commits spec. New sections: Structure, Types, Scope, Breaking changes (`!` and `BREAKING CHANGE:` footer), Subject line, Body, Footers, How to write, Examples. Smaller: - Personal-tooling files (`claude-rules/*.md`, any `CLAUDE.md`, `.claude/`, `.ai/`, `SKILL.md`) aren't cited as authority in shared messages. State the reason, not the rule. Carve-out for when one of these files IS the change. - Voice and Focus opens with a colleague-tone framing. Four anti-patterns called out below it: no felt-experience narration, no verb-as-noun ("the ask", "a learn"), no sentence fragments in prose, and no first-person "I" for software behavior — all caught real drafting tics today. "Brief. Terse is fine." also tightened to "Brief. Terse is preferred." - Future-debugger framing added to message-writing guidance. Imperative summaries beat diary notes, and the body becomes a lightweight decision log of the constraint or tradeoff. - PR titles end with the ticket ID in parens, e.g. `refactor: drop dead check (SE-289)`. - Multi-pass gate tightened to match the new mandatory ordering.
* docs(commits,testing): add merge strategy + multi-pass gate + time-mocking ↵Craig Jennings2026-04-251-0/+24
| | | | | | | | | | | | | | | | | safety commits.md gets two additions. A new "## Merge Strategy" section makes squash-merge the default for feature branches and requires explicit confirmation of the merge approach before pushing or merging. A new "Multi-pass gate" paragraph in Review and Publish requires every humanizer-flow pass to run and be named when declaring done, so silent skips become defects. testing.md gets a new bullet under "### Determinism": time/clock-mocking helpers must not recurse against the primitive they're mocking, and must not let-bind over a defvar — the binding shadows only inside the test scope, so production code reading the symbol still gets the original value (silent test miss).
* docs: split Linear vs PR structure; propagate content-scope rule to Tier 1 ↵Craig Jennings2026-04-241-5/+20
| | | | | | | | | | | | | | | skills Linear ticket bodies are now Problem + Fix only. PR descriptions keep the four-section format (Problem, Fix, Why this fixes it, How it was tested). Linear's GitHub integration handles the cross-link via the PR body's Linear: line. Cross-ref to the content-scope rule appended at the end of each Tier 1 skill that produces public artifacts: testing.md, arch-document, arch-decide, arch-design, review-code, respond-to-review, brainstorm, codify. Single-source the rule in commits.md, point at it from each output-producing skill.
* docs(commits): add content scope rule for public artifactsCraig Jennings2026-04-241-0/+27
| | | | | | | | PR descriptions, Linear ticket bodies, and PR review comments are visible to the team. New section codifies what not to mention (local paths, private repos, personal tooling) and a concise four-section structure for shipped-fix descriptions: Problem, Fix, Why this fixes it, How it was tested.
* docs(commits): require explicit reviewer requests on PR creationCraig Jennings2026-04-241-3/+12
| | | | | | | | | Adds step 7 to the Review-and-Publish PR-description flow: pass --reviewer at create time or use gh pr edit --add-reviewer right after. Notes that CODEOWNERS auto-suggestions aren't requests, that picking reviewers should follow the team's per-repo convention, and that follow-up PRs benefit from tagging the parent PR's author. Renumbers the Linear-comment and Dev-Review status steps accordingly.
* docs(commits): codify voice rules + PR-comment publish flowCraig Jennings2026-04-231-10/+22
| | | | | | | | Three new paragraphs under "Voice and Focus": first person where it fits, brief/terse, kind. The section now applies to PR comments (review replies, follow-up notes, thread responses) as well as commit bodies and PR descriptions. New "For PR review comments and replies" subsection under Step 2 mirrors the commit-message and PR-description flows: draft to /tmp/pr-<N>-comment.md, humanizer skill, plain-English pass, user approval, then post with the right gh command for the comment type. The trivial-one-liner exception at the bottom of Step 2 now covers acknowledgment-style replies ("thanks for the review") alongside trivial commits.
* docs(commits): add Voice and Focus, expand humanizer checklistCraig Jennings2026-04-221-2/+29
| | | | | | Added a new Voice and Focus section between Commit Message Format and Review and Publish. It covers three rules that kept coming up in practice. Write in the user's voice — first person fits, and "This PR introduces X" reads as press-release self-narration. Focus on what was wrong and what was corrected, not the mechanics. Don't stack three or more type signatures or API names in a single sentence. Also extended the post-humanizer checklist in both the commit-message and PR-description flows. Items (c) "prefer contractions" and (d) "break up long sentences" now sit alongside the existing (a) "rewrite dev-jargon" and (b) "replace semicolons". Uncontracted English reads stiff in short prose, and stacked-clause sentences read easier split on a conjunction.
* docs(commits): add review-and-publish flow, tighten message conventionsCraig Jennings2026-04-221-0/+87
| | | | | | | | | | Three additions to claude-rules/commits.md. A new conventions section adds two rules. First, do not hard-wrap commit body lines. Let the renderer soft-wrap instead. Hard wraps shrink the visible width in web UIs and cause awkward mid-sentence breaks. Second, do not reference how the change was produced (code review, linting, test runs) in the message. The body is for the what and the why. The how belongs in the PR discussion. A new Review and Publish section defines a two-step gate for every commit and PR. Step 1 runs /review-code against the change and blocks on Critical or Important findings unless the user overrides. Step 2 drafts the message to /tmp, opens it in the user's editor, runs the humanizer skill, and waits for explicit approval before committing or pushing. PRs also require a Linear cross-link line, a Linear comment with the PR URL after creation, and a status transition to Dev Review. A short hook-level authorization note clarifies that the review-plus-approval flow is the authorization gate. Tools like git-commit-confirm should not add a second independent prompt once Step 2 has been approved.
* feat: add commits.md rule — no AI attribution anywhereCraig Jennings2026-04-191-0/+66
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.