Files
zooqueen 75094e0d60 frames: publish the toolchain as @hanzo/frames
@hanzo/frame is taken by the hero video primitive — one full-bleed video
element — which has held that name on npm since it shipped. This repo is the
video toolchain: a CLI, a renderer, a studio, a player. Plural is what it is,
so the CLI publishes as @hanzo/frames and the workspace packages follow it
(@hanzo/frames-core, @hanzo/frames-engine, and the rest).

The binary stays `frames`, and now actually ships. The manifest mapped it to
bin/frames.mjs while the file on disk was bin/hyperframes.mjs, so a global
install produced no working command.

The paths that name a package to fetch were pointing elsewhere. The update
check read registry.npmjs.org/frames, a different author's package, and the
npm, bun and pnpm installers would have pulled it over the CLI; the render
image installed the upstream hyperframes; scaffolded projects and the docs
pinned the unscoped name. All of them now name @hanzo/frames.
2026-08-13 18:10:14 -07:00

2.2 KiB
Raw Permalink Blame History

Project-local Codex CLI skills

Skills in this directory are auto-discovered by Codex CLI (verified against Codex 0.144.3) when the frames 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 @hanzo/frames skills or npx skills add hanzoai/frames.

Weekly changelog video

The changelog-video skill turns a weekly changelog markdown into a ~45–60s branded 1080×1080 MP4 (motion-doctrine layout, one narrator, 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 frames check (0 errors) + seam-gate verify (0 fail/warn).

VO comes from frames tts and its word timings from frames transcribe, both local models. Runtime dependencies you need on PATH:

  • Node ≥ 22
  • ffmpeg (for VO wav conversion + frame QA)
  • A headless Chrome for Frames rendering (frames 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.