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.
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…
$ npx skills add duracelltomi/gtm4wp --skill release -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install duracelltomi/gtm4wp release --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "release" agent skill from https://github.com/duracelltomi/gtm4wp/tree/master/.claude/skills/release into .claude/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/duracelltomi/gtm4wp/tree/master/.claude/skills/releaseType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add duracelltomi/gtm4wp --skill release -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install duracelltomi/gtm4wp release --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/duracelltomi/gtm4wp.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/release .agents/skills/release && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "release" agent skill from https://github.com/duracelltomi/gtm4wp/tree/master/.claude/skills/release into .agents/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add duracelltomi/gtm4wp --skill release -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install duracelltomi/gtm4wp release --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/duracelltomi/gtm4wp.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/release .cursor/skills/release && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "release" agent skill from https://github.com/duracelltomi/gtm4wp/tree/master/.claude/skills/release into .cursor/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/duracelltomi/gtm4wp.git --path .claude/skills/release--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add duracelltomi/gtm4wp --skill release -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install duracelltomi/gtm4wp release --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/duracelltomi/gtm4wp.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/release .gemini/skills/release && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "release" agent skill from https://github.com/duracelltomi/gtm4wp/tree/master/.claude/skills/release into .gemini/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install duracelltomi/gtm4wp releaseInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add duracelltomi/gtm4wp --skill release -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/duracelltomi/gtm4wp.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/release .github/skills/release && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "release" agent skill from https://github.com/duracelltomi/gtm4wp/tree/master/.claude/skills/release into .github/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add duracelltomi/gtm4wp --skill release -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install duracelltomi/gtm4wp release --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/duracelltomi/gtm4wp.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/release .opencode/skills/release && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "release" agent skill from https://github.com/duracelltomi/gtm4wp/tree/master/.claude/skills/release into .opencode/skills/release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "release", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
releaseCut 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. 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.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 11b3ea2. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
ghgitnpmFrom the folder's file list and the shell code blocks in SKILL.md.
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.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
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.
.claude/skills/release/SKILL.md (or your agent's skills folder).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.
Read .claude/RELEASE-STATE.md. Then classify:
--prerelease, Stable tag does NOT
move, RELEASE-STATE.md gains only a History row.Stable tag
moves, --latest, wordpress.org follows, a maintenance branch is created, the
full propagation sweep runs.master is confirmed; otherwise
like Stable minus the branch creation.git status clean, synced with origin, on the right branch for the type.vendor/bin/phpunit · vendor/bin/phpcs · npm run build (includes
lint:js) · npm run test:unit..security/ review covers every production
commit up to HEAD (check the ledger's Reviewed-at hash); if not, run
/code-review first.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.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.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.
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.
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.git push origin <branch> X.Y.Z (+ the new maintenance branch, step 5).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.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.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 -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.1.x was frozen
to reported-security-fixes only.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.
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./assets, caption
edits to tags/X.Y.Z/readme.txt + trunk + git readme.txt.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).© 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
Just SKILL.md in .claude/skills/release of duracelltomi/gtm4wp.
Open the folder on GitHubat commit 11b3ea2
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Release this skillduracelltomi/gtm4wp | 174 | — | ~2.2k | Automated safety check: Pass | GPL-2.0-or-later | |
| Releasebmeares/Meerschaum | 154 | — | ~1.1k | Automated safety check: Notes | Apache-2.0 | |
| Mecatl Release Cuttingstacklok/mecatl | 250 | — | ~3.9k | Automated safety check: Pass | Apache-2.0 | |
| Releasepaperclipai/paperclip | 99k | — | ~2.4k | Automated safety check: Pass | MIT | |
| OpenWork Release Processdifferent-ai/openwork | 24k | — | ~2.3k | Automated safety check: Pass | Custom licence | |
| AI News RadarLearnPrompt/ai-news-radar | 1.8k | — | ~2.5k | Automated safety check: Notes | MIT |
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.
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.
paperclipai/paperclip
Coordinate a full Paperclip release across engineering verification, npm, GitHub, smoke testing, and announcement follow-up.
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.
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…
Myriad-Dreamin/typst.ts
Guide Reflexo/typst.ts release preparation and operator handoffs.
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…
duracelltomi/gtm4wp
How to write GTM4WP CHANGELOG.md / readme.txt entries. An agent skill from duracelltomi/gtm4wp.
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.
duracelltomi/gtm4wp
Guide to create WooCommerce related WordPress plugins that extends WooCommerce functionality with a consistent and maintainable approach.
duracelltomi/gtm4wp
Guide to maintain creating modern and secure code while developing WordPress plugins.
Works with
Categories
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.
Release fits situations like: the user says release X.Y.Z; cut the release; prepare the release; asks how the release process works.
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.
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.
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.
Going by SKILL.md and its folder, Release needs the command-line tools its instructions call (gh, git and npm).
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.
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.
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.
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.
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.
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.