Files
zooqueen 62bbc7766c skills: give each skill the directory its name declares
Every SKILL.md already declared the new name — name: frames, frames-cli,
frames-core, and so on — but the directories were never moved, so the tree
carried frames-* in content and hyperframes-* on disk. Everything that
resolves a skill by path missed: the core-skill list, the plugin marketplace
pin, and the docs the CLI reads at runtime. Eight tests failed on main because
the files they open do not exist.

The directories now match what the files say they are, and the guide the
claude-design contract reads takes the name that contract already used.
2026-08-13 18:17:24 -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 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.