Skip to content
Back to skills

Code Film

ASecurity

Motion film rendered from code, frame-checked.

  • 19 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
ai-agentsrustgobashnode

Works with

  • cli

Security analysis

A100/100

Pro scans all 7 files and shows the line behind each finding

Scanned November 7, 2026

npx -y skills add event4u-app/agent-config --skill code-film --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Code Film?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Code Film
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/event4u-app-code-film-agent-config/badge)](https://www.skillsdirectory.com/skills/event4u-app-code-film-agent-config)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
model_tier: inherit
name: code-film
description: "Motion film rendered from code, frame-checked."
personas:
  - design-director
domain: product
workspaces:
  - small-business
packs:
  - ai-video
lifecycle: experimental
trust:
  level: experimental
install:
  default: false
  removable: true
scope:
  write: []
  verification_reason: "execution declares no handler, so this skill runs nothing of its own — every write is the calling agent's, under the rules that govern it. No command can prove a scope the skill never executes."
execution:
  type: manual
---

# code-film

> A motion film whose every frame is a pure function of its timestamp: a page
> exposes `window.__seek(t)`, `ui:render --profile film` seeks it to each frame,
> captures, proves the sequence deterministic, checks it against the
> photosensitivity floor and its declared format, and encodes it with ffmpeg.
> No paid video provider, no live playback. The values for film motion live in
> [`references/film-motion.md`](references/film-motion.md); the page contract in
> [`film-page`](../../../docs/contracts/film-page.md).

## When to use

- The user asks for a short motion film built from their own material — a
  product launch clip, a showreel, kinetic typography, an animated chart, a
  process explainer, a looping brand animation.
- The film has to render the same twice, sit on a beat or a declared tempo, or
  ship as an MP4 at a stated size.

## When NOT to use

- A prompt for a generative video provider (Veo, Kling, Sora) → `motion-choreographer`.
- An animation inside a UI — hover, scroll reveal, page transition → `fe-design` § Motion.
- Cutting or captioning existing footage → the `/video` cluster.
- A single static or looping SVG asset → `svg-authoring`.

## Procedure

1. **Inputs.** Ask only what the recipe lists as variable: purpose, format and
   pixel size, palette as hex, one typeface, audio (none, a supplied file, or a
   declared tempo), end card. On "just make it", state the defaults you used.
2. **Direction.** Pick one recipe from the corpus and state the one concept every
   shot serves:

   ```bash
   node <skills-root>/corpus-grounding/scripts/ground.mjs search \
     --manifest <skills-root>/code-film/data/manifest.json "<the brief>"
   ```

3. **Bans.** Pull the tells for the brief (`--domain tell`) and write each ban
   with its alternative into the plan.
4. **Grid.** Tempo and bars from the supplied track (`allin1.sh` when installed;
   otherwise a declared tempo, reported as declared), then an ordered shot list
   with times. Hold every text for its reading time (3 words per second).
5. **Explainers only — claims.** List every on-screen figure, name and date with
   its source, or mark it as the user's. Invent none.
6. **Build.** Write the page on the seek contract: `window.__seek(t)`,
   `window.__videoMeta`, no wall clock, seeded randomness, local fonts. Choose
   the renderer from `--domain renderer`; plain HTML is the default and a
   licensed renderer is suggested only after its license question is answered.
7. **Contact sheet.** Render once, read `contact.png`, fix clutter, overlap and
   off-beat timing. At most three passes.
8. **Render.**

   ```bash
   agent-config ui:render film/index.html --profile film --out film/out.mp4 [--audio track.wav]
   ```

   Exit 0 is clean, 2 carries findings (determinism, flash, dead time, format,
   network), 1 means not assessed, 3 means no browser driver.
9. **Report.** Quote the manifest: the seek form, every check as `ran` or
   `skipped: <reason>`, the findings, and `verification`. Say `verified` only
   when the manifest says it and its file digest is the file you deliver.

## Status — what each word may mean

- **verified** — every applicable check ran on this machine and the encoded
  file's digest is the one recorded. It says nothing about whether the film is
  good.
- **static-only** — frames were captured and hashed, but a check that needs
  ffmpeg (flash floor, encode, format) did not run. Name the missing tool.
- **unassessed** — nothing was seen: no browser driver, no seek form, or no
  declared length. Name the install or the missing declaration.

## Output format

1. The film path and its SHA-256 from the manifest.
2. The checks table (`ran` / `skipped: …`) and every finding.
3. The contact sheet path.
4. For an explainer, the claims list with sources.

## Gotcha

- A page that uses `Math.random` or `Date.now` renders differently in the reverse
  pass; the manifest names the first diverging frame. Seed from `t`.
- The flash floor is a safety floor: a strobe fails and no flag lowers it.
- The film profile runs the page's scripts with the network off. A font or image
  fetched from a CDN does not load — ship it next to the page.
- Determinism is proven per machine; fonts and GPUs differ between machines.
- A page built on a timeline framework is seen through `window.__timelines`
  (paused, seekable entries); embedded footage is held at `t − data-start`.
  Encode footage all-intra (`-g 1`), or a seek lands between keyframes.

## Do NOT

- Do NOT paste prompt text from an external gallery into a plan or a recipe —
  write it fresh from the corpus.
- Do NOT bundle or install a renderer without asking; detect and route.
- Do NOT call a film done from the code alone — the frames decide.
- Do NOT claim a film is good, on-brand or "less AI"; report what was measured.

## See also

- [`motion-choreographer`](../motion-choreographer/SKILL.md) — generative-provider motion prompts.
- [`svg-authoring`](../svg-authoring/SKILL.md) — the same witness vocabulary for single assets.
- [`corpus-grounding`](../corpus-grounding/SKILL.md) — the engine behind `data/`.

Files in this skill

  • SKILL.md5.6 KB
  • data/manifest.json1.3 KB
  • data/recipes.csv7.7 KB
  • data/renderers.csv1.1 KB
  • data/tells.csv2.9 KB
  • evals/triggers.json2.5 KB
  • references/film-motion.md3.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.