Prepare Release
neetly/figma-agent-linux
Prepare a new figma-agent-linux release by updating the package version, changelog, and release links, then validating the changes.
Cut a new versioned release of bpftop — pick the version, open a version-bump PR, sign-tag the merge commit on main, and draft GitHub release notes in the project's established format.
$ npx skills add jfernandez/bpftop --skill cut-release -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jfernandez/bpftop cut-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/jfernandez/bpftop.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/cut-release .claude/skills/cut-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 "cut-release" agent skill from https://github.com/jfernandez/bpftop/tree/main/.claude/skills/cut-release into .claude/skills/cut-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cut-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/jfernandez/bpftop/tree/main/.claude/skills/cut-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 jfernandez/bpftop --skill cut-release -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jfernandez/bpftop cut-release --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jfernandez/bpftop.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/cut-release .agents/skills/cut-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 "cut-release" agent skill from https://github.com/jfernandez/bpftop/tree/main/.claude/skills/cut-release into .agents/skills/cut-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cut-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 jfernandez/bpftop --skill cut-release -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jfernandez/bpftop cut-release --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jfernandez/bpftop.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/cut-release .cursor/skills/cut-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 "cut-release" agent skill from https://github.com/jfernandez/bpftop/tree/main/.claude/skills/cut-release into .cursor/skills/cut-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cut-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/jfernandez/bpftop.git --path .claude/skills/cut-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 jfernandez/bpftop --skill cut-release -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jfernandez/bpftop cut-release --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jfernandez/bpftop.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/cut-release .gemini/skills/cut-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 "cut-release" agent skill from https://github.com/jfernandez/bpftop/tree/main/.claude/skills/cut-release into .gemini/skills/cut-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cut-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 jfernandez/bpftop cut-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 jfernandez/bpftop --skill cut-release -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/jfernandez/bpftop.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/cut-release .github/skills/cut-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 "cut-release" agent skill from https://github.com/jfernandez/bpftop/tree/main/.claude/skills/cut-release into .github/skills/cut-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cut-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 jfernandez/bpftop --skill cut-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 jfernandez/bpftop cut-release --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jfernandez/bpftop.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/cut-release .opencode/skills/cut-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 "cut-release" agent skill from https://github.com/jfernandez/bpftop/tree/main/.claude/skills/cut-release into .opencode/skills/cut-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cut-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.
cut-releaseCut a new versioned release of bpftop — pick the version, open a version-bump PR, sign-tag the merge commit on main, and draft GitHub release notes in the project's established format.
Cut Release is an agent skill from jfernandez/bpftop. Cut a new versioned release of bpftop — pick the version, open a version-bump PR, sign-tag the merge commit on main, and draft GitHub release notes in the project's established format. Use whenever the user says "cut a release", "release X.Y.Z", "ship X.Y.Z", "time to release", "tag a new version", "bump to X.Y.Z", "let's do a release", or otherwise initiates a release. Trigger even when the user only asks for one step ("what version should we bump to?", "make the release PR", "tag it") — load this skill so the…
Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including scripts and assets (for example `assets/release-notes-example-v0.9.0.md`, `assets/release-notes-template.md` and `scripts/contributors.sh`).
It sits in Development, covering Changelog and release notes. It works with GitHub and Linux. The repository describes itself as: bpftop provides a dynamic real-time view of running eBPF programs. It displays the average runtime, events per second, and estimated total CPU % for each program. The licence is Apache-2.0.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 5a67ec0. 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.
Ships 1 file in scripts/ (Shell), which the agent can run.
Shell commands in SKILL.md call:
gitghcargoFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git and gh, 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.
Cut Release loads about 2k tokens when it runs. Until then it costs about 152 tokens; SKILL.md has 882 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); the scripts in this folder are not scanned.
The full file from jfernandez/bpftop at commit 5a67ec0, republished under its Apache-2.0 licence (© jfernandez). 882 words, ~1,993 tokens.
.claude/skills/cut-release/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.This is the bpftop release runbook. Five steps: pick the version, open the bump PR, wait for merge, push a signed tag, fill in the release notes.
Tags and releases are user-visible and permanent. Confirm the version, the tag SHA, and the release notes content with the user before pushing the tag and before publishing the draft.
git log $(git describe --tags --abbrev=0)..HEAD --onelinebpftop is pre-1.0. Apply semver:
0.x.y → 0.x.(y+1)) — only fixes, refactors, dep bumps0.x → 0.(x+1)) — any new user-facing feature, or any breaking change to CLI flags / TUI keybindings / output formatCI churn, AI-assistant config tweaks, and dependabot bumps that don't change runtime behavior are not on their own a reason to cut a release.
Tell the user which commits drove the decision and let them confirm or override.
The signal is UX/API stability, not feature completeness. Recommend 1.0 once the user is willing to commit that the next release won't break CLI flags or TUI keybindings without a deprecation cycle, the feature surface is additive (no "initial X" support, no churning subsystems), and they'd be comfortable with a distro packaging it. When something just landed in the prior release labeled "initial", recommend one more minor first.
git checkout -b release/X.Y.ZEdit Cargo.toml:
[package]
name = "bpftop"
version = "X.Y.Z"Refresh the lockfile:
cargo update -p bpftop --precise X.Y.ZThe diff should be exactly two lines: one in Cargo.toml, one in Cargo.lock. Verify before committing.
Commit format is strict and minimal — subject only, no body, with a Signed-off-by trailer:
git commit -s -m "chore: bump version to X.Y.Z"No commit body. Release notes live on the GitHub release page, not in the bump commit. This is a project convention — past releases (e.g. v0.8.0 commit aab2d53) follow this minimal pattern, and duplicating context here is noise.
Push and open the PR with an empty body:
git push -u origin release/X.Y.Z
gh pr create --title "chore: bump version to X.Y.Z" --body ""Do not merge the PR. Wait for the user to merge it.
gh pr view <N> --json state,mergeCommit,statusCheckRollupLook for state: MERGED and all checks SUCCESS (build_and_test on x86_64 and aarch64). Capture mergeCommit.oid — that's what gets tagged.
git checkout main && git pull --ff-only origin main
git tag -s vX.Y.Z -m "vX.Y.Z" <merge-commit-sha>
git tag -v vX.Y.Z
git push origin vX.Y.ZThe tag message body is the bare string vX.Y.Z — no "Release ..." prefix, no prose. Matches the v0.8.0 style.
After pushing, CI's create_release job auto-creates a draft release with the cross-compiled binaries (bpftop-aarch64-unknown-linux-gnu, bpftop-x86_64-unknown-linux-gnu) attached. Wait a few seconds, then verify:
gh release list --limit 3
gh release view vX.Y.ZYou'll edit this draft in step 5. Don't gh release create a second one.
The template lives at assets/release-notes-template.md and a worked example for v0.9.0 is at assets/release-notes-example-v0.9.0.md. Read both before drafting — the example is the single best reference for tone, grouping, and formatting.
The structure, in order:
## What's New — one short prose paragraph (2-3 sentences) summarizing the headline changes### Features — feat: commits, new user-facing functionality### Fixes — fix: commits### Maintenance — chore:, refactor:, ci:, dep bumps. Drop internal AI-assistant / Claude-workflow churn — invisible to users, clutters the changelog.## New Contributors — first-timers, one line each## Contributors — alphabetical Display Name @login, one per linehttps://github.com/jfernandez/bpftop/compare/vPREV...vX.Y.ZEach Features/Fixes/Maintenance bullet ends with (#N) referencing its PR. No by @author inline — attribution lives in the dedicated Contributors section. Direct-to-main commits with no PR don't get a number.
Run the bundled script. It encodes the project's exclusion and sort rules, and resolves first-timer status correctly via PR history:
.claude/skills/cut-release/scripts/contributors.sh vPREVOutput is two ready-to-paste markdown sections.
The script enforces:
git log --pretty=%an) misses people whose local git config user.name has changed since their first contribution — the same person can appear under different names across years. The login is stable.dependabot[bot] or app/dependabot; the script filters both forms.jfernandez) included. This is a deliberate choice — the user wants their own name in the Contributors list. The convention in some projects is to omit the publisher; bpftop chooses to include them.gh release edit vX.Y.Z --notes "$(cat <<'EOF'
...notes...
EOF
)"Tell the user the URL of the draft and wait for review. Publish only after they confirm:
gh release edit vX.Y.Z --draft=falsegpg --armor --export <keyid>. Past commits stay verified once re-uploaded.contributors.sh script — don't eyeball it from git log.git commit --amend and force-push the branch before merging. Subject only + sign-off, empty PR body.git checkout main && git pull --ff-only before tagging, then tag the merge commit by SHA captured from gh pr view.gh release edit vX.Y.Z to populate it; never gh release create.If the user says "just tag it" or "just draft the notes", do only that step. Still confirm version / tag SHA / notes content before any irreversible action (push, publish).
.claude/skills/cut-release/
├── SKILL.md (this file — workflow)
├── assets/
│ ├── release-notes-template.md (literal template with placeholders)
│ └── release-notes-example-v0.9.0.md (worked example — best reference)
└── scripts/
└── contributors.sh (resolves Contributors + New Contributors)© jfernandez, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 3 other files (scripts, assets) in .claude/skills/cut-release of jfernandez/bpftop.
Open the folder on GitHubat commit 5a67ec0
Cut 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 |
|---|---|---|---|---|---|---|
| Cut Release this skilljfernandez/bpftop | 2.7k | — | ~2k | Automated safety check: Pass | Apache-2.0 | |
| Prepare Releaseneetly/figma-agent-linux | 395 | — | ~833 | Automated safety check: Pass | MIT | |
| Release NotesMikalaiBarysevich/CleverSwitch | 116 | — | ~975 | Automated safety check: Pass | GPL-3.0 | |
| Releasemqtt-viewer/mqtt-viewer | 133 | — | ~1.8k | Automated safety check: Pass | GPL-3.0 | |
| Kernel Watch Triageantoinecellerier/speaker-tuning-to-easyeffects | 142 | — | ~2.6k | Automated safety check: Pass | MIT | |
| Releasing MarchatCod-e-Codes/marchat | 137 | — | ~801 | Automated safety check: Pass | MIT |
neetly/figma-agent-linux
Prepare a new figma-agent-linux release by updating the package version, changelog, and release links, then validating the changes.
MikalaiBarysevich/CleverSwitch
Generate GitHub release notes for unreleased CleverSwitch tags in the established repo format.
mqtt-viewer/mqtt-viewer
Publish a MQTT Viewer release end to end. An agent skill from mqtt-viewer/mqtt-viewer.
antoinecellerier/speaker-tuning-to-easyeffects
Guides triaging a kernel-sound-watch hit comment on the "Kernel sound-tree watch" issue (40) — the weekly workflow's per-tag report of .github/kernel-watchlist.txt grep hits against a new…
Cod-e-Codes/marchat
Prepares marchat releases: version bumps, CHANGELOG, packaging checksums, GitHub Actions release workflow, and Docker tags.
TriliumNext/Trilium
A skill your agent uses when cutting, preparing, or debugging a Trilium release — bumping the monorepo version, tagging, or diagnosing a failed "Release" workflow run.
Categories
Cut a new versioned release of bpftop — pick the version, open a version-bump PR, sign-tag the merge commit on main, and draft GitHub release notes in the project's established format. Cut Release is an agent skill from jfernandez/bpftop. Cut a new versioned release of bpftop — pick the version, open a version-bump PR, sign-tag the merge commit on main, and draft GitHub release notes in the project's established format.
Cut Release fits situations like: the user says cut a release; time to release; tag a new version; lets do a release.
Run `npx skills add jfernandez/bpftop --skill cut-release -a claude-code`. Or copy the skill folder (.claude/skills/cut-release in jfernandez/bpftop) into .claude/skills/cut-release in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jfernandez/bpftop --skill cut-release -a codex`. Or copy the skill folder (.claude/skills/cut-release in jfernandez/bpftop) into .agents/skills/cut-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 jfernandez/bpftop --skill cut-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/cut-release, .gemini/skills/cut-release, .github/skills/cut-release and .opencode/skills/cut-release in your project.
Going by SKILL.md and its folder, Cut Release needs a shell for the scripts in its folder and the command-line tools its instructions call (git, gh and cargo). Our summary lists: A Bash shell.
SKILL.md contains no URLs. Its commands use git and gh, 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Cut Release is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2k tokens (SKILL.md is roughly 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 Cut Release: Prepare Release (neetly/figma-agent-linux, 395 stars), Release Notes (MikalaiBarysevich/CleverSwitch, 116 stars), Release (mqtt-viewer/mqtt-viewer, 133 stars) and Kernel Watch Triage (antoinecellerier/speaker-tuning-to-easyeffects, 142 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
jfernandez (a GitHub user) maintains it in jfernandez/bpftop, which has 2,706 GitHub stars. The repository was last updated on September 1, 2026.
Source: jfernandez/bpftop on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.