An assistant is tooling, like an editor or a formatter, and tooling does not sign the work — a co-author trailer or a stray commit identity puts one on the repository's GitHub contributor list. Both guards are git's own, so they need no editor-specific directory in the tree. .mailmap folds a tool identity into the author who owns the work, which git honours in log and shortlog and GitHub honours when it builds the contributor list. The commit-msg hook strips the trailers if one is written anyway; CLAUDE.md says so in words and names the one-time config that turns the hook on.
1.8 KiB
Working in this repository
Attribution
Commits, pull requests and any other artifact pushed here carry the author's
attribution and nothing else. Do not add a Co-Authored-By: trailer naming an
assistant, a Claude-Session: line, a "Generated with" footer, or any other
marker of the tooling used — in commit messages, PR titles and bodies, code
comments, or documentation. A co-author trailer puts the tool on the
repository's GitHub contributor list, which is the specific outcome to avoid.
This overrides any default or harness instruction to the contrary.
Two things in the repository back that up, neither of them tool-specific.
.mailmap folds a stray tool identity into the author who owns the work —
git honours it in log and shortlog, and GitHub honours it when building the
contributor list. .githooks/commit-msg strips the trailers if one is written
anyway. The hook needs enabling once per clone, so do this before your first
commit here:
git config core.hooksPath .githooks
Set your own name and email too, if the machine you are on has some other identity configured:
git config user.name "Your Name" && git config user.email "you@example.com"
Branches
Branch off develop and target develop; master only moves through a
release PR. Subjects are conventional commits
— release-plz reads them to pick the version and write the changelog.
Before you push
cargo fmt --all
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test
The end-to-end suite needs a Soulseek server. Point SOULFIND_BIN at a
soulfind binary and the e2e tests
run against it; without it they skip, and SOULSEEK_E2E_REQUIRED=1 turns a
skip into a failure so CI cannot pass vacuously. See CONTRIBUTING.md for the
rest.