release-sweep
Skill14 starsChanged 4 days agoMITView on GitHub
Cuts the releases that are ready across the philoserf repos, one background agent per repo, after one up-front confirmation of the list. Use when asked to cut, ship or release what is ready, or once release-gate leaves repos ready to release. Tags and GitHub releases are public, so the list is confirmed once before anything ships.
In this repository12 other files it gives its agents.
- .claude/CLAUDE.mdCLAUDE.md
- CLAUDE.mdCLAUDE.md
- cc-release-reviewSkill
- verifySkill
- assisted-logSkill
- code-theorySkill
- code-walkthroughSkill
- downloads-triageSkill
- editorSkill
- release-gateSkill
- release-shipSkill
- rexSkill
The file
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 3 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 36
When the check fails, stop.
- Very specific: line 40
Stop if sync reports a repo as diverged or errored.
- Distinctive: line 54
An open milestone named for a version: use that.
- Distinctive: line 55
No such milestone: use the next semver step for what changed.
- Very specific: line 62
Run release-plan.sh <version> for each candidate and note prerelease and deploy_cmd.
- Very specific: line 91
Act on a fleet-wide hazard: When one agent finds a gap the others are about to hit (a beta about to be published as "Latest", say), warn …
- Distinctive: line 100
When every agent has reported:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Release sweep
A release is a public step the user takes on purpose, so this skill confirms the list once before anything ships.
One repo-releaser agent per repo cuts its release with release-ship. You find what is
ready, get the list confirmed once, launch the agents, and clean up afterwards.
Run it on almanac, from a session started in ~/source/philoserf. almanac is the
always-on host, and the agents report back over an hour or more. Starting anywhere else,
such as ~/notes, roots the language server outside the repos, and it then sends false
"module not in workspace" and undefined: errors about files that compile.
1. Find what is ready
First, confirm the session is a workspace session. The session's primary working
directory, as your environment states it, must be ~/source/philoserf. Run this block
before any other command, so the shell is still where the session started:
[[ $PWD == "$HOME/source/philoserf" ]] || { echo "release-sweep: this session started in $PWD, not ~/source/philoserf"; exit 1; }
cd ~/source/philoserf && task syncWhen the check fails, stop. Ask with AskUserQuestion whether the sweep was meant for
this session at all, and run nothing further until the answer comes. A sweep invoked
from inside one repo is usually a slip, and it reaches every repo in the workspace.
Stop if sync reports a repo as diverged or errored. With arguments, consider only those
repos; repo@version fixes the version.
Otherwise, a repo is a candidate when:
release-check.shexits 3 with 0 FAIL and 0 WARN,- its
Changes since last tagrow shows at least one commit, and - it is not one of the unversioned sites named in
~/source/philoserf/CLAUDE.md, which release by deploying, not tagging.
Skip obsidian-vault-changelog, which CLAUDE.md excludes from all workspace work.
Propose a version for each candidate.
- An open milestone named for a version: use that.
- No such milestone: use the next semver step for what changed. A patch for tooling, docs
and dependencies. A minor for a behavior change, including one that moves values callers
may have pinned; a major for a changed exported signature, a removed field, or an altered
output contract. A prerelease line continues its suffix:
-beta.3becomes-beta.4. - A repo versioned only by tags (obsidian-starter): pass the version explicitly.
Run release-plan.sh <version> for each candidate and note prerelease and deploy_cmd.
2. Confirm once
Present the list as a table: repo, current release, proposed version, prerelease or not,
deploys or not, and the commits since the last tag in one line. Ask with AskUserQuestion
whether to cut them all, and offer the chance to drop a repo or change a version.
This is the only question before anything ships, and it is a real one: wait for it. Tags and releases are public and permanent. Everything after this answer is pre-approved, and the agents will not ask again.
3. Launch
One Agent call per confirmed repo, all in one message, with
subagent_type: "repo-releaser"; agents run in the background on their own. The prompt names REPO and
VERSION, plus anything repo-specific:
- the tag prefix
- the version source
- that it deploys
- any exception the user granted, such as writing dusk's CHANGELOG
- evidence the CHANGELOG should record, such as a live check the user ran
4. While agents report
Relay each report as it lands, briefly. Assume the user is not watching. A relay is a heads-up; nothing waits on an answer.
Act on a fleet-wide hazard. When one agent finds a gap the others are about to hit (a
beta about to be published as "Latest", say), warn the running agents with SendMessage.
Then fix the skill that caused it, so the next run doesn't need the warning.
Never run a command an agent was blocked from running. A blocked step goes to the user as the exact commands that remain.
5. Close out
When every agent has reported:
- List what didn't finish, with each one's remaining commands, ready to paste. A release the user then finishes by hand still needs the cleanup below.
- Verify each release, whoever finished it:
- Release:
gh release view <tag>shows the right prerelease flag. - Milestone: deleted, if all of its issues are closed.
- Prep PR: merged.
- Local branch: none left behind.
- Checkout: clean and level with origin.
- Release:
- Report one line per repo: tag, release link, and deployed or not. Then offer a co-log line for today's daily note.
Do not use when
- A repo has not passed
release-gate— run that first. This skill only ships what the gate already left ready. - You are cutting one release and want to drive it yourself — run
/release-shipin that repo.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

