Git Workflow and Versioning
addyosmani/agent-skills
Sets git habits for every change: short-lived branches, atomic commits with descriptive messages, clean pull requests, plus versioning, tagging and changelogs for releases.
Open a release pull request from develop to main for SUB/WAVE, and keep develop from drifting behind main.
$ npx skills add perminder-klair/subwave --skill subwave-release-pr -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install perminder-klair/subwave subwave-release-pr --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/perminder-klair/subwave.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/subwave-release-pr .claude/skills/subwave-release-pr && 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 "subwave-release-pr" agent skill from https://github.com/perminder-klair/subwave/tree/develop/.claude/skills/subwave-release-pr into .claude/skills/subwave-release-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "subwave-release-pr", 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/perminder-klair/subwave/tree/develop/.claude/skills/subwave-release-prType 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 perminder-klair/subwave --skill subwave-release-pr -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install perminder-klair/subwave subwave-release-pr --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/perminder-klair/subwave.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/subwave-release-pr .agents/skills/subwave-release-pr && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "subwave-release-pr" agent skill from https://github.com/perminder-klair/subwave/tree/develop/.claude/skills/subwave-release-pr into .agents/skills/subwave-release-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "subwave-release-pr", 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 perminder-klair/subwave --skill subwave-release-pr -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install perminder-klair/subwave subwave-release-pr --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/perminder-klair/subwave.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/subwave-release-pr .cursor/skills/subwave-release-pr && 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 "subwave-release-pr" agent skill from https://github.com/perminder-klair/subwave/tree/develop/.claude/skills/subwave-release-pr into .cursor/skills/subwave-release-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "subwave-release-pr", 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/perminder-klair/subwave.git --path .claude/skills/subwave-release-pr--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 perminder-klair/subwave --skill subwave-release-pr -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install perminder-klair/subwave subwave-release-pr --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/perminder-klair/subwave.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/subwave-release-pr .gemini/skills/subwave-release-pr && 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 "subwave-release-pr" agent skill from https://github.com/perminder-klair/subwave/tree/develop/.claude/skills/subwave-release-pr into .gemini/skills/subwave-release-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "subwave-release-pr", 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 perminder-klair/subwave subwave-release-prInstalls 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 perminder-klair/subwave --skill subwave-release-pr -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/perminder-klair/subwave.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/subwave-release-pr .github/skills/subwave-release-pr && 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 "subwave-release-pr" agent skill from https://github.com/perminder-klair/subwave/tree/develop/.claude/skills/subwave-release-pr into .github/skills/subwave-release-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "subwave-release-pr", 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 perminder-klair/subwave --skill subwave-release-pr -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install perminder-klair/subwave subwave-release-pr --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/perminder-klair/subwave.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/subwave-release-pr .opencode/skills/subwave-release-pr && 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 "subwave-release-pr" agent skill from https://github.com/perminder-klair/subwave/tree/develop/.claude/skills/subwave-release-pr into .opencode/skills/subwave-release-pr/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "subwave-release-pr", 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.
subwave-release-prOpen a release pull request from develop to main for SUB/WAVE, and keep develop from drifting behind main.
Subwave Release PR is an agent skill from perminder-klair/subwave. Open a release pull request from develop to main for SUB/WAVE, and keep develop from drifting behind main. Summarises the commits queued on develop, groups them by conventional-commit type, opens the PR via gh, and — once the release lands — back-merges main → develop so the release-please version bump and CHANGELOG come across. Trigger this skill whenever the user says "create a release PR", "open a release PR to main", "release to main", "cut a release", "ship to main from develop", "open a develop→main PR"…
Its SKILL.md is about 4k 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, Commit messages and Pull requests. It works with Git. The repository describes itself as: Personal internet radio: Agentic AI DJ. The licence is MIT.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit c7c668e. 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:
gitghFrom 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.
Subwave Release PR loads about 4k tokens when it runs. Until then it costs about 225 tokens; SKILL.md has 1,926 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 perminder-klair/subwave at commit c7c668e, republished under its MIT licence (© perminder-klair). 1,926 words, ~4,011 tokens.
.claude/skills/subwave-release-pr/SKILL.md (or your agent's skills folder).Open a pull request from develop → main. Everything after that — version bump, CHANGELOG, tag, GitHub release, image publishing — is handled by the release-please and publish-images workflows once the PR merges. This skill's job is just to surface a clean PR with a useful summary.
A release PR for SUB/WAVE is mechanical but easy to get wrong by hand: forgetting to fetch first, listing merge commits in the body, picking up commits that are actually already on main via a back-merge. The skill encodes the right git plumbing and the body format that matches the project's recent PR history.
It also keeps develop from drifting behind main. After every release, release-please pushes a chore(main): release X.Y.Z version bump (and CHANGELOG entry) directly to main, and that commit — plus the merge-commit bubble from the release PR — never flows back to develop on its own. Left alone, develop steadily falls "N commits behind main" even though it carries every line of real source. This skill detects that gap up front and closes it with a back-merge after the release lands (Step 8).
Run these from the repo root (/home/klair/Projects/subwave). They're cheap, surface state, and let you decide whether to proceed:
git rev-parse --show-toplevel # confirm we're in subwave (or any git repo)
git status --short # any uncommitted work?
git rev-parse --abbrev-ref HEAD # current branch (informational — we work via remote refs)
git fetch origin main develop # MUST run before computing the diff, otherwise stale
git rev-list --left-right --count origin/develop...origin/main # "<ahead> <behind>" — develop relative to mainWhat to do with the output:
git status --short shows uncommitted changes, surface them to the user and ask whether to proceed (the PR is built from origin/develop, so local edits won't be in it — but the user might want to commit them first).git fetch fails (no network, no remote), stop and tell the user. Don't fall back to local refs — the PR base is origin/main and the head is origin/develop, so the comparison must be against fresh remotes.git log --oneline origin/develop..origin/main before reacting. Almost always they're pure release bookkeeping — chore(main): release … version bumps + merge-commit bubbles from prior release PRs — in which case develop is not missing any real source and the release PR is unaffected (a merge commit does a 3-way merge, so main's version bump and CHANGELOG survive). Note the gap to the user, proceed with the PR, and plan to close it with the Step 8 back-merge once this release lands. Only stop and flag it as a real problem if those "behind" commits include feat: / fix: / refactor: work that isn't already on develop — that means a hotfix landed straight on main and should be back-merged into develop before you cut the release, so the release PR doesn't reintroduce or conflict with it.gh pr list --base main --head develop --json number,title,state,urlIf a non-closed PR already exists, do not open a second one. Show the existing PR's URL to the user and ask whether they want to update it (re-push the develop branch is enough — GitHub auto-refreshes the PR), or close it and open a fresh one. Default to "leave it alone, here's the link" unless the user explicitly asks for a new PR.
git log --oneline --no-merges origin/main..origin/develop
git diff --stat origin/main..origin/developThe --no-merges filter is important — merge commits like Merge pull request #N from branch are noise in the PR body. The stat tells you which files / how many lines change, useful for the user to sanity-check scope.
If git log --no-merges origin/main..origin/develop is empty: there is nothing to release. Tell the user, stop. Don't open an empty PR.
Parse the prefix of each commit subject:
| Prefix | Section header in PR body |
|---|---|
feat: / feat(scope): | Features |
fix: / fix(scope): | Bug Fixes |
perf: | Performance |
refactor: | Refactors |
docs: | Documentation |
build: | Build |
revert: | Reverts |
Anything else (chore:, ci:, test:, no prefix, …) | Other |
These mirror the sections release-please will render in CHANGELOG.md on the main side — keeping the PR body in sync makes review easier and the eventual changelog less surprising.
If a feat!: / fix!: / BREAKING CHANGE: commit is present, call it out in the PR body in a one-line Breaking changes note at the top so the reviewer doesn't miss it. (You don't compute a semver — release-please does — but flagging it manually saves the reviewer a scan.)
Keep it under 70 characters. Use this shape:
release: <short theme of the batch>Pick the theme from the dominant work in the diff. A few examples from this project's history:
release: mobile polish, landing fixes, player tactile transportrelease: admin library KPI tweaks + ollama provider swaprelease: controller hardening and onboarding wizardDon't put a version number in the title — release-please owns versioning and would have to either match or override yours. The title is just human signal.
ALWAYS use this exact template:
## Summary
<2–4 sentences describing what's queued on develop and why this is the moment to ship. Mention scope (web-only, controller-only, full stack, infra). Mention if there are migrations, env-var changes, or breaking changes.>
**Breaking changes** (only include this line if a `!`-marked or `BREAKING CHANGE:` commit exists)
- <sha short — one-line description of the break + the migration step>
**<Section header from Step 3>**
- `<sha short>` <commit subject with the prefix kept intact, optionally a one-line elaboration if a single commit is doing a lot>
- ...
(Repeat one section per type that has commits. Skip types with no commits — don't render empty headers.)
## Test plan
- [ ] <verifiable check — prefer behaviour over implementation>
- [ ] ...Notes on the body:
git show <sha> to dig into anything they're unsure about. Keep them in monospace.git log, and paraphrasing breaks that.feat: that's actually a multi-component shipment), add one indented sentence below it explaining the shape. Don't replicate the whole commit body.Prepend this banner to the PR body before opening, so the reviewer can't miss the merge-strategy requirement:
> [!IMPORTANT]
> **Merge with "Create a merge commit"** — not "Squash and merge". Squash collapses the individual `feat:` / `fix:` / `chore:` commits into one `release: …` commit, and release-please then sees no conventional-commit signal and skips the version bump. See [Step 7](#step-7--how-to-merge-this-pr) for the why.Then create the PR:
gh pr create --base main --head develop --title "release: <theme>" --body "$(cat <<'EOF'
<banner above>
<body from Step 5>
EOF
)"Capture the returned URL and report it to the user. Along with the URL, tell them in plain text: "Merge this with a merge commit, not squash — release-please needs the individual conventional commits on main to bump the version."
Release-please runs on main push events and walks the commits added since the last release tag. To bump the version it needs to see at least one conventional commit (feat:, fix:, perf:, refactor:, …) on main.
feat: / fix: / chore: prefix. Release-please sees them and opens its version-bump PR. This is the correct option.release: …). release: is not a recognized conventional type, so release-please considers the commit non-user-facing and skips. Do not use this. This is exactly what happened with PR #118 — release-please ran, found 1 commit, classified it as non-user-facing, and skipped the version bump.If the operator accidentally squash-merges anyway, the recovery is:
git checkout main && git pull
git commit --allow-empty -m "feat: <one-line description of the dominant work>
Re-trigger release-please after squash-merge of #<N> lost conventional-commit prefixes."
git push origin mainThen re-run the release-please workflow (Actions tab → release-please → Run workflow on main).
This is the step that keeps develop in sync. It runs after the release fully lands, not when the release PR is opened.
Timing — wait for the version bump. Two things must be on main before you back-merge:
chore(main): release X.Y.Z PR has also merged — that's the commit carrying the new version + CHANGELOG.Back-merging before (2) lands just copies develop's own commits back onto develop and leaves it behind again the moment the bump merges. Confirm both are in with git fetch origin main && git log --oneline -3 origin/main — you want to see the chore(main): release … commit at or near the tip.
Check whether a back-merge is even needed:
git fetch origin main develop
git rev-list --count origin/develop..origin/main # commits on main not on developIf that count is 0, develop is already up to date — skip the rest of this step. If it's > 0, those are the release-bookkeeping commits; sync them across.
Preferred path — sync PR (no local working tree, mirrors the project's PR-driven flow):
gh pr create --base develop --head main \
--title "chore: back-merge main → develop (vX.Y.Z release bookkeeping)" \
--body "Sync develop with the release-please version bump + CHANGELOG that landed on main after vX.Y.Z. No source changes — keeps develop from drifting behind main."Merge that PR with "Create a merge commit" (same reasoning as Step 7 — preserve the chore(main): release … commit verbatim; never squash). Report the URL to the user. There is normally no conflict — develop never touched the version line or the CHANGELOG entries main added.
Local path (only if the user explicitly wants it done from the working tree — needs confirmation, touches the checkout):
git checkout develop
git pull origin develop
git merge --no-ff origin/main -m "chore: back-merge main → develop (vX.Y.Z release bookkeeping)"
git push origin developIf the merge reports a conflict, stop and surface it — do not resolve release bookkeeping conflicts blind. A conflict here usually means real work landed on main directly (a hotfix), which is exactly the case Step 0 told you to flag.
Offer, don't force. When you open the release PR in Step 6, tell the user the back-merge is the natural follow-up once the release lands, and that they can re-invoke this skill (or just ask) to run Step 8 then. If the user invokes the skill specifically to "sync develop with main" or "develop is behind main," jump straight to this step.
origin/develop, not the local checkout. The local branch could be anywhere. Don't switch branches.gh pr create will fail with a clear error. Surface it and tell the user to run gh auth login — don't try workarounds.feat: commit to main, re-run the release-please workflow).chore(main): release … + merge bubbles, no unmerged feat:/fix:): expected and harmless for the release PR — a merge commit 3-way-merges, so main's version bump survives. Close the gap with the Step 8 back-merge after the release lands; it's hygiene, not a blocker.feat:/fix: hotfix committed straight onto main, not present on develop): stop before opening the release PR. Back-merge main → develop first (Step 8's procedure, run now rather than after), then re-run from Step 2 — otherwise the release PR's diff fights the hotfix.git fetch origin main developgit log / git diff / git status / git rev-list readsgh pr list, gh pr viewgh pr create — the user invoked the skill specifically to open a PR. This covers both the release PR (Step 6) and the Step 8 back-merge sync PR (--base develop --head main); both are PR-open operations, not working-tree changes.gh pr close (only if the user explicitly chose to replace an existing PR)git push of the local develop branch (only if the user opted into Step 6's edge case)git checkout / git merge / git push origin develop) — it mutates the working tree. Prefer the sync-PR path, which needs no confirmation. Only run the local path if the user explicitly asks for it.© perminder-klair, 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/subwave-release-pr of perminder-klair/subwave.
Open the folder on GitHubat commit c7c668e
Subwave Release PR 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 |
|---|---|---|---|---|---|---|
| Subwave Release PR this skillperminder-klair/subwave | 1.4k | — | ~4k | Automated safety check: Pass | MIT | |
| Git Workflow and Versioningaddyosmani/agent-skills | 104k | 2 repos | ~3.5k | Automated safety check: Notes | MIT | |
| Verdaccio Pull Request Workflowverdaccio/verdaccio | 18k | — | ~1.9k | Automated safety check: Pass | MIT | |
| PR Pushicebear0828/codex-proxy | 1.8k | — | ~2.2k | Automated safety check: Notes | Custom licence | |
| PR Pushicebear0828/codex-proxy | 1.8k | — | ~2.3k | Automated safety check: Notes | Custom licence | |
| Shift Commit Rulesshift-editor/shift | 349 | — | ~1.4k | Automated safety check: Notes | Apache-2.0 |
addyosmani/agent-skills
Sets git habits for every change: short-lived branches, atomic commits with descriptive messages, clean pull requests, plus versioning, tagging and changelogs for releases.
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.
icebear0828/codex-proxy
Package the current working changes into a standards-compliant codex-proxy pull request: branch hygiene, commit message linting, CHANGELOG prompt, conventional commit, push, and gh pr create against…
icebear0828/codex-proxy
Package the current working changes into a standards-compliant codex-proxy pull request: branch hygiene, commit message linting, CHANGELOG prompt, conventional commit, push, and gh pr create against…
shift-editor/shift
Rules for writing git commits in the Shift font editor repo: Conventional Commits subjects, user-facing changelog wording, concise subjects and logical commit boundaries.
remix-run/react-router
Polishes pending React Router change files before the versioning scripts run, and decides whether a long-form What's Changed section is warranted.
perminder-klair/subwave
Benchmark and compare LLM models for SUB/WAVE's on-air calls — track picks, segments, listener requests, DJ scripts, banter, and programme beats — in both candidate-pool and agent modes, using…
perminder-klair/subwave
Stage a SUB/WAVE git worktree so the dev stack can run from it, then start it.
perminder-klair/subwave
Start or stop the SUB/WAVE radio stack (a personal internet radio station) in dev or production mode — no builds, no rebuilds, no config rendering.
perminder-klair/subwave
Draft a Discord release announcement for SUB/WAVE from a release PR, tag, or version number.
perminder-klair/subwave
Write a news post for the SUB/WAVE "Dispatches" page, a short human-friendly tutorial about a feature, fix, or release.
perminder-klair/subwave
Drive a controller/admin-UI change end-to-end from a worktree without touching the live station — isolated controller on a spare port + temp STATEDIR, worktree Next dev server, Playwright against…
Works with
Categories
Open a release pull request from develop to main for SUB/WAVE, and keep develop from drifting behind main. Subwave Release PR is an agent skill from perminder-klair/subwave. Open a release pull request from develop to main for SUB/WAVE, and keep develop from drifting behind main.
Subwave Release PR fits situations like: this skill whenever the user says create a release PR; open a release PR to main; release to main; ship to main from develop.
Run `npx skills add perminder-klair/subwave --skill subwave-release-pr -a claude-code`. Or copy the skill folder (.claude/skills/subwave-release-pr in perminder-klair/subwave) into .claude/skills/subwave-release-pr in your project. Claude Code loads it when a task matches its description.
Run `npx skills add perminder-klair/subwave --skill subwave-release-pr -a codex`. Or copy the skill folder (.claude/skills/subwave-release-pr in perminder-klair/subwave) into .agents/skills/subwave-release-pr 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 perminder-klair/subwave --skill subwave-release-pr -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/subwave-release-pr, .gemini/skills/subwave-release-pr, .github/skills/subwave-release-pr and .opencode/skills/subwave-release-pr in your project.
Going by SKILL.md and its folder, Subwave Release PR needs the command-line tools its instructions call (git and gh).
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. Review the folder before installing.
Subwave Release PR is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4k tokens (SKILL.md is roughly 16k 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 Subwave Release PR: Git Workflow and Versioning (addyosmani/agent-skills, 104k stars), Verdaccio Pull Request Workflow (verdaccio/verdaccio, 18k stars), PR Push (icebear0828/codex-proxy, 1.8k stars) and PR Push (icebear0828/codex-proxy, 1.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
perminder-klair (a GitHub user) maintains it in perminder-klair/subwave, which has 1,418 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 9, 2026.
Source: perminder-klair/subwave on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.