Agent skill

Release

by think41 in think41/extrasuite

Release one or more ExtraSuite packages to PyPI. An agent skill from think41/extrasuite.

MITAuto-check passedDevelopment

Install Release

skills CLI
$ npx skills add think41/extrasuite --skill release -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install think41/extrasuite release --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/think41/extrasuite.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/release .claude/skills/release && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
release
GitHub stars
166
Token cost
~1.4k tokens
SKILL.md length
556 words
Files
1
Skills in repo
2
Repo updated
First seen
Licence
MIT

At a glance

Release one or more ExtraSuite packages to PyPI. An agent skill from think41/extrasuite.

  • Works in 8 steps: Assess What's Changed → Determine Version Bump → Update CHANGELOG.md → …
  • The user asks to release
  • SKILL.md covers Package Dependency Order, Step 1 — Assess What's Changed, Step 2 — Determine Version Bump and Step 3 — Update CHANGELOG.md, plus 7 more sections
  • Calls git, uv and gh

What it does

Release is an agent skill from think41/extrasuite. Release one or more ExtraSuite packages to PyPI. Use when the user asks to release, publish, or cut a new version of any package. Handles version bumps, changelogs, git tags, PyPI publishing, and dependency propagation in the correct order.

Its SKILL.md is about 1.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Changelog and release notes. It works with Git. The repository describes itself as: Token-efficient pull/edit/push workflow for AI agents editing Google Workspace files (Sheets, Docs, Slides, Forms). The licence is MIT.

When your agent uses it

  • The user asks to release
  • Cut a new version of any package

Example prompts

  • “/release”

Requirements

  • Python 3

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. Assess What's Changed
  2. Determine Version Bump
  3. Update CHANGELOG.md
  4. Bump Version in pyproject.toml
  5. Update uv.lock (if applicable)
  6. Commit and Tag
  7. Wait for PyPI Propagation
  8. Releasing extrasuite After Dependencies

What it can do on your machine

Read from SKILL.md and the folder at commit ded6772. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • uv
    • gh

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, uv and gh, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Release loads about 1.4k tokens when it runs. Until then it costs about 62 tokens; SKILL.md has 556 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~62
When it runs · the whole SKILL.md, loaded when a task matches
~1.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from think41/extrasuite at commit ded6772, republished under its MIT licence (© think41). 556 words, ~1,415 tokens.

