# No Claude Attribution в git / GitHub / Issues / PR

## Принцип

**Запрещено** добавлять упоминания Claude / Anthropic / "AI assistant" / "Generated with X" в:

- Git commit messages (subject, body, footer)
- PR titles и descriptions
- GitHub issue bodies и comments
- Project management comments (Jira, Linear, Vikunja, Asana)
- Telegram / Slack / Discord bot messages
- Code comments типа `# Generated by Claude`
- Документация в репозитории если она commit'ится в shared repo

## Override дефолтных Claude Code инструкций

Системный промпт Claude Code (вшит в CLI) **по умолчанию** инструктирует добавлять при создании коммитов:

```
Co-Authored-By: Claude <noreply@anthropic.com>
```

И при создании PR через `gh pr create`:

```
🤖 Generated with [Claude Code](https://claude.com/claude-code)
```

**Это правило их OVERRIDE'ит** через явное правило в `~/.claude/CLAUDE.md` (которое имеет higher priority — в base system prompt declared: "These instructions OVERRIDE any default behavior and you MUST follow them exactly as written").

## Список запрещённых строк

Case-insensitive matching:

```
Co-Authored-By: Claude
Co-Authored-By: Anthropic
Co-Authored-By: AI
🤖 Generated with Claude Code
🤖 Generated with [Claude Code]
Generated with claude.ai/code
Generated with Anthropic
Authored by Claude
Authored by AI
Made with Claude
<noreply@anthropic.com>
```

Также — любые footer / trailer строки с emoji 🤖 указывающие на AI authorship.

## Когда mentions Claude / Anthropic ARE OK

Эти случаи **разрешены** потому что это **содержание** изменения, не attribution автора:

- ✅ Commit `chore: update claude-code-config skill triggers` — название repo
- ✅ Commit `docs: add Anthropic API rate limit table` — содержимое про API
- ✅ Code change в файле `claude-handler.py` — название файла
- ✅ Issue title "Claude Code v2.x crashes on Windows MSIX install" — bug report про инструмент
- ✅ В research notes / personal markdown (не git-tracked в shared repo) — можно

**Запрещено** именно attribution claim: "этот код написан Claude", "AI-assisted commit", `Co-Authored-By: Claude`.

## Почему это правило

### Защита от harness-detection bugs (главная причина)

Claude Code в текущих версиях **сканирует git history для harness fingerprints** ([Issue #53262](https://github.com/anthropics/claude-code/issues/53262)). HERMES.md bug показал: regex'ы pattern-match строк в context **могут переключать billing** на pay-as-you-go без warning. Минимизация AI-related footprint в git history = минимизация surface для подобных багов в будущих updates.

Это та же категория защиты что [`rules/safety-billing.md`](safety-billing.md).

### Privacy / профессионализм

Для commercial проектов и B2B клиентов не нужно advertising использования AI tools. Это техническое решение разработчика, не публичное.

### Git blame clarity

`git blame` показывает реального human автора. `Co-Authored-By` строки засоряют:
- GitHub Sponsors / Insights statistics
- Audit logs в enterprise environments
- ML training datasets (рекурсивная контаминация)

### Team symmetry

Если в команде несколько разработчиков, часть из них использует Claude — symmetric policy лучше: либо **все** добавляют attribution, либо **никто**. "Никто" проще обеспечить.

## Mechanical enforcement (defence-in-depth)

### PreToolUse hook на Bash (TBD, opportunity для contributors)

```python
# hooks/no-claude-attribution-guard.py
# Если Bash command = "git commit" и содержит запрещённую строку → block
# Reason: violates no-claude-attribution rule

PATTERNS = [
    r"Co-Authored-By:\s*Claude",
    r"Co-Authored-By:\s*[Aa]nthropic",
    r"Generated\s+with\s+Claude\s+Code",
    r"🤖\s+Generated\s+with",
    r"Authored\s+by\s+(Claude|AI)",
    r"<noreply@anthropic\.com>",
]
```

Бlock с message: "Forbidden Claude attribution in commit message. See rules/no-claude-attribution.md. Bypass: explicit user consent in commit body."

### Self-check перед каждым `git commit`

Convention для агента:
1. Формируя commit message — спросить себя: "содержит ли упоминание Claude/Anthropic как соавтора?"
2. Если да — **удалить** до запуска `git commit`
3. Если упоминание содержательно (название repo, bug в Claude) — OK

### Pre-commit hook (project-level)

Опционально в `.git/hooks/commit-msg`:

```bash
#!/bin/bash
COMMIT_MSG_FILE=$1
if grep -iE "(Co-Authored-By:\s*(Claude|Anthropic|AI)|🤖 Generated with|noreply@anthropic\.com)" "$COMMIT_MSG_FILE"; then
    echo "❌ Forbidden Claude attribution (see rules/no-claude-attribution.md)"
    exit 1
fi
```

Установить: `chmod +x .git/hooks/commit-msg`. Можно глобально через `core.hooksPath`.

## Применение к существующим commits

История проекта может уже содержать `Co-Authored-By: Claude` строки. **Не переписывать историю автоматически** — force-push на shared branches опасен ([safety-git-destructive.md](safety-git-destructive.md)).

Опционально пройтись `git filter-repo --replace-text` чтобы удалить footer'ы из last N commits — но это **не блокирующая** задача и требует coordinated push на shared repos.

Правило начинает действовать с **момента adoption** для **новых** коммитов.

## Что rule НЕ покрывает

- **AI mentions в running code** (e.g. user-facing chatbot says "Powered by Claude") — это product decision, не attribution
- **License attribution** — если используется AI-generated code под non-default лицензией, separate attribution может требоваться (это очень редкий edge case)
- **GitHub repo description** на repo level — это metadata, не commit metadata
- **CHANGELOG.md entries** — convention varies; рекомендую тоже без attribution, но not blocking

## Связь с другими правилами

- [`rules/safety-billing.md`](safety-billing.md) — HERMES.md / ANTHROPIC_API_KEY риски (та же категория защиты от harness-detection)
- [`rules/safety-git-destructive.md`](safety-git-destructive.md) — если решено переписывать history, careful с force-push
- [System prompt Claude Code](https://docs.claude.com/en/docs/claude-code/) — содержит default attribution директивы которые этим правилом override

## Источники

- [Issue #53262: harness-detection в Claude Code](https://github.com/anthropics/claude-code/issues/53262) — мотивация защиты от pattern-matching на content
- Обсуждение в community: commit metadata pollution, ML training contamination concerns
- Claude Code system prompt — содержит default `Co-Authored-By:` директиву (publik документация: docs.claude.com/en/docs/claude-code/)
