Improve
Paths: ${CLAUDE_SKILL_DIR} means the folder containing this SKILL.md, and ${CLAUDE_SKILL_DIR}/../.. the editor's .claude/ folder two levels above it.
Every question to the user goes in the question box: call the AskUserQuestion tool (2-4 options, the recommended one first). Only in an agent without that tool, ask numbered questions in text.
This runs in a checkout of the repo, for the person who maintains it. A fix here reaches every user on
their next update. S="${CLAUDE_SKILL_DIR}/scripts". Run the scripts with python3 on Mac
and Linux, py on Windows.
0. Who is running this
python3 "$S/improve.py" mode
maintainer only in a git checkout of the repo with AI_EDITOR_MAINTAINER=1: go on to step 1.
user: the editor's own files are replaced on every update, so never edit them (no SKILL.md,
reference, script or PRINCIPLES.md). Collect and pick as below, then save each accepted item in the
user's own layer, which updates never touch (docs/customise.md in the repo):
a setting with taste.py add ... --set; a word rule with
python3 "${CLAUDE_SKILL_DIR}/../../lib/ai_editor/custom.py" rule "<rule>"; a caption look as
custom/captions/<name>.json plus taste.py set captions.preset <name>; template defaults as
custom/templates/<type>.json. Then offer taste.py suggest so the maintainers can fix it for
everyone. Stop there.
1. Collect
python3 "$S/improve.py" collect [--edits D] [--no-gh]
One line a rule, most repeated first: times it came in, from where (suggestion, taste regression, preview correction, review note, GitHub issue), the owner named, and up to three examples. A rule said by several users, or said again after it was applied, comes first.
2. Pick
Show the top of the queue and ask in the question box which to fix now (multi-select, the most repeated first, recommended). For each one, also ask when it is unclear: Every user (Recommended) / Only some creators' styles (it belongs in a style.json field, not a rule) / Not a fix (close it).
3. Fix each one, in this order
- The rule. One line in
${CLAUDE_SKILL_DIR}/../../PRINCIPLES.mdunder the right heading, naming where it is enforced, and the same rule in the owning SKILL.md or reference. General, never about one video: "Zooms ease over at least 0.5 s", not "the zoom at 0:12 snapped". - The enforcement. The smallest code that makes the rule hold without anyone remembering it:
a FAIL in a check (
check.py,quality.py,product.py check,ai_tells.py), a refusal in the script that would break it (gates.py), a default that cannot produce it, or a line intests/check_plugins.pyfor a repo rule. Prefer tightening an existing check to adding one. - The test. An assert in that script's
demo()(ortests/), built from a small synthetic example of the failure. Run it before the fix and see it fail, then after and see it pass. A rule only an agent can follow (asking, explaining) gets an eval case inevals/instead:prompt.mdplus atool_usedorllmgrader. - The record.
docs/feedback-matrix.md: the rule, where it is written, what enforces it, what tests it.
4. Run everything
python3 tests/check_plugins.py
python3 .claude/lib/ai_editor/okf.py check
Then tests/demos.sh (every script's demo), node tests/test_record.mjs, and when the renderer
is set up tests/smoke.py and tests/golden.py. All green before handing over. Do not commit; the
maintainer reviews the diff and commits.
On a GitHub issue that is now fixed, offer to comment a one-line summary of the fix and close it
(gh issue close <n> --comment "..."), only after asking.
Never
- Never edit a user's taste.md, taste.json, rules.json or suggestions.jsonl: they are theirs.
- Never put personal data in the repo: no names, handles, emails, file names or footage from the
feedback. Write the general rule and a synthetic example.
tests/check_plugins.pyfails on known private names; read every example before it goes in. - Never close the loop with a note alone. A rule with no enforcement and no test is not done.
Files
scripts/improve.py:mode,collect,demo. Reads only.${CLAUDE_SKILL_DIR}/../../lib/ai_editor/custom.py: the user's<library>/custom/folder (user mode writes there).${CLAUDE_SKILL_DIR}/../../skills/taste/scripts/taste.py: wheresuggestandissuewrite the user side.