bounded-goals
Skill2 starsChanged 46 days agoMITView on GitHub
Writes the success criteria of an optimization or evaluation loop as one maximized metric, relaxable bounds on every other metric, and a written trade licence. Use when writing or revising goals.json, acceptance thresholds, benchmark targets, or agent objectives, especially with more than one metric, and when an iteration loop has stalled because every proposed change is rejected for regressing something. Not for running the iterations themselves (use eval-loop).
In this repository22 other files it gives its agents.
- change-asserted-valueSkill
- check-targetSkill
- cluster-failuresSkill
- councilSkill
- enumerate-firstSkill
- eval-loopSkill
- fable-reviewSkill
- gauntlet-loopSkill
- handoffSkill
- kickoffSkill
- promo-videoSkill
- prove-invariantSkill
- refusal-censusSkill
- reuse-before-rerunSkill
- run-evalSkill
- run-gateSkill
- scientific-posterSkill
- spy-siteSkill
- test-gateSkill
- understand-before-mergeSkill
- verify-sourceSkill
- watching-background-jobsSkill
The file
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 5 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 42
One maximand: If two things both feel primary, the project has not decided what it is for.
- Distinctive: line 44
Bounds are dials, not walls: Write the relaxation policy at the same time as the bound, or it will be treated as sacred at the worst moment.
- Distinctive: line 64
Check whether a bound is doing the blocking, and whether it is relaxable.
- Distinctive: line 65
Check whether the metric can still move at all — is there headroom, or is the remaining failure mass a class the current architecture …
- Distinctive: line 67
If neither, hand off: a reviewer defines a new objective, and a fresh context implements it.
≈ “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
bounded-goals
The rule
Maximize one metric. Give every other metric an explicitly relaxable bound, plus a written trade licence.
A conjunction of soft objectives — maximize A and minimize B and minimize C — is an implicit veto on every Pareto move: it forbids progress.
Why this exists
A naming-system project documented the failure directly: under the unbounded multi-objective form, the agent reverted any change that regressed any metric, and froze. Rewritten as one maximized metric with relaxable bounds, the runtime ceiling was deliberately loosened 3.7 → 5.0 → 6.2 → 20.6 ms to let accuracy move, then optimized back down to 10.2 ms at the end. Accuracy went 95.0% → 97.8% while mean name length fell 98.2 → 83.0 characters.
A sibling project's criteria read G1 >= baseline AND G2 >= 0.45 AND G3 >= 0.95, with no
trade licence: the freeze configuration. Bounded: maximize G1; G2 >= 0.45, relaxable to 0.40
if G1 gains a point; G3 >= 0.95, fixed.
The contract (all five fields required; the layout is a default)
maximize: ONE metric — the thing the project is actually for
bounds: every other metric, each with a bound (floor or ceiling) marked relaxable or not
licence: plain sentences — "may regress X to Y in order to move Z"
held-out: a split the loop never reads; run by a human at intervals
stamp: derived:true on subset runs, so a subset number can never be
quoted as a headline resultRules of thumb
- One maximand. If two things both feel primary, the project has not decided what it is for. Decide before optimizing.
- Bounds are dials, not walls. Write the relaxation policy at the same time as the bound, or it will be treated as sacred at the worst moment.
- Add a proxy bound for quality that the maximand cannot see. Output length, runtime per item, abstention rate. Cheap, and it catches degenerate wins.
- Never rank on the proxy. Bounding output length is healthy; selecting candidates by length produces truncated garbage that still passes the oracle. Bound it, do not optimize it.
- Check the bounds can all hold before the loop starts. The baseline must meet every fixed bound, and no two bounds may forbid every move (coverage floor + byte-identical output).
- Keep the held-out set genuinely held out. Once it has informed a decision, it is a dev
set. Optional guard: the opt-in
guard-holdouthook (hooks/guard-holdout.pyin this plugin; setup inhooks/README.md) stops a held-out run until the user has agreed. - Diagnostics ride free. One expensive pass should emit status, outputs, proxies, telemetry and failures together, so a new question costs nothing.
When the loop stalls
A plateau is a signal about the objective, not the implementation. Before trying harder:
- Check whether a bound is doing the blocking, and whether it is relaxable.
- Check whether the metric can still move at all — is there headroom, or is the remaining failure mass a class the current architecture cannot express?
- If neither, hand off: a reviewer defines a new objective, and a fresh context implements it. Accumulated context is part of what plateaued.
Red flags
| Thought | Reality |
| "All three metrics must not regress" | You have written a veto, not a goal. |
| "The bound is a hard requirement" | Then say who can relax it, and when. |
| "We improved on the subset" | Subset numbers are not headline numbers. Stamp them. |
| "Accuracy went up on the benchmark we tune against" | Of course it did. What did the held-out set say? |
| "Let's optimize the proxy too" | Proxies are bounds. Optimizing them is Goodhart's law with extra steps. |
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.

