Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/iliaal/whetstonenpx agentmods add commands/iliaal/whetstone/skilloptWrote 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/commands/iliaal/whetstone/skillopt)<a href="https://agentmods.dev/commands/iliaal/whetstone/skillopt"><img src="https://agentmods.dev/badge/commands/iliaal/whetstone/skillopt/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/commands/iliaal/whetstone/skillopt"><img src="https://agentmods.dev/badge/commands/iliaal/whetstone/skillopt.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.00040 | $0.01599 |
| Opus 5.5 | $0.00016 | $0.00640 |
| Sonnet 5.5 | $0.00008 | $0.00320 |
| Haiku 4.5 | $0.00004 | $0.00160 |
Grade C, and why
skillopt scanned grade C with 1 finding 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 1mo 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.
Recursive force deletehighDestructive command
rm -rf with a variable or a broad path is one typo away from removing the wrong tree.
hazard that has let a target agent `rm -rf` fixtures and `git commit` in the host How it starts
The opening of the file, as written. The whole thing — 99 lines — stays where its author put it; the contents beside it link to each section on GitHub.
/skillopt — run the SkillOpt process-skill optimizer
Optimize a Whetstone process skill via distillery/skillopt/. Full procedure
and rationale: distillery/skillopt/SKILLOPT-RUNBOOK.md.
Safety — read before --run
The optimizer drives a bypassPermissions target agent with its bash sandbox
disabled. Running it nested inside a Claude Code session is the documented
hazard that has let a target agent rm -rf fixtures and git commit in the host
repo (see the Safety section of distillery/skillopt/SKILLOPT-RUNBOOK.md).
Therefore:
- Default mode does NOT run the agent in-session — it validates + prints the exact command to run in a bare terminal.
--runexecutes in-session only after the rollout's_ensure_unsandboxedunsetsCLAUDE_CODE_COORDINATOR_MODE(confines each nested agent's Bash root to its out-of-repo tmpdir) AND a clean git checkpoint exists. Relative-path escape is closed by design; absolute-path access still is not — use--runonly on your own curated fixtures, and prefer the default.
Arguments
skill(defaultia-debugging) — the process skill to optimize.--fixtures <dir>(advanced) — override the fixture set named in the skill's config; defaults to whateverconfigs/whetstone/<skill>.yamlpoints at.--target <model>(default: the config's weak target) — override the weak target to optimize for; capable models saturatehard, leaving no room.--weight <λ>(default auto) — soft blend weight; must be< 1/n_val.--epochs N(default2).--run— execute in-session (hardened) instead of printing the command.
Procedure (follow exactly)
- Resolve the per-skill config.
CONFIG = distillery/skillopt/configs/whetstone/<skill>.yaml. If it does not exist, the skill is not onboarded — SkillOpt needs four pieces per skill: fixtures, aRUBRICS[<skill>]entry inskillopt/envs/whetstone/rubric.py, this config, and a seed (env.skill_init). Tell the user to onboard it (see the runbook §5) and STOP. Do not fall back todefault.yaml— that silently optimizes ia-debugging's skill against the wrong fixtures. ReadFIXDIRfrom the config'senv.tasks_root(atasks/dir) and setSETDIRto its parent — the fixture-set root, wherebuild_fixtures.pyandsplits/live (not insidetasks/). ConfirmFIXDIR, the siblingsplits/{train,val,test}/items.json, and$SETDIR/build_fixtures.pyexist.
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.
- 1mo ago Changed b3a3864440fa
- 1mo ago First seen · 99 lines · 40 tokens per session scan C 85244f295d5a
skillopt is a command published in the GitHub repository iliaal/whetstone (35 stars, last pushed 2d ago), licensed MIT. It adds 40 tokens to every session and 1,599 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it C with 1 finding (recursive force delete). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other commands, from other repositories
sm-buff
You usually don't run buff directly — run sm sail. sm sail drives the whole PR to green and calls buff watch / triage for you, stopping only when it needs you to act (see /sm-sail). Reach for sm buff here only for surgical work: inspecting a specific failure, or resolving a single review thread when sail has parked on…
sm-scour
Run slop-mop's comprehensive pre-PR sweep for this repository.
review
Multi-agent code review with parallel validation.
speckit.boundedrelay.plan-review
Freeze Claude host findings before an independent BoundedRelay Codex plan review.
speckit.boundedrelay.implementation-review
Run frozen Claude host and independent Codex implementation reviews.
open-pr
Create a pull request for the current branch following the the team's standard PR template.