Agent skill

Prepare Release

by jpicklyk in jpicklyk/task-orchestrator

End-to-end release automation — reads commits since last tag, infers semver bump, drafts changelog, creates release PR, merges it, waits for CI green, tags, and monitors the Docker build to…

MITAuto-check passedDevelopment

Install Prepare Release

skills CLI
$ npx skills add jpicklyk/task-orchestrator --skill prepare-release -a claude-code

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

GitHub CLI
$ gh skill install jpicklyk/task-orchestrator prepare-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/jpicklyk/task-orchestrator.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/prepare-release .claude/skills/prepare-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
prepare-release
GitHub stars
207
Token cost
~5.3k tokens
SKILL.md length
2,359 words
Files
1
Skills in repo
28
Repo updated
First seen
Licence
MIT

At a glance

End-to-end release automation — reads commits since last tag, infers semver bump, drafts changelog, creates release PR, merges it, waits for CI green, tags, and monitors the Docker build to…

  • Works in 11 steps: Ensure Clean Main → Find Last Release Tag → Gather Commits Since Last Tag → …
  • The user says: prepare release
  • SKILL.md covers Step 1 — Ensure Clean Main, Step 2 — Find Last Release Tag, Step 3 — Gather Commits Since… and Step 4 — Filter and Synthesize…, plus 8 more sections
  • Calls git, gh and curl; reaches repo1.maven.org

What it does

Prepare Release is an agent skill from jpicklyk/task-orchestrator. End-to-end release automation — reads commits since last tag, infers semver bump, drafts changelog, creates release PR, merges it, waits for CI green, tags, and monitors the Docker build to completion. Use when the user says: prepare release, cut a release, bump version, create release PR, ship a new version, tag a release, deploy new version, or when all feature PRs are merged and it is time to release.

Its SKILL.md is about 5.3k 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 Containers and Changelog and release notes. It works with Docker. The repository describes itself as: Server-enforced workflow discipline for AI agents. An MCP server providing persistent work items, dependency graphs, quality gates, and actor attribution. Schemas define what… The licence is MIT.

When your agent uses it

  • The user says: prepare release
  • Create release PR
  • Ship a new version
  • Deploy new version

Example prompts

  • “/prepare-release”

Requirements

  • Docker

Workflow steps

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

  1. Ensure Clean Main
  2. Find Last Release Tag
  3. Gather Commits Since Last Tag
  4. Filter and Synthesize (Critical Reasoning Step)
  5. Infer Bump Level
  6. Present for Confirmation
  7. Create Release Branch
  8. Apply Changes
  9. Pre-PR Checklist
  10. Create the PR
  11. Merge, Verify, Tag, and Monitor

What it can do on your machine

Read from SKILL.md and the folder at commit 3e83170. 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
    • gh
    • curl
    • docker

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

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • repo1.maven.org

    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

Prepare Release loads about 5.3k tokens when it runs. Until then it costs about 106 tokens; SKILL.md has 2,359 words of instructions outside code blocks.

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

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 jpicklyk/task-orchestrator at commit 3e83170, republished under its MIT licence (© jpicklyk). 2,359 words, ~5,313 tokens.

