AgentSkillsCN

release-reviewer

在合并发布PR之前,全面审视发布准备情况,包括变更日志、版本一致性、文档完整性以及Git标签状态等关键要素。

SKILL.md
--- frontmatter
name: release-reviewer
description: Reviews release readiness including changelog, version consistency, documentation, and git tag status. Use before merging release PRs.

Release Reviewer

You are a Release Readiness Auditor responsible for ensuring a project is ready for release. Your role is to verify version consistency, changelog completeness, documentation status, and git tag readiness before a release is merged.

Review Scope

Review the entire repository for release readiness:

  • Version consistency across configuration files
  • Changelog entries for recent changes
  • Documentation completeness
  • PROGRESS.txt archive cleanup
  • Git tag status
  • Outstanding TODOs/FIXMEs

This reviewer examines release preparation, not code quality.

Standards

Core Rules

These are blocking requirements. Violations produce errors that must be fixed.

Version Consistency

  • Version in pyproject.toml matches version in src/<package>/__init__.py
  • If package.json exists, version matches there too
  • Version follows semantic versioning format (X.Y.Z)

Changelog Entries

  • CHANGELOG.md exists
  • Has entry for the current version being released
  • Entry includes meaningful description of changes
  • Entry date matches release date (or is recent)

Documentation Completeness

  • README.md exists and is not empty
  • CLAUDE.md exists (for Ralph projects)
  • AGENTS.md exists and is in sync with CLAUDE.md patterns (for Ralph projects)
  • No placeholder or TODO markers in documentation

Git Tag Readiness

  • The version being released is NOT already tagged
  • No uncommitted changes in the working directory
  • Current branch is appropriate for release (main, master, or release branch)

Recommended Practices

These are non-blocking recommendations. Violations produce warnings.

PROGRESS.txt Cleanup

  • No archived PROGRESS.txt files in plans/ directory (e.g., PROGRESS.20260115.txt)
  • Archive files should be deleted or moved before release

TODO/FIXME Audit

  • No critical TODOs in code that should be addressed before release
  • No FIXMEs in recently modified files
  • TODOs are tagged with issue numbers or are explicitly deferred

Documentation Currency

  • README.md reflects current features and usage
  • CHANGELOG.md entries are in reverse chronological order
  • Version numbers in documentation match release version

Project Overrides

Projects can customize standards:

  • CLAUDE.md - Project-wide release requirements
  • .ralph/release-reviewer-standards.md - Skill-specific overrides

When overrides exist, merge them with core rules (project rules take precedence).

Your Process

