Release skills
/SKILLUniversal release workflow. Auto-detects version files and changelogs. Supports Node.js, Python, Rust, Claude Plugin, GitHub Releases, annotated tags, historical release backfill, and generic projects
--- name: release-skills description: Universal release workflow. Automatically detects version files and changelogs. Supports Node.js, Python, Rust, Claude Plugin, GitHub Releases, annotated tags, historical release backfill, and generic projects. Use when the user says “release,” “发布,” “new version,” “bump version,” “push,” “推送,” “release notes,” “GitHub Release,” or “回填 Release.” --- # Release Skills Universal release-workflows supporting any project type with a multilingual changelog. ## User Input Tools When this skill prompts the user, follow this tool-selection rule (in order of priority): 1. Prefer built-in user-input tools exposed by the current agent runtime:e.g., AskUserQuestion, request_user_input, clarify, ask_user, or any equivalent. 2. Fallback: if no such tool exists, send a numbered plain-text message and ask the user to reply with the chosen number or answer for each question. 3. Batching: If the tool supports multiple questions per call, combine all applicable questions into a single call; if it only supports a single question, ask them one at a time in order of priority. The specific AskUserQuestion references below are examples:substitute the local equivalent in other runtimes. ## Quick Start Just run `/release-skills:it automatically detects your project configuration. ## Supported Projects | Project Type | Version File | Auto-Detected | |--------------|--------------|---------------| | Node.js | package.json | ✓ | | Python | pyproject.toml | ✓ | | Rust | Cargo.toml | ✓ | | Claude Plugin | marketplace.json | ✓ | | Generic | VERSION / version.txt | ✓ | ## Options | Flag | Description | |------|-------------| | --dry-run | Preview changes without executing | | --major | Force a major version bump | | --minor | Force a minor version bump | | --patch | Force a patch version bump | | --backfill-releases | Create missing GitHub Releases for existing tags from changelog sections | ## Workflow ### Step 1: Detect Project Configuration 1. Check for .releaserc.yml (optional config override) - If present, check whether it defines release-hooks 2. Auto-detect version file by scanning (in order of priority): - package.json (Node.js) - pyproject.toml (Python) - Cargo.toml (Rust) - marketplace.json or .claude-plugin/marketplace.json (Claude Plugin) - VERSION or version.txt (Generic) 3. Scan for changelog files using glob patterns: - CHANGELOG*.md - HISTORY*.md - CHANGES*.md 4. Identify the language of each changelog by filename suffix 5. Detect GitHub release support: - Check whether origin points to GitHub - Check whether gh is installed and authenticated - Check existing releases with gh release list --limit 5 when available 6. Display detected configuration **Project Hook Contract**: If .releaserc.yml defines release.hooks, keep the release workflow generic and delegate project-specific packaging/publishing to those hooks. hooks Supported: | Hook | Purpose | Expected Responsibility | |------|---------|-------------------------| | prepare_artifact | Make one target releasable | Validate that the target is self-contained, sync or embed local dependencies, and optionally stage additional files | | publish_artifact | Publish one releasable target | Upload the prepared target (or a staged directory if the project uses one), and attach version, changelog, and tags | Supported placeholders: | Placeholder | Meaning | |-------------|---------| | {project_root} | Absolute path to the repository root | | {target} | Absolute path to the module/skill being released | | {artifact_dir} | Absolute path to a temporary staging directory for this target, if the project uses one | | {version} | Version selected by the release workflow | | {dry_run} | true or false | | {releasenotesfile} | Absolute path to a UTF-8 file containing release notes/changelog text | Execution rules: - Keep the skill generic: do not hardcode registry/package-manager/project layout details into this SKILL. - If prepare_artifact exists, run it once per target before publish-related checks that require the final releasable target state. - Write release notes to a temporary file and pass that file path to publish_ar