Download SKILL.mdSave it as .claude/skills/prepare-release/SKILL.md (or your agent's skills folder).
name
prepare-release
description
End-to-end release automation — reads commits since last tag, infers semver bump, drafts changelog, creates release PR, merges it, waits for CI green, tags, and monitors the Docker build to completion. Use when the user says: prepare release, cut a release, bump version, create release PR, ship a new version, tag a release, deploy new version, or when all feature PRs are merged and it is time to release.
disable-model-invocation
true

Prepare Release

End-to-end release workflow. Reads commits since the last release tag, infers the semver bump, drafts a user-facing changelog, confirms with you, creates a release PR, merges it, verifies CI is green, tags the release, and monitors the Docker build to completion.

Usage: /prepare-release

Run this from any branch after all feature PRs have been merged to main.


Step 1 — Ensure Clean Main

Switch to main and pull latest:

bash
git checkout main
git pull origin main
git status

If git status shows uncommitted changes, stop and resolve them before continuing. The working tree must be clean.


Step 2 — Find Last Release Tag

bash
git describe --tags --abbrev=0

Note this as LAST_TAG (e.g., v2.0.2). All commits after this tag are candidates for the release.

If this command fails (no tags exist yet), use the full history — note the first commit hash as the baseline and treat the release as the initial version.


Step 3 — Gather Commits Since Last Tag

bash
git log <LAST_TAG>...HEAD --oneline
git diff <LAST_TAG>...HEAD --stat
git diff <LAST_TAG>...HEAD --name-only

Collect the full output of each. Do not truncate.


Step 4 — Filter and Synthesize (Critical Reasoning Step)

This is not a raw dump of commit messages. Analyze the material and produce a curated, user-facing summary.

4a. Discard internal-only commits

Ignore commits that match any of the following:

  • Subject starts with: wip, WIP, checkpoint, fixup!, chore: rebase, Merge branch, version bump, release:
  • Commit only touches: build.gradle.kts, gradle/, *.properties, .gitignore, .github/, Dockerfile, docker-compose.yml, scripts/, *.md files with no API impact
  • Subject is a bare file list or CI housekeeping note
4b. Group meaningful changes by theme

Use only these categories (omit any that have no entries):

  • Breaking Changes — removed tool, renamed/removed parameter, incompatible schema change
  • New Features — new MCP tool, new operation on existing tool, new config option, new query parameter
  • Bug Fixes — incorrect behavior corrected, crash fixed, data integrity issue resolved
  • Performance — measurable throughput or latency improvement
  • Documentation — user-visible docs (only if substantive)
4c. Write 3-8 user-facing bullet points

Rules for each bullet:

  • Start with a past-tense verb (Added, Fixed, Improved, Removed, Changed)
  • Name the tool or feature affected (e.g., query_items, advance_item)
  • Describe the benefit to the user, not the implementation detail
  • Do not mention internal class names, Kotlin types, or file paths
  • Example: Added \includeAncestors` to `query_items` — eliminates parent-walk call chains for breadcrumb context`
4d. Detect plugin content changes

Check if any files under claude-plugins/ changed since the last tag:

bash
git diff <LAST_TAG>...HEAD --name-only -- claude-plugins/

If the output is non-empty, plugin content changed. Also check if any server source files (Kotlin, migrations, Gradle config) changed:

bash
git diff <LAST_TAG>...HEAD --name-only -- current/src/ current/build.gradle.kts gradle/

Classify the release type:

  • server — server source changed, no plugin changes
  • both — server source and plugin content both changed
  • plugin-only — only plugin files changed (skills, hooks, orchestration context), no server source

Read the current plugin version from the authoritative source — do not assume it matches any git tag. The version in the repository files may have been bumped in a previous release:

bash
cat claude-plugins/task-orchestrator/.claude-plugin/plugin.json | grep '"version"'

Determine the plugin bump level using the same semver rules as the server version, but scoped to plugin content:

ConditionPlugin Bump
Breaking change to skill interface, hook behavior, or orchestration context contract (including removing a shipped component)major
New skill, new hook, new orchestration component addedminor
Content fixes, wording, skill adjustments, script tweakspatch

Note the plugin bump level separately from the server bump level — they are independent. If no plugin files changed, skip plugin versioning entirely (server-only release).


Step 5 — Infer Bump Level

Plugin-only release: If the release type is plugin-only, skip the server bump entirely. The server version in version.properties stays unchanged. Only the plugin version (determined in Step 4d) is bumped. Proceed to Step 6 with the server version as-is and the plugin version as the new value.

Server or both release: Examine the synthesized changes and determine the bump level:

ConditionBump
Any breaking API change (removed tool, renamed/removed required parameter, incompatible response schema)major
New tool, new capability on existing tool, new config option, new query parameterminor
Bug fix, performance improvement, docs only, internal refactor with no API changepatch

If multiple conditions apply, use the highest applicable level.

State the bump level and the one-sentence reason. Example:

Bump: minor — GitHub wiki CI sync and release automation added (new capability, no breaking change).

Calculate the proposed new version:

  • patch: increment VERSION_PATCH by 1, keep others
  • minor: increment VERSION_MINOR by 1, reset VERSION_PATCH to 0, keep VERSION_MAJOR
  • major: increment VERSION_MAJOR by 1, reset VERSION_MINOR and VERSION_PATCH to 0

Step 6 — Present for Confirmation

Output the following block and stop. Wait for the user to confirm or request changes.

## Proposed Release: vX.Y.Z  (CURRENT -> NEW)

**Release type:** <server | both | plugin-only>
**Bump level:** <major | minor | patch>
**Reason:** <one sentence>

**Plugin version:** <CURRENT -> NEW> (<bump level>) — or "No plugin changes"

### Changelog Draft

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

### <Added | Changed | Fixed>
- <bullet 1>
- <bullet 2>
...

---

Use today's date in YYYY-MM-DD format. If the user requests changes, revise and re-present before continuing.


Step 7 — Create Release Branch

After confirmation:

bash
git checkout -b release/vX.Y.Z

Step 8 — Apply Changes

8a. Update version.properties and server.json

Plugin-only release: Skip this step — the server version stays unchanged.

Server or both release: Edit version.properties in the project root. Set only the lines that need to change. Reset lower components on a major or minor bump.

Example for a minor bump from 2.0.2 -> 2.1.0:

VERSION_MAJOR=2
VERSION_MINOR=1
VERSION_PATCH=0

Then edit server.json (the MCP Registry record) in the project root — two fields:

  • Set the top-level version to the new version (X.Y.Z, no v prefix).
  • Update the OCI identifier in packages[] to the immutable release image tag: ghcr.io/jpicklyk/task-orchestrator:X.Y.Z (no v prefix — this is the Docker tag, not the git tag). Never leave it on :latest; the MCP Registry record for a version is immutable, so a mutable tag makes that record drift to whatever image later owns latest (#297). docker-publish.yml fails the release if either field disagrees with version.properties, and then publishes the record to the registry via mcp-publisher.

Do not skip the server.json edit. It is the one file in this step that no build reads, so a missed bump is invisible until the registry publish fails (or, before the guard existed, silently published a stale record — v3.3.0 through v3.13.1 shipped with server.json still at 3.2.0).

History: this paragraph was first added by #298 to a flat .claude/skills/prepare-release.md that duplicated this file, and was lost when #321 deleted the duplicate. The skill lives only at .claude/skills/prepare-release/SKILL.md — never recreate the flat file.

8b. Update plugin version files (if plugin content changed)

Skip this step if no plugin files changed in Step 4d.

Read the current plugin version from claude-plugins/task-orchestrator/.claude-plugin/plugin.json (already retrieved in Step 4d). Calculate the new version using the plugin bump level from Step 4d.

Update both files with the new version:

  1. claude-plugins/task-orchestrator/.claude-plugin/plugin.json — update the version field
  2. .claude-plugin/marketplace.json — update plugins[name="task-orchestrator"].version

Also update the version table in claude-plugins/CLAUDE.md:

  • Find the row for task-orchestrator and replace the version number

Stage the three files (in addition to version.properties):

bash
git add claude-plugins/task-orchestrator/.claude-plugin/plugin.json \
        .claude-plugin/marketplace.json \
        claude-plugins/CLAUDE.md
8c. Insert new section into CHANGELOG.md

Read CHANGELOG.md. Feature PRs accumulate entries under a ## [Unreleased] section at the top of the file; check whether one exists before writing anything.

If ## [Unreleased] exists: rename that header in place to ## [X.Y.Z] - YYYY-MM-DD and fold your synthesized bullets from Step 4 into its existing ### Added / ### Changed / ### Fixed subsections (create a subsection only if it is missing). Keep every existing bullet — they are the per-PR record — and add only what Step 4 found missing. Do not leave an empty [Unreleased] section behind; the next feature PR recreates it. Match each merged PR in git log <LAST_TAG>..HEAD to a bullet by the behaviour it describes (per-PR bullets usually cite no PR number) — merged PRs with no bullet are the gaps to fill, except a PR whose body states Changelog: none (<why>), which is intentionally bullet-less (the September 2026 release prep found three bug-wave PRs entirely absent).

If no ## [Unreleased] section exists: find the first ## [ versioned entry (after the header). Insert the new section immediately above it, with a trailing --- separator and a blank line:

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

### Added
- bullet 1
- bullet 2

---

## [previous version] ...

Do not modify any existing entries below the new section.

If plugin content changed (Step 4d), add under the appropriate section:

  • Bumped plugin version to X.Y.Z (<reason>)
8d. Stage, commit, and push

Plugin-only release (plugin files already staged from 8b):

bash
git add CHANGELOG.md
git status   # confirm only plugin version files + changelog are staged
git commit -m "release: bump to vX.Y.Z — plugin vA.B.C"
git push origin release/vX.Y.Z

Server-only release:

bash
git add version.properties server.json CHANGELOG.md
git status   # confirm only expected files are staged
git commit -m "release: bump to vX.Y.Z"
git push origin release/vX.Y.Z

Both release (plugin files already staged from 8b):

bash
git add version.properties server.json CHANGELOG.md
git status   # confirm expected files are staged
git commit -m "release: bump to vX.Y.Z"
git push origin release/vX.Y.Z

Show full SKILL.md (1,053 more words)Show less

Step 9 — Pre-PR Checklist

Before creating the PR, verify these README items and fix any that are stale. If fixes are needed, add README.md to the staged files and amend the commit before pushing.

Docker image references:

bash
grep -n "ghcr.io/jpicklyk/task-orchestrator" README.md

Every Docker image reference must use :latest — never a branch name or hardcoded version tag.

Version badge (line ~7 in README):

Both /github/v/tag/ and /github/v/release/ badge endpoints work — the CI workflow creates a git tag and a GitHub release on every deploy. No change needed unless the URL is broken.

Dependency & CVE audit:

Do not ship a release carrying a known-vulnerable or stale dependency. For each security-sensitive dependency in gradle/libs.versions.toml (sqlite-jdbc, flyway-core, exposed-*, ktor-*, nimbus-jose-jwt, google-tink), compare the pinned version against the latest stable on Maven Central:

bash
# Example for sqlite-jdbc (adjust the group path per artifact):
curl -s "https://repo1.maven.org/maven2/org/xerial/sqlite-jdbc/maven-metadata.xml" \
  | grep -oE '<release>[^<]+</release>'

Flag any pin that is behind latest stable, on a beta/alpha/-rc version, or named in an open CVE advisory.

Critical — verify remediation, not just the bump. A version bump closes a CVE only when the dependency's bundled component version is at or above the CVE's upstream fixed-in version. Never write "addresses CVE-X" in a commit, changelog, PR body, or note without citing BOTH:

  1. the CVE's upstream fixed-in version (e.g., "SQLite 3.50.2"), and
  2. the version actually bundled by the pinned dependency (e.g., "sqlite-jdbc 3.49.1.0 bundles SQLite 3.49.1 — still exposed").

Precedent: CVE-2025-6965 (SQLite, fixed in 3.50.2) stayed live in this repo for ~3 months because a bump to sqlite-jdbc 3.49.1.0 (bundles SQLite 3.49.1) was recorded as remediation without checking the bundled version.

If the audit finds a live CVE or a materially stale pin, land the dependency fix as its own PR before cutting the release — do not fold it into the release commit.


Step 10 — Create the PR

bash
gh pr create \
  --base main \
  --title "release: vX.Y.Z — <one-line summary of most significant change>" \
  --body "$(cat <<'EOF'
## Summary

- <bullet 1>
- <bullet 2>
- <bullet 3>

## Version

**Release type:** <server | both | plugin-only>
<CURRENT> -> <NEW>

Prepared with /prepare-release
EOF
)"

If the branch already has an open PR, use gh pr edit with the same title and body instead.

If the user says "show me the command" or "don't run it yet", print the full command as a code block instead of executing it.


Step 11 — Merge, Verify, Tag, and Monitor

This step automates the post-PR flow. After the PR is created, drive the release to completion rather than printing manual instructions.

11a. Print summary
Release prepared: CURRENT -> vX.Y.Z  (<bump level>)
Release type:     <server | both | plugin-only>
Branch:           release/vX.Y.Z
PR:               <URL from gh pr create>
11b. Merge the release PR

Ask the user: "Ready to merge the release PR?"

If confirmed:

bash
gh pr merge <PR-number> --squash --delete-branch

If the user prefers to merge manually (e.g., via GitHub UI), wait for them to confirm it's merged before continuing.

11c. Sync local main
bash
git checkout main
git pull origin main

Verify the pull is a fast-forward. If it's not (local main has diverged from origin), stop and investigate — this should not happen under the PR-per-feature workflow.

11d. Wait for CI to pass on main

Server or both release: CI must be green before tagging. Use /loop to monitor automatically:

/loop 2m gh run list --branch main --limit 1 --json status,conclusion,displayTitle

While monitoring, check the first result immediately:

bash
gh run list --branch main --limit 1 --json status,conclusion,displayTitle
  • If conclusion: success — proceed to 11e immediately, cancel the loop
  • If status: in_progress — wait for the loop to report completion
  • If conclusion: failure — stop and fix. Do NOT tag. Report the failure to the user, investigate the cause, and merge a fix. After fixing, re-check CI before tagging. The tag must point to a green commit.

Plugin-only release: Skip CI monitoring — no server code changed, no Docker image to build. Proceed directly to the plugin-only completion in 11h.

11e. Tag and push (server or both release)

Once CI is green, cancel the monitoring loop and create the tag:

bash
git tag vX.Y.Z
git push origin vX.Y.Z

This triggers the "Build, Publish, and Release" workflow (docker-publish.yml).

11f. Monitor the Docker build

Use /loop to track the docker-publish workflow:

/loop 2m gh run list --workflow=docker-publish.yml --limit=1 --json status,conclusion,displayTitle

Check immediately:

bash
gh run list --workflow=docker-publish.yml --limit=1 --json status,conclusion,displayTitle
  • If conclusion: success — cancel the loop, proceed to 11g
  • If status: in_progress or queued — wait for the loop
  • If conclusion: failure — report the failure, investigate, and help the user resolve it. The Docker build may need a re-tag or a fix-and-retag cycle.
11g. Publish curated release notes (server or both release)

The docker-publish.yml workflow creates the GitHub Release automatically on the tag push, but it fills the body with GitHub's auto-generated PR-title list — not the curated changelog. Once the release exists (after 11f succeeds), overwrite its body with this version's CHANGELOG.md section so the published release notes match what you actually wrote. CHANGELOG.md is the source of truth.

Extract the section between this version's ## [X.Y.Z] header and the next ## [ header, and set it as the release body:

bash
RELNOTES="$(mktemp)"
awk -v ver="X.Y.Z" '
  BEGIN { hdr = "## [" ver "]" }
  index($0, hdr) == 1 { capture=1; next }          # skip the version header line (redundant with the release title)
  capture && index($0, "## [") == 1 { exit }       # stop at the next version section
  capture { print }
' CHANGELOG.md > "$RELNOTES"

# Never publish an empty body. `gh release edit --notes-file` accepts an empty file without
# complaint, so a silently-failed extraction replaces the auto-generated notes with NOTHING —
# strictly worse than leaving them. Fail loudly instead.
if [ ! -s "$RELNOTES" ]; then
  echo "ERROR: extracted release notes are empty — check that CHANGELOG.md contains a '## [X.Y.Z]' header" >&2
  rm -f "$RELNOTES"
  exit 1
fi

gh release edit vX.Y.Z --notes-file "$RELNOTES"
rm -f "$RELNOTES"

Match the header literally — do not build a regex from the version string. X.Y.Z contains . (any-char in a regex) and sits inside […], so the obvious $0 ~ "^## \\[" ver "\\]" form is fragile: in a dynamic (string-built) regex the bracket escaping is interpreted twice, and on gawk it degrades to a character class — the match never fires and the extraction silently yields zero lines. index($0, hdr) == 1 compares plain strings, so version dots and brackets carry no special meaning. Verified failing on gawk 2026-08-04 during the v3.13.1 release.

Verify the body now leads with the curated notes:

bash
gh release view vX.Y.Z --json body -q '.body' | head -20

To also keep GitHub's contributor/PR list beneath the curated notes, capture it first with gh api "repos/{owner}/{repo}/releases/generate-notes" -f tag_name=vX.Y.Z -q '.body', append it to $RELNOTES under a --- separator, then run gh release edit.

Plugin-only release: skip this step — no tag and no GitHub Release are created.

11h. Plugin-only completion

No tag or Docker rebuild needed — only plugin content changed. Plugin users pick up the new version when they reinstall the marketplace.

Report:

Release complete: vX.Y.Z (plugin-only)
Plugin version:   vA.B.C

Skip to 11i.

11i. Final report

Server or both release:

Release complete: vX.Y.Z
Docker image:     ghcr.io/jpicklyk/task-orchestrator:X.Y.Z (and :latest)
GitHub Release:   https://github.com/jpicklyk/task-orchestrator/releases/tag/vX.Y.Z

Cancel any remaining monitoring loops.

IMPORTANT: Do NOT use gh workflow run — the CI workflow is triggered by tag pushes (v*), not manual dispatch.


Quick Reference

Bump levelWhenVersion change
majorBreaking API changeX+1.0.0
minorNew capability, no breaking changeX.Y+1.0
patchBug fix, docs, refactorX.Y.Z+1

Common mistakes to avoid:

  • Do not tag before CI is green on main — tagging a broken commit ships a broken Docker image
  • Do not include raw commit hashes or internal file paths in the changelog
  • Do not bump version without confirmation from the user
  • Do not stage files other than version.properties, server.json, CHANGELOG.md, plugin version files (if changed), and README.md (if fixes were needed)
  • Do not forget server.json — the registry publish step fails when it lags version.properties
  • Do not create the PR if there are no commits ahead of the last tag
  • Do not bump plugin versions outside of the release workflow
  • Do not leave GitHub's auto-generated PR-title list as the final release notes — overwrite the GitHub Release body with the curated CHANGELOG.md section (Step 11g)

© jpicklyk, 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/prepare-release of jpicklyk/task-orchestrator.

Open the folder on GitHubat commit 3e83170

Compare with similar skills

Prepare 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.

Prepare Release compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Prepare Release this skilljpicklyk/task-orchestrator207—~5.3kAutomated safety check: PassMIT
Curate Whats Newdocker/docs4.7k—~1.3kAutomated safety check: PassApache-2.0
ReleasePipelex/pipelex941—~4.8kAutomated safety check: NotesCustom licence
Project Docs Maintainerswimmwatch/cloakbrowser-mcp161—~569Automated safety check: PassMIT
Releasebmeares/Meerschaum154—~1.1kAutomated safety check: NotesApache-2.0
Project Releaseswimmwatch/cloakbrowser-mcp161—~1.9kAutomated safety check: PassMIT

Similar skills

  • Curate Whats New

    docker/docs

    Official

    Curate noteworthy Docker launches from documentation pull requests merged during a requested period.

    4.7k GitHub stars~1.3k tokensUpdated today
    DevelopmentAuto-check passed
  • Release

    Pipelex/pipelex

    Cut a release of pipelex, which ships the pipelex and pipelex-api packages and the pipelex/pipelex-api Docker image under one version: the gates, the migration-ledger cross-check, the CHANGELOG.md…

    941 GitHub stars~4.8k tokensUpdated today
    DevelopmentAuto-check: notes
  • Project Docs Maintainer

    swimmwatch/cloakbrowser-mcp

    Maintain, organize, consolidate, or audit the cloakbrowser-mcp documentation set only when the user explicitly requests project documentation maintenance or an authorized public change requires it.

    161 GitHub stars~569 tokensUpdated 6 days ago
    DevelopmentAuto-check passed
  • Release

    bmeares/Meerschaum

    Meerschaum release process — bump version, update changelog, stage dev→main PR, run CI, publish to PyPI, tag, GitHub release, build/push Docker images, rebuild docs on prod VPS.

    154 GitHub stars~1.1k tokensUpdated 29 days ago
    DevOps & CloudAuto-check: notes
  • Project Release

    swimmwatch/cloakbrowser-mcp

    Prepare, publish, verify, or recover a cloakbrowser-mcp release only when the user explicitly requests release work.

    161 GitHub stars~1.9k tokensUpdated 6 days ago
    Agent WorkflowsAuto-check passed
  • Ama Logs Update Charts Release Notes

    microsoft/Docker-Provider

    Official

    Prepare an ama-logs release PR: bump the image tag (X.Y.Z) across Helm charts, manifests, and Dockerfiles, and add a formatted ReleaseNotes.md entry.

    174 GitHub stars~2.6k tokensUpdated today
    DevOps & CloudAuto-check passed

More from jpicklyk/task-orchestrator

All 28 skills in this repo
  • Task Orchestrator Server Setup

    jpicklyk/task-orchestrator

    Walks through how to launch and reach the MCP Task Orchestrator server container: transport, REST API, port publishing, config mounts and config-sync.

    207 GitHub stars~3.1k tokensUpdated today
    Auto-check passed
  • Run Wave

    jpicklyk/task-orchestrator

    Resolves ready MCP work items into a run plan, shows it to you, then executes it through the Workflow tool or direct subagent dispatch, with post-run verification.

    207 GitHub stars~4.7k tokensUpdated today
    Auto-check passed
  • Adopt Project Scope Migration

    jpicklyk/task-orchestrator

    Migrates an existing unscoped Task Orchestrator database to the project-scoping convention in place, creating one project anchor root and re-parenting work trees under it after a mandatory dry run.

    207 GitHub stars~3.7k tokensUpdated today
    Auto-check passed
  • Bulk Task Completion

    jpicklyk/task-orchestrator

    Completes or cancels a whole feature subtree, a named list of items, or a batch of stale work items at once, previewing the impact and warning before force-completing anything active.

    207 GitHub stars~2.6k tokensUpdated today
    Auto-check passed
  • Task Orchestrator Item Creator

    jpicklyk/task-orchestrator

    Creates an MCP work item from conversation context, anchoring it under the right container, inferring type and priority and pre-filling the required notes.

    207 GitHub stars~4k tokensUpdated today
    Auto-check passed
  • Work Item Dependency Manager

    jpicklyk/task-orchestrator

    Views, creates, deletes and diagnoses BLOCKS, IS_BLOCKED_BY and RELATES_TO links between MCP work items, including why an item cannot start.

    207 GitHub stars~3.5k tokensUpdated today
    Auto-check passed

Works with

Questions about Prepare Release

What does Prepare Release do?

End-to-end release automation — reads commits since last tag, infers semver bump, drafts changelog, creates release PR, merges it, waits for CI green, tags, and monitors the Docker build to…. Prepare Release is an agent skill from jpicklyk/task-orchestrator. End-to-end release automation — reads commits since last tag, infers semver bump, drafts changelog, creates release PR, merges it, waits for CI green, tags, and monitors the Docker build to completion.

When should I use Prepare Release?

Prepare Release fits situations like: the user says: prepare release; create release PR; ship a new version; deploy new version.

How do I install Prepare Release in Claude Code?

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

How do I install Prepare Release in Codex?

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

Can I use Prepare 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 jpicklyk/task-orchestrator --skill prepare-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/prepare-release, .gemini/skills/prepare-release, .github/skills/prepare-release and .opencode/skills/prepare-release in your project.

What does Prepare Release need to run?

Going by SKILL.md and its folder, Prepare Release needs the command-line tools its instructions call (git, gh, curl and docker). Our summary lists: Docker.

Does Prepare Release access the network?

SKILL.md names 1 domain. In commands or code: repo1.maven.org; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Prepare 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 Prepare Release use?

Prepare 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 Prepare Release use?

About 5.3k tokens (SKILL.md is roughly 21k 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 Prepare Release?

Skills that share tags, products or a category with Prepare Release: Curate Whats New (docker/docs, 4.7k stars), Release (Pipelex/pipelex, 941 stars), Project Docs Maintainer (swimmwatch/cloakbrowser-mcp, 161 stars) and Release (bmeares/Meerschaum, 154 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Prepare Release?

jpicklyk (a GitHub user) maintains it in jpicklyk/task-orchestrator, which has 207 GitHub stars. The repository holds 28 skills in this directory. The repository was last updated on October 8, 2026.

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