Skip to content

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

Merged
WaterrrForever merged 37 commits into
mainfrom
miao/oss-skills-slim
Oct 21, 2026
Merged

WaterrrForever merged 37 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 155 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 (2)

  • seqplainkeys-none-center-r0-root-z100: tracking 0.06, pressJump 0, drop 0, reload 0, render 0.03, renderKey -, undo false, teleport true / tracking 0.06, pressJump 0, drop 0, reload 0, render 0.03, renderKey -, undo true, teleport true / tracking 0.06, pressJump 0, drop 0, reload 0, render 0.03, renderKey -, undo true, teleport true
  • seqheldtwice-tlhold-px-r0-root-z100: tracking 0.41, pressJump 60.41, drop 0.35, reload 0.35, render 0.02, renderKey -, undo true, teleport true / tracking 0.08, pressJump 0.11, drop 0.35, reload 0.35, render 0.02, renderKey -, undo true, teleport true / tracking 0.08, pressJump 0.11, drop 0.35, reload 0.35, 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>
WaterrrForever and others added 2 commits October 16, 2026 21:21
… 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>
WaterrrForever and others added 2 commits October 21, 2026 21:12
…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>
WaterrrForever added a commit that referenced this pull request Oct 21, 2026
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 jerrai-bot-heygen left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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

Comment thread packages/cli/src/utils/checkPipeline.ts Outdated
// 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) {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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 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 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

WaterrrForever and others added 2 commits October 22, 2026 02:28
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 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.

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 jerrai-bot-heygen left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The exact-head craft-sampling repair addresses my prior blocker. — Jerrai

@WaterrrForever
WaterrrForever added this pull request to the merge queue Oct 21, 2026
Merged via the queue into main with commit 6882293 Oct 21, 2026
86 checks passed
@WaterrrForever
WaterrrForever deleted the miao/oss-skills-slim branch October 21, 2026 19:40
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.

4 participants