prompt-optimize — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited prompt-optimize (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
An evolutionary optimizer for a prompt (OpenEvolve / AlphaEvolve-style). The artifact is a prompt that feeds the user's system; the feedback signal is a scalar metric printed by the user's own evaluation command. Each iteration proposes one quality-focused edit, re-runs the eval, and keeps the edit only if the metric improves — evolving the prompt toward higher scores. The eval is a black-box oracle the loop runs but never edits, so the optimization tracks what actually matters rather than gaming a number.
Use this when the user has a prompt and a command that scores the system using it, and wants the prompt improved to raise that score. Default to diagnosing the prompt's biggest current weakness each round and applying the one operator that addresses it; if the eval feedback points elsewhere, follow the feedback. Not for authoring a prompt from nothing, tuning weights/hyperparameters, or making a single manual edit with no score to compare against.
Resolve bindings interactively. If loop.run.yaml exists in the working dir, load it, confirm the values in one line, and skip to the loop. Otherwise: on Claude Code (the AskUserQuestion tool is available) infer a likely value for each binding and present it as the recommended option; on other hosts ask each as a quoted plain-text prompt. Then write loop.run.yaml (format: examples/run.example.yaml) and confirm the values before creating any other files.
| binding | meaning | default | how to infer |
|---|---|---|---|
<prompt_file> | the prompt to optimize — the artifact the loop evolves | — | scan the working dir for the prompt/template file the eval reads |
<eval_cmd> | required. Command that scores the current <prompt_file>; prints the metric (see output convention below). Treated as a black box — never edited | — | ask the user; look for eval/score/bench scripts |
<objective> | maximize or minimize, plus one line on what the metric measures | maximize | ask the user |
<target> | optional score at which to stop early | — | ask the user; else leave unbound |
<sandbox_root> | where prompt snapshots + ledger live | ./sandbox | — |
<budget> | max iterations | 10 | — |
<patience> | stop after N consecutive non-improving iterations (plateau) | 3 | — |
Eval output convention. <eval_cmd> must print, on its last line, either a JSON object {"score": <number>, "feedback": "<optional notes/errors>", ...any extra metrics...} or a bare number. Higher is better unless <objective> is minimize. The feedback field, when present, is the richest signal — read it like AlphaEvolve's artifacts side-channel to decide the next edit.
Eval runs in the user's environment. <eval_cmd> may call an inference endpoint or any tooling the user has installed; the loop just shells out and reads the last line. If instead the prompt is executed by you (interactive development with no separate endpoint), first run the current prompt over the user's eval inputs to produce outputs, write them where <eval_cmd> reads, then run <eval_cmd> to score them.
Copy this checklist and tick items off:
<eval_cmd> on <prompt_file>, record its score as the current best, snapshot the prompt.<prompt_file>.<eval_cmd> and read the new score from its last line.<target>, plateau (<patience>), or <budget>.Iteration 0 — baseline. Run <eval_cmd>, record its score as the best, snapshot <prompt_file> to <sandbox_root>/iter0/, and start the history ({iter, edit, score, feedback} per row).
Then, until stop (target, plateau, or budget):
<eval_cmd> feedback, and recent history, name theprompt's single biggest current weakness — the one thing most likely holding the metric back.
One change per iteration, so its effect on the metric is attributable.
<sandbox_root>/iter<N>/, run <eval_cmd>, and read thenew score off the last line.
<objective> (if the eval is stochastic,require a small margin so noise alone does not drive a keep); otherwise revert <prompt_file> to the previous best snapshot. Append {edit, score, feedback} to the history either way.
tweaks — branch from an earlier high-scoring snapshot, or try a bolder restructuring (a different decomposition, a fresh set of examples). Diversity beats grinding the same local hill.
When stopping, restore the best prompt to <prompt_file> and report the score trajectory, which edits moved the metric (and which did not), and the final prompt.
<sandbox_root>/ledger.tsv, tab-separated, never commas in the text. Header:
iter score status editstatus ∈ {baseline, keep, revert}. Example (metric = task accuracy, maximize):
iter score status edit
0 0.42 baseline original prompt
1 0.61 keep specificity: define each output label and the exact output format
2 0.61 revert examples: add 3 few-shot demos — no metric gain
3 0.78 keep context: add the domain rules the task assumes but never statesReport the best iteration, not necessarily the last.
<eval_cmd>, its data, or its scoring — that games thenumber instead of improving the prompt, and the eval is the only ground truth the loop has.
not what is being asked; do not tailor the prompt to exploit eval quirks that would break real use.
<eval_cmd>, not a singlesample, so each score delta is attributable to that one edit.
../ escapes.<target> (if set).<patience> consecutive rounds (every non-improvingiteration counts toward patience; a keep resets it).
<budget> iterations reached.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.