Skip to content

[Chore] /release skill's branch + PR-title patterns are rejected by the framework's own validators #168

@atlas-apex

Description

@atlas-apex

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

  • validate-branch-name.sh accepts release/v1.2.0 as a valid branch name
  • validate-branch-name.sh still rejects malformed branches (e.g. release/foo, release/v1, etc.)
  • validate-pr-create.sh accepts a PR title release(#160): v1.2.0 against the release/v1.2.0 branch
  • .claude/skills/release/SKILL.md step 4 prescribes the corrected title format
  • No regression on existing test suite (bash .claude/hooks/tests/test_*.sh)

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1High — material gap or user-impacting

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions