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 skills add IsaiaScope/ai --skill iso-pushgit clone --depth 1 https://github.com/IsaiaScope/aiWrote 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/isaiascope/ai/iso-push)<a href="https://agentmods.dev/skills/isaiascope/ai/iso-push"><img src="https://agentmods.dev/badge/skills/isaiascope/ai/iso-push/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/isaiascope/ai/iso-push"><img src="https://agentmods.dev/badge/skills/isaiascope/ai/iso-push.svg" alt="Reviewed on agentmods" width="80" 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.1 | $0.00135 | $0.09388 |
| Opus 5.5 | $0.00054 | $0.03755 |
| Sonnet 5.5 | $0.00027 | $0.01878 |
| Haiku 4.5 | $0.00014 | $0.00939 |
Grade A, and why
iso-push 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 6d 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 — 748 lines — stays where its author put it; the contents beside it link to each section on GitHub.
iso-push
Push what is committed, open a PR a person can read, and promote it through the environment branches — leaving a single linear history and rewriting nothing that has been published without asking first.
Invocation: /iso-push [--pr] [--cascade test|prod] [--no-merge] [--stay].
| flag | effect |
|---|---|
| (none) | push the current branch, nothing else |
--pr |
push, open a PR against dev, integrate it once CI is green, then cut the release |
--cascade test |
promote dev → test |
--cascade prod |
promote dev → test → prod |
--no-merge |
open the PRs and stop; integrate nothing |
--stay |
stay on the feature branch after a landing instead of returning to the base |
--cascade works with or without --pr. Without it, dev is promoted exactly
as it currently stands.
The work is finished at dev. The landing there is where the ticket closes,
the version is cut and tagged, and you are put back on dev. test and prod
are a cascade of that same commit, run once dev has proved itself; they cut
nothing and close nothing.
A pure cascade — --cascade with no --pr — runs from the base, not from a
feature branch. It has no branch to land: it reads only origin/* refs and
promotes dev as it is. That is also where step 9 leaves you at the end of the
previous run, so the two compose. With --pr the opposite holds — there is a
branch to land, and dev cannot open a PR into itself.
| you are on | --cascade |
--cascade --pr |
|---|---|---|
dev / develop |
✅ the right place | ❌ refused, or rescued¹ |
| a feature branch | ❌ refused, "add --pr" |
✅ the right place |
test / prod |
❌ refused, or rescued¹ | ❌ refused, or rescued¹ |
¹ A protected branch carrying its own commits is rescued, not refused.
A commit made while standing on dev, test or prod is stranded: iso-push
cannot push those branches, and a cascade promotes origin/* and so never sees
it. The only way out used to be a hand-typed git reset --hard at the end of a
working session, which is the worst possible moment to improvise one.
So preflight names a branch after the work, moves the commits onto it, resets
the protected branch back to its remote, and leaves you on the new branch. The
run then continues normally — preflight echoes the new branch, so every
later step sees it.
The name comes from the oldest commit above the base, read as a conventional subject — the one that started the work, not whatever you happened to commit last:
| subject | branch |
|---|---|
feat(wiki)!: add note and supersede, delete destroys bytes |
feat/wiki-add-note-and-supersede-delete-destroys |
fix: reject tokens with a future iat |
fix/reject-tokens-with-a-future-iat |
random subject with no type at all |
chore/random-subject-with-no-type-at-all |
An unrecognised type becomes chore/, which is what the version bump would
treat it as anyway — the branch name agrees with what the release will do
rather than guessing something prettier. The slug is cut at a word boundary at
48 characters, never mid-word.
On test or prod this is also the documented remedy for an environment
defect: the stray commit lands on a feature branch whose base is dev, which
is exactly where step 1 says to get it.
Two states are still refused:
- Dirty tree. The move ends in
git reset --hard, which would discard uncommitted work. Commit or stash first. - The target branch already exists. Check it out and merge, or rename it.
The branch is created before the reset, so every commit is reachable from a second ref before anything moves. A failure between the two steps loses nothing.
A protected branch with no commits of its own is refused exactly as before — there is nothing to move, and the invocation is simply wrong.
After anything lands, you end up on the base. A merged feature branch is a
dead lane — GitHub will never move it again, so a commit made there starts a
second head and git pull fetches a ref frozen at the merge. --stay keeps you
on it, for the case where the branch is a base for follow-up work you are about
to push again.
What ships with it
4 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
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.
- 6d ago Changed · +31 lines · +17 tokens per session 62e5dcf41e33
- 1mo ago Changed · +7 lines fcf690b084a7
- 1mo ago First seen · 710 lines · 118 tokens per session scan A b2c6c9a63db0
iso-push is a skill published in the GitHub repository IsaiaScope/ai (2 stars, last pushed 7d ago), licensed MIT. It adds 135 tokens to every session and 9,388 once invoked, about $0.0005 per session on Opus 5.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-31.
Other skills, from other repositories
release-testing-workflow
Use this skill when you need release-phase QA workflow from T-14 planning to go/no-go and post-release monitoring; triggers include release testing workflow and go/no-go QA.
hermes-mr-watch
Use when adding GitLab MRs to the Hermes watcher on ssh-vhs, editing or redeploying watchgitlabmrfindings.py, diagnosing missed/duplicate MR status messages in Telegram, or verifying the Hermes no-agent cron.
git-workflow-and-versioning
Structures git workflow practices. Use when making any code change. Use when committing, branching, resolving conflicts, splitting uncommitted work in a messy working tree into clean atomic commits, opening or reviewing a pull request (PR), pushing to a remote, or when you need to organize work across multiple…
comet-archive
A workflow for the fifth stage of Comet Classic: archiving a completed change, merging its specification updates, and finishing the branch. It uses Comet commands and a fixed layout for tracking the change.
finishing-a-development-branch
A process for finishing a completed development branch. A branch is a separate line of code changes that can later be merged or submitted as a pull request.
skillshare-release
Prepare and review skillshare releases using the Release Please PR, verify the proposed version and changelog, inspect draft assets, and publish through the manual Publish Release workflow when explicitly authorized. Use when the user says "release", "prepare release", "cut a release", or asks to publish a new…