Rules
Rule 1 β Issue First. No branch, no code, no commit without a GitLab issue. Every MR description must contain Closes #NNN or CI blocks.
Rule 2 β Branch Naming.
<type>/<issue-number>-short-description
feat/71-dev-workflow
fix/72-cors-header
ci/73-bandit-gate
Commit Format
<type>(<scope>): <subject>
Body: WHY this change, not what.
Closes #71
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Types: feat Β· fix Β· ci Β· docs Β· refactor Β· test Β· chore
Scope: launcher Β· api Β· ansible Β· ci Β· cluster
Slash Command Sequence
/start-issue
β
/plan-issue
β
/build-issue
β
/review-diff
β
/finish-issue
/start-issue
Read issue Β· explore files Β· confirm scope
/plan-issue
Written plan Β· operator approval Β· no code yet
/build-issue
Execute plan Β· surgical changes Β· run local gates
/review-diff
Self-review Β· bugs Β· security Β· scope creep
/finish-issue
Commit Β· push Β· open MR with Closes #NNN
MR Resolve Loop β repeat until pipeline green + reviewer clean
1.Fetch latest Claude reviewer comment
2.Fix every HIGH and MEDIUM finding β no suppressions
3.Run local gates
4.Commit + push
5.ScheduleWakeup β wait for pipeline
6.Re-check reviewer on new sha β merge --squash --remove-source-branch
CI Gates
| Job | Stage | Command |
| validate_docs | validate | markdownlint '**/*.md' |
| check_issue_link | validate | MR description must contain Closes/Refs #NNN |
| lint | test | flake8 --max-line-length=120 src/multi-agent-cluster/ |
| typecheck | test | mypy --ignore-missing-imports src/multi-agent-cluster/ |
| ansible_lint | test | ansible-lint ansible/ |
| security | security | bandit -r src/multi-agent-cluster/ --severity-level medium |
| secret_detect | security | Gitleaks β always runs, never allow_failure |
| claude_audit | security | Claude CI reviewer β HIGH/MEDIUM block merge |