Repository navigation
feat(skills)!: publish seven knowledge skills aligned with Studio and retire the workflow skills - #5651
feat(skills)!: publish seven knowledge skills aligned with Studio and retire the workflow skills#5651WaterrrForever wants to merge 32 commits into
Conversation
…se guides
hyperframes-core, -animation, -keyframes, -creative and -studio move to
skills/hyperframes/{core,animation,keyframes,creative,studio}/, and
hyperframes-audio moves to skills/media-use/mix/. Each moved SKILL.md becomes
a frontmatter-free GUIDE.md so installers that scan recursively for SKILL.md
no longer see them as skills; the published list goes from 21 to 15.
Relative links, code paths and skill-name mentions are rewritten to the new
locations, the catalog surfaces, marketplace core-skills list, fallback core
set, module-copy targets and skills-manifest.json follow, and
`hyperframes skills update` now removes the retired skills (RETIRED_SKILLS)
when they are still installed.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… free path The four entries every run opens are rewritten to what an agent cannot infer: hyperframes 21.8 KB to 7.7 KB, hyperframes-cli 24.8 KB to 6.9 KB, hyperframes-registry 9.9 KB to 4.3 KB, media-use 9.7 KB to 4.9 KB. Detail moved whole into references (routing close calls and creator edits, CLI pin upgrades, catalog search tiers, CLI conventions and feedback reports). - hyperframes: state table, routing, the render contract, a terminal work loop (check, snapshot, preview before render), the desktop-app hand-off, and a table of the folded guides. - media-use: one table of HeyGen versus free local tools per need; HeyGen sign-in, credits and the CLI's video-agent, avatar, clone, lipsync, translate and clipping commands; every free path works with no account. - scripts/check-core-skills.mjs holds entries and descriptions to budget and checks every taught `npx hyperframes` command and path; runs in lint. - Core entries are exempt from the formatter: its table padding cost ~1.5 KB per entry on every run. - Content tests follow the text to its new home. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…n sign-in and TTS setup The smoke eval showed a presenter request never reaching media-use and the free voiceover failing on a missing kokoro-onnx; plugin runs also ran the skills update the plugin rules forbid. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Automations to automatically generate PRs for you. |
…kflows' measured facts The entry drops routing and the intent interview and carries the contract, the editable-project rules and the work loop. Studio's format, runtimes, motion, look and captions references come over for terminal use, frame presets move to assets/, media-use gains Studio's mixing and local-command references, and film.md and overlays.md keep what the workflow skills measured. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…seven knowledge skills The skill pack now publishes exactly seven skills - hyperframes, hyperframes-cli, hyperframes-registry, media-use, figma, slideshow and remotion-to-hyperframes - carrying knowledge, not process. The eight workflow skills, the folded domain guides and the routing/interview references are deleted; their measured facts already live in the hyperframes references (format, runtimes, motion, look, captions, film, overlays) and media-use's mixing reference. - bake-basemap.mjs and locate.mjs move to skills/hyperframes/scripts/ (bake-basemap gains --help); extract-audio-data.py moves to media-use/audio/scripts/ for the caption motion reference. - skills update: the eight workflows join RETIRED_SKILLS so existing installs prune them (by lock attribution only, since their names are generic); naming a retired skill reports where its knowledge went and succeeds instead of failing as unknown. - Capture prompts point at the hyperframes skill's references/film.md; the live-map warning names the new bake-basemap path. - Content tests that pinned knowledge are retargeted to the kept references; tests of deleted workflows, scripts and process go. - Catalog surfaces, templates and docs describe the seven skills. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…utput files in citations Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The committed media-use hash included an ignored __pycache__ bytecode file present in the local checkout, so CI's clean checkout hashed differently. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Catalog PRs commit item sources only; CI regenerates the pages from the edited registry sources. docs/docs.json is catalog navigation, so its Workflows group rename is left for a non-catalog PR. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…dles The CLI bundles skills/hyperframes, which now carries the folded domain guides and frame presets (155 KB to 1.08 MB in git). Budgets are the CI-measured size plus 5%: packed 7526634, unpacked 22593213. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The last shell ffprobe caller and most root index.html examples lived in retired skills. The shell detector is now pinned on a literal command line, and the structure-rule sweep needs more than 5 roots (11 remain) rather than 30. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Edit accuracy: accurate 271 (base branch 271), smooth 160 of thoseThe gate passes. Quarantined, measured but not gated (0) Unstable (1)
|
… restore the storyboard board slideshow 33.5 KB to 4.9, figma 18.2 to 6.2, remotion-to-hyperframes 11.0 to 4.9, each keeping the facts only it holds (the figma motion helpers, verify gate, storyboard decoding and usage beacons; present and hand-off; the Remotion lint, SSIM check and API map). The board page format from the storyboard recipe comes back as hyperframes/references/storyboard.md: the desktop app's Storyboard tab reads boards/storyboard.html by its frame, title and time classes. The entry and the init template now say to snapshot the moments an edit changed before replying, which the terminal eval found skipped in 22 of 38 runs. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…mes kept files Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
jrusso1020
left a comment
There was a problem hiding this comment.
Reviewed at 8366864f1b7b482bb53a64d361fdb0f4f252a7c1. The direction holds up and most of this checks out (details below). I'm requesting changes for two places that still send people to scripts this PR deletes. Both are small fixes.
Blocking: live instructions that point at deleted scripts
docs/reference/audio-effects.mdx:449(and the prose at :33) tells users to runnode <SKILL_DIR>/scripts/carve.mjs --comp index.html.carve.mjsonly ever existed atskills/hyperframes-audio/scripts/carve.mjs, which this PR deletes, and nothing replaces it. So the documented command now fails.docs/prompting/audio-effects.mdx:57still tells people to ask the agent to "carve it", and no kept skill teachesdata-fx-carveany more: there are no hits underskills/, andmedia-use/references/mixing.md:67only points at Studio's carve. Either drop the CLI section and send people to Studio's carve, or carry the script intomedia-use. Two Studio comments also citescripts/carve.mjs(audioFxTelemetry.ts:201,useFxChainObserved.ts:19).skills/hyperframes/assets/frame-presets/code-editorial/FRAME.md:274says "build-frame.mjsstages weights 400 + 700 intoassets/fonts/and appends the exact@font-faceblock". That script lived only in the retired workflows. An agent using this preset will assume its fonts are staged and won't add them. The render then falls back to Google Fonts or a substitute, andlook.md:23says the opposite. Rewording it to "copy the bundled WOFF2s intoassets/fonts/and add the@font-faceblock" is enough.
Should fix (not blocking)
skills/hyperframes/references/storyboard-format.md:31,75,86still documentstransition_in(crossfade, cut, wipe). Thetransitions.mjs injectstep that acted on it is gone, with all three copies deleted together withtransitionsContract.test.ts. Now nothing acts on the key, and no kept doc tells the agent to build the crossfade overlap itself. Either say that, or drop the key.skills/remotion-to-hyperframes/references/limitations.md:125still says "seecreator-editing-recipes.md", ahyperframes-corefile. You fixed the same citation at line 35 but not this one.- Registry comments still cite
sub-compositions.md"Pitfall 1/2/3" and "Per-Instance Variables" after their headers moved toformat.md, which has no Pitfall sections. Cosmetic:device-frame-stage.html:63,80,264,349,overwhelm-surround.html:46,225,toggle-flip.html:60,240,255,touch-indicator.html:75,91,240,touch-indicator/demo.html:400,packages/lint/src/rules/composition.ts:695. The generateddocs/catalog/components/*.mdxpages that citehyperframes-coreare fine as they are:check-catalog-source-prforbids editing them here, and the catalog bot regenerates them. @hyperframes/core/storyboard(parseStoryboard,editStoryboard) has no in-repo consumer left, since its only users were the three vendoredstoryboard.mjscopies. Nothing breaks, but it now matters only if something outside the repo imports it.- ClawHub:
clawhub sync --alldoesn't unpublish, so the retired skills' last versions stay listed there.
Checked and fine
skills updatepruning. Retired workflow names (generic names such asgeneral-video) are removed only when the skills lock attributes them toheygen-com/hyperframes;leaves a same-named workflow bundle alone when no lock attributes it to uscovers that. Removal goes throughskills removein the scope detection read from, and the prune usescanonical: true, so a repo checkout's own manifest can't widen it. The one deliberate exception is the six retiredhyperframes-*domain skills: they are removed by name when the bundle is on disk with no lock entry. That departs frommanifestCoversSkill's "unknown provenance must fail safe" rule. The prefix makes the call reasonable and the run prints each name it removes, but a user who hand-copied and editedhyperframes-coreinto~/.claude/skillsloses it. A line in the release notes would cover that.- Upgrade path. Naming a retired skill in
skills update <name>prints where its knowledge went rather than failing.FALLBACK_CORE_SKILLSis now the four kept core skills. The legacycore-skillsmarketplace entry lists only kept skills, and plugin installs skipskills updateentirely (plugin-installation.md). - References. Every markdown link and every backticked
references/,scripts/orassets/path in the 95.mdfiles under the seven kept skills resolves. Plugin manifests,skills-manifest.json, README/AGENTS/CLAUDE.md, the CLI templates, the docs nav (608 pages) and the CI path filters name no retired skill.generate-skill-module-copies.mjs --checkis in sync, andcheck-core-skills.mjspasses. - media-use. The OAuth free-allowance wording matches what main already said. I haven't verified it against the backend. The host rule (
HEYGEN_API_BASEset means the host pays, so don't ask for a sign-in) is kept. It sits after the HeyGen setup paragraph, though; putting it first would stop an agent from reading the sign-in steps before it learns they don't apply. - Sizes.
skills/hyperframes/SKILL.mdgoes from 21.1 KB on main to 6.8 KB here, which matches the description. - The eval. I can't reproduce it from here. The 13 wins and 1 loss come with 20 ties out of 34, so the judge found no difference in most cases; the hard counts (rule breaks 10 → 2, CLI used right 13% → 34%) carry more of the case.
CI
At this head, the required regression failed only in shard-10, where sub-composition-video couldn't launch Chrome (Failed to launch the browser process, dbus). Tests on windows-latest failed in checkDeadline.process.test.ts ("managed launches own distinct profiles…"), which this PR doesn't touch. Both look like runner flakes and were re-running when I posted. I didn't install the plugin archive in a real Claude, Cursor or Codex profile, and the PR says it didn't either.
— Rames
miguel-heygen
left a comment
There was a problem hiding this comment.
Reviewed exact head 8366864f1b7b482bb53a64d361fdb0f4f252a7c1. The seven-skill inventory, terminal check → changed-frame snapshot → preview loop, and scoped migration implementation check out within the scope below.
Audited: retained entry points and folded contract references; skills.ts/skillsManifest.ts retirement, attribution and scope paths; manifests/plugin packagers and launcher paths; installer/content tests; changed production call-site/reference strings. Independently built both agent and Codex ZIPs: each has exactly the seven intended skill entries, the launcher and storyboard recipe, with no retired skill directories. Local results: 142 installer/content tests, 547 skill tests, eight script tests, and skill lint/budget pass. Hosted manifest job actually reports seven skills in sync.
Trusting: historical benchmark/corpus judgments, binary preset assets and exhaustive semantic equivalence of every deleted workflow. No isolated Claude/Cursor/Codex profile install, real marketplace/core-skills upgrade, model behavior run or paid call was performed.
Blockers — +1 to Rames's current review: I independently checked both surviving instructions against the final tree:
docs/reference/audio-effects.mdx:449still teachesnode <SKILL_DIR>/scripts/carve.mjs --comp index.html, but nocarve.mjsremains or is moved into a kept skill. This is an executable documented path that now fails. Retire that CLI instruction in favor of the actual Studio path, or preserve a working implementation; update the associated instructions atdocs/reference/audio-effects.mdx:33anddocs/prompting/audio-effects.mdx:57together.skills/hyperframes/assets/frame-presets/code-editorial/FRAME.md:274promises automatic font staging by the removedbuild-frame.mjs. The retainedlook.mdinstead requires copying the preset and staging non-bundled fonts explicitly. Make the preset's instructions self-contained rather than promising the deleted staging step.
Evidence note, non-blocking: the PR body's terminal benchmark compares older b65388b, before the final snapshot instruction. The 19 × 2 setup has 38 runs, while 13 wins + 1 loss + 20 ties accounts for 34 pairs. Explain the four omitted pairs and link the raw per-case results when reporting the pending rerun; I have not independently reproduced those gains.
CI: latest required snapshot still has regression and Windows tests failed with reruns underway. I read the actual failures: Chrome process signal 11 during sub-composition-video, and checkDeadline.process.test.ts receiving a navigation timeout rather than its expected script deadline. These are not demonstrated skill defects; I have not base-reproduced them. Required gates still need a clean result, not an inferred flake waiver.
— Magi (desktop-review)
Verdict: REQUEST CHANGES
Reasoning: The installer/package checks support the intended migration, but live instructions still depend on scripts deleted by this PR. Correct those contracts and complete current-head required CI before approval.
…, not only after approval Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ir own fonts Review follow-ups on #5651: - carve.mjs and its tests move to skills/media-use/audio/scripts; the audio docs, mixing.md and two Studio comments point there. - code-editorial's FRAME.md says to copy its bundled WOFF2s and add the @font-face blocks, instead of promising the retired build-frame.mjs. - media-use states the host rule before the HeyGen sign-in steps. - storyboard-format marks transition_in as a note the agent builds itself. - Two stale citations (creator-editing-recipes.md, sub-compositions.md). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
jrusso1020
left a comment
There was a problem hiding this comment.
Approved at bcc0e653a5. This resolves my request for changes at 8366864f.
Both blockers are fixed.
- Carve.
carve.mjs,carve.test.mjsandlib/main-module.mjsmoved intoskills/media-use/audio/scripts/, byte-identical to the originals on main.audio-effects.mdxnow points at<SKILL_DIR>/audio/scripts/carve.mjsand says which skill it ships with.mixing.mdteaches the carve again, including--dry-run(a real flag) and the double-quoted-attribute caveat. The new test lands underskills/**/*.test.mjs, sotest:skillspicks it up. The two Studio comments now cite the new path. - FRAME.md. It now says to copy the preset's six WOFF2s into
assets/fonts/and add the@font-faceblocks, and that nothing stages them for you. All six files are incode-editorial/fonts/.
Should-fix items, also handled.
storyboard-format.mdnow markstransition_inas a note only and says to overlap the clips yourself.- The
limitations.md:125citation and thecomposition.tscomment are updated. - The media-use host rule now sits ahead of the HeyGen setup paragraph.
- The registry
sub-compositions.mdcomments are still there, which is fine; they were cosmetic.
7bf91c1c (new since my review). It lets the agent render when the person asks for the file or to work without stops, as well as after approval. It still renders only after its own check and snapshots pass. The three places that state the rule now agree. Nit: step 5 in hyperframes-cli/SKILL.md still opens "After approval:", which reads narrower than step 4 just above it.
generate-skill-module-copies.mjs --check is in sync at this head. Required CI is green here. I didn't install the plugin in a real agent profile.
— Rames
…alone Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
miguel-heygen
left a comment
There was a problem hiding this comment.
Re-reviewed current exact head 5de395a5307c76d2cfe888b8eb7494780d5476b0 (successor to requested bcc0e653a5cc2423c67124e50dc1a81c8616292e). Both original code blockers are fixed.
Audited: complete follow-up delta since my 8366864f review: carve implementation/test relocation and callers, explicit font staging, storyboard/citation/host guidance repairs, render-rule changes, and regenerated manifest. carve.mjs and its 20 tests are byte-identical to the original retained implementation; all 20 run successfully from the new path. All six preset font assets exist. Module-copy/core-skill checks and the seven-skill manifest check pass. The latest two-file successor fixes the remaining CLI step-5 approval-only wording and changes its manifest hash only.
Trusting: original review's installer/archive evidence remains applicable to unchanged implementation. No new real-client profile install, marketplace upgrade, model eval or exhaustive re-audit of all retired content. I have not independently reproduced the benchmark. The four absent frame-judge pairs are now explained (plan-only/render ×2 produced no frames); command grading still includes them, so the frame-pair denominator is 34, not 38.
skills/hyperframes-cli/SKILL.md:35, the router and preview/render reference now agree: explicit file/no-stops requests permit rendering after check and snapshots. Consider pinning this shared rule in a content-contract test as it stabilizes.
Current gate: GitHub reports mergeable:false, mergeable_state:dirty at this exact head. Only Graphite/WIP and a skipped Mintlify deployment are reported, and gh pr checks --required reports no required checks. The 79-check green result belongs to bcc0e653, not this successor. Resolve the main conflict and obtain the actual required checks on the resulting full head; I cannot give the final approval against absent current-head validation. No new code defect found in this follow-up delta.
— Magi (desktop-review)
Verdict: COMMENT
Reasoning: The requested script/font contract repairs are verified. Final approval remains pending a mergeable successor and executed current-head required CI; earlier green checks are not a substitute.
# Conflicts: # package.json
jrusso1020
left a comment
There was a problem hiding this comment.
Requesting changes at 0dc8978ee for one problem: the merge from main dropped the core-skills check from lint.
At bcc0e653, which I approved, package.json ran node scripts/check-core-skills.mjs from both lint and lint:skills. At this head, both scripts match main's, which doesn't have it. Nothing else in the repo calls check-core-skills.mjs; the only references are its unit test in test:scripts. So the size budgets and the command and path checks on the core skills no longer run in CI. That check is this PR's own guard. It still passes when run by hand at this head (✓ core skills within budget; commands and paths resolve), so the fix is to put the two && node scripts/check-core-skills.mjs lines back.
Otherwise this head is fine:
- Apart from the two
package.jsonlines, the PR's patch matchesbcc0e653(I compared the merge base withbcc0e653, then main with this head). - The one intended change is
5de395a5: step 5 ofhyperframes-cli/SKILL.mdnow reads "When it is time to render (step 4):", which resolves my nit. generate-skill-module-copies.mjs --checkis in sync. Required CI is green.
— Rames
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Restored both |
miguel-heygen
left a comment
There was a problem hiding this comment.
Re-reviewed current exact head 0e827572f8da63cb46c140dc41bc10e263cb6508, including its main merge at 0dc8978ee. No remaining code blocker found within the reviewed scope; current-head CI is still running.
Audited: actual own-patch comparison before/after main integration, conflict resolution in package.json, complete two-line successor restoring check-core-skills.mjs to both lint commands, and previously requested script/font/render-rule repairs. All non-package own patches are unchanged across the merge. The script resolution preserves main's edit-accuracy retry test and this branch's core-skills test. Current module-copy, core-skills, seven-skill manifest checks and all 20 moved carve tests pass. Restored bun run lint:skills passes too.
Trusting: unchanged installer/archive surfaces covered in my earlier reviews; historical model evals, binary assets and exhaustive equivalence of every removed workflow. No real-client plugin/profile install, upgrade or model run was performed.
On Rames's lint concern: the previous head did execute checkCoreSkills() through scripts/check-core-skills.test.mjs:14; I confirmed the actual hosted Test (support) log and independently made that test fail with a nonexistent CLI command. However .github/workflows/ci.yml:151 excludes skill-only edits from the code job, so keeping the check in the skills lint path matters. The successor correctly restores both calls, and the probe skill text has been restored.
The 83 successful checks belong to 0dc8978ee. This exact successor has fresh pending jobs, so final approval must wait for its required CI. Original carve/font blockers are resolved; no additional product changes requested.
— Magi (desktop-review)
Verdict: COMMENT
Reasoning: The reviewed code and restored lint wiring are satisfactory. Required validation is not yet complete at the latest full head, so this is not a current-head approval.
# Conflicts: # skills-manifest.json
jrusso1020
left a comment
There was a problem hiding this comment.
Approved at 2ebaf6f64e. This resolves my request for changes at 0dc8978e.
- Core-skills check: both
lintandlint:skillsstill end in&& node scripts/check-core-skills.mjsat this head, so the check runs in CI. - The main merge:
2ebaf6f64emerges main, which brings in #5654 and #5657. Apart fromskills-manifest.json, the PR's diff against its merge base is line-for-line the same as at0e827572f8, and that is the same 881 files. So outside the manifest, this is the code I reviewed. - The manifest: it is generated, and "Skills: manifest in sync" passes at this head.
All CI is green at this head, with nothing pending or failing. That includes the Windows test and render jobs.
— Rames
miguel-heygen
left a comment
There was a problem hiding this comment.
Approved exact head 2ebaf6f64e308578f41575cab3e4df8687d63492, completing my previous CI-pending review5538278786. No remaining blocker within the reviewed scope.
Audited: main-merge resolution and current own patch against merge base cea8aa8a. Added/deleted lines match the previously reviewed 0e827572f patch after excluding generated manifest hashes; the remaining diff is surrounding context from main. Both package.json lint commands retain node scripts/check-core-skills.mjs, and the support-test wiring remains intact. The exact current source regenerates the committed seven-skill manifest. Direct core-skills validation and 25 core-guard/moved-carve tests pass without installing dependencies.
Original deleted-script/font pointers and render-rule fixes remain present. My earlier installer/archive/migration review evidence applies to the unchanged own patch. Trusting: historical model evals and unchanged installer/client integration surfaces; no real Claude/Cursor/Codex profile install or upgrade, live agent, native Desktop, or exhaustive quality eval was performed.
Verified current-head CI: 83 successful, 2 skipped, none failing or pending. Read executed skills lint/manifest logs and verified their workflow run's head SHA matches this review. The Windows rerun is green; this does not certify absence of timing variability. No worktree/install/owned background process, merge, enqueue, release or deployment.
Verdict: APPROVE
Reasoning: The merge preserves the reviewed fixes and required lint wiring, the generated manifest matches source, and current-head validation is complete.
— Magi (desktop-review)
…ps use real imagery Opus 5.5 arm D read motion.md and applied it, but its launch film was a feature list (pain, three feature cards, proof, logo): film.md left story to the model. And the map case never opened film.md, so it drew Natural Earth outlines instead of baking satellite tiles. - references/story.md: the generic half of Studio's moment-film story and craft (one thing, three storylines with world and device, the hook, beats, worlds, copy, brand, tells of a generated film). The person picks a storyline, or the agent takes its recommendation when asked for the file or for no stops. - The entry's work loop names the storyline step for films over ~15 s; the references table routes stories to story.md and maps to film.md. - film.md points at story.md and gives maps and real places a section. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ts idle timeout The Opus 5.5 map run spent 13 of its 38 minutes on parallel bakes that stalled and 15 more recording 300 frames, after rewriting the script because it could only start on a flat map. - PROJECTION=globe with a seeded starfield and atmosphere, and FROM/PAN to turn the globe to CENTER before the dive. - Each frame polls for loaded tiles instead of waiting for an "idle" event that had often already fired: 30 frames went from 198-219 s to 10-13 s locally with byte-identical frames. - Progress prints seconds a frame and minutes left; film.md shows the globe call and says to run one bake at a time. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…g, never pgrep -f Both Opus 5.5 explainer runs started a detached render, then waited with `until ! pgrep -f "hyperframes render"`, which matches its own loop: each render took 88-117 s and the wait sat for the tool's full 10 minutes. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…d; add review and sound The entry routes by request (launch, explainer, music, data, vertical, 3D, character) to a self-contained file under references/types/, and a film over ~15 s now gets music and sounds on its visible actions unless the person asked for silence. Each storyline names its look and its sound, so picking one picks both; STORYBOARD.md frames carry `reads` and `sound`. review.md is the whole-film pass: the check warnings, the review sheets, seven questions to look for, P0/P1/P2 notes and REVIEW.md. motion.md gains eases by role, six title entrances, a reading-time rule and nine measured transitions; look.md a design plan before the first scene, with presets kept for decks and named picks. story.md adds the second default that generated design falls into, with what to do instead. The blank template and format.md no longer teach the fade-and-slide-up entrance on a dark canvas. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…mpty frame 0 and silence A coding agent cannot watch its film, so check now measures what a viewer notices over time. A new `craft` section holds warnings only (exit 0 unless --strict), sampled on the dense 8 fps grid the overlap pass already seeks, skipped for --range checks: - line_unread: a reading-size line (>= 30 px tall at 1080) on screen under 0.4 s for 1-2 words, else under 3/4 of 0.5 s + 0.3 s a word; the film's last line needs 2 s. Short lines are re-measured between samples to ~0.01 s before judging. Captions-track and data-layout-ignore text are exempt. - dead_stretch: more than 3 s where the keepsMoving liveness signature does not change, outside the final 3 s and any data-hold element; quiet when sweep_static fires or a whole-composition keepsMoving assertion owns the limit. - text_below_floor: text under 2.6% of the short side (28 px on 1080) held 0.5 s, one finding per file listing every element. - first_frame_empty: frame 0 paints only the background. - film_silent: over 15 s with no unmuted audio or audible video. Each message names the fix and the skill reference to read. keepsMoving now also leaves the film's last 3 s (a still end card) out of its static runs, so the two agree. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… phone sheet snapshot --review picks the frames that show a film over time instead of evenly spaced ones, in the same single browser session: - review-beats.jpg: one settled frame per scene at its start + 0.3 s, plus one per timed data-beat="name" element, labelled time and id. Scenes are the composition's top-level timed clips and sub-composition hosts, read like `timeline` reads rows (captions and audio excluded) and timed by the runtime's start resolver over the live page. - review-seam-NN.jpg: frames at -0.2, -0.1, 0, +0.1, +0.2 s around every cut (each scene start, and any scene end no scene starts at). - review-phone.jpg: the beat frames at 360 px wide. --composition scopes the review to one sub-composition; with fewer than two scenes the beats spread evenly and a note says so. snapshot also gains --json: one envelope with every frame's path and time and, under --review, the scenes, beats and seams behind the sheets; progress moves to stderr. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…t action, not a caret Craft findings (unread lines, dead stretches, small type, an empty first frame, silence) are judgment calls a film may break on purpose, so --strict keeps gating defects only. The check reference no longer suggests a blinking caret to keep a still frame moving. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…credits skip the type floor A map film whose basemap and overlay both start at 0 s got one beat frame; the even spread now keys on distinct scene starts. film.md tells agents to mark the imagery credit data-layout-ignore and back it, since the new type floor flagged it on the first real run. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
On the first real explainer, 0.3 s into a scene showed a bare colour field before its title entered. Each scene longer than about a second and a half now adds a frame at its middle, so the sheet shows what the scene builds. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…anned by name and a look test Studied in full: flxrnc's Motion Lab (vague vs directed prompt), 0xMovez's course, EianLu's riso skill, agentchengfeng's style samples and the two Opus 5.5 guides. Their common point: adjectives are where the default look lives, so the agent now writes SPEC.md before any scene (GOAL, OUTPUT, TIME, LOOK, MOTION, SHOTS, BANNED, QA), with a number for every adjective. spec.md bans the defaults by name, unless the brand or reference uses them (a dark void with small things floating, glow and particles, the cream-serif-mono-label look, fade-and-slide-up, corner brackets), and grows that list after the first render. Each storyline gets a 3 s test of its hero shot before the pick; a look is written as the rules of one medium. Composition numbers: the hero fills 40% of the frame, one hero move per shot, the shot's information in within 2.5 s then a held poster. motion.md adds springs by damping ratio, shorter exits, overlap, stagger and the beat grid; review.md reviews as a harsh director and grows BANNED; vertical.md takes the riso skill's measured safe band; explainer.md the shapes of information. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… only for info cards The first spec-driven C02 swapped the dark default for a flat Swiss poster, and the story went with it: two black bars nobody read as mirrors, slogans instead of cause and effect, a storyline picked for its picture. The spec now serves the story: a storyline is picked for the story a stranger would follow, the look test asks first whether a stranger understands what they see, and SPEC.md gains an OBJECTS line giving each thing the material and details that make it read without a label. The 2.5 s held-poster rule is limited to information cards; in a story film every shot causes the next. Explainers start from a person or situation the viewer knows. Review names every object as a stranger would and treats one that needs explaining as a P0. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
What
The published skill pack goes from 21 skills to 7, the same seven the desktop app's Studio already runs:
hyperframes,hyperframes-cli,hyperframes-registry,media-use,figma,slideshow,remotion-to-hyperframes. Every skill carries knowledge an agent cannot infer and no process.hyperframesentry, read on every videoskills/on diskhyperframesholds:timeline→history→ edit →check→snapshotthe changed moments → preview before render;Its references are Studio's
format,runtimes,motion(with the craft measured from shipped films),lookandcaptions, plus:film.md: measured facts from the retired workflows;overlays.md: talking-head card geometry;storyboard.md: the board page from chore(skills): storyboards are a board of stills with one page format #5599.The 13 frame presets move to
assets/.media-useshows each need with a HeyGen route beside a free local route. HeyGen:heygen auth login --oauthcarries a free allowance, an API key bills credits, plus video-agent, avatar, clone, lipsync, translate and clipping. Free with no account: Kokoro TTS, Parakeet/whisper, background removal, the 19 bundled SFX, MusicGen and logos.mixing.mdandlocal.mdcome from Studio.hyperframes-cliandhyperframes-registryare slimmed (24.8 → 6.9 KB and 9.9 → 4.3 KB). Their detail moved whole into references.slideshow,figmaandremotion-to-hyperframesare slimmed (33.5 → 4.9 KB, 18.2 → 6.2 KB and 11.0 → 4.9 KB). Each keeps what only it holds:slideshow: present and hand-off;figma: the motion helpers, the 15 dB verify gate, storyboard decoding and the usage beacons;remotion-to-hyperframes: the Remotion lint, the SSIM check and the API map.Retired: the 8 workflow skills (
product-launch-video,faceless-explainer,pr-to-video,general-video,motion-graphics,music-to-video,embedded-captions,talking-head-recut), the 6 domain skills folded earlier (hyperframes-core,-animation,-keyframes,-creative,-studio,-audio), and the router's intent interview, briefs, pitch and review loops, and frame-worker dispatch.npx hyperframes skills updateremoves the 14 retired skills from existing installs (RETIRED_SKILLS).skills update <retired name>says where that knowledge now lives instead of installing it.skills/hyperframes/scripts/:bake-basemap.mjs, andlocate.mjs(grid image location).Why
Strong coding agents plan, sequence and check their own work; what they lack are private facts. The same restructure for Studio (hyperframes-internal#3731) raised tool and CLI correctness from 5% to 83%. This PR brings it to terminal agents, measured on the same kind of run below.
Related work
How
git mv. A script recomputed every relative path and skill-name reference across skills, docs, the CLI and tests.lint-skillsreports no unresolved cross-reference.scripts/check-core-skills.mjsruns inlintand holds each entry and description to budget. It also checks every taughtnpx hyperframes <command>againstcli.ts, and every path against its skill folder. The seven entries are exempt from oxfmt, whose table padding added about 1.5 KB per entry on every read.CLAUDE.md,AGENTS.md,README.md, the docs pages, bothinittemplates (still byte-identical), the marketplacecore-skillslist andFALLBACK_CORE_SKILLS. Theinittemplate now asks for a snapshot of the changed moments aftercheck.@hyperframes/cli, packed 7,902,966 / unpacked 23,722,874, measured plus 5%). The CLI bundlesskills/hyperframes, which now carries the 13 frame presets (fonts, caption skins and showcases) that lived inhyperframes-creative.cbdc00500.docs/docs.jsonstay as on main. Renaming the "Workflows" nav group needs a PR with no catalog changes, so it comes separately.Test plan
bun run lint: includeslint-skills,check-core-skillsand the skill mirror.format:check, comment citations andfallow audit --base origin/mainare clean.test:scripts749 pass.test:skills547 pass. The CLI tests for skills, the manifest, the mirror, core and figma content, init and capture: 678 pass. Plus the core storyboard and swapScenes tests, the engine live-map warning, the Studio safe margins and the edit prompt.gen-skills-manifest --check: in sync (7 skills).Plugin package:
bun run package:agent-pluginbuilds a 2,139,275-byte archive holding exactly the 7 skills, with no nestedSKILL.md.package-agent-plugin.test.mjspasses 3/3.claude plugin validate .passes, with one warning that is already on main (a rootCLAUDE.mdis not loaded as plugin context).Terminal eval.
claude -pwith the repo as a plugin and no host app, the same pinned CLI on both sides (0.8.161), Sonnet 5.5 at medium effort, 19 cases × 2 repeats, and an Opus blind judge on frames only. Each fixture project carries theCLAUDE.mdits own side'sinitwrites.76222e4against this branch atb65388band ate05215d(adds Studio's "snapshot the moments you changed" sentence). The main side was run once and reused.b65388be05215dskills updateinside a plugin)The judge sees only frames and swings between runs: the identical main runs went from 1 win to 7. The pass rates are graded from files and commands and are the steadier signal. The misses that remain on this branch, mostly shared with main, are beat sync without
beats,checkstill failing on the grade case, and one caption hard kill.Not exercised: installing the archive in isolated Claude, Cursor and Codex profiles, the N → N+1 marketplace upgrade, and migration from
core-skills@hyperframeson a real client. These are only covered by unit tests ofskills updatepruning.Follow-ups (separate PRs)
checktreats a<video>cutout as opaque, so it can't measure text placed behind a speaker.__pycache__.No visible change
Studio and player change only in text no screen renders.
domEditingAgentPrompt.tschanges one line of the prompt Studio hands an agent: the skill path it names for timeline edits.projectProvenance.tschanges one example in a code comment. Neither path draws anything, and the rest of the Studio diff is tests. That is 4 lines in non-test files underpackages/studio, with no.tsx,.cssor.htmlfile there or underpackages/player.🤖 Generated with Claude Code