agentsclimarketplace

Release

Skill psenger/ai-agent-skills/.claude/skills/release

Ships completed work in the ai-agent-skills repository. Two phases depending on context: WRAP UP (on a feature branch with committed work — updates CHANGELOG, README, marketplace.json, commits, pushes, creates a PR) and CUT RELEASE (on main after a merge — determines semver bump, updates CHANGELOG version section, tags, pushes, creates a GitHub draft release). Use when the user says "ship this", "I'm done", "create a PR", "cut a release", "tag a release", "wrap this up", or "release it". Always checks GitHub auth first. Load the `conventions` skill for commit and PR formatting rules.From its SKILL.md

Install
npx -y skills add psenger/ai-agent-skills --skill release

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 9 stars9 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
  • runs commandsInstructs the agent to run 8 commands, including `gh auth status` and 7 more.

SKILL.md

6.8 KB, ~1.7k tokens by cl100k_base, as published. Nobody here has run it

Release

Ships completed work. The skill detects context and runs the right phase:

  • On a feature branch with committed work → WRAP UP phase
  • On main after a merge → CUT RELEASE phase

For all message formatting, follow the conventions skill.


Step 0 — Auth & Identity (always)

Check for a GitHub MCP server in available tools. If none:

gh auth status

Stop if neither is available: "I need the GitHub MCP server or gh CLI authenticated. Run gh auth login."

Confirm identity — use mcp__github__get_me if the GitHub MCP server is available, otherwise:

gh api user --jq '"@\(.login) — \(.name)"'

Show the result and ask: "I'll be acting as @username — is that right?" Wait for confirmation.


WRAP UP Phase

Triggered when on any non-main branch (feature/, fix/, chore/, refactor/, test/, etc.) with a clean working tree.

Step 1 — Verify State

git branch --show-current     # must not be main
git status --porcelain        # must be empty — all work committed

If the tree is dirty, stop: "You have uncommitted changes. Commit or stash them first."

Step 2 — Detect What Changed

git diff main...HEAD --name-only

Determine:

  • Was a new skill added? Look for a new directory under skills/ not present on main.
  • Was an existing skill modified? Look for changes inside skills/<name>/.
  • Is this a bug fix, refactor, or docs change? Look at changed files outside skills/.

