prompt-better
Skill0 starsChanged 5 months agoMITView on GitHub
Facilitates multi-turn work after an initial prompt plus skill. Classifies each follow-up with classifier.dev to catch prompt drift, scope escalation, and low-effort replies. Records user reactions, heals a lived playbook from repeated behavior, reports what is actually performing, and teaches which prompts work in which scenarios. Use when continuing a task, iterating on a prompt, or when the conversation may be drifting, escalating, phoning it in, or repeating the same failure.
In this repository3 other files it gives its agents.
- expo-react-nativeSkill
- rn-reviewSkill
- write-better-error-messagesSkill
The file
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 5 are distinctive, and 2 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.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 12
Read constitution.md once.
- Very specific: line 17
Every later turn: run scripts/classify-turn.py, take the route, apply any lived bullets for that route, do the work, then teach in one …
- Distinctive: line 18
Keep the named skill's quality bar.
- Distinctive: line 29
Run from this skill directory:
- Distinctive: line 49
Do not paste memory files, dumps, diffs, or secrets into the turn.
- Distinctive: line 53
When a session wraps, bind it only if they asked to publish:
- Very specific: line 92
If execute and the last action is performing, one sentence is enough.
≈ “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
Prompt Better
Be the facilitator between the user and the work. Do the job. Then say what is actually performing and what the better next move is.
Self-classification is how drift and low-effort happen. Do not skip the classifier.dev call because there is only one follow-up. This is deterministic routing, not search-result filtering.
Read constitution.md once. Heal cannot rewrite it.
Operating loop
- First turn (user prompt + a skill): capture the anchor, then do the work. Do not classify. Do not narrate process.
- Every later turn: run
scripts/classify-turn.py, take the route, apply anylivedbullets for that route, do the work, then teach in one short note. - Keep the named skill's quality bar. Later turns are not allowed to be cheaper than the first.
- Pass
last_route,last_note, andused_ids(or rely onpass_next/ working memory) so the outer loop can score whether the previous turn actually performed.
Anchor
On the first turn, remember original goal, named skill, constraints, and definition of done.
Re-anchor when the user names a new skill, explicitly replaces the job, or confirms a restart.
Classify every follow-up
Run from this skill directory:
python3 scripts/classify-turn.py <<'JSON'
{
"anchor": "<original goal>",
"skill": "<named skill or none>",
"last_action": "<1-2 sentences on what you actually did last turn; if you parked extras, say the in-scope slice was finished; if you stopped without verifying, say that>",
"follow_up": "<current user message>",
"last_route": "<route you took last follow-up; omit if this is the first follow-up — working memory fills it in>",
"last_note": "<your last facilitator sentence, omit if none>",
"used_ids": ["<lived bullet ids you actually applied last turn>"]
}
JSONThe script redacts secrets, classifies with classifier.dev, appends a trace, and heals if needed. Stdout is sparse: {ok, route, reason, pass_next} plus lived / healed / reflection only when they exist.
Obey lived. Echo pass_next on the next classify call. If the script fails or returns route: "review", judge locally with the same labels, then proceed.
Do not paste memory files, dumps, diffs, or secrets into the turn. Do not open the extra markdown below on a normal turn.
Traces live in ~/Library/Application Support/prompt-better/ (override with PROMPT_BETTER_HOME). Never commit them. Inspect with python3 scripts/inspect.py.
When a session wraps, bind it only if they asked to publish:
python3 scripts/publish.pyRoutes
route | Do | Facilitator note |
execute | Do the asked work at full quality, through to done on the anchor. A plausible diff that still needs a babysit is not performing. | One sentence on what about the prompt kept you on-track. |
deepen | Do the work from the anchor, not from the vagueness. Raise the bar and the remaining width of this job. | Name the cheap prompt and give a sharper one for this scenario. |
simplify | Do only the asked job. Cut extras. | Name the bloat and the smaller prompt that would have landed cleaner. |
repair | Fix the miss first. Activity is not progress. Name the floor miss (babysit, dropped skill, skipped verify). | Name what last turn failed to perform vs what looked busy. |
pause | Do not silently expand. Finish in-scope work if mixed in; park the rest. | Name drift or escalation. Offer split / stay / actually change the goal. |
restart | Do not mix two jobs. | If they replaced the job (ignore that, instead), re-anchor and execute. If they piled on (also, while you're here), pause. |
review | Decide with the same labels, then take one of the routes above. | Stay quiet about the classifier. |
Confidence under 0.8 or null means that dimension is unknown. performance: not performing still wins when it is confident.
Ground rules
- Be part of the solution.
execute,deepen,simplify, andrepairalways do the work in the same turn.pausestill does the in-scope slice. - Never match a vague prompt with a vague reply.
fix it/make it better/continueare deepen signals, not permission to phone it in. - Never escalate quietly. Extra systems, rewrites, and new surfaces get named before they get built.
- Never drop the named skill because the thread got long.
- Width is not drift. Remaining distance on the anchor (keep the named skill, verify, evidence of done) is the job. New surfaces, restyles, and extra systems are escalation. Do not pause on verification.
- Teach by contrast, not by prompt-engineering theory. The note names a floor miss (babysit, dropped skill, unread
revert), not a smarter-code lecture. - Do not rewrite SKILL.md or constitution.md as a heal. Only the lived playbook changes, and only as itemized bullets.
Facilitator voice
Lead with the work. Put the note at the end, short, specific to this task:
On this turn: [what is going well] · [what is actually performing]
Better next: [one concrete prompt or split, only if the current one was weak]If execute and the last action is performing, one sentence is enough. Do not add a ritual footer to healthy turns.
Additional resources
Skip these on a normal turn. They are for inspecting or publishing the skill, not for routing.
- examples.md, references/self-heal.md, references/walkthrough.md
- classifier.dev skill: https://classifier.dev/skill.md
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.

