Verdaccio Pull Request Workflow
verdaccio/verdaccio
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.
Ship a modelprint release the same way every time - gates, version stamp, changelog, tag, GitHub release, deploy, verify.
$ npx skills add unclecode/modelprint --skill release -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install unclecode/modelprint 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/unclecode/modelprint.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/unclecode/modelprint/tree/main/.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/unclecode/modelprint/tree/main/.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 unclecode/modelprint --skill release -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install unclecode/modelprint release --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/unclecode/modelprint.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/unclecode/modelprint/tree/main/.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 unclecode/modelprint --skill release -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install unclecode/modelprint release --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/unclecode/modelprint.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/unclecode/modelprint/tree/main/.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/unclecode/modelprint.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 unclecode/modelprint --skill release -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install unclecode/modelprint release --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/unclecode/modelprint.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/unclecode/modelprint/tree/main/.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 unclecode/modelprint 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 unclecode/modelprint --skill release -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/unclecode/modelprint.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/unclecode/modelprint/tree/main/.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 unclecode/modelprint --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 unclecode/modelprint release --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/unclecode/modelprint.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/unclecode/modelprint/tree/main/.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.
releaseShip a modelprint release the same way every time - gates, version stamp, changelog, tag, GitHub release, deploy, verify.
Release is an agent skill from unclecode/modelprint. Ship a modelprint release the same way every time - gates, version stamp, changelog, tag, GitHub release, deploy, verify. Use when the user says "release", "ship it", "deploy", "cut a version", or after merging pull requests that should reach the public page.
Its SKILL.md is about 1.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 Development, covering Changelog and release notes and Pull requests. It works with GitHub and OpenRouter. The repository describes itself as: Who is really behind that API? Fingerprint any OpenAI-compatible endpoint in the browser: 9 infrastructure probes, side-by-side comparison, community-extensible. The licence is MIT.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit fa11a85. 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:
gitnodecurlghnpxFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
modelprint.aigithub.commodelprint-api.unclecode.workers.devFrom 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 1.2k tokens when it runs. Until then it costs about 67 tokens; SKILL.md has 508 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 unclecode/modelprint at commit fa11a85, republished under its MIT licence (© unclecode). 508 words, ~1,195 tokens.
.claude/skills/release/SKILL.md (or your agent's skills folder).One command, one order, no step skipped. The public page and the GitHub release must always agree, and a release must never carry an untested probe.
Repo: /Users/unclecode/devs/modelprint. The page is GitHub Pages from
main. The backend is a Cloudflare Worker in worker/, released separately.
Ask the user which kind of release this is, unless they already said:
Never guess the number. Read VERSION for the current one.
cd /Users/unclecode/devs/modelprint
git checkout main && git pull -q origin main
git status --short # must be empty of surprisesIf uncommitted work exists, STOP and ask. Committing someone's half-finished work into a release is worse than a delayed release.
node probe-check.mjs # free, must end "0 failed"
node probe-bench.mjs # live, costs money, read the HEALTH blockprobe-check failing stops the release. In probe-bench, read:
crashed: must be noneunstable (fluctuate on same model): must be noneA probe that fluctuates creates false differences in the table. That is a release blocker, not a note.
node bump.mjs 0.8.0 # writes VERSION and stamps index.htmlThe script fails loudly if it cannot stamp both places. Never edit the version by hand.
Add a section at the top of CHANGELOG.md, under the header:
## [0.8.0] - YYYY-MM-DD
### Added
- What a user can now do, in plain words. Real numbers.
### Fixed
- What was wrong, and what it did to the user. Not the file name.
### Security
- Only when a real security property changed.Rules for the text:
by [@name](https://github.com/name) (#3).git add -A
git commit -m "release 0.8.0
<the changelog entry body, plain text>"
git tag -a v0.8.0 -m "0.8.0"
git push origin main
git push origin v0.8.0The tag is annotated (-a), never lightweight.
gh release create v0.8.0 \
--title "0.8.0 - <three or four words>" \
--notes "<the changelog entry, markdown>"Add --latest. The notes are the same words as the changelog, so a reader
never sees two versions of the truth.
GitHub Pages takes about a minute. Poll until the live page reports the new version, then confirm the engine really changed:
for i in $(seq 1 12); do
LIVE=$(curl -s https://modelprint.ai/index.html | grep -o 'v0\.[0-9.]*' | head -1)
[ "$LIVE" = "v0.8.0" ] && break
sleep 10
done
echo "live: $LIVE"
curl -s "https://modelprint.ai/probes/index.js" | grep -c '\.js"'If the live version does not match after two minutes, say so plainly. Do not report a release as done on hope.
worker/ changedcd worker && npx wrangler deploy
curl -s https://modelprint-api.unclecode.workers.dev/proxy/statusThe worker version is not the page version. Say which one you deployed.
Report, short:
bump.mjs.CONTRIBUTORS.md, and
in the release notes.CONTRIBUTING.md passed for it: security (no direct network access) and
determinism (same model, same value).If the release is worth telling people about, say so, but do not post anything. Posting is the user's decision and needs his exact words.
© unclecode, MIT. 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 unclecode/modelprint.
Open the folder on GitHubat commit fa11a85
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 skillunclecode/modelprint | 127 | — | ~1.2k | Automated safety check: Pass | MIT | |
| Verdaccio Pull Request Workflowverdaccio/verdaccio | 18k | — | ~1.9k | Automated safety check: Pass | MIT | |
| Plannotator Release Preparationbacknotprop/plannotator | 9.2k | — | ~4.6k | Automated safety check: Pass | Apache-2.0 | |
| Ansible Pull Request Reviewansible/ansible | 71k | — | ~570 | Automated safety check: Pass | GPL-3.0 | |
| Plane Release Notes Generatormakeplane/plane | 60k | — | ~2.5k | Automated safety check: Pass | AGPL-3.0 | |
| Pair GitHub PRNVIDIA/Personal-AI-Router | 1.6k | — | ~1.3k | Automated safety check: Pass | Apache-2.0 |
verdaccio/verdaccio
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.
backnotprop/plannotator
Drafts Plannotator release notes with full contributor credit, bumps versions in dependency order, builds, and starts the tag-driven release pipeline, in four reviewed phases.
ansible/ansible
Reviews an Ansible pull request by number, following the steps in the project's CLAUDE.md, with early checks for changelog fragments and tests.
makeplane/plane
Builds categorized release notes for a Plane release pull request from its commits and writes them into the PR description, for both the plane-cloud and plane-ee repos.
NVIDIA/Personal-AI-Router
Fills GitHub pull request descriptions with the required PAIR pair-release-intent:v1 block so the release-intent check passes.
handsontable/handsontable
Decides whether a code change needs a changelog entry and creates the JSON file in .changelogs with the right type, framework and user-facing title.
Works with
Categories
Ship a modelprint release the same way every time - gates, version stamp, changelog, tag, GitHub release, deploy, verify. Release is an agent skill from unclecode/modelprint. Ship a modelprint release the same way every time - gates, version stamp, changelog, tag, GitHub release, deploy, verify.
Release fits situations like: the user says release; after merging pull requests that should reach the public page.
Run `npx skills add unclecode/modelprint --skill release -a claude-code`. Or copy the skill folder (.claude/skills/release in unclecode/modelprint) into .claude/skills/release in your project. Claude Code loads it when a task matches its description.
Run `npx skills add unclecode/modelprint --skill release -a codex`. Or copy the skill folder (.claude/skills/release in unclecode/modelprint) 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 unclecode/modelprint --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 (git, node, curl, gh and npx). Our summary lists: Node.js.
SKILL.md names 3 domains. In commands or code: modelprint.ai, github.com and modelprint-api.unclecode.workers.dev; the agent is likely to contact these when it follows the instructions. 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 MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.2k tokens (SKILL.md is roughly 4.8k 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: Verdaccio Pull Request Workflow (verdaccio/verdaccio, 18k stars), Plannotator Release Preparation (backnotprop/plannotator, 9.2k stars), Ansible Pull Request Review (ansible/ansible, 71k stars) and Plane Release Notes Generator (makeplane/plane, 60k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
unclecode (a GitHub user) maintains it in unclecode/modelprint, which has 127 GitHub stars. The repository was last updated on October 6, 2026.
Source: unclecode/modelprint on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.