This document describes the workflow and rules that all contributors — human and AI — must follow.
Every change follows this path:
Issue → Branch → PR (linked to issue) → CI passes → Merge → Branch auto-deleted
No exceptions. PRs without a linked issue will be blocked by CI.
Every change starts with a GitHub issue. Use one of the provided templates:
- Bug Report — for bugs and unexpected behavior
- Feature Request — for new features and improvements
- Documentation — for docs improvements or missing content
Blank issues are disabled. Pick the template that best fits your change.
Branch from main using one of these naming conventions:
| Prefix | Use for | Example |
|---|---|---|
feature/ |
New features | feature/42-add-rate-limiting |
fix/ |
Bug fixes | fix/17-correct-threshold-calc |
docs/ |
Documentation | docs/8-update-setup-guide |
Format: <prefix>/<issue-number>-short-description
git checkout main
git pull origin main
git checkout -b feature/42-add-rate-limiting- Write small, focused commits
- Use conventional commit messages:
feat: add rate limiting configurationfix: correct threshold calculationdocs: update setup guide
- Push your branch and open a PR against
main - Link the issue — use
Closes #42in the PR description, or link from the sidebar - Fill out the PR template (it loads automatically)
- The "Check linked issues" CI check will block merge if no issue is linked
- All CI checks must pass before merge
- Auto-merge is enabled — PRs merge automatically once all checks pass
- Squash merge is preferred
- The branch is automatically deleted after merge (
delete_branch_on_mergeis enabled)
The main branch is protected. The following rules are enforced:
- No direct pushes to
main— all changes go through PRs - No force pushes
- Required status check: "Check linked issues" must pass
- Admin enforcement enabled — these rules apply to everyone
If you are Claude Code, Copilot, or another AI coding assistant, follow these rules:
- Always create a GitHub issue before writing code. No issue = no work.
- Always work on a feature branch. Never commit directly to
main. - Always link the PR to the issue. Use
Closes #Nin the PR description. - Use the
/shipskill when available — it handles the full Issue → Branch → PR flow. - Never force push or attempt to bypass branch protection.
- Fill out the PR template checklist completely.
- Follow the branch naming convention:
feature/<issue>-desc,fix/<issue>-desc,docs/<issue>-desc. - Respect CODEOWNERS —
@robinmordasiewiczis the default reviewer.