Agent skill

Release

by duracelltomi in duracelltomi/gtm4wp

Cut a GTM4WP release — pre-flight verification, the version bumps, tag, ZIP, GitHub release with post-upload verification, branch mechanics, and the propagation sweep that updates RELEASE-STATE.md…

GPL-2.0-or-laterAuto-check passedDevOps & Cloud

Install Release

skills CLI
$ npx skills add duracelltomi/gtm4wp --skill release -a claude-code

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

GitHub CLI
$ gh skill install duracelltomi/gtm4wp 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/duracelltomi/gtm4wp.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
174
Token cost
~2.2k tokens
SKILL.md length
1,137 words
Files
1
Skills in repo
6
Repo updated
First seen
Licence
GPL-2.0-or-later

At a glance

Cut a GTM4WP release — pre-flight verification, the version bumps, tag, ZIP, GitHub release with post-upload verification, branch mechanics, and the propagation sweep that updates RELEASE-STATE.md…

  • Works in 8 steps: Read the state, name the release type → Pre-flight — all green before any file… → Version bump → …
  • The user says release X.Y.Z
  • SKILL.md covers 0. Read the state, name the…, 1. Pre-flight — all green…, 2. Version bump and 3. Commit and tag, plus 5 more sections
  • Calls gh, git and npm

What it does

Release is an agent skill from duracelltomi/gtm4wp. Cut a GTM4WP release — pre-flight verification, the version bumps, tag, ZIP, GitHub release with post-upload verification, branch mechanics, and the propagation sweep that updates RELEASE-STATE.md, docs, skills, ledgers and memory in the same pass. Use when the user says "release X.Y.Z", "cut the release", "prepare the release", or asks how the release process works.

Its SKILL.md is about 2.2k 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 DevOps & Cloud, covering Deployment. It works with GitHub, WordPress and WooCommerce. The repository describes itself as: Google Tag Manager plugin for WordPress. The licence is GPL-2.0-or-later.

When your agent uses it

  • The user says release X.Y.Z
  • Cut the release
  • Prepare the release
  • Asks how the release process works

Example prompts

  • “release X.Y.Z”
  • “cut the release”
  • “prepare the release”
  • “/release”

Workflow steps

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

  1. Read the state, name the release type
  2. Pre-flight — all green before any file changes
  3. Version bump
  4. Commit and tag
  5. Build, publish, verify
  6. Branch mechanics (stable minor/major only)
  7. Propagation sweep — what makes the repo agree with reality
  8. External checklist — print it for the maintainer, these are manual

What it can do on your machine

Read from SKILL.md and the folder at commit 11b3ea2. 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:

    • gh
    • git
    • npm

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

  • Network

    No URLs in SKILL.md. Its commands use gh, git and npm, 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 2.2k tokens when it runs. Until then it costs about 94 tokens; SKILL.md has 1,137 words of instructions outside code blocks.

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

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 duracelltomi/gtm4wp at commit 11b3ea2, republished under its GPL-2.0-or-later licence (© duracelltomi). 1,137 words, ~2,173 tokens.

