Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@
Thanks for contributing to GenieClaw! Please fill this template in honestly.
The "Real Behavior Proof" section is required and enforced by CI.
See CONTRIBUTING.md for the full rules.

NOTE: Strip any AI-attribution footer (e.g. "🤖 Generated with Claude Code")
from your PR body before submitting. Using AI tooling to draft the PR is
fine; attribution in the PR body and in git history stays with the human
contributor. CI enforces this.
-->

## Summary
Expand Down
10 changes: 10 additions & 0 deletions .github/workflows/contribution.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,16 @@ jobs:
exit 1
fi

# Block AI-attribution footers in PR body. Using Claude Code (or any
# other AI agent) to help draft the PR is fine — but `git log`,
# `git shortlog`, and the PR description record attribution to the
# human contributor, not the tool. Strip the trailer before
# submitting. See CONTRIBUTING.md "Commit hygiene".
if printf '%s' "$PR_BODY" | grep -Eqi 'Generated[[:space:]]+with[[:space:]]+\[?Claude[[:space:]]+Code\]?'; then
echo "::error::PR body contains an AI-attribution footer (e.g. '🤖 Generated with Claude Code'). Strip it before submitting — see CONTRIBUTING.md 'Commit hygiene'."
exit 1
fi

# Allow Dependabot / Renovate / release automation to skip the
# human-written proof requirement. These are bot PRs whose
# contents are mechanically generated.
Expand Down
6 changes: 5 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,11 @@
`Contribution / PR body checklist` CI job (triggered via
`pull_request_target` so the check runs from the base branch's
workflow definition — fires on every PR regardless of whether the
PR head pre-dates the workflow). Quality / engineering /
PR head pre-dates the workflow). Checklist also blocks PR bodies
that include AI-attribution footers like `🤖 Generated with Claude
Code` (case-insensitive, matches the bracketed-link form as well)
to keep PR attribution with the human contributor; same spirit as
the existing no-`Co-Authored-By: Claude` commit-trailer rule. Quality / engineering /
bug-fix contributions are explicitly welcomed; every PR must include
a `## Real Behavior Proof` section in the body (CI enforces structure,
reviewer reads the content) so reviewers can see what was actually
Expand Down
1 change: 1 addition & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ All checks must be green before merge. We squash-merge PRs, with the maintainer
- Write commit subjects in the imperative mood, scoped if useful: `fix(voice/stt): per-call nonce on transcribe_pcm tempfile`.
- Keep commit bodies useful — explain *why*, not *what*. The diff already shows what changed.
- Do **not** add `Co-Authored-By: Claude` / Copilot / other AI-assistant trailers to commit messages. Tools to draft code are fine; we keep `git log` attribution to the human contributor so credit is unambiguous.
- Do **not** include AI-generated attribution footers like `🤖 Generated with Claude Code` (or any variant) in **PR bodies** either. Enforced by the `Contribution / PR body checklist` CI job. Same reason as the commit-trailer rule: attribution stays with the human contributor.
- Don't `--no-verify` past pre-commit hooks. Fix the underlying issue.

## Security disclosures
Expand Down
Loading