Repository navigation
feat(skills)!: publish seven knowledge skills aligned with Studio and retire the workflow skills - #5651
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 155 of thoseThe gate passes. Quarantined, measured but not gated (0) Unstable (2)
|
… 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>
… 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>
…and a form The three storylines are pitched as text and the person picks from them; nothing is built for a storyline before the pick, so the 3 s hero-shot look test is gone. Ideas pair a device with a form, five or more first, keeping the three that differ most, and the one stop states the rest in an assumption line that names every paid item beside its free option. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Brings the seven-skill branch level with main (208 commits) and fixes the CI the branch had already broken. - Retired skills that main still edited stay removed. What they gained moves into the seven: Openverse sound effects (media-use), nested-clip timing (format.md); the storyboard stills rule came through the rename. - check: craft samples run before main's batched overlap grid, so what a grid sample queues keeps the grid's span; keepsMoving's end-card hold applies on top of main's frozenSpans. Three keepsMoving tests now use films that reach past the 3 s end-card window, or expect the span to stop at it. - contrast-audit drops its citation of a retired skill's script. - Tests that pinned the old entry wording follow the new text: the motion row names punch-ins, speed and holds; the video-sound sentence; the registry description; the blank template's display font; the entry no longer carries the figma blurb. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Keeps the stack level with #5651 after it merged main. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…orkflow files The merge with main removed it with the rest of the retired skill, and the deletion guard rejects any removal it has not been told about. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
jerrai-bot-heygen
left a comment
There was a problem hiding this comment.
Changes requested at exact 866babcb70345d815e0c72b638efac9f59b6a1bb. The merge-forward introduced a detectable loss in check craft coverage: craft frames now share the overlap grid's 180-time cap rather than their prior 8-fps/up-to-600 grid, so a short readable line in a 60s film can fall between every sample and escape line_unread. The inline review gives a specific 10.1–10.3s witness and a discriminating regression request. This finding is from first-hand comparison of the merge's first parent, new head, craft candidate builder and the 20s test—not an exhaustive review of all 916 changed files. The GitHub changed-file API surfaced only the first 100 of 916 files; I inspected its metadata and the focused patch, not every patch, and rely on earlier exact-head peer reviews only for unchanged surfaces. Seven retained skill directory names and the manifest remain, and the new-head deletion, skills lint/mirror and manifest jobs executed green. The new-head Comments job executed failed: its citation checker treats project-output REVIEW.md/STORYLINES.md as nonexistent repository paths, and its comment-share ratchet reports increases in touched files; resolve or explicitly reclassify these checks before landing. Other required jobs were still in progress at review time. Auto-merge was armed by the author, so approval could enqueue a merge; this request changes and grants neither merge nor publication. I did not run local tests, install a client, merge, or release. — Jerrai
| // Craft seeks run first: what the grid's samples queue lands after it and is stamped with the grid's span, | ||
| // which a seek right after the grid would overwrite. | ||
| if (craft) { | ||
| for (const time of shiftedTimes) { |
There was a problem hiding this comment.
The merge reuses the overlap grid as the only source of craft frames. That grid is capped at OVERLAP_MAX_SAMPLES - OVERLAP_HOLD_PROBES = 180 times (lines 597–619), whereas the pre-merge craft pass sampled the 8-fps grid up to 600. For a 60s film with no interior clip edges, merged shiftedTimes is uniform every ~0.335s: it seeks at 10.056 and 10.391 but not during a seven-word line visible at 10.1–10.3. Before this merge the .125s grid caught it at 10.125/10.25. trackBlocks builds candidates only from sampled frames, so line_unread disappears entirely; refinement cannot recover an unseen line. The new 20s craft test remains below this 180-sample ceiling. Please preserve the fine craft sampling budget independently of the capped overlap grid (or otherwise prove equivalent coverage), with a >23s brief-line regression that fails this merge and passes the intended resolution.
jrusso1020
left a comment
There was a problem hiding this comment.
Reviewed exact successor 866babcb70345d815e0c72b638efac9f59b6a1bb, including the deletion-guard follow-up to requested 5c16c421d and all prior blocking reviews.
The seven-skill inventory and scoped migration are coherent. Both lint commands retain the core-skills guard; the earlier carve/font instructions are repaired. The current source regenerates the seven-skill manifest exactly. Skill lint checks 130 Markdown files and three registry snapshots without unresolved references, and the core entry budgets/command/path guard passes.
[P1 blocker] +1 to Jerrai's craft-grid finding (packages/cli/src/utils/checkPipeline.ts:686–695), independently reproduced. The merge uses denseOverlapTimes as the only craft sampling schedule, inheriting the overlap grid's 180-time cap. For 60 seconds with no internal clip edges, its neighboring samples are 10.056 and 10.391. A seven-word line shown at 10.1–10.3 is never observed, so there is no line_unread candidate to refine. The former 8-fps craft grid sampled it at 10.125 and 10.25. A fresh independent exact-source control ran the old/new grids through the unchanged craft detector: old reports the approximately 0.203-second line; current reports nothing. Preserve the separate fine craft schedule while retaining main's batched overlap collection, and add a >23-second short-line regression. The existing 20-second test stays below the cap.
Audited: all 916 changed-file metadata entries; retained entries/references, installer/manifest/mirror implementation and tests, docs/plugin inventories, previous script/font/lint repairs, merge-adjusted production and test surfaces with emphasis on check/craft/snapshot contracts. Local checks: 137 installer/mirror/command controls (command harness stubs withMeta), 20 moved-carve tests, five core-guard tests, three plugin-packager tests, manifest/skill lint/core guard, and independent sampling controls.
Trusting: exhaustive semantic equivalence of all deleted workflow knowledge, binary preset appearance, historical model/film judgments and real client upgrades. No full CLI/browser suite, marketplace install, paid call or model eval.
Measurement: independently verified the packaging count 21 → 7, and current entry text totals 39,619 bytes versus 487,120 bytes on this merge's main base. The linked HeyGenVerse numbers/films page requires sign-in here; I could not verify a claim from that private page or reproduce its quality/cost judgments. These source measurements do not certify the benchmark.
The six legacy hyperframes-* domain names can still be removed without a provenance lock, as deliberately documented and reviewed earlier; generic retired workflow names require our source attribution. The latest deletion allowlist addition matches a test inside the intentionally retired captions implementation.
Verdict: REQUEST CHANGES
Reasoning: The migration and knowledge-pack checks pass, but the merge reduces craft sampling coverage and silently misses brief unreadable text in longer films.
— hf-review
The comment's new citation to media-use's mixing reference made the published package 14 bytes larger than its budget, which sits at main's exact size. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ecks Review on #5651 found that the merge moved craft onto the overlap pass's times, which main caps at 180, so a brief line in a long film fell between samples and line_unread missed it. Craft now builds its own grid at 8 fps up to 600 samples, as before the merge, and a 60 s film with a line shown for 0.2 s pins it. The Comments check passes again: REVIEW.md and STORYLINES.md join the files a skill writes into a project, the comment lines this branch added come back under each file's share at the merge-base, and the audio preset comment drops a word the check reads as history. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
jrusso1020
left a comment
There was a problem hiding this comment.
Re-reviewed exact 6cf89bb93759f8c875c8db2c30473106a428d9b8. This resolves my craft-sampling request at 866babcb7 and corroborates the repair to Jerrai's finding.
packages/cli/src/utils/checkPipeline.ts:688 now iterates its own buildCraftSampleTimes, using 8 fps up to the prior 600-sample budget. The overlap grid, batching and hold-probe functions are unchanged. Craft still runs before the batch, preserving main's queued-span fix; range checks skip craft as before, and the actual collection excludes the film endpoint.
Parent and a fresh independent pass executed the exact sampler/collector plus the unchanged detector: the 60-second witness samples at 10.125/10.25, producing line_unread at about 10.102 with a 0.203-second reading window. Replacing the schedule with the previous overlap grid produces no finding. The new check.test.ts case exercises that scenario through runScenario; it is a discriminating regression. Additional invalid/short/long-duration controls retain ordered unique samples and the cap.
Audited: complete seven-file follow-up since 866babcb7: the craft repair/test, narrowly allowing project-generated REVIEW.md/STORYLINES.md citations, and comment trimming. Esbuild output confirms the other four production files are runtime-identical. The citation checker still resolves repository-qualified paths; its isolated tests produced 84 passes, while 19 CLI/self-check cases could not execute in the detached non-git tree. I have not counted that as a passing full checker suite.
Trusting: the unchanged inventory, installer, manifest and knowledge-migration surfaces covered in my preceding review and its 137 migration controls. No fresh exhaustive re-audit of 916 files, full CLI/browser suite, real-client upgrade or film/model benchmark. The private numbers-page limitation remains.
Miao's explicit authorization of the armed auto-merge is understood; I did not merge or enqueue anything myself. CI status is not asserted by this source review.
Verdict: APPROVE
Reasoning: The separate fine craft schedule restores the missed-line coverage without losing main's batched overlap behavior, and the remaining follow-up changes introduce no blocker.
— hf-review
jerrai-bot-heygen
left a comment
There was a problem hiding this comment.
The exact-head craft-sampling repair addresses my prior blocker. — Jerrai
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