Skip to content

feat(skills)!: publish seven knowledge skills aligned with Studio and retire the workflow skills - #5651

Open
WaterrrForever wants to merge 32 commits into
mainfrom
miao/oss-skills-slim
Open

WaterrrForever wants to merge 32 commits into
mainfrom
miao/oss-skills-slim

Conversation

@WaterrrForever

@WaterrrForever WaterrrForever commented Oct 15, 2026 •

Copy link
Copy Markdown
Collaborator

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.

Before After
Published skills 21 7
Descriptions listed on every turn 10.9 KB 2.2 KB
hyperframes entry, read on every video 21.8 KB 6.7 KB
All seven entries 470 KB for 21 39 KB
skills/ on disk about 18 MB 3.9 MB
  1. hyperframes holds:

    • the render contract;
    • how to keep a project editable in Studio;
    • the terminal work loop: timeline → history → edit → check → snapshot the changed moments → preview before render;
    • the desktop-app hand-off.

    Its references are Studio's format, runtimes, motion (with the craft measured from shipped films), look and captions, plus:

    The 13 frame presets move to assets/.

  2. media-use shows each need with a HeyGen route beside a free local route. HeyGen: heygen auth login --oauth carries 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.md and local.md come from Studio.

  3. hyperframes-cli and hyperframes-registry are slimmed (24.8 → 6.9 KB and 9.9 → 4.3 KB). Their detail moved whole into references.

  4. slideshow, figma and remotion-to-hyperframes are 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.
  5. 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 update removes the 14 retired skills from existing installs (RETIRED_SKILLS).
    • skills update <retired name> says where that knowledge now lives instead of installing it.
    • Two scripts with no CLI equivalent move to skills/hyperframes/scripts/: bake-basemap.mjs, and locate.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

  • Moves used git mv. A script recomputed every relative path and skill-name reference across skills, docs, the CLI and tests. lint-skills reports no unresolved cross-reference.
  • Budget check. scripts/check-core-skills.mjs runs in lint and holds each entry and description to budget. It also checks every taught npx hyperframes <command> against cli.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.
  • Catalog surfaces were updated together: CLAUDE.md, AGENTS.md, README.md, the docs pages, both init templates (still byte-identical), the marketplace core-skills list and FALLBACK_CORE_SKILLS. The init template now asks for a snapshot of the changed moments after check.
  • CLI size budget raised (@hyperframes/cli, packed 7,902,966 / unpacked 23,722,874, measured plus 5%). The CLI bundles skills/hyperframes, which now carries the 13 frame presets (fonts, caption skins and showcases) that lived in hyperframes-creative.
  • Content tests moved to the files the knowledge now lives in. Assertions that pinned retired process or workflow wording were removed; each is listed in commit cbdc00500.
  • Generated catalog pages and docs/docs.json stay as on main. Renaming the "Workflows" nav group needs a PR with no catalog changes, so it comes separately.

