home / skills / laurigates / claude-plugins / release-please-standards

release-please-standards skill

/configure-plugin/skills/release-please-standards

This skill helps configure and validate release-please standards, ensuring proper workflow setup, manifest, and config for automated semantic releases.

npx playbooks add skill laurigates/claude-plugins --skill release-please-standards

Review the files below or copy the command above to add this skill to your agents.

Files (1)
SKILL.md
5.0 KB
---
model: haiku
created: 2025-12-16
modified: 2026-02-06
reviewed: 2025-12-16
name: release-please-standards
description: |
  Release-please standards and configuration. Use when configuring release-please
  workflows, checking release automation compliance, or when the user mentions
  release-please, automated releases, or version management.
allowed-tools: Bash, Read, Write, Edit, Grep, Glob
---

# Release-Please Standards

## Version: 2025.1

Standard release-please configuration for automated semantic versioning and changelog generation.

## Standard Configuration

### GitHub Actions Workflow

**File**: `.github/workflows/release-please.yml`

```yaml
name: Release Please

on:
  push:
    branches:
      - main

permissions:
  contents: write
  pull-requests: write

jobs:
  release-please:
    runs-on: ubuntu-latest
    steps:
      - uses: googleapis/release-please-action@v4
        with:
          token: ${{ secrets.MY_RELEASE_PLEASE_TOKEN }}
```

### Configuration Files

**File**: `release-please-config.json`

```json
{
  "packages": {
    ".": {
      "release-type": "node",
      "changelog-sections": [
        {"type": "feat", "section": "Features"},
        {"type": "fix", "section": "Bug Fixes"},
        {"type": "perf", "section": "Performance"},
        {"type": "deps", "section": "Dependencies"},
        {"type": "docs", "section": "Documentation", "hidden": true},
        {"type": "chore", "section": "Miscellaneous", "hidden": true}
      ]
    }
  },
  "plugins": ["node-workspace"]
}
```

**File**: `.release-please-manifest.json`

```json
{
  ".": "0.0.0"
}
```

Note: Version `0.0.0` is a placeholder - release-please updates this automatically.

## Project Type Variations

### Node.js Frontend/Backend

- release-type: `node`
- plugins: `node-workspace`
- Updates: `package.json` version field

### Python Service

- release-type: `python`
- Updates: `pyproject.toml` version field, `__version__` in code

### Infrastructure (Helm)

- release-type: `helm`
- Updates: `Chart.yaml` version field

### Multi-package Repository

```json
{
  "packages": {
    "packages/frontend": {
      "release-type": "node",
      "component": "frontend"
    },
    "packages/backend": {
      "release-type": "node",
      "component": "backend"
    }
  },
  "plugins": [
    "node-workspace",
    {
      "type": "linked-versions",
      "groupName": "workspace",
      "components": ["frontend", "backend"]
    }
  ]
}
```

## Required Components

### Minimum Requirements

1. **Workflow file**: `.github/workflows/release-please.yml`
   - Uses `googleapis/release-please-action@v4`
   - Token: `MY_RELEASE_PLEASE_TOKEN` secret
   - Triggers on push to `main`

2. **Config file**: `release-please-config.json`
   - Valid release-type for project
   - changelog-sections defined

3. **Manifest file**: `.release-please-manifest.json`
   - Lists all packages with current versions

### Token Configuration

The workflow uses `MY_RELEASE_PLEASE_TOKEN` secret (not `GITHUB_TOKEN`) because:
- Allows release PRs to trigger other workflows
- Enables CI checks on release PRs
- Maintains proper audit trail

## Compliance Checking

### Status Levels

| Status | Condition |
|--------|-----------|
| PASS | All three files present with valid configuration |
| WARN | Files present but using deprecated action version |
| FAIL | Missing required files or invalid configuration |

### Validation Rules

1. **Workflow validation**:
   - Action version: `v4` (warn if older)
   - Token: Must use secret, not hardcoded
   - Trigger: Must include `push` to `main`

2. **Config validation**:
   - release-type: Must be valid (node, python, helm, simple)
   - changelog-sections: Must include feat and fix

3. **Manifest validation**:
   - Must be valid JSON
   - Packages must match config

## Protected Files

**IMPORTANT**: Release-please manages these files automatically:
- `CHANGELOG.md` - Never edit manually
- Version fields in `package.json`, `pyproject.toml`, `Chart.yaml`
- `.release-please-manifest.json` - Only edit for initial setup

See `release-please-protection` skill for enforcement.

## Conventional Commits

Release-please requires conventional commit messages:

| Prefix | Release Type | Example |
|--------|--------------|---------|
| `feat:` | Minor | `feat: add user authentication` |
| `fix:` | Patch | `fix: correct login timeout` |
| `feat!:` | Major | `feat!: redesign API` |
| `BREAKING CHANGE:` | Major | In commit body |

## Installation

1. Create workflow file
2. Create config file
3. Create manifest file
4. Add `MY_RELEASE_PLEASE_TOKEN` to repository secrets
5. Ensure pre-commit has conventional-pre-commit hook

## Troubleshooting

### Release PR Not Created

- Check conventional commit format
- Verify workflow has correct permissions
- Ensure token has write access

### Version Not Updated

- Check manifest file is valid JSON
- Verify release-type matches project
- Review release-please logs in Actions

### CI Not Running on Release PR

- Token must be PAT, not GITHUB_TOKEN
- Verify workflow trigger includes pull_request

Overview

This skill codifies Release-Please standards and a vetted configuration for automated semantic versioning, changelog generation, and multi-package workflows. It helps teams set up and validate release-please workflows, enforce required files and tokens, and map behavior to common project types (Node, Python, Helm).

How this skill works

The skill inspects repository files and workflow configuration to verify presence and validity of three required artifacts: the GitHub Actions workflow, release-please-config.json, and .release-please-manifest.json. It checks action version, token usage, triggers, release-type values, changelog sections, and manifest consistency. It reports PASS/WARN/FAIL status and offers concrete remediation steps for common errors.

When to use it

  • When configuring release-please workflows for the first time
  • When auditing release automation compliance before a cut or audit
  • When converting a repo to semantic automated releases
  • When adding multi-package or workspace releases
  • When debugging missing release PRs, version updates, or CI not running on release PRs

Best practices

  • Use a dedicated PAT in MY_RELEASE_PLEASE_TOKEN (not GITHUB_TOKEN) so release PRs can run CI and trigger other workflows
  • Keep release-please-action at v4 and warn on older versions
  • Define changelog-sections including feat and fix; hide docs/chore if you want them excluded from changelogs
  • Treat CHANGELOG.md and version fields as managed by release-please — do not edit them manually
  • Maintain .release-please-manifest.json with accurate initial placeholders and let release-please update versions

Example use cases

  • Standard single-package Node repository: node release-type and package.json version update
  • Python microservice: python release-type updating pyproject.toml and __version__
  • Helm chart repo: helm release-type updating Chart.yaml version
  • Monorepo with frontend and backend packages using node-workspace and linked-versions for synchronized releases
  • Audit run: validate workflow permissions, token usage, and required changelog sections before enabling automated releases

FAQ

Why use MY_RELEASE_PLEASE_TOKEN instead of GITHUB_TOKEN?

A PAT in MY_RELEASE_PLEASE_TOKEN allows release PRs to execute CI and trigger other workflows; GITHUB_TOKEN is restricted and blocks those actions.

What causes a FAIL status in compliance checks?

FAIL occurs when required files are missing or invalid JSON/configuration, release-type is unsupported, or packages in the manifest don’t match the config.