Files
hyperframes/.agents/skills
James RussoandClaude Opus 5 e8cbf0ca85 fix(skills): keep changelog-video's stamped seams off the clip elements (#3946)
The committed changelog-video scaffold no longer survives its own gate. Three
independent breaks, all reproduced against origin/main:

1. `gsap_animates_clip_element` (error severity, shipped this week) flags
   visibility/display/autoAlpha on any clip element. The skeleton's slides are
   `class="slide clip"` and every seam seam-stamp emits writes `autoAlpha` onto
   the ledger's selectors, so a film built from the scaffold fails
   `hyperframes check` before a scene is authored. Per the rule's own fixHint,
   each slide now holds an inner `<div class="swrap">`; the `opacity: 0` base
   moves off `.slide` onto `.swrap`, and the ledger names `#w-*`.

2. The title seam then fails as `exit-visible … op 0.00` while `exit-vector`
   PASSES. seam-stamp emits a zero-duration `tl.set(autoAlpha: 0)` at the cut,
   which immediate-renders at build time, so the exit `.to()` captures 0 as its
   start and tweens 0 → 0. Every other wrapper is saved by its stamped entry
   `fromTo(..., immediateRender: false)`; the title has no stamped entry. The
   scaffold now ships that entry, and build-spec says why the flag is required.

3. `seam-gate.mjs` defaulted `--server-cmd` to `npx --yes hyperframes preview`
   — the published package — while SKILL.md forbids `npx hyperframes@latest`
   for gate 1 and calls the repo-local CLI the contract. The two gates could
   measure different runtimes. It now prefers the repo-local bin, falling back
   to npx only for a copy of the skill living outside the repo.

Also fixes gate 1's own command: `bun run --cwd packages/cli hyperframes` exits
"Script not found" because `hyperframes` is a bin, not a script.

Both mirror dirs updated; `check-skill-mirror` confirms byte-identity.

Reported by the hyperframes session after the Sep 07-14 weekly build.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 11:56:25 -07:00
..

Project-local Codex CLI skills

Skills in this directory are auto-discovered by Codex CLI (verified against Codex 0.144.3) when the hyperframes repo is opened as the working directory. They are NOT part of the marketplace-distributed plugin (that set lives under skills/ and is manifested by .codex-plugin/). Two separate namespaces, on purpose:

  • .agents/skills/ — repo-native, run only against this repo (weekly changelog videos, doctrine-heavy authoring flows). Codex CLI's project-local skill dir.
  • skills/ — marketplace-distributable, installed into other projects via npx hyperframes skills or npx skills add heygen-com/hyperframes.

Weekly changelog video

The changelog-video skill turns a weekly changelog markdown into a ~45–60s branded 1080×1080 MP4 (motion-doctrine layout, Annie VO, seam-gated cuts, caption rail). It ships pre-configured — fonts, background pattern, house BGM, lexicon, and the align-captions script all live inside changelog-video/. Its five dependency skills (motion-doctrine, cut-the-curve, captions-overlay, seam-craft, oversized-cursor) sit alongside so the router graph is complete on clone.

Weekly usage:

  1. Regenerate the digest markdown for the target range: bun run changelog:weekly --from YYYY-MM-DD --to YYYY-MM-DD (this only reads git; the --write variant is what the docs cron uses).
  2. In Codex CLI at the repo root, invoke /changelog-video with the generated markdown. The agent will present its script + visualization plan for review before rendering.
  3. Accept, and the agent produces weekly-changelog-<range>.mp4 gated by hyperframes check (0 errors) + seam-gate verify (0 fail/warn).

TTS uses the tracked skills/hyperframes-media/scripts/heygen-tts.mjs (no extra install needed). Runtime dependencies you need on PATH:

  • Node ≥ 22
  • HeyGen CLI ≥ 0.3.0, authenticated via heygen auth login --oauth
  • ffmpeg (for VO wav conversion + frame QA)
  • A headless Chrome for HyperFrames rendering (hyperframes doctor will point out the exact ask if it's missing)

The parallel set at .claude/skills/ is a byte-identical copy so Claude Code users get the same auto-discover behaviour — keep the two in sync when editing. A scripts/check-skill-mirror.mjs check enforces this at CI time.

Each repo-native skill declares metadata.internal: true, so npx skills add skips it during normal installs (including --all). This does not change local agent discovery. To explicitly install these skills elsewhere, set INSTALL_INTERNAL_SKILLS=1 when running the installer.