Derive the issue number from the branch name (e.g. feature/14-add-handoff-skill#14). If none found, ask the user for the issue number.

Step 3 — Update Admin Files

CHANGELOG.md — add a bullet to ## [Unreleased] under the correct subsection:

  • New skill → ### Added
  • Updated skill → ### Changed
  • Bug fix → ### Fixed

Bullet format (see conventions skill):

- **skill-name** — <what changed and why>. ([#N](issue-url))

README.md — only if a new skill was added:

  • Add a row to the skills table
  • Add a ### skill-name prose section following the existing pattern

.claude-plugin/marketplace.json — update whenever a skill was added or modified:

  • New skill → add an entry with "version": "1.0.0"
  • Existing skill enhanced (new feature, new behaviour) → bump minor (e.g. 1.0.01.1.0)
  • Existing skill bug fix or docs only → bump patch (e.g. 1.1.01.1.1)

New skill entry format:

{
  "name": "<skill-name>",
  "source": "./skills/<skill-name>",
  "description": "<description from SKILL.md frontmatter>",
  "version": "1.0.0"
}

Step 4 — Commit Admin Updates

git add CHANGELOG.md README.md .claude-plugin/marketplace.json
git commit -m "chore(<skill-name>): update changelog, readme, and marketplace"

Only stage files that actually changed.

Step 5 — Push and Create PR

git push -u origin <branch-name>

Create a PR using the repo's PR template (.github/pull_request_template.md):

gh pr create \
  --draft \
  --title "<type>(<scope>): <subject>" \
  --body "$(cat <<'EOF'
## What
<brief description of the change>

## Why
<why this change is needed>

## Type of Change
- [x] <tick the correct box from the template>

## Skill Checklist
- [x] `SKILL.md` has valid YAML frontmatter (`name`, `description`, `allowed-tools`)
- [x] `name` is lowercase-hyphenated and matches the directory name
- [x] `description` is written in third person with trigger words
- [x] Reference files are in `references/` (one level deep)
- [x] `SKILL.md` is under 500 lines
- [x] No secrets, credentials, or PII committed
- [x] `.claude-plugin/marketplace.json` updated (if new skill)
- [x] `README.md` skills table updated (if new skill)

## Testing
- [ ] Tested locally by invoking the skill with a realistic prompt
- [ ] Verified the skill activates correctly (not confused with another skill)

Closes #<issue-number>
EOF
)"

Print the PR URL. Tell the user: "Draft PR created: <URL>. Review it, mark it ready for review, and merge to main. Then run /release again on main to cut the release."


CUT RELEASE Phase

Triggered when on main with a clean working tree.

Step 1 — Pre-flight

git branch --show-current              # must be: main
git status --porcelain                 # must be empty
git fetch origin
git rev-list HEAD..origin/main --count # must be: 0

Abort clearly if any check fails.

Step 2 — Determine Version

git describe --tags --abbrev=0          # last tag, e.g. v1.0.0
git log <last-tag>..HEAD --oneline      # commits since last tag

Apply semver rules (from conventions skill):

  • BREAKING CHANGE footer or type!:major
  • featminor
  • fix, chore, docs, refactor, testpatch

Present the proposed version and the commits that drove the decision. Wait for explicit confirmation before proceeding.

Step 3 — Update CHANGELOG.md

Three edits in order:

  1. Insert ## [Unreleased]\n\n above the current ## [Unreleased] heading
  2. Rename the existing ## [Unreleased] to ## [X.Y.Z] - YYYY-MM-DD (today's date)
  3. Update comparison links at the bottom:
    • Add: [X.Y.Z]: https://github.com/psenger/ai-agent-skills/compare/<last-tag>...vX.Y.Z
    • Update: [Unreleased]: https://github.com/psenger/ai-agent-skills/compare/vX.Y.Z...HEAD

Step 4 — Commit and Tag

git add CHANGELOG.md
git commit -m "chore(release): cut vX.Y.Z release"
git tag -a vX.Y.Z -m "Release vX.Y.Z"

Step 5 — Push

git push origin main
git push origin vX.Y.Z

Step 6 — Create Draft Release

Extract the release body from the ## [X.Y.Z] CHANGELOG section (down to the next ## [):

gh release create vX.Y.Z \
  --draft \
  --title "vX.Y.Z" \
  --notes "<extracted changelog section>"

Step 7 — Done

Print:

Draft release created: <URL>

Review on GitHub and click Publish when ready.
Publishing triggers any CI release workflows.

Do not publish the release — the user does this manually.

What ships with it: 4 files

21.1 KB alongside SKILL.md

Gives 3 of the 12 instructions most ship operate skills give in ~1.7k tokens

Counted across 1,077 of the 1,713 authors here whose files we hold, read 2026-09-06

  • Create GitHub releasehere, and in 44 of 1077, across 43 files
  • Run the test suitein 30 of 1077, across 25 files
  • Create and push git tagin 27 of 1077, across 26 files
  • Push commits and tagsin 27 of 1077
  • Create annotated tagin 25 of 1077, across 22 files
  • Ensure working tree is cleanhere, and in 24 of 1077
  • Check for product marketing context firstin 23 of 1077, across 6 files
  • Commit version bump changesin 22 of 1077, across 21 files
  • Update CHANGELOG.mdhere, and in 21 of 1077, across 20 files
  • Structure launch marketing across three channel typesin 20 of 1077, across 5 files
  • Commit and tag the releasein 20 of 1077, across 18 files
  • Update the CHANGELOG for new releasesin 19 of 1077

Said here and by no other author read

  • Check for a GitHub MCP server in available tools
  • Confirm identity before proceeding
  • Commit admin updates
  • Verify main branch state before cutting release

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.