Communitygithub.com

Conz-Wilts/ai-editor

For the editor's maintainers. Turns what users corrected into lasting fixes in this repo, for every user, enforced by code and tests rather than notes. Reads the suggestions users marked "would help everyone" (~/.ai-video-editor/suggestions.jsonl), taste rules said twice (taste.py report), preview corrections (edits/*/corrections.jsonl), review-page notes (*/review.json) and open GitHub issues labelled feedback; groups repeats; for each item the maintainer accepts, writes the general rule into PRINCIPLES.md and the skill that owns it, adds or tightens the check that enforces it, adds a test that fails before and passes after, and runs the full test set. Use when the maintainer says "improve the editor", "turn feedback into fixes", "process suggestions", "what are users complaining about", "go through the feedback issues". Not for one user's own preferences (that is taste), and not for editing a video.

What is ai-editor?

ai-editor is a Claude Code agent skill that for the editor's maintainers. Turns what users corrected into lasting fixes in this repo, for every user, enforced by code and tests rather than notes. Reads the suggestions users marked "would help everyone" (~/.ai-video-editor/suggestions.jsonl), taste rules said twice (taste.py report), preview corrections (edits/*/corrections.jsonl), review-page notes (*/review.json) and open GitHub issues labelled feedback; groups repeats; for each item the maintainer accepts, writes the general rule into PRINCIPLES.md and the skill that owns it, adds or tightens the check that enforces it, adds a test that fails before and passes after, and runs the full test set. Use when the maintainer says "improve the editor", "turn feedback into fixes", "process suggestions", "what are users complaining about", "go through the feedback issues". Not for one user's own preferences (that is taste), and not for editing a video.

Works with✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Conz-Wilts/ai-editor/tree/HEAD/.claude/skills/improve

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

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

  1. The rule. One line in ${CLAUDE_SKILL_DIR}/../../PRINCIPLES.md under 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".
  2. 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 in tests/check_plugins.py for a repo rule. Prefer tightening an existing check to adding one.
  3. The test. An assert in that script's demo() (or tests/), 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 in evals/ instead: prompt.md plus a tool_used or llm grader.
  4. 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.py fails 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: where suggest and issue write the user side.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

Conz-Wilts/ai-editor

Turns one long video or podcast (a local file or a YouTube link) into the best 3-5 short vertical clips, each cut and styled in the user's profile style. Transcribes once, splits the talk into candidate clips at sentence boundaries inside the chosen length, scores every candidate in code (speech rate, loudness, laughter, numbers and names said), shows the shortlist on one page with a preview of each, then trims, cuts and style-edits each pick as its own edit. Use when the user says "clip this video", "make shorts from my podcast", "find the best clips", "cut this into TikToks", "turn this YouTube video into reels", "repurpose this long video", or drops a long video (over about 3 minutes) or a YouTube link and wants short clips. Not for editing one short take (that is start or cut), and not for measuring someone else's style (that is creator-teardown).

Conz-Wilts/ai-editor

Reverse-engineers a short-form creator's video format from their real numbers. Pulls a TikTok or YouTube Shorts profile (or pasted links, Instagram reels too) with view, like and save counts, transcribes the top videos word for word, measures pace, pauses and fillers, maps each video into timed beats, and writes a teardown.md someone can film from, a teardown.html page of their graphics, motion and sound, and the style.json the style-edit skill edits from (on its own it can write an edit plan as a table and .srt). Use when the user wants to analyse, break down or study a creator ("analyse @handle", "tear down @handle", "teardown of @handle", "break down this creator", "what makes this creator's videos work"), pastes TikTok, YouTube or Instagram links and asks what the pattern is, or asks to set up creator-teardown. Not for editing the user's own video like a creator (that is start), not for researching a topic, and not for cutting raw footage.

Conz-Wilts/ai-editor

Cuts raw talking-head footage into a clean jump cut. Takes one take or several joined (mp4 or mov, any aspect, 4K phone footage is fine), transcribes it word by word, removes retakes, false starts, fillers and dead pauses, and renders cut.mp4 at the source resolution plus words.json timed to the cut. The user approves the cut on a page with the whole transcript and every removed word struck through. Use when the user says "cut my video", "just cut it", "remove my mistakes", "cut out the retakes", "remove the pauses", "clean up this take", "jump cut this", "tighten this clip", or asks only for the cut of a raw take; start calls it for a full edit. Runs before style-edit. Not for a general request to edit a video or to make it look like a creator (that is start), not for adding captions, zooms or cards (style-edit), and not for analysing someone else's videos (creator-teardown).

Conz-Wilts/ai-editor

Generates new footage with Higgsfield and puts it on the edit's timeline. Prices every generation first, asks the user with the dollar amount (and, for their own footage, whether it may be uploaded to Higgsfield), then submits, waits, downloads into the edit's generated/ folder and adds the result to the timeline's Generated track. Covers motion transfer on a clip of the user's video (their moves onto a character or styled look), b-roll from a sentence (text to video), a still brought to life (image to video) and stills for cards (text to image). Use when the user says "generate b-roll", "make a shot of", "AI b-roll", "generate a clip", "use Higgsfield", "motion transfer", "put my moves on", "restyle this part with AI", or asks for footage they did not film. Not for animated diagrams or motion graphics (motion), not for real screenshots and logos (overlays, logo-pack), and not for the cut (cut).

Related Skills