Download SKILL.mdSave it as .claude/skills/release/SKILL.md (or your agent's skills folder).
name
release
description
Cut a GTM4WP release — pre-flight verification, the version bumps, tag, ZIP, GitHub release with post-upload verification, branch mechanics, and the propagation sweep that updates RELEASE-STATE.md, docs, skills, ledgers and memory in the same pass. Use when the user says "release X.Y.Z", "cut the release", "prepare the release", or asks how the release process works.
license
GPL-2.0-or-later

GTM4WP release process

Distilled from the 2.0.0 release day (2026-09-01). The companion file .claude/RELEASE-STATE.md is the single source of truth for "what version lives where" — this skill's last step is keeping it, and everything that references it, true.

0. Read the state, name the release type

Read .claude/RELEASE-STATE.md. Then classify:

  • Pre-release (beta/rc): GitHub only, --prerelease, Stable tag does NOT move, RELEASE-STATE.md gains only a History row.
  • Stable (new minor/major, or the first stable of a line): Stable tag moves, --latest, wordpress.org follows, a maintenance branch is created, the full propagation sweep runs.
  • Patch (bugfix release of the stable line): cut from the released stable branch, then merge/cherry-pick parity with master is confirmed; otherwise like Stable minus the branch creation.

1. Pre-flight — all green before any file changes

  1. git status clean, synced with origin, on the right branch for the type.
  2. vendor/bin/phpunit · vendor/bin/phpcs · npm run build (includes lint:js) · npm run test:unit.
  3. Review-ledger freshness: the last .security/ review covers every production commit up to HEAD (check the ledger's Reviewed-at hash); if not, run /code-review first.
  4. Targeted upstream drift check — dispatch the upstream-reviewer agent read-only ("report only, update no ledgers"), scoped to the Release Radar (WP, WC, CF7, wordpress.org directory rules, Google GTM/consent) since the last sweep date in .upstream/upstream-review-checklist.md. Publishing gates on its "no release blockers" verdict; advisories go on the follow-up list.
  5. Changelog: the top heading must be this release's section, complete, with the readme.txt mirror block in sync (invoke the changelog skill for the rules). The heading itself does not change at release time. Count the words of readme.txt's == Changelog == section (to == Upgrade Notice ==, len(text.split())): wordpress.org truncates it at 5,000 and only emails the committers afterwards (U150, hit on 2.0.2). Keep it under ~4,000 by summarizing the oldest big section and pointing at CHANGELOG.md on GitHub.

2. Version bump

The version string lives in exactly these places (a stable release adds one):

1–4. npm version X.Y.Z --no-git-tag-version updates package.json and both package-lock.json entries; edit the plugin header Version: and GTM4WP_VERSION in the main plugin file by hand. 5. readme.txt Stable tag: — stable releases only; moving it is the marker of a stable release, pre-releases never touch it.

For a stable release, update the .claude/RELEASE-STATE.md Facts table in the same commit — tests/unit/ReleaseStateConsistencyTest.php pins the two to each other, so the suite breaks if one moves without the other. Re-run vendor/bin/phpunit after the bump to prove the pins hold.

3. Commit and tag

Commit message via git commit -F <file> (never -m with a multi-line string), text Release X.Y.Z [skip changelog] — a bump ships no changelog bullet, every change already carries its own. Then an annotated tag: git tag -a X.Y.Z -m X.Y.Z.

4. Build, publish, verify

  1. npm run release → release/duracelltomi-google-tag-manager-X.Y.Z.zip. The GitHub auto-generated source archive is not installable (build/ is git-ignored) — always attach this ZIP. Its top folder is the wp.org slug duracelltomi-google-tag-manager/, never the long git name, so a GitHub install lands where a wp.org install lives (U168); zips before the 2.0.3 re-upload used the long name.
  2. Push: git push origin <branch> X.Y.Z (+ the new maintenance branch, step 5).
  3. gh release create X.Y.Z <zip> --title "GTM4WP X.Y.Z" --notes-file <file> with --prerelease or --latest per type. Release-note voice: the maintainer's public voice (no em dashes, plain register), run the humanizer skill; model on the previous release's notes via gh release view. Known snag: the releases endpoint can return bare 503s during GitHub incidents while reads still work — retry with a bounded loop.
  4. Post-upload verification (never skip): gh release download the asset, SHA256-compare against the local ZIP, and read the plugin header Version: out of the downloaded ZIP, and that its single top folder is duracelltomi-google-tag-manager/. Confirm isPrerelease/Latest via gh release view --json / gh release list.
Show full SKILL.md (514 more words)Show less

5. Branch mechanics (stable minor/major only)

  • git branch X.Y <release-commit> and push — the maintenance home for X.Y.z bugfixes, which from now on land on BOTH master and this branch.
  • Grep the toolchain for branch-name lists before calling this step done (grep -rnE "master|1\.x|[0-9]\.[0-9]" .github/workflows/ .githooks/ .claude/hooks/ tools/). A workflow trigger or hook that names branches excludes the one just created, and the failure is a run that never happens: 2.0 had no CI from its creation until the 2.0.2 pre-flight found phpcs red on its tip (security review 32, #235; pattern PA-20). ci.yml now uses branches: [ master, '*.*' ], so a dotted maintenance branch needs no edit — but confirm with gh run list --branch X.Y after the first push.
  • Decide (with the maintainer) what happens to the previous stable branch, and record the decision in RELEASE-STATE.md. Precedent: at 2.0.0, 1.x was frozen to reported-security-fixes only.

6. Propagation sweep — what makes the repo agree with reality

Run after the release is published (stable releases; pre-releases only do a):

a. .claude/RELEASE-STATE.md: Facts table, branch/bugfix flow, a History row; a new Epoch line if the branch model or a maintenance policy changed. On master the Stable tag follows too, and if the version quartet (header, GTM4WP_VERSION, package files) is behind the release it is raised to it (npm version + the two hand edits); a test fails when the header is behind. b. Marker sweep: grep -rn "release-coupled" .claude CLAUDE.md — visit every hit and update the embedded value. The grep is the registry; do not maintain a separate list that can go stale. c. Old-version sweep: grep the previous released version string across the repo (exclude build/, node_modules/, vendor/, release/). Classify each hit: historical record (ledger run entries, released CHANGELOG sections, dated FAQ/memory entries) → leave untouched; current-state claim → fix. Never bulk find-and-replace; today's inversion of the forum skill's "trap" paragraph shows these need judgment, not substitution. d. Memory: update the project memory file and its MEMORY.md index hook. e. .support/forum-answers.md (git-ignored): add/refresh the epoch banner when the branch model or maintenance policy changed, so sweeps re-frame pre-epoch canonical answers before reuse. f. Re-run vendor/bin/phpunit — the consistency test is the final agreement check.

7. External checklist — print it for the maintainer, these are manual

  • wordpress.org SVN push (separate SVN working copy on the maintainer's PC; the release ZIP's layout is SVN-ready). After the push, verify: plugins-API version, svn ls of tags/X.Y.Z and trunk (the shipped items incl. build/), Stable tag in BOTH readmes, and a per-file hash compare of the wp.org-built ZIP against the local one.
  • Announcement post on gtm4wp.com (drafted beforehand; published after the wp.org push).
  • Screenshots/banners if the UI changed — images to SVN /assets, caption edits to tags/X.Y.Z/readme.txt + trunk + git readme.txt.
  • Pending Tested up to bumps and upstream-ledger follow-ups surfaced by the step-1 drift check (e.g. retiring an exception that converged at release).

Hard rules

  • Historical records are never rewritten — only current-state claims move.
  • Committed == published (public repo): nothing in a release commit, note or ledger may carry unfixed-finding detail.
  • Every outward step (push, release, SVN) happens only after its gate: the pre-flight battery and the drift check verdict.

© duracelltomi, GPL-2.0-or-later. 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 duracelltomi/gtm4wp.

Open the folder on GitHubat commit 11b3ea2

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 skillduracelltomi/gtm4wp174—~2.2kAutomated safety check: PassGPL-2.0-or-later
Releasebmeares/Meerschaum154—~1.1kAutomated safety check: NotesApache-2.0
Mecatl Release Cuttingstacklok/mecatl250—~3.9kAutomated safety check: PassApache-2.0
Releasepaperclipai/paperclip99k—~2.4kAutomated safety check: PassMIT
OpenWork Release Processdifferent-ai/openwork24k—~2.3kAutomated safety check: PassCustom licence
AI News RadarLearnPrompt/ai-news-radar1.8k—~2.5kAutomated safety check: NotesMIT

Similar skills

  • 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 1 mo ago
    DevOps & CloudAuto-check: notes
  • Mecatl Release Cutting

    stacklok/mecatl

    Cuts a tagged mecatl release by dispatching the release-PR workflow, merging the bot's pull request and verifying the tag, images, Helm chart, signed archives and Homebrew formula.

    250 GitHub stars~3.9k tokensUpdated today
    DevOps & CloudAuto-check passed
  • Release

    paperclipai/paperclip

    Coordinate a full Paperclip release across engineering verification, npm, GitHub, smoke testing, and announcement follow-up.

    99k GitHub stars~2.4k tokensUpdated today
    DevOps & CloudAuto-check passed
  • OpenWork Release Process

    different-ai/openwork

    Cuts an OpenWork desktop release through a tag-driven GitHub Actions workflow that makes no commits, with pre-tag checks on open fix PRs and verification afterward.

    24k GitHub stars~2.3k tokensUpdated today
    DevOps & CloudAuto-check passed
  • AI News Radar

    LearnPrompt/ai-news-radar

    A skill your agent uses when working on AI News Radar, 24 小时 AI 更新雷达, AI 更新雷达, 伯乐Skill, or Scout Skill: finding high-signal AI/tech sources, adding RSS/OPML/GitHub feeds, checking source health…

    1.8k GitHub stars~2.5k tokensUpdated today
    DevOps & CloudAuto-check: notes
  • Reflexo Release

    Myriad-Dreamin/typst.ts

    Guide Reflexo/typst.ts release preparation and operator handoffs.

    1.2k GitHub stars~1.5k tokensUpdated yesterday
    DevOps & CloudAuto-check passed

More from duracelltomi/gtm4wp

  • Wporg Forum Triage

    duracelltomi/gtm4wp

    Triage GTM4WP support topics and reviews on the wordpress.org forum — read a topic (or a batch), work out whether it is already fixed in a released version, classify it, screen for security…

    174 GitHub stars~6.1k tokensUpdated today
    Auto-check: warnings
  • Changelog

    duracelltomi/gtm4wp

    How to write GTM4WP CHANGELOG.md / readme.txt entries. An agent skill from duracelltomi/gtm4wp.

    174 GitHub stars~2.2k tokensUpdated today
    Auto-check passed
  • GitHub Issue Triage

    duracelltomi/gtm4wp

    Triage and manage GTM4WP GitHub issues — read an issue (or a batch), classify it, check for duplicates/already-fixed, screen for security disclosures, and draft a polite reply plus proposed labels.

    174 GitHub stars~4.7k tokensUpdated today
    Auto-check: warnings
  • Guide to create WooCommerce related WordPress plugins that extends WooCommerce functionality with a consistent and maintainable approach.

    174 GitHub stars~8.9k tokensUpdated today
    Auto-check passed
  • Wordpress Security

    duracelltomi/gtm4wp

    Guide to maintain creating modern and secure code while developing WordPress plugins.

    174 GitHub stars~7.2k tokensUpdated today
    Auto-check passed

Questions about Release

What does Release do?

Cut a GTM4WP release — pre-flight verification, the version bumps, tag, ZIP, GitHub release with post-upload verification, branch mechanics, and the propagation sweep that updates RELEASE-STATE.md…. Release is an agent skill from duracelltomi/gtm4wp.md, docs, skills, ledgers and memory in the same pass.

When should I use Release?

Release fits situations like: the user says release X.Y.Z; cut the release; prepare the release; asks how the release process works.

How do I install Release in Claude Code?

Run `npx skills add duracelltomi/gtm4wp --skill release -a claude-code`. Or copy the skill folder (.claude/skills/release in duracelltomi/gtm4wp) 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 duracelltomi/gtm4wp --skill release -a codex`. Or copy the skill folder (.claude/skills/release in duracelltomi/gtm4wp) 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 duracelltomi/gtm4wp --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 (gh, git and npm).

Does Release access the network?

SKILL.md contains no URLs. Its commands use gh, git and npm, 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 GPL-2.0-or-later licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Release use?

About 2.2k tokens (SKILL.md is roughly 8.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: Release (bmeares/Meerschaum, 154 stars), Mecatl Release Cutting (stacklok/mecatl, 250 stars), Release (paperclipai/paperclip, 99k stars) and OpenWork Release Process (different-ai/openwork, 24k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Release?

duracelltomi (a GitHub user) maintains it in duracelltomi/gtm4wp, which has 174 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on October 9, 2026.

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