Driver
The /release skill's prescribed branch name (release/vA.B.C) and PR title (release: vA.B.C) are both rejected by the framework's own validators:
validate-branch-name.sh requires {type}/{TICKET-ID}-{description}. release/v1.2.0 has no ticket-ID component after the slash, so the regex ^(${TYPES})/([A-Z]{2,10}-[0-9]+|GH-[0-9]+|#[0-9]+)- rejects it even if release is added to the type whitelist.
validate-pr-create.sh requires type(SCOPE): form via ^(${PR_TYPES})\(([A-Z]{2,10}-[0-9]+|#[0-9]+)\)!?:. release: v1.2.0 has no scope and release isn't in the PR-title type whitelist.
This contradiction surfaced trying to cut v1.2.0 — the first release under the dev/main release-cut model (#116, AgDR-0007). The skill prescribes one shape; the validators reject it.
Scope
Two small changes plus a doc note:
A. validate-branch-name.sh — special-case the release pattern
Add an early-out branch in the validator: any branch matching ^release/v\d+\.\d+\.\d+$ passes regardless of the standard type/ticket-id/description regex. The release-cut convention (AgDR-0007) is an explicit, narrow shape; recognising it as a permitted exception is cleaner than trying to bend the standard regex.
B. project-config.defaults.json — add release to .pr.title_type_whitelist
The PR title type whitelist (used by validate-pr-create.sh) is currently feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert. Adding release lets a release PR title release(#160): v1.2.0 pass the existing regex unchanged.
C. Update .claude/skills/release/SKILL.md — PR title shape
Step 4 currently prescribes title release: vA.B.C. Change to release(#<release-ticket>): vA.B.C (e.g. release(#160): v1.2.0). The release-cut ticket is the natural scope; same shape every other PR title uses.
D. (Optional, cosmetic) Update docs/release-process.md if it documents the same patterns.
Acceptance Criteria
Risks / Dependencies
- Tiny scope. Two file edits + a doc tweak.
- Blocks v1.2.0 release cut. Release PR can't open until this lands. Cleanest sequence: ship this fix to dev, then cut v1.2.0 against the now-consistent validators.
- No mechanism removed. Just adds an explicit recognition for a pattern the framework already prescribes.
Refs: surfaced 2026-05-04 cutting the first release under AgDR-0007's dev/main model.
Driver
The
/releaseskill's prescribed branch name (release/vA.B.C) and PR title (release: vA.B.C) are both rejected by the framework's own validators:validate-branch-name.shrequires{type}/{TICKET-ID}-{description}.release/v1.2.0has no ticket-ID component after the slash, so the regex^(${TYPES})/([A-Z]{2,10}-[0-9]+|GH-[0-9]+|#[0-9]+)-rejects it even ifreleaseis added to the type whitelist.validate-pr-create.shrequirestype(SCOPE):form via^(${PR_TYPES})\(([A-Z]{2,10}-[0-9]+|#[0-9]+)\)!?:.release: v1.2.0has no scope andreleaseisn't in the PR-title type whitelist.This contradiction surfaced trying to cut v1.2.0 — the first release under the dev/main release-cut model (#116, AgDR-0007). The skill prescribes one shape; the validators reject it.
Scope
Two small changes plus a doc note:
A.
validate-branch-name.sh— special-case the release patternAdd an early-out branch in the validator: any branch matching
^release/v\d+\.\d+\.\d+$passes regardless of the standard type/ticket-id/description regex. The release-cut convention (AgDR-0007) is an explicit, narrow shape; recognising it as a permitted exception is cleaner than trying to bend the standard regex.B.
project-config.defaults.json— addreleaseto.pr.title_type_whitelistThe PR title type whitelist (used by
validate-pr-create.sh) is currentlyfeat, fix, docs, style, refactor, perf, test, build, ci, chore, revert. Addingreleaselets a release PR titlerelease(#160): v1.2.0pass the existing regex unchanged.C. Update
.claude/skills/release/SKILL.md— PR title shapeStep 4 currently prescribes title
release: vA.B.C. Change torelease(#<release-ticket>): vA.B.C(e.g.release(#160): v1.2.0). The release-cut ticket is the natural scope; same shape every other PR title uses.D. (Optional, cosmetic) Update
docs/release-process.mdif it documents the same patterns.Acceptance Criteria
validate-branch-name.shacceptsrelease/v1.2.0as a valid branch namevalidate-branch-name.shstill rejects malformed branches (e.g.release/foo,release/v1, etc.)validate-pr-create.shaccepts a PR titlerelease(#160): v1.2.0against therelease/v1.2.0branch.claude/skills/release/SKILL.mdstep 4 prescribes the corrected title formatbash .claude/hooks/tests/test_*.sh)Risks / Dependencies
Refs: surfaced 2026-05-04 cutting the first release under AgDR-0007's dev/main model.