Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/lukas-grigis/ralphctl/releasenpx skills add lukas-grigis/ralphctl --skill releasegit clone --depth 1 https://github.com/lukas-grigis/ralphctlWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/lukas-grigis/ralphctl/release)<a href="https://agentmods.dev/skills/lukas-grigis/ralphctl/release"><img src="https://agentmods.dev/badge/skills/lukas-grigis/ralphctl/release.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00006 | $0.02303 |
| Opus 5 | $0.00003 | $0.01151 |
| Sonnet 5 | $0.00001 | $0.00461 |
| Haiku 4.5 | $0.00001 | $0.00230 |
Grade A, and why
release scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 183 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Release
End-to-end release flow for lukas-grigis/ralphctl. Mirrors the established release pattern:
branch → bump → changelog → PR → CI → merge → tag → workflow.
Arg
<version>— semver, novprefix (e.g.0.4.5,1.0.0-rc.1). Reject anything that doesn't match^\d+\.\d+\.\d+(-[A-Za-z0-9.-]+)?$.
Pre-flight (stop on any failure — don't try to recover)
git rev-parse --abbrev-ref HEAD # must be `main`
[ -z "$(git status --porcelain)" ] # working tree clean
git fetch origin && git pull --ff-only origin main
node -p "require('./package.json').version" # must be < <version>
If any check fails, surface the exact problem and stop. Don't stash, don't switch branches, don't auto-fix — the user wants to know.
## [Unreleased] auto-draft
Check whether ## [Unreleased] has content. Grab the body between that heading and the next ## [ heading:
awk '/^## \[Unreleased\]/{flag=1;next} /^## \[/{flag=0} flag' CHANGELOG.md | sed '/^$/d'
If empty, auto-draft entries from the commit range since the last tag, skipping contributor-side tooling that
isn't shipped to npm (.claude/**, .github/**, CHANGELOG.md, CLAUDE.md):
LAST_TAG="$(git describe --tags --abbrev=0)"
git log --no-merges --pretty='- %s' "${LAST_TAG}..HEAD" -- \
':!.claude' ':!.github' ':!CHANGELOG.md' ':!CLAUDE.md'
Group the surviving commit subjects by conventional-commit prefix into ### Added (feat:), ### Fixed (fix:),
### Changed (refactor: / perf: / user-facing chore:). Write the result under ## [Unreleased] in
CHANGELOG.md (edit only — don't commit yet; the release commit in step 5 picks it up).
If the filtered git log is also empty, there's nothing user-facing to release — stop and tell the user. Don't
promote an empty section; release.yml hard-fails on a missing or empty ## [<version>] section (there is no
fallback), so the workflow would die after the tag is already public.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 3d ago First seen · 183 lines · 6 tokens per session scan A 23f829c74bab
release is a skill published in the GitHub repository lukas-grigis/ralphctl (23 stars, last pushed 3d ago), licensed MIT. It adds 6 tokens to every session and 2,303 once invoked, about $0.0000 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
release-swift
Cut a release of OpenUsage (Swift menu-bar app): pick a version, generate a categorized changelog, tag from main, and publish the GitHub Release with notes. Use to ship an Early Access beta or a stable release.
macos-packaging-notarization
Prepare macOS packaging and notarization workflows. Use when archiving apps, validating bundles, or explaining distribution-only failures.
release
Release a new version of the DevoxxGenie IntelliJ plugin — prompt for the target version, bump it in the build files, write a curated CHANGELOG.md entry and plugin.xml change-notes from the git/PR history since the last tag, build to verify, then commit, tag, and publish a matching GitHub release. Use this whenever…
winui-packaging
MSIX packaging, code signing, and distribution for WinUI 3 apps — build for release, certificate generation (winapp cert generate), certificate trust, code signing (winapp sign), self-contained deployment, CI/CD with GitHub Actions, and Microsoft Store submission. Use when preparing for release, creating MSIX…
close-task-commit-push-pr
Close the active backlog task (detected from branch name), commit all changes, push to remote, and open a pull request. Use when the user says "close task and ship it", "close task commit push pr", or invokes /close-task-commit-push-pr.
release-stable
Cut a stable release of Paseo (fresh patch or minor, or promote from beta). Use when the user says "release stable", "ship stable", "promote", "release:patch", "release:minor", "release:promote", or "/release-stable".