mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-08 03:38:23 +00:00
CLAUDE.md and GEMINI.md existed as per-runtime extensions of AGENTS.md, and only one of them carried anything at all: GEMINI.md stated that it had no additions, while CLAUDE.md held rules that bind every runtime anyway — the permission announcement, the make-over-raw preference, the loop, chain and heredoc bans, the stream-the-log-to-/tmp rule, the CI-evidence rule, the push ban and the comment rule. A rule that binds every agent does not belong in one agent's file. AGENTS.md absorbs them and now states that no tool-specific extension file exists; agents whose runtime auto-loads a different filename reach it through their own configuration instead. The filenames were machinery as much as prose. The PR templates, the branch and pull-request scope tables, the settings and security docs that justified the loop deny by "the textual CLAUDE.md rule", six requirement documents whose push instruction linked ../../CLAUDE.md, and a test docstring citing the shell-loop ban all named them, and now name AGENTS.md. scripts/meta/resolve/pr/scope.sh deliberately keeps matching CLAUDE.md and GEMINI.md: this change deletes them, and without those patterns the change itself would not classify as agent-scope. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
46 lines
3.5 KiB
Markdown
46 lines
3.5 KiB
Markdown
# Branch 🌿
|
|
|
|
## CI Impact 🔀
|
|
|
|
The branch prefix MUST match the type of change. The [PR workflow](pull-request.md) uses it to classify the scope and decide which CI pipeline to run.
|
|
|
|
| Branch prefix | Scope | Matching files | CI behavior |
|
|
|---|---|---|---|
|
|
| `agent` | Changes to agent instructions or prompts | `AGENTS.md`, `roles/<role>/AGENTS.md`, `docs/agents/*` | Skips [orchestrator](../../../../.github/workflows/call-orchestrator.yml), finishes green through the lightweight scope gate. |
|
|
| `documentation` | Documentation-only changes | `**/*.md`, `**/*.rst` (outside agent paths) | Skips [orchestrator](../../../../.github/workflows/call-orchestrator.yml), finishes green through the lightweight scope gate. |
|
|
| `feature` | New features or enhancements | `*` | Runs the full [orchestrator](../../../../.github/workflows/call-orchestrator.yml) pipeline. |
|
|
| `fix` | Bug fixes | `*` | Runs the full [orchestrator](../../../../.github/workflows/call-orchestrator.yml) pipeline. |
|
|
| `update` | Automated or maintenance updates | `*` | Runs the full [orchestrator](../../../../.github/workflows/call-orchestrator.yml) pipeline. |
|
|
| `chore` | Maintenance, dependency, and tooling updates (incl. branches created by [cron-update.yml](../../../../.github/workflows/cron-update.yml)) | `*` | Runs the full [orchestrator](../../../../.github/workflows/call-orchestrator.yml) pipeline. |
|
|
| `alert-autofix` | Automated alert-triggered fixes | `*` | Runs the full [orchestrator](../../../../.github/workflows/call-orchestrator.yml) pipeline. |
|
|
| `dependabot` | Automated dependency updates | `*` | Runs the full [orchestrator](../../../../.github/workflows/call-orchestrator.yml) pipeline. |
|
|
|
|
## Enforcement 🔒
|
|
|
|
All rules in this document are actively enforced on `main` via GitHub branch protection. See [branch.md](../../tools/github/branch/security.md) for the full enforcement policy.
|
|
|
|
The naming conventions below are additionally checked locally by the lint test [test_branch_name.py](../../../../tests/lint/repository/naming/test_branch_name.py), which fails `make test-lint` when the checked-out branch uses an unknown prefix (e.g. `feat/` instead of `feature/`) or a non-kebab-case description.
|
|
|
|
## Naming Conventions 🏷️
|
|
|
|
The description MUST use `kebab-case` (lowercase words separated by hyphens) and SHOULD be short enough to read at a glance.
|
|
|
|
The full branch name MUST follow one of the patterns below, depending on whether the change targets a specific role or is general:
|
|
|
|
| Case | Pattern | Example |
|
|
|---|---|---|
|
|
| General feature | `feature/<topic>` | `feature/ldap-integration` |
|
|
| Role feature | `feature/<role>/<topic>` | `feature/web-app-matomo/ldap-integration` |
|
|
| General fix | `fix/<topic>/<ticket-id>` | `fix/dns-resolution/taiga-123` |
|
|
| Role fix | `fix/<role>/<topic>/<ticket-id>` | `fix/web-app-matomo/login-redirect/taiga-789` |
|
|
| General update | `update/<topic>` | `update/docker-image-versions` |
|
|
| Chore | `chore/<topic>` | `chore/update-docker-image-versions` |
|
|
| Alert autofix | `alert-autofix-<alert-id>` | `alert-autofix-261` |
|
|
| Documentation | `documentation/<topic>` | `documentation/contributing-setup` |
|
|
| Agent | `agent/<topic>` | `agent/improve-commit-instructions` |
|
|
| Dependabot | `dependabot/<ecosystem>/<dependency>` | `dependabot/pip/requests-2.32.0` |
|
|
|
|
`feature`, `update`, `documentation`, and `agent` branches MUST NOT reference a ticket ID.
|
|
`alert-autofix` branches reference the alert ID instead of a ticket ID.
|
|
`dependabot` branches are created automatically and MUST NOT be renamed.
|