Test plan

  • bun run lint: includes lint-skills, check-core-skills and the skill mirror. format:check, comment citations and fallow audit --base origin/main are clean.

  • test:scripts 749 pass. test:skills 547 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-plugin builds a 2,139,275-byte archive holding exactly the 7 skills, with no nested SKILL.md. package-agent-plugin.test.mjs passes 3/3. claude plugin validate . passes, with one warning that is already on main (a root CLAUDE.md is not loaded as plugin context).

  • Terminal eval.

    • Setup: claude -p with 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 the CLAUDE.md its own side's init writes.
    • Compared: main 76222e4 against this branch at b65388b and at e05215d (adds Studio's "snapshot the moments you changed" sentence). The main side was run once and reused.
    main b65388b e05215d
    G1: correct HyperFrames (check, contract, case asserts) 74% 84% 82%
    G3: CLI and tools used right 13% 34% 79%
    Both 11% 32% 71%
    Required steps (check and snapshot after the last edit, …) 65% 69% 93%
    Rule breaks (e.g. skills update inside a plugin) 10 2 2
    Cost per run $0.117 $0.092 $0.089
    Seconds per run 85 89 75
    Blind judge, 1–10 (same old runs, judged again each time) 6.86 / 6.94 7.21 7.11
    Pairwise vs main 13 wins, 1 loss, 20 ties 8 wins, 7 losses, 19 ties

    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, check still 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@hyperframes on a real client. These are only covered by unit tests of skills update pruning.

Follow-ups (separate PRs)

  • Rename the docs "Workflows" nav group.
  • Unpublish the retired skills' last versions on ClawHub. The sync stops republishing them.
  • check treats a <video> cutout as opaque, so it can't measure text placed behind a speaker.
  • The skills-manifest hash also counts untracked files such as __pycache__.

No visible change

Studio and player change only in text no screen renders. domEditingAgentPrompt.ts changes one line of the prompt Studio hands an agent: the skill path it names for timeline edits. projectProvenance.ts changes 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 under packages/studio, with no .tsx, .css or .html file there or under packages/player.

🤖 Generated with Claude Code

WaterrrForever and others added 4 commits October 15, 2026 19:33
…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>
@mintlify

mintlify Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated
hyperframes 🟢 Ready View Preview Oct 16, 2026, 1:55 PM

💡 Tip: Enable Automations to automatically generate PRs for you.

WaterrrForever and others added 3 commits October 15, 2026 20:16
…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>
WaterrrForever and others added 4 commits October 15, 2026 21:31
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>
@github-actions

github-actions Bot commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Edit accuracy: accurate 271 (base branch 271), smooth 160 of those

The gate passes.
Smoothness is reported in the artifact, not gated. A case fails only if it fails 2 of 3 runs.

Quarantined, measured but not gated (0)

Unstable (1)

  • nudge-tween-px-r0-nested-z100: tracking 0.02, pressJump -, drop 0, reload 0, render 0.02, renderKey -, undo true, teleport true / tracking 0.02, pressJump -, drop 0, reload 0, render 0.02, renderKey -, undo true, teleport true / tracking 0.02, pressJump -, drop 0, reload 0, render 0.02, renderKey -, undo true, teleport true

… 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>
@WaterrrForever WaterrrForever changed the title feat(skills): slim the core skill pack from 10 skills to 4, with HeyGen and free media paths feat(skills)!: publish seven knowledge skills aligned with Studio and retire the workflow skills Oct 15, 2026
@WaterrrForever
WaterrrForever marked this pull request as ready for review October 15, 2026 14:14

@jrusso1020 jrusso1020 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

  1. docs/reference/audio-effects.mdx:449 (and the prose at :33) tells users to run node <SKILL_DIR>/scripts/carve.mjs --comp index.html. carve.mjs only ever existed at skills/hyperframes-audio/scripts/carve.mjs, which this PR deletes, and nothing replaces it. So the documented command now fails. docs/prompting/audio-effects.mdx:57 still tells people to ask the agent to "carve it", and no kept skill teaches data-fx-carve any more: there are no hits under skills/, and media-use/references/mixing.md:67 only points at Studio's carve. Either drop the CLI section and send people to Studio's carve, or carry the script into media-use. Two Studio comments also cite scripts/carve.mjs (audioFxTelemetry.ts:201, useFxChainObserved.ts:19).
  2. skills/hyperframes/assets/frame-presets/code-editorial/FRAME.md:274 says "build-frame.mjs stages weights 400 + 700 into assets/fonts/ and appends the exact @font-face block". 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, and look.md:23 says the opposite. Rewording it to "copy the bundled WOFF2s into assets/fonts/ and add the @font-face block" is enough.

Should fix (not blocking)

  • skills/hyperframes/references/storyboard-format.md:31,75,86 still documents transition_in (crossfade, cut, wipe). The transitions.mjs inject step that acted on it is gone, with all three copies deleted together with transitionsContract.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:125 still says "see creator-editing-recipes.md", a hyperframes-core file. 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 to format.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 generated docs/catalog/components/*.mdx pages that cite hyperframes-core are fine as they are: check-catalog-source-pr forbids 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 vendored storyboard.mjs copies. Nothing breaks, but it now matters only if something outside the repo imports it.
  • ClawHub: clawhub sync --all doesn't unpublish, so the retired skills' last versions stay listed there.

Checked and fine

  • skills update pruning. Retired workflow names (generic names such as general-video) are removed only when the skills lock attributes them to heygen-com/hyperframes; leaves a same-named workflow bundle alone when no lock attributes it to us covers that. Removal goes through skills remove in the scope detection read from, and the prune uses canonical: true, so a repo checkout's own manifest can't widen it. The one deliberate exception is the six retired hyperframes-* domain skills: they are removed by name when the bundle is on disk with no lock entry. That departs from manifestCoversSkill'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 edited hyperframes-core into ~/.claude/skills loses 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_SKILLS is now the four kept core skills. The legacy core-skills marketplace entry lists only kept skills, and plugin installs skip skills update entirely (plugin-installation.md).
  • References. Every markdown link and every backticked references/, scripts/ or assets/ path in the 95 .md files 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 --check is in sync, and check-core-skills.mjs passes.
  • 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_BASE set 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.md goes 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 miguel-heygen left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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:449 still teaches node <SKILL_DIR>/scripts/carve.mjs --comp index.html, but no carve.mjs remains 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 at docs/reference/audio-effects.mdx:33 and docs/prompting/audio-effects.mdx:57 together.
  • skills/hyperframes/assets/frame-presets/code-editorial/FRAME.md:274 promises automatic font staging by the removed build-frame.mjs. The retained look.md instead 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.

WaterrrForever and others added 3 commits October 15, 2026 23:58
…, 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 jrusso1020 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved at bcc0e653a5. This resolves my request for changes at 8366864f.

Both blockers are fixed.

  • Carve. carve.mjs, carve.test.mjs and lib/main-module.mjs moved into skills/media-use/audio/scripts/, byte-identical to the originals on main. audio-effects.mdx now points at <SKILL_DIR>/audio/scripts/carve.mjs and says which skill it ships with. mixing.md teaches the carve again, including --dry-run (a real flag) and the double-quoted-attribute caveat. The new test lands under skills/**/*.test.mjs, so test:skills picks 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-face blocks, and that nothing stages them for you. All six files are in code-editorial/fonts/.

Should-fix items, also handled.

  • storyboard-format.md now marks transition_in as a note only and says to overlap the clips yourself.
  • The limitations.md:125 citation and the composition.ts comment are updated.
  • The media-use host rule now sits ahead of the HeyGen setup paragraph.
  • The registry sub-compositions.md comments 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 miguel-heygen left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@jrusso1020 jrusso1020 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.json lines, the PR's patch matches bcc0e653 (I compared the merge base with bcc0e653, then main with this head).
  • The one intended change is 5de395a5: step 5 of hyperframes-cli/SKILL.md now reads "When it is time to render (step 4):", which resolves my nit.
  • generate-skill-module-copies.mjs --check is in sync. Required CI is green.

— Rames

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@WaterrrForever

Copy link
Copy Markdown
Collaborator Author

Restored both && node scripts/check-core-skills.mjs lines (lint and lint:skills) in 0e82757. My conflict resolution took main's scripts wholesale and dropped them. Against main, package.json now differs only where it did at bcc0e65 (lint, lint:skills, test:scripts), and bun run lint prints the core-skills pass again.

@miguel-heygen miguel-heygen left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@jrusso1020 jrusso1020 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved at 2ebaf6f64e. This resolves my request for changes at 0dc8978e.

  • Core-skills check: both lint and lint:skills still end in && node scripts/check-core-skills.mjs at this head, so the check runs in CI.
  • The main merge: 2ebaf6f64e merges main, which brings in #5654 and #5657. Apart from skills-manifest.json, the PR's diff against its merge base is line-for-line the same as at 0e827572f8, 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 miguel-heygen left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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)

WaterrrForever and others added 8 commits October 16, 2026 15:47
…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>
WaterrrForever and others added 2 commits October 16, 2026 21:39
…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>
WaterrrForever and others added 2 commits October 16, 2026 22:13
…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>

This branch was successfully deployed

1 active (outdated) deployment
staging - docs — f4ee63ca Deployed Oct 16, 2026 by mintlify[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants