Not in the top 1,000 by GitHub stars

kuhnhomeuk-cell/procedural-film

Agent skill: turn a topic into a 30s vertical film drawn and scored entirely in JavaScript. Reference film: the life of a monarch butterfly.

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

skills/procedural-film/SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

f59413999ae2 → f59413999ae2

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → f59413999ae2

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit f59413999ae24f6e1f9165b73a0eaa97a0b1c407

533GitHub stars
4stars in 7 days
1skill in this repository
0commits in 30 days

Heat

4.7
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 25, 2026Nov 5, 2026533

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

procedural-film

When your agent uses it

Procedural film — turn a subject into a short animated film drawn and scored entirely in JavaScript, in one of three modes: drawn (every pixel computed, zero assets), photo-doodle (real photographs with animated doodles drawn over them) or retro (pixel art on an NES palette with a chip score). Use when the user asks for a procedural film, a short hand-drawn animated film about a subject, a film that doodles on photos, or a retro pixel-art film. It also makes a retro platformer game: use it when the user asks for a retro platformer game, an NES-style game or a pixel-art game to play in the browser.

What it loads into context

Frontmatter

143 tokens

Always available to the agent

SKILL.md

7,539 tokens

When the skill is activated

Reference documents

34,870 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Modes — pick one before step 1
  2. The gate
  3. Worked example
  4. Pipeline
  5. Retro game

Scripts executed separately

  • foundation/src/core.js
  • foundation/src/lib.js
  • foundation/src/music.js
  • foundation/src/player.js
  • foundation/src/props.js
  • foundation/tools/audio/analyze.cjs
  • foundation/tools/audio/bands.cjs
  • foundation/tools/audio/cost.cjs
  • foundation/tools/audio/diffwin.cjs
  • foundation/tools/audio/envdump.cjs
  • foundation/tools/audio/live.cjs
  • foundation/tools/audio/notes.cjs
  • foundation/tools/audio/peaks.cjs
  • foundation/tools/audio/probe.cjs
  • foundation/tools/audio/render-audio.cjs
  • foundation/tools/build.cjs
  • foundation/tools/check.cjs
  • foundation/tools/common.cjs
  • foundation/tools/cutout.py
  • foundation/tools/fixtures/music.js
  • foundation/tools/fixtures/scenes/01-lib-showcase.js
  • foundation/tools/fixtures/scenes/02-fx-egg.js
  • foundation/tools/fixtures/scenes/03-fx-meadow.js
  • foundation/tools/fixtures/scenes/04-palette-sheet.js
  • foundation/tools/fixtures/timeline.js
  • foundation/tools/package.json
  • foundation/tools/photos.cjs
  • foundation/tools/render.cjs
  • foundation/tools/smoke.cjs
  • foundation/tools/snap.cjs
  • foundation/tools/stubgen.cjs
  • game/src/game/00-config.js
  • game/src/game/01-levels.js
  • game/src/game/10-engine.js
  • game/src/game/15-tokens.js
  • game/src/game/20-tape.js
  • game/src/game/21-attract.js
  • game/src/game/30-draw.js
  • game/src/game/40-api.js
  • game/src/game/45-clock.js
  • game/src/game/50-menu.js
  • game/src/manifest.js
  • game/src/music.js
  • game/src/scenes/01-game.js
  • game/src/shell.js
  • game/src/sprites.js
  • game/src/timeline.js
  • game/tools/art-check.cjs
  • game/tools/attract.cjs
  • game/tools/audio/contract.cjs
  • game/tools/audio/events.cjs
  • game/tools/audio/game-audio.cjs
  • game/tools/audio/host.cjs
  • game/tools/audio/mock-events.js
  • game/tools/build.cjs
  • game/tools/config.cjs
  • game/tools/deploy.cjs
  • game/tools/e2e/lib.cjs
  • game/tools/e2e/run.cjs
  • game/tools/e2e/serve.cjs
  • game/tools/game-check.cjs
  • game/tools/gates.cjs
  • game/tools/levels-lint.cjs
  • game/tools/png.cjs
  • game/tools/proof/clock.cjs
  • game/tools/proof/determinism.cjs
  • game/tools/proof/engine-scenarios.cjs
  • game/tools/proof/fixtures/engine-defs.cjs
  • game/tools/proof/full.cjs
  • game/tools/proof/harness.cjs
  • game/tools/proof/levels.cjs
  • game/tools/proof/levels.data.cjs
  • game/tools/proof/menu.cjs
  • game/tools/proof/no-network.cjs
  • game/tools/proof/programs/1-1.cjs
  • game/tools/proof/programs/kit.cjs
  • game/tools/proof/programs/routes.cjs
  • game/tools/site.cjs
  • retro/src/chip.js
  • retro/src/crt.js
  • retro/src/pixel.js
  • retro/tools/audio/melody.cjs
  • retro/tools/fixtures/retro/music.js
  • retro/tools/fixtures/retro/scenes/01-sheet.js
  • retro/tools/fixtures/retro/scenes/02-crt.js
  • retro/tools/fixtures/retro/sprites.js
  • retro/tools/fixtures/retro/timeline.js
  • templates/cast.js
  • templates/music-retro.js
  • templates/sprites.js

Files

  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • SKILL.mdcore29,765 bytes
  • foundation/.gitignoreasset198 bytes
  • foundation/src/core.jsruns22,107 bytes
  • foundation/src/lib.jsruns88,979 bytes
  • foundation/src/music.jsruns50,116 bytes
  • foundation/src/player.jsruns6,746 bytes
  • foundation/src/props.jsruns15,339 bytes
  • foundation/tools/audio/analyze.cjsruns11,644 bytes
  • foundation/tools/audio/bands.cjsruns2,703 bytes
  • foundation/tools/audio/cost.cjsruns1,941 bytes
  • foundation/tools/audio/diffwin.cjsruns1,209 bytes
  • foundation/tools/audio/envdump.cjsruns1,459 bytes
  • foundation/tools/audio/live.cjsruns1,603 bytes
  • foundation/tools/audio/notes.cjsruns2,756 bytes
  • foundation/tools/audio/peaks.cjsruns1,250 bytes
  • foundation/tools/audio/probe.cjsruns1,664 bytes
  • foundation/tools/audio/render-audio.cjsruns4,046 bytes
  • foundation/tools/build.cjsruns2,439 bytes
  • foundation/tools/check.cjsruns46,984 bytes
  • foundation/tools/common.cjsruns29,783 bytes
  • foundation/tools/cutout.pyruns1,044 bytes
  • foundation/tools/fixtures/music.jsruns3,880 bytes
  • foundation/tools/fixtures/scenes/01-lib-showcase.jsruns9,865 bytes
  • foundation/tools/fixtures/scenes/02-fx-egg.jsruns1,361 bytes
  • foundation/tools/fixtures/scenes/03-fx-meadow.jsruns1,369 bytes
  • foundation/tools/fixtures/scenes/04-palette-sheet.jsruns2,452 bytes
  • foundation/tools/fixtures/timeline.jsruns1,225 bytes
  • foundation/tools/package-lock.jsonasset1,064 bytes
  • foundation/tools/package.jsonruns56 bytes
  • foundation/tools/photos.cjsruns1,941 bytes
  • foundation/tools/render.cjsruns10,923 bytes
  • foundation/tools/smoke.cjsruns453 bytes
  • foundation/tools/snap.cjsruns6,573 bytes
  • foundation/tools/stubgen.cjsruns4,843 bytes
  • game/src/game/00-config.jsruns986 bytes
  • game/src/game/01-levels.jsruns5,961 bytes
  • game/src/game/10-engine.jsruns66,073 bytes
  • game/src/game/15-tokens.jsruns3,048 bytes
  • game/src/game/20-tape.jsruns11,041 bytes
  • game/src/game/21-attract.jsruns822 bytes
  • game/src/game/30-draw.jsruns20,755 bytes
  • game/src/game/40-api.jsruns9,215 bytes
  • game/src/game/45-clock.jsruns2,253 bytes
  • game/src/game/50-menu.jsruns24,144 bytes
  • game/src/manifest.jsruns5,393 bytes
  • game/src/music.jsruns10,200 bytes
  • game/src/scenes/01-game.jsruns1,115 bytes
  • game/src/shell.jsruns59,312 bytes
  • game/src/sprites.jsruns22,546 bytes
  • game/src/timeline.jsruns2,297 bytes
  • game/tools/art-check.cjsruns4,743 bytes
  • game/tools/attract.cjsruns4,235 bytes
  • game/tools/audio/contract.cjsruns3,294 bytes
  • game/tools/audio/events.cjsruns1,651 bytes
  • game/tools/audio/game-audio.cjsruns18,411 bytes
  • game/tools/audio/host.cjsruns5,825 bytes
  • game/tools/audio/mock-events.jsruns2,150 bytes
  • game/tools/build.cjsruns4,736 bytes
  • game/tools/config.cjsruns1,837 bytes
  • game/tools/deploy.cjsruns11,543 bytes
  • game/tools/e2e/lib.cjsruns7,190 bytes
  • game/tools/e2e/run.cjsruns30,370 bytes
  • game/tools/e2e/serve.cjsruns4,742 bytes
  • game/tools/game-check.cjsruns21,551 bytes
  • game/tools/gates.cjsruns2,878 bytes
  • game/tools/levels-lint.cjsruns22,299 bytes
  • game/tools/png.cjsruns10,775 bytes
  • game/tools/proof/clock.cjsruns5,540 bytes
  • game/tools/proof/determinism.cjsruns5,779 bytes
  • game/tools/proof/engine-scenarios.cjsruns48,226 bytes
  • game/tools/proof/fixtures/engine-defs.cjsruns6,723 bytes
  • game/tools/proof/full.cjsruns5,233 bytes
  • game/tools/proof/harness.cjsruns11,621 bytes
  • game/tools/proof/levels.cjsruns9,497 bytes
  • game/tools/proof/levels.data.cjsruns2,673 bytes
  • game/tools/proof/menu.cjsruns19,132 bytes
  • game/tools/proof/no-network.cjsruns3,026 bytes
  • game/tools/proof/programs/1-1.cjsruns1,110 bytes
  • game/tools/proof/programs/kit.cjsruns23,269 bytes
  • game/tools/proof/programs/routes.cjsruns3,273 bytes
  • game/tools/proof/tapes/1-1-cellar.modern.jsonasset552 bytes
  • game/tools/proof/tapes/1-1-cellar.nes.jsonasset549 bytes
  • game/tools/proof/tapes/1-1.modern.jsonasset686 bytes
  • game/tools/proof/tapes/1-1.nes.jsonasset683 bytes
  • game/tools/proof/tapes/full.modern.jsonasset676 bytes
  • game/tools/proof/tapes/full.nes.jsonasset673 bytes
  • game/tools/site.cjsruns17,514 bytes
  • reference/example-blueprint-frame.jpgasset77,673 bytes
  • reference/example-contact-sheet.jpgasset544,834 bytes
  • reference/example-paper-frame.jpgasset118,122 bytes
  • reference/music.mddoc4,624 bytes
  • reference/retro-display.mddoc6,745 bytes
  • reference/retro-game.mddoc19,372 bytes
  • reference/retro-sound.mddoc6,741 bytes
  • reference/scene-anatomy.mddoc5,351 bytes
  • reference/shot-types.mddoc8,340 bytes
  • retro/src/chip.jsruns43,605 bytes
  • retro/src/crt.jsruns74,517 bytes
  • retro/src/pixel.jsruns27,041 bytes
  • retro/tools/audio/melody.cjsruns4,877 bytes
  • retro/tools/fixtures/retro/music.jsruns1,036 bytes
  • retro/tools/fixtures/retro/scenes/01-sheet.jsruns1,267 bytes
  • retro/tools/fixtures/retro/scenes/02-crt.jsruns393 bytes
  • retro/tools/fixtures/retro/sprites.jsruns2,196 bytes
  • retro/tools/fixtures/retro/timeline.jsruns1,538 bytes
  • templates/CONTRACT.mddoc8,468 bytes
  • templates/art-bible-photo-doodle.mddoc8,546 bytes
  • templates/art-bible-retro.mddoc12,316 bytes
  • templates/art-bible.mddoc12,545 bytes
  • templates/cast.jsruns11,075 bytes
  • templates/game-spec.mddoc19,125 bytes
  • templates/music-retro.jsruns3,457 bytes
  • templates/reference-analysis.mddoc8,179 bytes
  • templates/sprites.jsruns7,542 bytes
  • templates/storyboard.mddoc5,464 bytes
Read SKILL.md

# Procedural film

Turn a topic into a **film**: roughly 30 seconds at 24 fps, every event on a **beat grid** (bpm → beats → frames), every stroke and every audio sample computed in plain browser JavaScript. The deliverable is `dist/<slug>.html` (a self-contained player) plus `exports/<slug>.mp4` and its phone and preview transcodes.

The skill also makes a retro platformer game that plays in the browser. That track is under "Retro game" at the end of this file.

## Modes — pick one before step 1

| | **drawn** (default) | **photo-doodle** | **retro** |
|---|---|---|---|
| What is on screen | every pixel computed: hand-inked **paper plate** shots cut against navy **blueprint plate** shots | a background-removed **photograph** per shot, standing on tinted paper, with animated doodles drawn over and around it | pixel art on the NES palette, shown sharp or on an optional old TV |
| Frame | vertical 1080×1920 | square 1080×1080 | 1920×1080 at 60 fps, drawn at 320×180 |
| Subject | explaining something real: a life cycle, a process, how a thing works | a story staged on ordinary objects, where each photo becomes a set (a clock becomes a bed, a pine cone becomes a mountain) | a story told as a side-scrolling pixel scene |
| Assets | none at all | photographs you source, licence and cut out yourself | none at all |
View the complete source on GitHub

Skills included

  • procedural-film

Repository facts

License
MIT
Created
Sep 17, 2026
Last pushed
Sep 25, 2026
Forks
60
Open issues
4
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 6, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 48 notes
  • skills/procedural-film/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/procedural-film/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/procedural-film/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/procedural-film/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/procedural-film/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/procedural-film/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/procedural-film/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/procedural-film/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/procedural-film/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/procedural-film/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/procedural-film/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/procedural-film/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/procedural-film/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/procedural-film/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/procedural-film/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/procedural-film/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/procedural-film/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/procedural-film/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/procedural-film/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/procedural-film/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 139 signals by file

skills/procedural-film/SKILL.md

  • Network accessline 45
    `butterfly-life` is a finished film from this pipeline, at `../../examples/butterfly-life/` from this skill folder, or online at https://github.com/kuhnhomeuk-cell/procedural-film/tree/main/examples/butterfly-life when that folder is absent

skills/procedural-film/foundation/.gitignore

  • Access to secretsline 6
    [Credential-related source omitted]

skills/procedural-film/foundation/src/core.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/foundation/src/lib.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/foundation/src/music.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/foundation/src/player.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/foundation/src/props.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/foundation/tools/audio/analyze.cjs

  • Executable scriptline 1
    Executable file
  • Network accessline 223
    c += x * y; ea += x * x; eb += y * y;         }         const nc = c / Math.sqrt(ea * eb + 1e-20);
  • Network accessline 224
    }         const nc = c / Math.sqrt(ea * eb + 1e-20);         if (nc > bestC) { bestC = nc; bestLag = lag; }
  • Network accessline 225
    const nc = c / Math.sqrt(ea * eb + 1e-20);
  • Network accessline 226
    if (nc > bestC) { bestC = nc; bestLag = lag; }

skills/procedural-film/foundation/tools/audio/bands.cjs

  • Executable scriptline 1
    Executable file

skills/procedural-film/foundation/tools/audio/cost.cjs

  • Executable scriptline 1
    Executable file

skills/procedural-film/foundation/tools/audio/diffwin.cjs

  • Executable scriptline 1
    Executable file

skills/procedural-film/foundation/tools/audio/envdump.cjs

  • Executable scriptline 1
    Executable file

skills/procedural-film/foundation/tools/audio/live.cjs

  • Executable scriptline 1
    Executable file

skills/procedural-film/foundation/tools/audio/notes.cjs

  • Executable scriptline 1
    Executable file

skills/procedural-film/foundation/tools/audio/peaks.cjs

  • Executable scriptline 1
    Executable file