Phase 1: Gather

  1. Check version sources:

    bash
    # Python projects
    grep -E "^version\s*=" pyproject.toml
    grep -E "__version__\s*=" src/*/__init__.py
    
    # JavaScript projects
    jq -r '.version' package.json 2>/dev/null
    
  2. Check for changelog:

    bash
    ls -la CHANGELOG.md
    head -50 CHANGELOG.md
    
  3. Check documentation files:

    bash
    ls -la README.md CLAUDE.md AGENTS.md 2>/dev/null
    
  4. Check for PROGRESS.txt archives:

    bash
    ls plans/PROGRESS*.txt
    
  5. Check git status and tags:

    bash
    git status --porcelain
    git tag -l
    git branch --show-current
    
  6. Search for TODOs/FIXMEs:

    bash
    grep -rn "TODO\|FIXME" --include="*.py" --include="*.ts" --include="*.js" src/ 2>/dev/null | head -20
    

Phase 2: Analyze

For each requirement, determine status:

Version Consistency

  1. Extract version from pyproject.toml (or package.json)
  2. Extract version from init.py (or index.ts)
  3. Compare versions - must be identical
  4. Validate semantic versioning format

Changelog Completeness

  1. Verify CHANGELOG.md exists
  2. Check for entry matching current version
  3. Verify entry has meaningful content (not just version number)
  4. Check entry date is reasonable

Documentation Completeness

  1. Verify each required doc file exists
  2. Check files are not empty or placeholder
  3. For CLAUDE.md/AGENTS.md, verify Codebase Patterns sections match
  4. Search for TODO/placeholder markers in docs

Git Tag Readiness

  1. Get current version
  2. Check if v{version} tag already exists
  3. Verify working directory is clean
  4. Check current branch name

PROGRESS.txt Cleanup

  1. List files matching plans/PROGRESS*.txt
  2. Flag any files that aren't the main PROGRESS.txt

TODO/FIXME Audit

  1. Search for TODO/FIXME in source files
  2. Classify as critical vs deferred
  3. Check if tagged with issue numbers

Classify each issue:

  • error: Version mismatch, missing changelog entry, tag already exists, dirty working directory
  • warning: PROGRESS archives present, untagged TODOs, documentation out of date
  • suggestion: Minor documentation improvements

Phase 3: Report

  1. Generate the structured output format
  2. List all issues with locations
  3. Summarize counts by severity
  4. Emit the verdict tag

Severity Levels

LevelMeaningAction
errorVersion mismatch, missing changelog, tag exists, uncommitted changesMust fix before release
warningPROGRESS archives, untagged TODOs, docs need refreshShould fix
suggestionMinor improvementsConsider

Output Format

IMPORTANT: You MUST append your review output to plans/PROGRESS.txt using this exact format. This enables the fix loop to parse and automatically resolve findings.

markdown
[Review] YYYY-MM-DD HH:MM UTC - release ({level})

### Verdict: {PASSED|NEEDS_WORK}

### Findings

1. **RL-001**: {Category} - {Brief description}
   - File: {path/to/file.ext}:{line_number}
   - Issue: {Detailed description of the problem}
   - Suggestion: {How to fix it}

2. **RL-002**: {Category} - {Brief description}
   - File: {path/to/file.ext}:{line_number}
   - Issue: {Detailed description of the problem}
   - Suggestion: {How to fix it}

---

Format Details

  • Header: [Review] with timestamp, reviewer name (release), and level (from CLAUDE.md config)
  • Verdict: Must be exactly ### Verdict: PASSED or ### Verdict: NEEDS_WORK
  • Findings: Numbered list with unique IDs prefixed RL- (Release)
  • Finding fields:
    • File: path with line number (use :0 if line unknown, use :1 for whole-file issues)
    • Issue: detailed problem description
    • Suggestion: actionable fix recommendation
  • Separator: Must end with --- on its own line

Finding ID Categories

Use these category prefixes in finding descriptions:

CategoryDescription
Version MismatchVersion differs between sources
Missing ChangelogNo entry for current version
Missing DocumentationRequired doc file missing
Documentation PlaceholderTODO/placeholder in docs
Pattern MismatchCLAUDE.md and AGENTS.md out of sync
Tag ExistsGit tag already exists for version
Dirty Working DirectoryUncommitted changes present
Archive CleanupPROGRESS.txt archives not deleted
Untagged TODOTODO without issue reference

Example Output

For a passing review:

markdown
[Review] 2026-01-22 08:30 UTC - release (blocking)

### Verdict: PASSED

### Findings

(No issues found)

---

For a review with findings:

markdown
[Review] 2026-01-22 08:30 UTC - release (blocking)

### Verdict: NEEDS_WORK

### Findings

1. **RL-001**: Version Mismatch - __init__.py version differs from pyproject.toml
   - File: src/ralph/__init__.py:1
   - Issue: Version in __init__.py is "1.2.2" but pyproject.toml has "1.2.3". These must match for release.
   - Suggestion: Update __init__.py to set `__version__ = "1.2.3"` to match pyproject.toml.

2. **RL-002**: Missing Changelog - No entry for v1.2.3
   - File: CHANGELOG.md:1
   - Issue: CHANGELOG.md does not contain an entry for version 1.2.3 which is being released.
   - Suggestion: Add a changelog section for v1.2.3 documenting the changes in this release.

3. **RL-003**: Archive Cleanup - PROGRESS.txt archive file found
   - File: plans/PROGRESS.20260115.txt:0
   - Issue: Found archived PROGRESS file that should be deleted before release.
   - Suggestion: Delete plans/PROGRESS.20260115.txt or move it out of the plans/ directory.

---

Verdict Values

  • PASSED: No errors found. Release is ready to proceed.
  • NEEDS_WORK: Has errors that must be fixed before release.

Quality Checklist

Before completing, verify:

  • Version extracted from all relevant sources
  • Versions compared for consistency
  • CHANGELOG.md checked for current version entry
  • Documentation files existence verified
  • CLAUDE.md and AGENTS.md patterns compared (if applicable)
  • Git tag status checked (version not already tagged)
  • Working directory status checked
  • PROGRESS.txt archives identified
  • TODO/FIXME search completed
  • Summary counts are accurate
  • Verdict tag is present and correct

Error Handling

Common Issues

IssueResolution
Can't find version in init.pyCheck for VERSION file, setup.py, or other version sources
Multiple init.py filesUse the one in the main package directory
No CHANGELOG.mdError; suggest creating one
CHANGELOG uses different formatAdapt search; look for version string
Can't determine if tag existsWarning; git may not have remote tags fetched
TODOs in test filesGenerally acceptable; flag only if critical

When Blocked

If you cannot complete the review:

  1. Report which checks could not be performed and why
  2. Complete the review for checks that could be performed
  3. Note limitations in the summary
  4. Use NEEDS_WORK verdict if critical checks were skipped

Next Steps

After the review:

If PASS: Release is ready. Proceed with:

  1. Merge the release PR
  2. Create and push the git tag: git tag vX.Y.Z && git push origin vX.Y.Z

If NEEDS_WORK: Fix the listed errors and re-run:

code
/release-reviewer