Download SKILL.mdSave it as .claude/skills/release/SKILL.md (or your agent's skills folder).
name
release
description
Release one or more ExtraSuite packages to PyPI. Use when the user asks to release, publish, or cut a new version of any package. Handles version bumps, changelogs, git tags, PyPI publishing, and dependency propagation in the correct order.
disable-model-invocation
true
argument-hint
[package(s) or 'all'] [optional: major|minor|patch]

ExtraSuite Release Skill

Release ExtraSuite packages to PyPI following the correct dependency order.

Usage:

  • /release extradoc — release one package
  • /release extradoc extrasuite — release multiple in correct order
  • /release all — release everything that has unreleased changes

Package Dependency Order

Always release in this order — extrasuite (client) depends on all others:

1. extrasheet    (standalone)
2. extraslide    (standalone)
3. extraform     (standalone)
4. extrascript   (standalone)
5. extradoc      (standalone)
6. extrasuite    (client — depends on all above)

When releasing multiple packages, sort by the order above regardless of what the user specified. Never release extrasuite before its dependencies.

Step 1 — Assess What's Changed

For each package to release, run:

bash
# Find last tag for this package
git tag --sort=-version:refname | grep "^<package>-v" | head -1

# What changed since that tag
git log --oneline <package>-vX.Y.Z..HEAD -- <package>/

If there are no commits since the last tag, skip this package — there's nothing to release.

Step 2 — Determine Version Bump

Read <package>/pyproject.toml for the current version, then apply semver:

Change typeBumpExample
Breaking changes, removed APIsmajor1.2.3 → 2.0.0
New features, new commands, new dependenciesminor1.2.3 → 1.3.0
Bug fixes, docs, internal refactorspatch1.2.3 → 1.2.4

If the user specified a bump level (major/minor/patch), use that. Otherwise infer from the commits.

Special case: While any package is pre-1.0, treat minor bumps as patch and new features as minor (no major bumps until 1.0).

Step 3 — Update CHANGELOG.md

Each package has <package>/CHANGELOG.md. Prepend a new section above the previous latest entry:

markdown
## [X.Y.Z] - YYYY-MM-DD

### Added
- ...

### Changed
- ...

### Fixed
- ...

### Breaking Changes   ← only if applicable
- ...

Rules:

  • Date is today's date
  • Only include sections that have content (omit empty ### Fixed etc.)
  • Be specific — reference the actual behaviour change, not just commit messages
  • "Breaking Changes" section goes first if present

Step 4 — Bump Version in pyproject.toml

Edit <package>/pyproject.toml:

toml
version = "X.Y.Z"

If releasing extrasuite after a dependency was also bumped in this session, also update the dependency constraint:

toml
"extradoc>=0.3.0",   # ← bump lower bound to new version

Step 5 — Update uv.lock (if applicable)

For extrasuite (client) only, after updating pyproject.toml:

bash
cd client && uv sync

This updates client/uv.lock. Commit the lock file alongside the version bump.

Step 6 — Commit and Tag

bash
git add <package>/pyproject.toml <package>/CHANGELOG.md [<package>/uv.lock]
git commit -m "Release <package> vX.Y.Z"
git tag <package>-vX.Y.Z
git push && git push origin <package>-vX.Y.Z

Tag format: <package>-vX.Y.Z (e.g. extradoc-v0.3.0, extrasuite-v0.6.0).

The GitHub Actions workflow validates that the tag version matches pyproject.toml — if they don't match, the publish will fail. Double-check before pushing the tag.

Step 7 — Wait for PyPI Propagation

After pushing the tag, monitor the GitHub Actions run:

bash
gh run watch $(gh run list --repo think41/extrasuite --limit 1 --json databaseId -q '.[0].databaseId') --repo think41/extrasuite

Do not proceed to the next package until this completes successfully.

Once the run shows ✓, verify the package is resolvable:

bash
uv pip install <package>==X.Y.Z --dry-run --system

Only move on when this succeeds.

Show full SKILL.md (205 more words)Show less

Step 8 — Releasing extrasuite After Dependencies

If you bumped any dependency package in this release session, update the lower-bound constraint in client/pyproject.toml before releasing extrasuite:

toml
"extradoc>=0.3.0",   # was >=0.2.2

Then run uv sync in client/ to update the lock file, and include uv.lock in the release commit.

Pre-Release Checklist

Before cutting any release, verify:

  • Working on main branch (not a feature branch)
  • git status is clean — no uncommitted changes
  • Tests pass: cd <package> && uv run pytest tests/ -v
  • Linter passes: uv run ruff check .
  • CHANGELOG.md entry is written and accurate
  • Version in pyproject.toml matches the intended tag

Common Mistakes

Wrong order — releasing extrasuite before extradoc means users get the old extradoc. Always check the dependency graph.

Skipping the PyPI wait — the next package's uv sync will fail to resolve the new version if PyPI hasn't indexed it yet. Always wait for propagation.

Tag/version mismatch — if pyproject.toml says 0.3.0 but you tag extradoc-v0.3.1, the GitHub Actions workflow aborts. Make sure they match exactly before pushing the tag.

Forgetting uv.lock — when bumping extrasuite's dependencies, always run uv sync and commit the updated uv.lock. Otherwise users installing from source get stale lock resolution.

Empty changelog section — don't include ### Fixed or ### Changed sections with no content. Only include sections that have actual entries.

© think41, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/release of think41/extrasuite.

Open the folder on GitHubat commit ded6772

Compare with similar skills

Release next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Release compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Release this skillthink41/extrasuite166—~1.4kAutomated safety check: PassMIT
React Router Release Notes Prepremix-run/react-router57k—~1.1kAutomated safety check: PassMIT
Draft Release Notesjamiepine/voicebox57k—~941Automated safety check: PassMIT
Mole Release Notes Publishertw93/Mole69k—~1.9kAutomated safety check: PassGPL-3.0
Release Bumpjamiepine/voicebox57k—~1.1kAutomated safety check: PassMIT
Git Workflow and Versioningaddyosmani/agent-skills102k2 repos~3.5kAutomated safety check: NotesMIT

Similar skills

  • React Router Release Notes Prep

    remix-run/react-router

    Polishes pending React Router change files before the versioning scripts run, and decides whether a long-form What's Changed section is warranted.

    57k GitHub stars~1.1k tokensUpdated today
    DevelopmentAuto-check passed
  • Draft Release Notes

    jamiepine/voicebox

    Writes or refreshes the Unreleased section of CHANGELOG.md as a themed narrative built from the commits, PRs and diff since the last version tag.

    57k GitHub stars~941 tokensUpdated today
    DevelopmentAuto-check passed
  • Publishes curated, bilingual release notes for an existing Mole version tag with gh release edit, including contributor thanks and reactions, after the release workflow finishes.

    69k GitHub stars~1.9k tokensUpdated today
    DevelopmentAuto-check passed
  • Release Bump

    jamiepine/voicebox

    Ends a release cycle by moving the Unreleased changelog notes under a dated version heading, bumping version files with bumpversion and tagging the commit.

    57k GitHub stars~1.1k tokensUpdated today
    DevelopmentAuto-check passed
  • Git Workflow and Versioning

    addyosmani/agent-skills

    Sets git habits for every change: short-lived branches, atomic commits with descriptive messages, clean pull requests, plus versioning, tagging and changelogs for releases.

    102k GitHub starsUsed in 2 repos~3.5k tokens
    DevelopmentAuto-check: notes
  • Takes a change through a verdaccio pull request: branch, local checks, changeset, title and body, labels, CI and review rounds, and ports to other release lines.

    18k GitHub stars~1.9k tokensUpdated today
    DevelopmentAuto-check passed

More from think41/extrasuite

  • Extrasuite

    think41/extrasuite

    CRUD on google workspace files - Sheets, Slides, Docs, Forms.

    166 GitHub stars~421 tokensUpdated 5 mo ago
    Auto-check passed

Works with

Categories

Questions about Release

What does Release do?

Release one or more ExtraSuite packages to PyPI. An agent skill from think41/extrasuite. Release is an agent skill from think41/extrasuite. Release one or more ExtraSuite packages to PyPI.

When should I use Release?

Release fits situations like: the user asks to release; cut a new version of any package.

How do I install Release in Claude Code?

Run `npx skills add think41/extrasuite --skill release -a claude-code`. Or copy the skill folder (.claude/skills/release in think41/extrasuite) into .claude/skills/release in your project. Claude Code loads it when a task matches its description.

How do I install Release in Codex?

Run `npx skills add think41/extrasuite --skill release -a codex`. Or copy the skill folder (.claude/skills/release in think41/extrasuite) into .agents/skills/release in your project. Codex loads it when a task matches its description.

Can I use Release in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add think41/extrasuite --skill release -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/release, .gemini/skills/release, .github/skills/release and .opencode/skills/release in your project.

What does Release need to run?

Going by SKILL.md and its folder, Release needs the command-line tools its instructions call (git, uv and gh). Our summary lists: Python 3.

Does Release access the network?

SKILL.md contains no URLs. Its commands use git, uv and gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Release safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Release use?

Release is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Release use?

About 1.4k tokens (SKILL.md is roughly 5.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Release?

Skills that share tags, products or a category with Release: React Router Release Notes Prep (remix-run/react-router, 57k stars), Draft Release Notes (jamiepine/voicebox, 57k stars), Mole Release Notes Publisher (tw93/Mole, 69k stars) and Release Bump (jamiepine/voicebox, 57k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Release?

think41 (a GitHub organization) maintains it in think41/extrasuite, which has 166 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on April 17, 2026.

Source: think41/extrasuite on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.