skills/procedural-film/foundation/tools/audio/probe.cjs

  • Executable scriptline 1
    Executable file

skills/procedural-film/foundation/tools/audio/render-audio.cjs

  • Executable scriptline 1
    Executable file

skills/procedural-film/foundation/tools/build.cjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/procedural-film/foundation/tools/check.cjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/procedural-film/foundation/tools/common.cjs

  • Executable scriptline 1
    Executable file
  • Network accessline 614
    { name: '.src/.srcset assignment', re: /\.\s*(?:src|srcset)\s*=(?!=)/g },   { name: 'setAttribute(src/srcset/href)', re: /setAttribute(?:NS)?\s*\(\s*(?:[^,()]*,\s*)?['"`](?:src|srcset|href|xlink:href)['"`]/gi },   { name: 'fetch(', re: /\bf
  • Network accessline 615
    { name: 'setAttribute(src/srcset/href)', re: /setAttribute(?:NS)?\s*\(\s*(?:[^,()]*,\s*)?['"`](?:src|srcset|href|xlink:href)['"`]/gi },   { name: 'fetch(', re: /\bfetch\s*\(/g },   { name: 'XMLHttpRequest', re: /XMLHttpRequest/g },
  • Network accessline 616
    { name: 'fetch(', re: /\bfetch\s*\(/g },

skills/procedural-film/foundation/tools/cutout.py

  • Executable scriptline 1
    Executable file

skills/procedural-film/foundation/tools/fixtures/music.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/foundation/tools/fixtures/scenes/01-lib-showcase.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/foundation/tools/fixtures/scenes/02-fx-egg.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/foundation/tools/fixtures/scenes/03-fx-meadow.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/foundation/tools/fixtures/scenes/04-palette-sheet.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/foundation/tools/fixtures/timeline.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/foundation/tools/package-lock.json

  • Network accessline 11
    "node_modules/playwright": {       "version": "1.63.0",       "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.63.0.tgz",
  • Network accessline 12
    "version": "1.63.0",       "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.63.0.tgz",       "integrity": "sha512-+7ziBLidS4NaNCdt57SUDT+wYmmd5fmiQejUic/kb+YsYSCPyOOE9sebzMjNmQrsnNpDJqd4WHvV/8lfKfUDUg==",
  • Network accessline 13
    "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.63.0.tgz",
  • Network accessline 26
    "node_modules/playwright-core": {       "version": "1.63.0",       "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.63.0.tgz",
  • Network accessline 27
    "version": "1.63.0",       "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.63.0.tgz",       "integrity": "sha512-rYCsBF/M5HjUch52bbtVONEFjv6Xu8sm8h72dNlR5bzIE1fvC/bxgspzkjSfU+MweEMmPM8KJebG6nnyxo5mCg==",
  • Network accessline 28
    "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.63.0.tgz",

skills/procedural-film/foundation/tools/package.json

  • Executable scriptline 1
    Executable file

skills/procedural-film/foundation/tools/photos.cjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/procedural-film/foundation/tools/render.cjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/procedural-film/foundation/tools/smoke.cjs

  • Executable scriptline 1
    Executable file

skills/procedural-film/foundation/tools/snap.cjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/procedural-film/foundation/tools/stubgen.cjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/procedural-film/game/src/game/00-config.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/src/game/01-levels.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/src/game/10-engine.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/src/game/15-tokens.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/src/game/20-tape.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/src/game/21-attract.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/src/game/30-draw.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/src/game/40-api.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/src/game/45-clock.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/src/game/50-menu.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/src/manifest.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/src/music.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/src/scenes/01-game.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/src/shell.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/src/sprites.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/src/timeline.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/tools/art-check.cjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/procedural-film/game/tools/attract.cjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/procedural-film/game/tools/audio/contract.cjs

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/tools/audio/events.cjs

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/tools/audio/game-audio.cjs

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/tools/audio/host.cjs

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/tools/audio/mock-events.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/tools/build.cjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/procedural-film/game/tools/config.cjs

  • Executable scriptline 1
    Executable file
  • Network accessline 32
    if (explicit) return { url: String(explicit).replace(/\/+$/, ''), placeholder: false };   if (cfg.siteUrl) return { url: String(cfg.siteUrl).replace(/\/+$/, ''), placeholder: false };   return { url: `https://${cfg.slug}.vercel.app`, placeh
  • Network accessline 33
    if (cfg.siteUrl) return { url: String(cfg.siteUrl).replace(/\/+$/, ''), placeholder: false };   return { url: `https://${cfg.slug}.vercel.app`, placeholder: true }; }
  • Network accessline 34
    return { url: `https://${cfg.slug}.vercel.app`, placeholder: true };

skills/procedural-film/game/tools/deploy.cjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 153
    name = REDEPLOY ? linkedName() || NAMES[0] : NAMES[0];     site = CFG.siteUrl ? CFG.siteUrl.replace(/\/+$/, '') : `https://${name}.vercel.app`;
  • Network accessline 154
    site = CFG.siteUrl ? CFG.siteUrl.replace(/\/+$/, '') : `https://${name}.vercel.app`;
  • Network accessline 156
    name = linkedName();     if (!name || !NAMES.includes(name)) throw new Error(`--redeploy needs web/.vercel/project.json linked to ${NAMES.join(' or ')} by an earlier run (found ${name})`);     site = CFG.siteUrl ? CFG.siteUrl.replace(/\/+$/
  • Network accessline 157
    if (!name || !NAMES.includes(name)) throw new Error(`--redeploy needs web/.vercel/project.json linked to ${NAMES.join(' or ')} by an earlier run (found ${name})`);     site = CFG.siteUrl ? CFG.siteUrl.replace(/\/+$/, '') : `https://${name}.
  • Network accessline 158
    site = CFG.siteUrl ? CFG.siteUrl.replace(/\/+$/, '') : `https://${name}.vercel.app`;
  • Network accessline 160
    } else {     ({ name } = pickName());     site = CFG.siteUrl ? CFG.siteUrl.replace(/\/+$/, '') : `https://${name}.vercel.app`;
  • Network accessline 161
    ({ name } = pickName());     site = CFG.siteUrl ? CFG.siteUrl.replace(/\/+$/, '') : `https://${name}.vercel.app`;   }
  • Network accessline 162
    site = CFG.siteUrl ? CFG.siteUrl.replace(/\/+$/, '') : `https://${name}.vercel.app`;

skills/procedural-film/game/tools/e2e/lib.cjs

  • Executable scriptline 1
    Executable file
  • Network accessline 62
    });   page.on('pageerror', (e) => t.errors.push('pageerror: ' + e.message));   page.on('request', (r) => t.requests.push(r.url()));
  • Network accessline 63
    page.on('pageerror', (e) => t.errors.push('pageerror: ' + e.message));   page.on('request', (r) => t.requests.push(r.url()));   await page.addInitScript(initScript);
  • Network accessline 64
    page.on('request', (r) => t.requests.push(r.url()));

skills/procedural-film/game/tools/e2e/run.cjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 69
    ok(nHashes === nScripts, `CSP lists ${nHashes} hashes for ${nScripts} scripts`);       const origin = new URL(t.url).origin;       const other = t.requests.filter((u) => {
  • Network accessline 70
    const origin = new URL(t.url).origin;       const other = t.requests.filter((u) => {         const x = new URL(u);
  • Network accessline 71
    const other = t.requests.filter((u) => {
  • Network accessline 77
    ok(h['x-content-type-options'] === 'nosniff' && h['referrer-policy'] === 'no-referrer' && /frame-ancestors 'none'/.test(h['content-security-policy'] || ''),         `document headers missing vercel.json values: ${JSON.stringify(h)}`);      
  • Network accessline 78
    `document headers missing vercel.json values: ${JSON.stringify(h)}`);       return `${nHashes} script hashes; requests: ${t.requests.map((u) => new URL(u).pathname).join(' ')}; headers nosniff, no-referrer, frame-ancestors 'none'`;     },
  • Network accessline 79
    return `${nHashes} script hashes; requests: ${t.requests.map((u) => new URL(u).pathname).join(' ')}; headers nosniff, no-referrer, frame-ancestors 'none'`;

skills/procedural-film/game/tools/e2e/serve.cjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 62
    const server = http.createServer((req, res) => {     const { cfg, rules } = loadConfig(root); // re-read: site.cjs may rewrite it between runs     const u = new URL(req.url, 'http://x');
  • Network accessline 63
    const { cfg, rules } = loadConfig(root); // re-read: site.cjs may rewrite it between runs     const u = new URL(req.url, 'http://x');     let p;
  • Network accessline 64
    const u = new URL(req.url, 'http://x');
  • Network accessline 98
    const a = server.address();       resolve({         url: `http://${host}:${a.port}`,
  • Network accessline 99
    resolve({         url: `http://${host}:${a.port}`,         port: a.port,
  • Network accessline 100
    url: `http://${host}:${a.port}`,

skills/procedural-film/game/tools/game-check.cjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/procedural-film/game/tools/gates.cjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/procedural-film/game/tools/levels-lint.cjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/procedural-film/game/tools/png.cjs

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/tools/proof/clock.cjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/procedural-film/game/tools/proof/determinism.cjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/procedural-film/game/tools/proof/engine-scenarios.cjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/procedural-film/game/tools/proof/fixtures/engine-defs.cjs

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/tools/proof/full.cjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/procedural-film/game/tools/proof/harness.cjs

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/tools/proof/levels.cjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/procedural-film/game/tools/proof/levels.data.cjs

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/tools/proof/menu.cjs

  • Executable scriptline 1
    #!/usr/bin/env node

skills/procedural-film/game/tools/proof/no-network.cjs

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/tools/proof/programs/1-1.cjs

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/tools/proof/programs/kit.cjs

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/tools/proof/programs/routes.cjs

  • Executable scriptline 1
    Executable file

skills/procedural-film/game/tools/site.cjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 8
    // 2. W3: inserts right after <meta charset> a Content-Security-Policy <meta> with one sha256 per inline //    script, and into the game page (before <style>) the share block from a fixed template whose only //    variable is SITE (validate
  • Network accessline 9
    //    script, and into the game page (before <style>) the share block from a fixed template whose only //    variable is SITE (validated against ^https://[a-z0-9-]+\.vercel\.app$). Then asserts that each final //    page equals its scanned 
  • Network accessline 10
    //    variable is SITE (validated against ^https://[a-z0-9-]+\.vercel\.app$). Then asserts that each final

skills/procedural-film/reference/retro-game.md

  • Network accessline 382
    node tools/gates.cjs node tools/gates.cjs --site https://my-game.vercel.app
  • Network accessline 383
    node tools/gates.cjs --site https://my-game.vercel.app

skills/procedural-film/retro/src/chip.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/retro/src/crt.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/retro/src/pixel.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/retro/tools/audio/melody.cjs

  • Executable scriptline 1
    Executable file

skills/procedural-film/retro/tools/fixtures/retro/music.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/retro/tools/fixtures/retro/scenes/01-sheet.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/retro/tools/fixtures/retro/scenes/02-crt.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/retro/tools/fixtures/retro/sprites.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/retro/tools/fixtures/retro/timeline.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/templates/cast.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/templates/game-spec.md

  • Network accessline 84
    Banned in every `src` file, checked by the media scan and check 3: `url(`, `.src =`, `data:`, `base64`, `fetch(`, `import(`, `new Image`, `<link`, `@font-face`, quoted media file names, `Math.random`, `Date` (even inside a string), `perform
  • Network accessline 85
    `url(`, `.src =`, `data:`, `base64`, `fetch(`, `import(`, `new Image`, `<link`, `@font-face`, quoted media file names, `Math.random`, `Date` (even inside a string), `performance.now` and crypto randomness.

skills/procedural-film/templates/music-retro.js

  • Executable scriptline 1
    Executable file

skills/procedural-film/templates/reference-analysis.md

  • Network accessline 6
    Source: https://x.com/kevin_t_ngo/status/2099858454043349342 (posted 15 Sep 2026, 633K views).

skills/procedural-film/templates/sprites.js

  • Executable scriptline 1
    Executable file

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Signal confidence: 132 facts

and 82 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md skills/procedural-film/SKILL.md.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md skills/procedural-film/SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md skills/procedural-film/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md skills/procedural-film/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md skills/procedural-film/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md skills/procedural-film/SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.