Not in the top 1,000 by GitHub stars

JamesDimachkie/legible-film

Video editing for coding agents: cut interviews, podcasts and tutorials from their transcripts, make launch films, caption and mix, and check the delivered file before it ships.

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/legible-film/SKILL.md

Week of Nov 2, 2026 · +61 / −311 lines

Before Not checked yet → After Network or broad shell

b0a206037b5b → 9b7b1cedbc5f

Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.

This preview is limited. See the complete change on GitHub.

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Not checked yet

First observation → b0a206037b5b

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 9b7b1cedbc5f97cb163ec5138358aec67a5a73d1

git clone --filter=blob:none --no-checkout https://github.com/JamesDimachkie/legible-film.git .hotskills/jamesdimachkie-legible-film && git -C .hotskills/jamesdimachkie-legible-film checkout --detach 9b7b1cedbc5f97cb163ec5138358aec67a5a73d1 # Copy each selected skill directory from .hotskills/jamesdimachkie-legible-film into .claude/skills/<skill-name>/
23GitHub stars
19stars in 7 days
1skill in this repository
62commits in 30 days

Heat

5.6
  • 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 29, 2026Nov 5, 202623

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

Individual skills in this repository

How it works

legible-film

When your agent uses it

Video with picture and sound on one clock: launch films and motion graphics drawn in an engine, social posts, inserts inside footage, sound for a finished picture, cuts and tightening of recordings, an editor's Premiere revisions, quick video conversions, and checking how an export looks or plays. Not for audio-only files, downloading, transcribing or metadata alone.

What it loads into context

Frontmatter

177 tokens

Always available to the agent

SKILL.md

1,536 tokens

When the skill is activated

Reference documents

153,226 tokens

Loaded on request

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

The playbook

  1. Gates
  2. Start with the frame
  3. Pick the path
  4. Picture and sound on one clock
  5. Every path ends the same way
  6. Hard limits
  7. First run, commands, scripts

Scripts executed separately

  • assets/kit/blocks/caption.js
  • assets/kit/blocks/common.js
  • assets/kit/blocks/dither.js
  • assets/kit/blocks/endcard.js
  • assets/kit/blocks/index.js
  • assets/kit/blocks/name.js
  • assets/kit/blocks/number.js
  • assets/kit/blocks/still.js
  • assets/kit/blocks/terminal.js
  • assets/kit/blocks/thread.js
  • assets/kit/blocks/type.js
  • assets/kit/blocks/without.js
  • assets/kit/films/atlasfold/film.js
  • assets/kit/films/starter/film.js
  • assets/kit/lf/analyse.js
  • assets/kit/lf/color.js
  • assets/kit/lf/ease.js
  • assets/kit/lf/engine.js
  • assets/kit/lf/flashmap.js
  • assets/kit/lf/fx.js
  • assets/kit/lf/legacy.js
  • assets/kit/lf/main.js
  • assets/kit/lf/motion.js
  • assets/kit/lf/node.js
  • assets/kit/lf/rng.js
  • assets/kit/lf/svg.js
  • assets/kit/lf/text.js
  • assets/kit/lf/ui.js
  • scripts/NOTICE
  • scripts/assemble.py
  • scripts/blank_scan.py
  • scripts/captions.py
  • scripts/check.py
  • scripts/compare_versions.py
  • scripts/conform.py
  • scripts/cue_list.py
  • scripts/cue_onsets.py
  • scripts/cut.py
  • scripts/delivery_check.py
  • scripts/dialogue_io.py
  • scripts/exchange.py
  • scripts/film_capture.mjs
  • scripts/film_check.py
  • scripts/film_render.py
  • scripts/flash_scan.py
  • scripts/frame_sheet.py
  • scripts/grade.py
  • scripts/kit_selftest.py
  • scripts/listen.py
  • scripts/look.py
  • scripts/make_film.py
  • scripts/make_sound_kit.py
  • scripts/map.py
  • scripts/matte.py
  • scripts/mix_cues.py
  • scripts/motion_blur.py
  • scripts/motion_scan.py
  • scripts/new_film.py
  • scripts/onion_frames.py
  • scripts/project.py
  • scripts/qc_file.py
  • scripts/reframe.py
  • scripts/region_check.py
  • scripts/render_block.cjs
  • scripts/render_common.py
  • scripts/screen.py
  • scripts/selftest.py
  • scripts/selftest_cases/_browser.py
  • scripts/selftest_cases/attach_mix.py
  • scripts/selftest_cases/captions.py
  • scripts/selftest_cases/chain.py
  • scripts/selftest_cases/check.py
  • scripts/selftest_cases/conform.py
  • scripts/selftest_cases/cue_export.py
  • scripts/selftest_cases/cues.py
  • scripts/selftest_cases/custody.py
  • scripts/selftest_cases/cut.py
  • scripts/selftest_cases/cut_record.py
  • scripts/selftest_cases/dialogue.py
  • scripts/selftest_cases/dialogue_baseline.txt
  • scripts/selftest_cases/exchange.py
  • scripts/selftest_cases/exchange_write.py
  • scripts/selftest_cases/firstrun.py
  • scripts/selftest_cases/flash.py
  • scripts/selftest_cases/footage.py
  • scripts/selftest_cases/gaps.py
  • scripts/selftest_cases/grade.py
  • scripts/selftest_cases/identity.py
  • scripts/selftest_cases/library.py
  • scripts/selftest_cases/lock.py
  • scripts/selftest_cases/look.py
  • scripts/selftest_cases/make.py
  • scripts/selftest_cases/map.py
  • scripts/selftest_cases/matte.py
  • scripts/selftest_cases/outputs.py
  • scripts/selftest_cases/project.py
  • scripts/selftest_cases/qcfix.py
  • scripts/selftest_cases/readers.py
  • scripts/selftest_cases/record.py
  • scripts/selftest_cases/register.py
  • scripts/selftest_cases/render.py
  • scripts/selftest_cases/reviewfix.py
  • scripts/selftest_cases/roles.py
  • scripts/selftest_cases/runs.py
  • scripts/selftest_cases/screen.py
  • scripts/selftest_cases/setup.py
  • scripts/selftest_cases/sound.py
  • scripts/selftest_cases/sound_u4.py
  • scripts/selftest_cases/spatial.py
  • scripts/selftest_cases/stream.py
  • scripts/selftest_cases/taste.py
  • scripts/selftest_cases/tighten.py
  • scripts/selftest_cases/tracefix.py
  • scripts/selftest_cases/u5a.py
  • scripts/selftest_cases/u5a_media.py
  • scripts/selftest_cases/u5b.py
  • scripts/setup.py
  • scripts/sound_check.py
  • scripts/sound_io.py
  • scripts/sound_library.py
  • scripts/spatial.py
  • scripts/spot_cues.py
  • scripts/strip.py
  • scripts/sync_check.py
  • scripts/taste.py
  • scripts/tempo_map.py
  • scripts/testpages/identity/.hyperframesignore
  • scripts/testpages/identity/film.js
  • scripts/tighten.py
  • scripts/track.py
  • scripts/transcribe.py
  • scripts/transcript_cut.py
  • scripts/voice_clean.py
  • scripts/with_lock.py

Files

  • ../../.claude-plugin/marketplace.jsonasset583 bytes
  • ../../.claude-plugin/plugin.jsonasset892 bytes
  • LICENSE.txtdoc11,358 bytes
  • NOTICEasset1,098 bytes
  • SKILL.mdcore6,319 bytes
  • agents/openai.yamlasset172 bytes
  • assets/caption-house-style.jsonasset258 bytes
  • assets/examples/score-example.mddoc7,177 bytes
  • assets/fonts/IBMPlexMono-LICENSE.txtdoc5,299 bytes
  • assets/fonts/IBMPlexMono-Latin-400.woff2asset14,708 bytes
  • assets/fonts/Inter-LICENSE.txtdoc4,477 bytes
  • assets/fonts/Inter-Latin-400.woff2asset23,664 bytes
  • assets/fonts/Inter-Latin-500.woff2asset24,272 bytes
  • assets/fonts/Inter-Latin-600.woff2asset24,452 bytes
  • assets/kit/BLOCKS.mddoc21,288 bytes
  • assets/kit/blocks/caption.jsruns4,347 bytes
  • assets/kit/blocks/common.jsruns4,687 bytes
  • assets/kit/blocks/dither.jsruns6,724 bytes
  • assets/kit/blocks/endcard.jsruns6,446 bytes
  • assets/kit/blocks/index.jsruns1,265 bytes
  • assets/kit/blocks/name.jsruns5,863 bytes
  • assets/kit/blocks/number.jsruns4,404 bytes
  • assets/kit/blocks/still.jsruns5,318 bytes
  • assets/kit/blocks/terminal.jsruns11,170 bytes
  • assets/kit/blocks/thread.jsruns7,569 bytes
  • assets/kit/blocks/type.jsruns15,493 bytes
  • assets/kit/blocks/without.jsruns4,675 bytes
  • assets/kit/films/atlasfold/facts.jsonasset4,499 bytes
  • assets/kit/films/atlasfold/film.jsruns20,112 bytes
  • assets/kit/films/starter/facts.jsonasset2,565 bytes
  • assets/kit/films/starter/film.jsruns2,967 bytes
  • assets/kit/fonts/GeistMono-LICENSE.txtdoc4,383 bytes
  • assets/kit/fonts/GeistMonoVF.woff2asset71,596 bytes
  • assets/kit/fonts/MonaSans-LICENSE.txtdoc4,403 bytes
  • assets/kit/fonts/MonaSansVF.woff2asset307,976 bytes
  • assets/kit/fonts/NOTO-NOTICE.mddoc867 bytes
  • assets/kit/fonts/NotoSansArabic-Bold.ttfasset194,520 bytes
  • assets/kit/fonts/NotoSansArabic-LICENSE.txtdoc4,382 bytes
  • assets/kit/fonts/NotoSansDevanagari-Bold.ttfasset218,796 bytes
  • assets/kit/fonts/NotoSansDevanagari-LICENSE.txtdoc4,386 bytes
  • assets/kit/fonts/NotoSansHebrew-Bold.ttfasset47,724 bytes
  • assets/kit/fonts/NotoSansHebrew-LICENSE.txtdoc4,382 bytes
  • assets/kit/fonts/NotoSansThai-Bold.ttfasset47,800 bytes
  • assets/kit/fonts/NotoSansThai-LICENSE.txtdoc4,380 bytes
  • assets/kit/index.htmlasset1,447 bytes
  • assets/kit/lf/analyse.jsruns26,540 bytes
  • assets/kit/lf/color.jsruns6,305 bytes
  • assets/kit/lf/ease.jsruns3,594 bytes
  • assets/kit/lf/engine.jsruns36,469 bytes
  • assets/kit/lf/flashmap.jsruns19,432 bytes
  • assets/kit/lf/fx.jsruns13,220 bytes
  • assets/kit/lf/legacy.jsruns2,454 bytes
  • assets/kit/lf/main.jsruns6,676 bytes
  • assets/kit/lf/motion.jsruns7,330 bytes
  • assets/kit/lf/node.jsruns5,366 bytes
  • assets/kit/lf/rng.jsruns1,190 bytes
  • assets/kit/lf/svg.jsruns1,984 bytes
  • assets/kit/lf/text.jsruns22,589 bytes
  • assets/kit/lf/ui.jsruns8,047 bytes
  • assets/templates/assets.csvasset332 bytes
  • assets/templates/brief.mddoc2,229 bytes
  • assets/templates/budget.csvasset1,698 bytes
  • assets/templates/conform-map.jsonasset822 bytes
  • assets/templates/critic-brief.mddoc2,164 bytes
  • assets/templates/cues.jsonasset1,580 bytes
  • assets/templates/cut-review-brief.mddoc4,386 bytes
  • assets/templates/delivery-report.mddoc2,174 bytes
  • assets/templates/facts.jsonasset756 bytes
  • assets/templates/look.mddoc2,252 bytes
  • assets/templates/palette.jsonasset12,302 bytes
  • assets/templates/plan-review-brief.mddoc3,871 bytes
  • assets/templates/review-log.mddoc355 bytes
  • assets/templates/score.csvasset255 bytes
  • assets/templates/treatment.mddoc1,738 bytes
  • paths/create.mddoc7,576 bytes
  • paths/cut.mddoc6,074 bytes
  • paths/editor.mddoc3,674 bytes
  • paths/insert.mddoc4,758 bytes
  • paths/quick.mddoc3,989 bytes
  • paths/sound.mddoc4,435 bytes
  • references/assets.mddoc28,787 bytes
  • references/case-library.mddoc5,740 bytes
  • references/claims-and-rights.mddoc8,803 bytes
  • references/commands.mddoc5,884 bytes
  • references/engines.mddoc34,564 bytes
  • references/ffmpeg-cookbook.mddoc17,648 bytes
  • references/finding-the-story.mddoc18,447 bytes
  • references/finishing.mddoc13,031 bytes
  • references/footage.mddoc23,748 bytes
  • references/formats.mddoc10,729 bytes
  • references/generation.mddoc21,765 bytes
  • references/gotchas.mddoc2,799 bytes
  • references/grading.mddoc34,314 bytes
  • references/kinetic-type.mddoc16,846 bytes
  • references/kit.mddoc11,461 bytes
  • references/look.mddoc6,485 bytes
  • references/loop.mddoc10,618 bytes
  • references/paper-edit.mddoc31,572 bytes
  • references/picture.mddoc24,183 bytes
  • references/product-demos.mddoc7,054 bytes
  • references/project.mddoc33,981 bytes
  • references/qc.mddoc20,163 bytes
  • references/recipes.mddoc1,774 bytes
  • references/review.mddoc16,184 bytes
  • references/scripts.mddoc9,593 bytes
  • references/sound.mddoc26,188 bytes
  • references/sources.mddoc6,807 bytes
  • references/spatial.mddoc18,177 bytes
  • references/story-and-score.mddoc14,184 bytes
  • references/studio.mddoc36,945 bytes
  • references/taste.mddoc7,973 bytes
  • references/timing.mddoc15,138 bytes
  • scripts/NOTICEruns1,124 bytes
  • scripts/assemble.pyruns103,022 bytes
  • scripts/blank_scan.pyruns11,005 bytes
  • scripts/captions.pyruns137,714 bytes
  • scripts/check.pyruns176,733 bytes
  • scripts/compare_versions.pyruns28,941 bytes
  • scripts/conform.pyruns18,502 bytes
  • scripts/cue_list.pyruns69,294 bytes
  • scripts/cue_onsets.pyruns32,870 bytes
  • scripts/cut.pyruns306,052 bytes
  • scripts/delivery_check.pyruns14,640 bytes
  • scripts/dialogue_io.pyruns2,957 bytes
  • scripts/exchange.pyruns105,531 bytes
  • scripts/film_capture.mjsruns65,227 bytes
  • scripts/film_check.pyruns32,025 bytes
  • scripts/film_render.pyruns25,471 bytes
  • scripts/flash_scan.pyruns28,518 bytes
  • scripts/frame_sheet.pyruns25,150 bytes
  • scripts/grade.pyruns176,919 bytes
  • scripts/kit_selftest.pyruns15,938 bytes
  • scripts/listen.pyruns57,352 bytes
  • scripts/look.pyruns22,831 bytes
  • scripts/make_film.pyruns152,866 bytes
  • scripts/make_sound_kit.pyruns23,839 bytes
  • scripts/map.pyruns73,142 bytes
  • scripts/matte.pyruns25,964 bytes
  • scripts/mix_cues.pyruns57,022 bytes
  • scripts/motion_blur.pyruns23,069 bytes
  • scripts/motion_scan.pyruns31,387 bytes
  • scripts/new_film.pyruns7,392 bytes
  • scripts/onion_frames.pyruns3,338 bytes
  • scripts/project.pyruns115,569 bytes
  • scripts/qc_file.pyruns43,518 bytes
  • scripts/reframe.pyruns24,745 bytes
  • scripts/region_check.pyruns14,135 bytes
  • scripts/render_block.cjsruns3,595 bytes
  • scripts/render_common.pyruns23,273 bytes
  • scripts/screen.pyruns162,011 bytes
  • scripts/selftest.pyruns53,029 bytes
  • scripts/selftest_cases/_browser.pyruns5,592 bytes
  • scripts/selftest_cases/attach_mix.pyruns37,437 bytes
  • scripts/selftest_cases/captions.pyruns124,200 bytes
  • scripts/selftest_cases/chain.pyruns18,392 bytes
  • scripts/selftest_cases/check.pyruns117,682 bytes
  • scripts/selftest_cases/conform.pyruns17,150 bytes
  • scripts/selftest_cases/cue_export.pyruns23,037 bytes
  • scripts/selftest_cases/cues.pyruns7,158 bytes
  • scripts/selftest_cases/custody.pyruns3,977 bytes
  • scripts/selftest_cases/cut.pyruns172,613 bytes
  • scripts/selftest_cases/cut_record.pyruns3,860 bytes
  • scripts/selftest_cases/dialogue.pyruns8,597 bytes
  • scripts/selftest_cases/dialogue_baseline.txtruns29,763 bytes
  • scripts/selftest_cases/exchange.pyruns50,305 bytes
  • scripts/selftest_cases/exchange_write.pyruns26,152 bytes
  • scripts/selftest_cases/firstrun.pyruns15,612 bytes
  • scripts/selftest_cases/flash.pyruns17,612 bytes
  • scripts/selftest_cases/footage.pyruns95,700 bytes
  • scripts/selftest_cases/gaps.pyruns13,941 bytes
  • scripts/selftest_cases/grade.pyruns73,281 bytes
  • scripts/selftest_cases/identity.pyruns32,538 bytes
  • scripts/selftest_cases/library.pyruns18,767 bytes
  • scripts/selftest_cases/lock.pyruns6,911 bytes
  • scripts/selftest_cases/look.pyruns10,909 bytes
  • scripts/selftest_cases/make.pyruns60,483 bytes
  • scripts/selftest_cases/map.pyruns76,137 bytes
  • scripts/selftest_cases/matte.pyruns14,102 bytes
  • scripts/selftest_cases/outputs.pyruns13,420 bytes
  • scripts/selftest_cases/project.pyruns30,215 bytes
  • scripts/selftest_cases/qcfix.pyruns14,345 bytes
  • scripts/selftest_cases/readers.pyruns12,260 bytes
  • scripts/selftest_cases/record.pyruns6,349 bytes
  • scripts/selftest_cases/register.pyruns37,609 bytes
  • scripts/selftest_cases/render.pyruns33,866 bytes
  • scripts/selftest_cases/reviewfix.pyruns13,876 bytes
  • scripts/selftest_cases/roles.pyruns2,260 bytes
  • scripts/selftest_cases/runs.pyruns7,619 bytes
  • scripts/selftest_cases/screen.pyruns100,624 bytes
  • scripts/selftest_cases/setup.pyruns19,618 bytes
  • scripts/selftest_cases/sound.pyruns24,844 bytes
  • scripts/selftest_cases/sound_u4.pyruns22,838 bytes
  • scripts/selftest_cases/spatial.pyruns51,753 bytes
  • scripts/selftest_cases/stream.pyruns19,908 bytes
  • scripts/selftest_cases/taste.pyruns21,995 bytes
  • scripts/selftest_cases/tighten.pyruns39,461 bytes
  • scripts/selftest_cases/tracefix.pyruns24,579 bytes
  • scripts/selftest_cases/u5a.pyruns70,052 bytes
  • scripts/selftest_cases/u5a_media.pyruns41,286 bytes
  • scripts/selftest_cases/u5b.pyruns20,849 bytes
  • scripts/setup.pyruns38,364 bytes
  • scripts/sound_check.pyruns15,460 bytes
  • scripts/sound_io.pyruns4,382 bytes
  • scripts/sound_library.pyruns39,306 bytes
  • scripts/spatial.pyruns38,007 bytes
  • scripts/spot_cues.pyruns20,184 bytes
  • scripts/strip.pyruns11,457 bytes
  • scripts/sync_check.pyruns37,580 bytes
  • scripts/taste.pyruns37,568 bytes
  • scripts/tempo_map.pyruns17,329 bytes
  • scripts/testpages/identity/.hyperframesignoreruns14 bytes
  • scripts/testpages/identity/assets/dot.pngasset76 bytes
  • scripts/testpages/identity/assets/logo.svgasset111 bytes
  • scripts/testpages/identity/cues.jsonasset1,522 bytes
  • scripts/testpages/identity/film.jsruns208 bytes
  • scripts/testpages/identity/index.htmlasset251 bytes
  • scripts/testpages/identity/style.cssasset104 bytes
  • scripts/testpages/index.htmlasset1,810 bytes
  • scripts/testpages/labels/assets/fonts/Inter-LICENSE.txtdoc4,477 bytes
  • scripts/testpages/labels/assets/fonts/Inter-Latin-400.woff2asset23,664 bytes
  • scripts/testpages/labels/compositions/inner.htmlasset690 bytes
  • scripts/testpages/labels/index.htmlasset4,456 bytes
  • scripts/tighten.pyruns60,588 bytes
  • scripts/track.pyruns42,594 bytes
  • scripts/transcribe.pyruns36,292 bytes
  • scripts/transcript_cut.pyruns16,211 bytes
  • scripts/voice_clean.pyruns8,625 bytes
  • scripts/with_lock.pyruns9,064 bytes
Read SKILL.md

# Legible Film

An agentic video assistant for any kind of video. The film lives as text, every render is a **version** that never
changes, **checks** run on the file a viewer receives, and the person approves in the **Screening Room**. You read,
measure and listen by instrument; the person watches at speed and hears. A delivered file is **unwatched**
until a named person has watched it at normal speed, and **unheard** until they have listened. Report the two kinds
of evidence separately.

## Gates

- **Money.** Ask before any spend or paid generation; the cap is the person's.
- **Leaving the machine.** An upload, post, message, off-machine review packet or Cavalry script needs the person's
  yes, once per project and destination.
- **Reviewers.** A fresh agent of your own provider, unless the person approves another.
View the complete source on GitHub

Skills included

  • legible-film

Repository facts

License
Apache-2.0
Created
Oct 28, 2026
Last pushed
Nov 5, 2026
Forks
1
Open issues
0
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 4, 2026

Show all 773 signals by file

.claude-plugin/marketplace.json

  • Network accessline 4
    "owner": {     "name": "James Dimachkie",     "url": "https://github.com/JamesDimachkie"
  • Network accessline 5
    "name": "James Dimachkie",     "url": "https://github.com/JamesDimachkie"   },
  • Network accessline 6
    "url": "https://github.com/JamesDimachkie"

.claude-plugin/plugin.json

  • Network accessline 6
    "author": {     "name": "James Dimachkie",     "url": "https://github.com/JamesDimachkie"
  • Network accessline 7
    "name": "James Dimachkie",     "url": "https://github.com/JamesDimachkie"   },
  • Network accessline 8
    "url": "https://github.com/JamesDimachkie"
  • Network accessline 9
    },   "homepage": "https://github.com/JamesDimachkie/legible-film",   "repository": "https://github.com/JamesDimachkie/legible-film",
  • Network accessline 10
    "homepage": "https://github.com/JamesDimachkie/legible-film",
  • Network accessline 11
    "repository": "https://github.com/JamesDimachkie/legible-film",

skills/legible-film/LICENSE.txt

  • Network accessline 1
    Apache License                            Version 2.0, January 2004                         http://www.apache.org/licenses/
  • Network accessline 3
    http://www.apache.org/licenses/
  • Network accessline 195
    http://www.apache.org/licenses/LICENSE-2.0

skills/legible-film/NOTICE

  • Network accessline 15
    Some of the Screening Room's colour and size values are adapted from Rune (https://github.com/anomalyco/rune,

skills/legible-film/assets/fonts/IBMPlexMono-LICENSE.txt

  • Network accessline 3
    This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
  • Network accessline 5
    http://scripts.sil.org/OFL

skills/legible-film/assets/fonts/Inter-LICENSE.txt

  • Network accessline 1
    Copyright 2016 The Inter Project Authors (https://github.com/rsms/inter) Inter-Italic[opsz,wght].ttf: Copyright 2016 The Inter Project Authors (https://github.com/rsms/inter)
  • Network accessline 3
    This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
  • Network accessline 5
    http://scripts.sil.org/OFL

skills/legible-film/assets/kit/blocks/caption.js

  • Executable scriptline 1
    Executable file

skills/legible-film/assets/kit/blocks/common.js

  • Executable scriptline 1
    Executable file

skills/legible-film/assets/kit/blocks/dither.js

  • Executable scriptline 1
    Executable file

skills/legible-film/assets/kit/blocks/endcard.js

  • Executable scriptline 1
    Executable file

skills/legible-film/assets/kit/blocks/index.js

  • Executable scriptline 1
    Executable file

skills/legible-film/assets/kit/blocks/name.js

  • Executable scriptline 1
    Executable file

skills/legible-film/assets/kit/blocks/number.js

  • Executable scriptline 1
    Executable file

skills/legible-film/assets/kit/blocks/still.js

  • Executable scriptline 1
    Executable file

skills/legible-film/assets/kit/blocks/terminal.js

  • Executable scriptline 1
    Executable file

skills/legible-film/assets/kit/blocks/thread.js

  • Executable scriptline 1
    Executable file

skills/legible-film/assets/kit/blocks/type.js

  • Executable scriptline 1
    Executable file

skills/legible-film/assets/kit/blocks/without.js

  • Executable scriptline 1
    Executable file

skills/legible-film/assets/kit/films/atlasfold/film.js

  • Executable scriptline 1
    Executable file

skills/legible-film/assets/kit/films/starter/film.js

  • Executable scriptline 1
    Executable file

skills/legible-film/assets/kit/fonts/GeistMono-LICENSE.txt

  • Network accessline 1
    Copyright 2024 The Geist Project Authors (https://github.com/vercel/geist-font)
  • Network accessline 3
    This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: https://openfontlicense.org
  • Network accessline 5
    https://openfontlicense.org

skills/legible-film/assets/kit/fonts/MonaSans-LICENSE.txt

  • Network accessline 1
    Copyright (c) 2023, GitHub https://github.com/github/mona-sans
  • Network accessline 4
    This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
  • Network accessline 6
    http://scripts.sil.org/OFL

skills/legible-film/assets/kit/fonts/NOTO-NOTICE.md

  • Network accessline 12
    - Noto Sans Arabic: https://github.com/google/fonts/tree/main/ofl/notosansarabic
  • Network accessline 13
    - Noto Sans Hebrew: https://github.com/google/fonts/tree/main/ofl/notosanshebrew
  • Network accessline 14
    - Noto Sans Thai: https://github.com/google/fonts/tree/main/ofl/notosansthai
  • Network accessline 15
    - Noto Sans Devanagari: https://github.com/google/fonts/tree/main/ofl/notosansdevanagari

skills/legible-film/assets/kit/fonts/NotoSansArabic-LICENSE.txt

  • Network accessline 1
    Copyright 2022 The Noto Project Authors (https://github.com/notofonts/arabic)
  • Network accessline 3
    This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: https://scripts.sil.org/OFL
  • Network accessline 5
    https://scripts.sil.org/OFL

skills/legible-film/assets/kit/fonts/NotoSansDevanagari-LICENSE.txt

  • Network accessline 1
    Copyright 2022 The Noto Project Authors (https://github.com/notofonts/devanagari)
  • Network accessline 3
    This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: https://scripts.sil.org/OFL
  • Network accessline 5
    https://scripts.sil.org/OFL

skills/legible-film/assets/kit/fonts/NotoSansHebrew-LICENSE.txt

  • Network accessline 1
    Copyright 2022 The Noto Project Authors (https://github.com/notofonts/hebrew)
  • Network accessline 3
    This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: https://scripts.sil.org/OFL
  • Network accessline 5
    https://scripts.sil.org/OFL

skills/legible-film/assets/kit/fonts/NotoSansThai-LICENSE.txt

  • Network accessline 1
    Copyright 2022 The Noto Project Authors (https://github.com/notofonts/thai)
  • Network accessline 3
    This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: https://scripts.sil.org/OFL
  • Network accessline 5
    https://scripts.sil.org/OFL

skills/legible-film/assets/kit/lf/analyse.js

  • Executable scriptline 1
    Executable file

skills/legible-film/assets/kit/lf/color.js

  • Executable scriptline 1
    Executable file

skills/legible-film/assets/kit/lf/ease.js

  • Executable scriptline 1
    Executable file

skills/legible-film/assets/kit/lf/engine.js

  • Executable scriptline 1
    Executable file
  • Network accessline 243
    win.style.cssText = `position:absolute;left:${hole.mx}px;top:${hole.my}px;width:${hole.mw}px;height:${hole.mh}px;visibility:hidden;`;     win.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${hole.vw} ${hole.vh}" width="${
  • Network accessline 244
    win.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${hole.vw} ${hole.vh}" width="${hole.mw}" height="${hole.mh}" style="display:block;overflow:visible"><path d="${hole.path}" fill="${nextGround}"/></svg>`;
  • Network accessline 254
    const counterD = loopAround(outline, letter, hole.cx, hole.cy);       const face = node.color || this.typeOn(this.groundAt(c - d));       vec.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${node.w} ${node.h}" width="${no
  • Network accessline 256
    vec.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${node.w} ${node.h}" width="${node.w}" height="${node.h}" style="display:block;overflow:visible"><path fill-rule="evenodd" d="${outline.d}" fill="${face}"/></svg>`;
  • Network accessline 258
    if (counterD) win.innerHTML = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${node.w} ${node.h}" width="${node.w}" height="${node.h}" style="display:block;overflow:visible"><path d="${counterD}" fill="${nextGround}" stroke="${nextGr

skills/legible-film/assets/kit/lf/flashmap.js

  • Executable scriptline 1
    Executable file

skills/legible-film/assets/kit/lf/fx.js

  • Executable scriptline 1
    Executable file

skills/legible-film/assets/kit/lf/legacy.js

  • Executable scriptline 1
    Executable file

skills/legible-film/assets/kit/lf/main.js

  • Executable scriptline 1
    Executable file
  • Network accessline 88
    let facts = null;   if (spec.facts) {     const r = await fetch(new URL(spec.facts, filmUrl)); // lf-lint-ok: build time, before __lf.ready
  • Network accessline 89
    if (spec.facts) {     const r = await fetch(new URL(spec.facts, filmUrl)); // lf-lint-ok: build time, before __lf.ready     if (!r.ok) throw new Error(`facts file ${spec.facts} could not be read (${r.status})`);
  • Network accessline 90
    const r = await fetch(new URL(spec.facts, filmUrl)); // lf-lint-ok: build time, before __lf.ready
  • Network accessline 98
    const url = new URL(src, filmUrl).href;     if (/\.svg(\?|$)/i.test(src) && sc.inlineSvg) {       const r = await fetch(url); // lf-lint-ok: build time, before __lf.ready
  • Network accessline 99
    if (/\.svg(\?|$)/i.test(src) && sc.inlineSvg) {       const r = await fetch(url); // lf-lint-ok: build time, before __lf.ready       images.set(src, { svgText: await r.text(), url });
  • Network accessline 100
    const r = await fetch(url); // lf-lint-ok: build time, before __lf.ready

skills/legible-film/assets/kit/lf/motion.js

  • Executable scriptline 1
    Executable file

skills/legible-film/assets/kit/lf/node.js

  • Executable scriptline 1
    Executable file

skills/legible-film/assets/kit/lf/rng.js

  • Executable scriptline 1
    Executable file

skills/legible-film/assets/kit/lf/svg.js

  • Executable scriptline 1
    Executable file

skills/legible-film/assets/kit/lf/text.js

  • Executable scriptline 1
    Executable file

skills/legible-film/assets/kit/lf/ui.js

  • Executable scriptline 1
    Executable file

skills/legible-film/assets/templates/assets.csv

  • Network accessline 1
    asset_id,role,file,sha256,source_or_provider,model_or_version,created_on,plan_at_creation,licence_or_terms_url,permitted_use,cost,private_material_uploaded,approved_by,notes example-01,music,audio/music-take-b.wav,,provider name,model versi
  • Network accessline 2
    example-01,music,audio/music-take-b.wav,,provider name,model version,YYYY-MM-DD,paid / free / owned,https://,commercial web and social,0,no,,replace this row

skills/legible-film/assets/templates/facts.json

  • Network accessline 12
    "label_beside_value": "batch 1",       "footnote": "Measured by ___ on ___ (source, date)",       "source": "https://example.com/benchmark",
  • Network accessline 13
    "footnote": "Measured by ___ on ___ (source, date)",       "source": "https://example.com/benchmark",       "read_on": "YYYY-MM-DD",
  • Network accessline 14
    "source": "https://example.com/benchmark",

skills/legible-film/references/assets.md

  • Network accessline 64
    Example: Adobe's editorial designation excludes advertising even with an Extended licence, and Pexels warns that its licence does not cover depicted brands ([Adobe Stock licence terms](https://stock.adobe.com/license-terms),
  • Network accessline 65
    licence does not cover depicted brands ([Adobe Stock licence terms](https://stock.adobe.com/license-terms), [Pexels](https://help.pexels.com/hc/en-us/articles/360042295214-Can-I-use-the-photos-and-videos-for-a-commercial-project)).
  • Network accessline 66
    ([Adobe Stock licence terms](https://stock.adobe.com/license-terms),
  • Network accessline 67
    [Pexels](https://help.pexels.com/hc/en-us/articles/360042295214-Can-I-use-the-photos-and-videos-for-a-commercial-project)).
  • Network accessline 79
    | Source | Use it for | Licence notes | Price level, read 2026-10-28 | |---|---|---|---| | [Pexels](https://www.pexels.com/license/) | atmospheric inserts and textures where release risk is low | free commercial use; no implied endorsement 
  • Network accessline 80
    |---|---|---|---| | [Pexels](https://www.pexels.com/license/) | atmospheric inserts and textures where release risk is low | free commercial use; no implied endorsement or trademark use | free | | [Artlist footage](https://artlist.io/help-c
  • Network accessline 81
    | [Pexels](https://www.pexels.com/license/) | atmospheric inserts and textures where release risk is low | free commercial use; no implied endorsement or trademark use | free |
  • Network accessline 82
    | [Artlist footage](https://artlist.io/help-center/privacy-terms/artlist-license) | repeated production from one consistent library | Pro covers an individual's client work and paid promotion; companies and agencies are pointed to Business 
  • Network accessline 83
    | [Stocksy](https://www.stocksy.com/legal/contentlicense) | a few naturalistic shots with a point of view | royalty-free, worldwide, perpetual; clip audio not licensed; AI/ML processing prohibited under the standard terms | $175 for 1080p, 
  • Network accessline 84
    | [Filmsupply](https://www.filmsupply.com/license-terms) | a hero sequence whose light, casting or camera must carry the film | rights-managed per project, client, use and territory | web and social from $219 a clip; wider media by quote ([
  • Network accessline 102
    | Source | Use it for | Licence notes | Price level, read 2026-10-28 | |---|---|---|---| | [Unsplash](https://unsplash.com/license) | landscapes, objects and editorial-feeling atmosphere | free commercial use; releases not guaranteed ([rele
  • Network accessline 103
    |---|---|---|---| | [Unsplash](https://unsplash.com/license) | landscapes, objects and editorial-feeling atmosphere | free commercial use; releases not guaranteed ([releases](https://help.unsplash.com/en/articles/2612329-releases-and-tradem
  • Network accessline 104
    | [Unsplash](https://unsplash.com/license) | landscapes, objects and editorial-feeling atmosphere | free commercial use; releases not guaranteed ([releases](https://help.unsplash.com/en/articles/2612329-releases-and-trademarks)) | free |
  • Network accessline 105
    | [Adobe Stock](https://stock.adobe.com/license-terms) | broad searches across photos, illustration and vectors | Standard licence covers social and web; audience limits and editorial restrictions apply | 10 credits for $29.99/month on an a
  • Network accessline 106
    | [Stocksy](https://www.stocksy.com/pricing) | a small, coherent set with an individual point of view | Standard includes advertising, worldwide, unlimited term | $35 (2 MP) to $135 (12 MP and up) |
  • Network accessline 107
    | [10M](https://www.10m.co/about) | public-domain art, maps, engravings, botanical plates and posters from 22 museums and archives, searchable by colour, mood, era, medium or artist | rights are stated per work: about 130,000 works carry re
  • Network accessline 120
    | Source | Use it for | Licence notes | Price level, read 2026-10-28 | |---|---|---|---| | [Incompetech](https://incompetech.com/music/royalty-free/licenses/) | a low-budget piece that can carry a credit | free with Creative Commons credit;
  • Network accessline 121
    |---|---|---|---| | [Incompetech](https://incompetech.com/music/royalty-free/licenses/) | a low-budget piece that can carry a credit | free with Creative Commons credit; a paid licence removes the credit | free with credit | | [Epidemic Sou
  • Network accessline 122
    | [Incompetech](https://incompetech.com/music/royalty-free/licenses/) | a low-budget piece that can carry a credit | free with Creative Commons credit; a paid licence removes the credit | free with credit |
  • Network accessline 123
    | [Epidemic Sound](https://www.epidemicsound.com/pricing/) | online client work with a channel-clearing workflow | Pro covers digital ads and freelance client work; published content stays covered after cancellation | Pro $16.99/month, bill
  • Network accessline 124
    | [Artlist music](https://artlist.io/help-center/privacy-terms/artlist-license) | frequent edits where stems matter | the Social plan excludes client projects and paid media; Pro and Business are broader | Music Pro $16.58/month billed annu
  • Network accessline 125
    | [PremiumBeat](https://www.premiumbeat.com/license) | a one-off film with versions and stems, no subscription | per track and project; tiers widen the media covered | $59 Standard, $199 Premium, $999 Business |
  • Network accessline 126
    | [Universal Production Music](https://www.universalproductionmusic.com/en-gb/licensing) | advertising or broadcast needing a specific agreement or commissioned music | licensed by region and use | by quote |
  • Network accessline 129
    cut-downs, paid placement, the client's publishing accounts, territory and term. Synchronisation and public performance are separate questions; ask who handles cue sheets. "Free Creative Commons music" is not enough: CC treats synchronising
  • Network accessline 130
    performance are separate questions; ask who handles cue sheets. "Free Creative Commons music" is not enough: CC treats synchronising music to picture as an adaptation, so ND licences forbid it and NC licences forbid commercial use ([Creativ
  • Network accessline 131
    synchronising music to picture as an adaptation, so ND licences forbid it and NC licences forbid commercial use
  • Network accessline 132
    ([Creative Commons FAQ](https://creativecommons.org/faq/#when-is-my-use-considered-an-adaptation)).
  • Network accessline 134
    **Content ID** can block, monetise or track an upload without knowing the music was licensed elsewhere ([YouTube](https://support.google.com/youtube/answer/2797370?hl=en)). Clear the client's channel through the library's
  • Network accessline 135
    ([YouTube](https://support.google.com/youtube/answer/2797370?hl=en)). Clear the client's channel through the library's
  • Network accessline 150
    | Source | Use it for | Licence notes | Price level, read 2026-10-28 | |---|---|---|---| | [Freesound](https://freesound.org/help/faq/) | specific real-world details, room tone, unusual foley | licence varies per sound (CC0, CC BY, CC BY-NC
  • Network accessline 151
    |---|---|---|---| | [Freesound](https://freesound.org/help/faq/) | specific real-world details, room tone, unusual foley | licence varies per sound (CC0, CC BY, CC BY-NC); uploads can contain unauthorised material | free | | [Sonniss GDC bu
  • Network accessline 152
    | [Freesound](https://freesound.org/help/faq/) | specific real-world details, room tone, unusual foley | licence varies per sound (CC0, CC BY, CC BY-NC); uploads can contain unauthorised material | free |
  • Network accessline 153
    | [Sonniss GDC bundles](https://sonniss.com/gdc-bundle-license/) | a broad starting palette | commercial project use without credit; no standalone redistribution (the project team may share them); no AI training | free |
  • Network accessline 154
    | [Epidemic Sound](https://www.epidemicsound.com/pricing/) | teams clearing music and effects together | included with music on the same plans | as music |
  • Network accessline 155
    | [BOOM Library](https://www.boomlibrary.com/terms-conditions-regular/) | designed transitions and material recordings with good metadata | worldwide media licence including advertising; no AI/ML training; subscription terms differ from buy
  • Network accessline 158
    motion, and the room or tail. Check the stack for phase cancellation, and never pile full-spectrum impacts on a small interface change. **Reject** clipped attacks, denoising warble, baked-in music, rips from films or games, voices hidden in
  • Network accessline 160
    hidden in an ambience, and anything NC for advertising.
  • Network accessline 186
    | Route | Use it for | Usage notes | Price level, read 2026-10-28 | |---|---|---|---| | [Fiverr](https://www.fiverr.com/) (vetted Pro listings) | narrow casting with a dry audition that fits | terms are seller-specific; some listings exclud
  • Network accessline 187
    |---|---|---|---| | [Fiverr](https://www.fiverr.com/) (vetted Pro listings) | narrow casting with a dry audition that fits | terms are seller-specific; some listings exclude paid media | listings vary; confirm the package covers the planned
  • Network accessline 188
    | [Fiverr](https://www.fiverr.com/) (vetted Pro listings) | narrow casting with a dry audition that fits | terms are seller-specific; some listings exclude paid media | listings vary; confirm the package covers the planned use |
  • Network accessline 189
    | [Voice123](https://support.voice123.com/hc/en-us/articles/205237644-What-is-the-rate-for-a-voice-actor-on-Voice123) | direct auditions and negotiation | fees negotiated; agree media, territory, term and any AI use in writing | by quote |
  • Network accessline 190
    | [Voices](https://www.voices.com/help/knowledge/faq/Understanding-Licensing) | usage-led casting and budgeting | paid online ads are licensed like broadcast, by market and term | its online-ad jobs average $350-$1,125 ([rates](https://www.
  • Network accessline 191
    | Union casting ([SAG-AFTRA](https://www.sagaftra.org/production-center/contract/802/getting-started)) | campaigns requiring union talent | a contract route with session, usage and digital-replica terms | session fees plus usage; a payroll 
  • Network accessline 205
    | Source | Use it for | Licence notes | Price level, read 2026-10-28 | |---|---|---|---| | [Inter](https://rsms.me/inter/) | clear interface labels, product numbers, contemporary titles | SIL Open Font License | free |
  • Network accessline 206
    |---|---|---|---| | [Inter](https://rsms.me/inter/) | clear interface labels, product numbers, contemporary titles | SIL Open Font License | free | | [IBM Plex](https://github.com/IBM/plex) | a coordinated sans, serif and mono family for te
  • Network accessline 207
    | [Inter](https://rsms.me/inter/) | clear interface labels, product numbers, contemporary titles | SIL Open Font License | free |
  • Network accessline 208
    | [IBM Plex](https://github.com/IBM/plex) | a coordinated sans, serif and mono family for technical work | SIL Open Font License | free |
  • Network accessline 209
    | [Source Serif 4](https://github.com/adobe-fonts/source-serif/blob/main/LICENSE.md) | editorial headings, a serif counterpoint to interface type | SIL Open Font License, with optical sizes | free |
  • Network accessline 210
    | [Adobe Fonts](https://helpx.adobe.com/fonts/web/font-licensing/font-licensing.html) | art-direction exploration under an existing Creative Cloud plan | film, broadcast and online video permitted; no app embedding or sharing font files | w
  • Network accessline 211
    | Foundry licences ([Monotype guide](https://www.monotypefonts.com/pages/content/resources-font-licensing-guide)) | brand type and negotiated scopes | desktop, web, app and embedding licensed separately | by quote |
  • Network accessline 213
    The SIL Open Font License permits titling in commercial video without an artwork credit ([OFL FAQ](https://openfontlicense.org/ofl-faq/)). For a typeface from a directory, read the upstream designer's
  • Network accessline 214
    ([OFL FAQ](https://openfontlicense.org/ofl-faq/)). For a typeface from a directory, read the upstream designer's
  • Network accessline 225
    | Source | Use it for | Licence notes | Price level, read 2026-10-28 | |---|---|---|---| | [Poly Haven](https://polyhaven.com/license) | lighting environments, materials, supporting models | CC0, commercial use without attribution | free |
  • Network accessline 226
    |---|---|---|---| | [Poly Haven](https://polyhaven.com/license) | lighting environments, materials, supporting models | CC0, commercial use without attribution | free | | [Fab](https://www.fab.com/eula) | specific props, environments, speci
  • Network accessline 227
    | [Poly Haven](https://polyhaven.com/license) | lighting environments, materials, supporting models | CC0, commercial use without attribution | free |
  • Network accessline 228
    | [Fab](https://www.fab.com/eula) | specific props, environments, specialist models | Standard licence allows commercial use in any tool; no standalone redistribution; CC BY items carry CC terms | per item |
  • Network accessline 229
    | [Poliigon](https://help.poliigon.com/en/articles/8749749-asset-use-licensing) | consistent materials for repeated renders | advertising included; no sharing of extractable scene files; no AI/ML use; Individual plans are for one person | $
  • Network accessline 242
    | Source | Use it for | Licence notes | Price level, read 2026-10-28 | |---|---|---|---| | Procedural (FFmpeg [`noise`](https://ffmpeg.org/ffmpeg-filters.html#noise), [`lut3d`](https://ffmpeg.org/ffmpeg-filters.html#lut3d), an original shad
  • Network accessline 243
    |---|---|---|---| | Procedural (FFmpeg [`noise`](https://ffmpeg.org/ffmpeg-filters.html#noise), [`lut3d`](https://ffmpeg.org/ffmpeg-filters.html#lut3d), an original shader) | subtle, controllable texture tied to the animation | your own cod
  • Network accessline 244
    | Procedural (FFmpeg [`noise`](https://ffmpeg.org/ffmpeg-filters.html#noise), [`lut3d`](https://ffmpeg.org/ffmpeg-filters.html#lut3d), an original shader) | subtle, controllable texture tied to the animation | your own code; record its prov
  • Network accessline 245
    | [Grainzilla](https://grainzilla.com/) | a small set of real grain scans | commercial use including client work and ads; no redistribution | 1080p pack $24.90; 4K pack $39.90 |
  • Network accessline 246
    | [CineGrain](https://www.cinegrain.com/texture/35mm) | a deliberately film-derived treatment central to the look | Indie tier capped by production budget; Professional for larger productions, under its own licence | Indie 35mm $96; Profess
  • Network accessline 247
    | [FilmConvert Nitrate](https://www.filmconvert.com/nitrate) | exposure-dependent grain and camera-profile film looks | software licence with three activations | from $119 |
  • Network accessline 260
    | Source | Use it for | Licence notes | Price level, read 2026-10-28 | |---|---|---|---| | [Lucide](https://lucide.dev/license) | a consistent, code-native icon vocabulary | ISC licence; keep the notice | free |
  • Network accessline 261
    |---|---|---|---| | [Lucide](https://lucide.dev/license) | a consistent, code-native icon vocabulary | ISC licence; keep the notice | free | | [Envato Elements](https://help.elements.envato.com/hc/en-us/articles/360000628966-Envato-Elements
  • Network accessline 262
    | [Lucide](https://lucide.dev/license) | a consistent, code-native icon vocabulary | ISC licence; keep the notice | free |
  • Network accessline 263
    | [Envato Elements](https://help.elements.envato.com/hc/en-us/articles/360000628966-Envato-Elements-License) | breadth in illustration, mockups and templates | per-project registration; embedded components may have their own licences | from
  • Network accessline 264
    | [UI8](https://ui8.net/terms) | a coherent illustration set or design kit | marketing videos and client work permitted; no standalone redistribution of the assets | per item |
  • Network accessline 265
    | [Apple Design Resources](https://developer.apple.com/design/resources/) | accurate presentation of a qualifying Apple app | separate conditions per resource | free downloads; terms per resource |
  • Network accessline 272
    **Device and platform owners have their own rules.** Apple's App Store marketing guidance forbids modifying, spinning or animating its supplied product images and 3D simulations of its products in that context, and requires trademark credit
  • Network accessline 273
    or animating its supplied product images and 3D simulations of its products in that context, and requires trademark credit lines in video ([guidelines](https://developer.apple.com/app-store/marketing/guidelines/)). Google forbids implying a
  • Network accessline 274
    credit lines in video ([guidelines](https://developer.apple.com/app-store/marketing/guidelines/)). Google forbids
  • Network accessline 275
    implying an endorsement that does not exist ([brand guidance](https://about.google/brand-resource-center/guidance/)).

skills/legible-film/references/case-library.md

  • Network accessline 10
    | Problem | Case | What it shows | |---|---|---| | Proving a capability so the viewer believes it | Volvo Trucks, "The Epic Split" (2013; Forsman & Bodenfors; dir. Andreas Nilsson) | Jean-Claude Van Damme does the splits between two reversi
  • Network accessline 11
    |---|---|---| | Proving a capability so the viewer believes it | Volvo Trucks, "The Epic Split" (2013; Forsman & Bodenfors; dir. Andreas Nilsson) | Jean-Claude Van Damme does the splits between two reversing trucks to demonstrate the stabil
  • Network accessline 12
    | Proving a capability so the viewer believes it | Volvo Trucks, "The Epic Split" (2013; Forsman & Bodenfors; dir. Andreas Nilsson) | Jean-Claude Van Damme does the splits between two reversing trucks to demonstrate the stability and precis
  • Network accessline 13
    | A chain of visible causes | Honda, "Cog" (2003; Wieden+Kennedy London; dir. Antoine Bardou-Jacquet) | A chain reaction of real car parts, each setting off the next, largely without computer graphics. [Wikipedia](https://en.wikipedia.org/w
  • Network accessline 14
    | One rule of the world changes | Apple, AirPods "Bounce" (2019; TBWA\Media Arts Lab; dir. Oscar Hudson) | A commute in which the city becomes a trampoline; the film explores the consequences of one changed rule. [The Drum](https://www.thed
  • Network accessline 15
    | Telling a human story through use of the product | Google, "Parisian Love" (2009 Search Stories film; aired during Super Bowl XLIV, 2010) | A love story told through one person's searches. | | A belief behind the product | Honda, "Grrr" (
  • Network accessline 16
    | A belief behind the product | Honda, "Grrr" (2004; Wieden+Kennedy London; dirs. Adam Foulkes and Alan Smith) | Reportedly grew from a Honda engine designer's dislike of diesel engines ("Hate something, change something"). [Wikipedia](http
  • Network accessline 17
    | A number the viewer must understand | Ed Hawkins, "climate spiral" (2016) | Monthly temperature anomalies drawn on fixed axes, month as angle and anomaly as radius, with colour encoding time. [Wikipedia](https://en.wikipedia.org/wiki/Clim
  • Network accessline 18
    | Live data as short animations | IBM, "Datagrams" (2013; IBM with Ogilvy & Mather; animation by Buck) | Live match data from the US Open turned into short animations for each match. [PR Newswire](https://www.prnewswire.com/news-releases/li
  • Network accessline 19
    | A values statement in few words | Apple, "Intention" (2013, Designed by Apple in California; TBWA\Media Arts Lab) | Short sentences given simple visual relationships. | | One silhouette through many materials | Nike, "Air Max '17: The Art
  • Network accessline 20
    | One silhouette through many materials | Nike, "Air Max '17: The Art of Negative Space" (ManvsMachine) | The negative-space outline of the shoe recurs through scenes of different materials; the sound re-pitches footsteps into melody and rh
  • Network accessline 21
    | Delaying recognition of a title | "Alien" (1979; R/Greenberg Associates, Richard Greenberg) | The title's letters assemble gradually, so viewers are not ready to read them as a word. [Art of the Title](https://www.artofthetitle.com/title/
  • Network accessline 22
    | Motion that belongs to its period | "Stranger Things" (2016; Imaginary Forces, Michelle Dougherty) | An early "locking in" letter motion felt rigid and snappy, and the creators did not respond to it because it was not a familiar 1980s mot
  • Network accessline 23
    | Unsettling the viewer on purpose | "Severance" main titles (2022; Oliver Latta / Extraweg; typography Teddy Blanks; music Theodore Shapiro) | A title sequence built to disorient rather than reassure. [It's Nice That](https://itsnicethat.c
  • Network accessline 28
    | Problem | Case | What it shows | |---|---|---| | Scoring a technical subject without cliché | Antfood, score for Google's "Hacking Google" series | Tactile acoustic instruments rather than the dark synthetic textures of cyber tropes, alon
  • Network accessline 29
    |---|---|---| | Scoring a technical subject without cliché | Antfood, score for Google's "Hacking Google" series | Tactile acoustic instruments rather than the dark synthetic textures of cyber tropes, alongside orchestral and synth material
  • Network accessline 30
    | Scoring a technical subject without cliché | Antfood, score for Google's "Hacking Google" series | Tactile acoustic instruments rather than the dark synthetic textures of cyber tropes, alongside orchestral and synth material. [Antfood](ht
  • Network accessline 31
    | Effects only, no music | Kia EV6, "Silence Is Powerful" (2023; David&Goliath / Innocean) | By its sound designer's account, picture and sound design only, with no voiceover or music. Watch it to confirm before citing. | | An ending that r
  • Network accessline 32
    | An ending that refuses triumph | UNHCR, "The Journey" (Don't Panic; sound by String & Tins) | "The music is not triumphant at the end of the film"; the sound resists telling the listener how to feel. [D&AD](https://www.dandad.org/work/ann
  • Network accessline 33
    | Music made from the product's own sounds | Apple, "Start Up" (2021 event opener; A.G. Cook) | A song built from the sounds of Apple devices, opening on a startup chime. | | Detailed sound on simple visuals | David Kamp (Studiokamp) | Choo
  • Network accessline 34
    | Detailed sound on simple visuals | David Kamp (Studiokamp) | Chooses which visual elements need a sound, and uses sound to say what minimal visuals do not. [It's Nice That](https://www.itsnicethat.com/articles/david-kamp-interview/) |

skills/legible-film/references/claims-and-rights.md

  • Network accessline 112
    | Provider | Output ownership and commercial use | Training on your inputs/outputs by default | Source | |---|---|---|---| | OpenAI API | rights in output assigned to the user (per terms; page not machine-readable at check time) | API: no, 
  • Network accessline 113
    |---|---|---|---| | OpenAI API | rights in output assigned to the user (per terms; page not machine-readable at check time) | API: no, unless you opt in; consumer apps: may be used unless you opt out | [terms](https://openai.com/policies/te
  • Network accessline 114
    | OpenAI API | rights in output assigned to the user (per terms; page not machine-readable at check time) | API: no, unless you opt in; consumer apps: may be used unless you opt out | [terms](https://openai.com/policies/terms-of-use/); [API
  • Network accessline 115
    | Google Gemini API (incl. image and video models) | Google does not claim ownership; preview products can restrict commercial use | unpaid tier: yes; paid tier: no | [Gemini API terms](https://ai.google.dev/gemini-api/terms) |
  • Network accessline 116
    | Runway | Runway does not claim ownership of inputs or outputs | yes (no opt-out described in the terms) | [terms](https://runway.com/terms-of-use) |
  • Network accessline 117
    | Luma | customer owns output; commercial use only for output made during an active subscription | yes | [terms](https://lumalabs.ai/legal/terms-of-service) |
  • Network accessline 118
    | Adobe Firefly | Adobe claims no ownership; marketed as commercially safe | no: Adobe states it does not train Firefly on user content | [Firefly approach](https://www.adobe.com/ai/overview/firefly/gen-ai-approach.html) |
  • Network accessline 119
    | ElevenLabs | user retains rights; free plan non-commercial, paid plans commercial | yes, with an opt-out | [terms](https://elevenlabs.io/terms-of-use) |
  • Network accessline 120
    | Stability AI | rights assigned to the user; community licence free up to USD 1M annual revenue | yes, with an opt-out | [terms](https://stability.ai/terms-of-service) |

skills/legible-film/references/engines.md

  • Network accessline 24
    | Transcripts and caption timing | **WhisperX** for word alignment | faster-whisper or whisper.cpp for speed on CPU; FFmpeg 8+ `whisper` filter where the build includes it | | Generated plates, voice, music, effects | the provider the perso
  • Network accessline 26
    | Review with collaborators: watching a version, notes on moments, drawings, replies | **Flask** ([flask.do](https://flask.do)), through its MCP server ([review](review.md) §1) | the local Screening Room (`screen.py`) for private work on th
  • Network accessline 218
    [Strobe](https://github.com/hridaya423/strobe) (Apache-2.0; v0.1.0, first released 2026-10-31, one author) renders an
  • Network accessline 283
    | Model | Code and weight licence | Exact ONNX weights | Use | |---|---|---|---| | MODNet, Xenova conversion | [Code: Apache-2.0](https://github.com/ZHKKKe/MODNet/blob/master/LICENSE); [weight model card: Apache-2.0](https://huggingface.co/
  • Network accessline 284
    |---|---|---|---| | MODNet, Xenova conversion | [Code: Apache-2.0](https://github.com/ZHKKKe/MODNet/blob/master/LICENSE); [weight model card: Apache-2.0](https://huggingface.co/Xenova/modnet) | [Pinned download](https://huggingface.co/Xenov
  • Network accessline 285
    | MODNet, Xenova conversion | [Code: Apache-2.0](https://github.com/ZHKKKe/MODNet/blob/master/LICENSE); [weight model card: Apache-2.0](https://huggingface.co/Xenova/modnet) | [Pinned download](https://huggingface.co/Xenova/modnet/resolve/f
  • Network accessline 286
    | BiRefNet Lite, Studio Ludens 512 conversion | [Code: MIT](https://github.com/ZhengPeng7/BiRefNet/blob/main/LICENSE); [converted weights and licence: MIT](https://huggingface.co/studioludens/birefnet-lite-512); [upstream weights: MIT](http
  • Network accessline 329
    the spotted list and the palette) and `listen.py` (measure, transcript, sync, sheet and labels; [sound](sound.md)   §13). - **[earshot](https://github.com/Leonxlnx/earshot)** (Leon Lin, MIT; young) gives agents measurements and labels for
  • Network accessline 330
    §13). - **[earshot](https://github.com/Leonxlnx/earshot)** (Leon Lin, MIT; young) gives agents measurements and labels for   sounds, cue sync sheets and code-made effects. The skill's `listen.py` follows its shape, takes its launch-film
  • Network accessline 331
    - **[earshot](https://github.com/Leonxlnx/earshot)** (Leon Lin, MIT; young) gives agents measurements and labels for

skills/legible-film/references/formats.md

  • Network accessline 121
    | Platform | What the official page says | Source | |---|---|---| | YouTube | MP4 with the moov atom at the front; H.264 High, progressive, 4:2:0, BT.709 for SDR; AAC-LC 48 kHz; upload at the recorded frame rate; SDR guidance about 8 Mbps f
  • Network accessline 122
    |---|---|---| | YouTube | MP4 with the moov atom at the front; H.264 High, progressive, 4:2:0, BT.709 for SDR; AAC-LC 48 kHz; upload at the recorded frame rate; SDR guidance about 8 Mbps for 1080p at 24-30 fps and 12 Mbps at 48-60 fps | [Yo
  • Network accessline 123
    | YouTube | MP4 with the moov atom at the front; H.264 High, progressive, 4:2:0, BT.709 for SDR; AAC-LC 48 kHz; upload at the recorded frame rate; SDR guidance about 8 Mbps for 1080p at 24-30 fps and 12 Mbps at 48-60 fps | [YouTube help](ht
  • Network accessline 124
    | LinkedIn (ads) | MP4; 75 KB-500 MB; 3 s-30 min (15-30 s recommended); 16:9, 1:1, 4:5 and 9:16; under 30 fps; H.264 or VP8 with AAC or MPEG-4 audio | [LinkedIn help](https://www.linkedin.com/help/lms/answer/a424737) |
  • Network accessline 125
    | Instagram Reels (ads) | 9:16; 1440x2560 recommended; up to 15 min and 4 GB; H.264, square pixels, fixed frame rate, progressive; stereo AAC at 128 kbps or more; the safe zones in §3 | [Meta ads guide](https://www.facebook.com/business/ads
  • Network accessline 126
    | TikTok (in-feed ads, non-Spark) | 9:16 recommended at 540x960 or more; up to 10 min and 500 MB; at least 516 kbps | [TikTok ads help](https://ads.tiktok.com/resources/help/article/tiktok-auction-in-feed-ads) |
  • Network accessline 127
    | X | the help pages could not be read at check time, and third-party figures conflict | [X help](https://help.x.com) |

skills/legible-film/references/generation.md

  • Network accessline 65
    whole film in one clip. Keep text and logos out of the generated plate and composite them exactly afterwards.   Phrase positively, as Runway's Gen-4 guide recommends   ([guide](https://help.runwayml.com/hc/en-us/articles/39789879462419-Gen-
  • Network accessline 66
    Phrase positively, as Runway's Gen-4 guide recommends   ([guide](https://help.runwayml.com/hc/en-us/articles/39789879462419-Gen-4-Video-Prompting-Guide)), and follow the   chosen model's own guide.
  • Network accessline 67
    ([guide](https://help.runwayml.com/hc/en-us/articles/39789879462419-Gen-4-Video-Prompting-Guide)), and follow the
  • Network accessline 91
    structure in the edit. - **Voice:** save a designed voice through the vendor's persistent voice feature (ElevenLabs, for example, creates a   reusable voice ID from a generated preview: [create a voice](https://elevenlabs.io/docs/api-refere
  • Network accessline 92
    - **Voice:** save a designed voice through the vendor's persistent voice feature (ElevenLabs, for example, creates a   reusable voice ID from a generated preview: [create a voice](https://elevenlabs.io/docs/api-reference/text-to-voice/creat
  • Network accessline 93
    reusable voice ID from a generated preview: [create a voice](https://elevenlabs.io/docs/api-reference/text-to-voice/create))
  • Network accessline 174
    the customer for the intended use; a clause making the customer indemnify the vendor is the opposite. - **Free tiers are often non-commercial,** and some outputs stay non-commercial after upgrading   ([World Labs terms](https://www.worldlab
  • Network accessline 175
    - **Free tiers are often non-commercial,** and some outputs stay non-commercial after upgrading   ([World Labs terms](https://www.worldlabs.ai/terms-of-service)). - **Open weights are not unrestricted:** read each checkpoint's licence. Some
  • Network accessline 176
    ([World Labs terms](https://www.worldlabs.ai/terms-of-service)).
  • Network accessline 177
    - **Open weights are not unrestricted:** read each checkpoint's licence. Some carry revenue thresholds, branding duties   or territorial limits (one 3D model's licence excludes the EU, the UK and South Korea:   [Hunyuan3D-2.1](https://githu
  • Network accessline 178
    or territorial limits (one 3D model's licence excludes the EU, the UK and South Korea:   [Hunyuan3D-2.1](https://github.com/Tencent-Hunyuan/Hunyuan3D-2.1/blob/main/LICENSE)). Running locally does not make   a hosted wrapper private.
  • Network accessline 179
    [Hunyuan3D-2.1](https://github.com/Tencent-Hunyuan/Hunyuan3D-2.1/blob/main/LICENSE)). Running locally does not make
  • Network accessline 183
    logos in the scene"). - **Automated access:** some services forbid scripted or agent use of their apps   ([Midjourney terms](https://docs.midjourney.com/hc/en-us/articles/32083055291277-Terms-of-Service)). Use the
  • Network accessline 184
    - **Automated access:** some services forbid scripted or agent use of their apps   ([Midjourney terms](https://docs.midjourney.com/hc/en-us/articles/32083055291277-Terms-of-Service)). Use the   documented API or have the person operate the 
  • Network accessline 185
    ([Midjourney terms](https://docs.midjourney.com/hc/en-us/articles/32083055291277-Terms-of-Service)). Use the
  • Network accessline 193
    - **Disclose** realistic generated or altered people, products, events or behaviour where a viewer could take them as   evidence, and follow each platform's labelling rules   ([YouTube disclosure policy](https://support.google.com/youtube/a
  • Network accessline 195
    ([YouTube disclosure policy](https://support.google.com/youtube/answer/14328491?hl=en-GB)).
  • Network accessline 206
    - **OpenAI GPT Image 2.5** (Sunburst for precise edits, Flare for throughput): custom sizes in multiples of 16, from   1:3 to 3:1, up to 3,840 px a side and 655,360 to 8,294,400 pixels in all, with anything above 2560x1440 marked   experime
  • Network accessline 207
    1:3 to 3:1, up to 3,840 px a side and 655,360 to 8,294,400 pixels in all, with anything above 2560x1440 marked   experimental; transparent backgrounds ([guide](https://developers.openai.com/api/docs/guides/image-generation)). - **Google Nan
  • Network accessline 208
    experimental; transparent backgrounds ([guide](https://developers.openai.com/api/docs/guides/image-generation)).
  • Network accessline 209
    - **Google Nano Banana 2.1**: reference-led compositions and conversational revisions at 1K-4K   ([pricing](https://ai.google.dev/gemini-api/docs/pricing)). - **Black Forest Labs FLUX 3 Image and Klein**: layout control with bounding boxes;
  • Network accessline 210
    ([pricing](https://ai.google.dev/gemini-api/docs/pricing)).
  • Network accessline 211
    - **Black Forest Labs FLUX 3 Image and Klein**: layout control with bounding boxes; Klein has open weights under its   own commercial terms ([FLUX 3](https://bfl.ai/models/flux-3-image)). - **Midjourney V8.2**: art direction and look develo
  • Network accessline 212
    own commercial terms ([FLUX 3](https://bfl.ai/models/flux-3-image)).
  • Network accessline 213
    - **Midjourney V8.2**: art direction and look development; no automated access under its terms. - **Ideogram 4.5 and Vector**: typography and genuine SVG output ([Vector](https://ideogram.ai/models/vector/)). - **Adobe Firefly Image 5** for
  • Network accessline 214
    - **Ideogram 4.5 and Vector**: typography and genuine SVG output ([Vector](https://ideogram.ai/models/vector/)).
  • Network accessline 215
    - **Adobe Firefly Image 5** for images, and Illustrator's Text to Vector Graphic for editable vectors   ([vectors](https://helpx.adobe.com/illustrator/desktop/use-generative-ai/generate-scenes-subjects-and-icons.html));   Adobe's indemnity 
  • Network accessline 216
    ([vectors](https://helpx.adobe.com/illustrator/desktop/use-generative-ai/generate-scenes-subjects-and-icons.html));
  • Network accessline 218
    ([conditions](https://helpx.adobe.com/legal/product-descriptions/adobe-firefly.html)).
  • Network accessline 222
    - **Google Gemini Omni 1.1 Flash**: conversational generation and editing, extension and interpolation   ([model](https://ai.google.dev/gemini-api/docs/models/gemini-omni-flash)).
  • Network accessline 223
    ([model](https://ai.google.dev/gemini-api/docs/models/gemini-omni-flash)).
  • Network accessline 224
    - **Google Veo 3.1**: first and last frames and content credentials, on Google's enterprise platform or a partner   route; its Gemini API preview endpoints shut down on 2026-10-22 ([video guide](https://ai.google.dev/gemini-api/docs/video))
  • Network accessline 225
    route; its Gemini API preview endpoints shut down on 2026-10-22 ([video guide](https://ai.google.dev/gemini-api/docs/video)).
  • Network accessline 226
    - **Runway Gen-4.5, Act-Two and Aleph 2.0**: Act-Two transfers a real performance to a character; Aleph edits and   relights existing shots ([API pricing](https://docs.dev.runwayml.com/guides/pricing/)). - **Luma Ray3.2**: up to sixteen key
  • Network accessline 227
    relights existing shots ([API pricing](https://docs.dev.runwayml.com/guides/pricing/)).
  • Network accessline 228
    - **Luma Ray3.2**: up to sixteen keyframes, HDR and 16-bit EXR output for compositing ([Ray](https://lumalabs.ai/ray)).
  • Network accessline 229
    - **Seedance 2.5**: up to 30 s with audio and rich image, video and audio references   ([release](https://seed.bytedance.com/en/blog/one-take-creation-flexible-referencing-introducing-seedance-2-5)). - **Kling 4.0**: long takes with up to t
  • Network accessline 230
    ([release](https://seed.bytedance.com/en/blog/one-take-creation-flexible-referencing-introducing-seedance-2-5)).
  • Network accessline 231
    - **Kling 4.0**: long takes with up to ten keyframes ([guide](https://kling.ai/blog/kling-4-ai-video-model)).
  • Network accessline 232
    - **FLUX 3 Video**: up to ten keyframes, a cheap draft mode that continues into the final   ([overview](https://help.bfl.ai/articles/7342522296-what-is-flux-3)). - **HeyGen Video 1**: economical reference-driven scenes with native sound; fr
  • Network accessline 233
    ([overview](https://help.bfl.ai/articles/7342522296-what-is-flux-3)).
  • Network accessline 234
    - **HeyGen Video 1**: economical reference-driven scenes with native sound; free output is non-commercial   ([API](https://www.heygen.com/ai-video-api)). - **Open weights:** LTX-2.5 ([model card](https://huggingface.co/Lightricks/LTX-2.5/bl
  • Network accessline 235
    ([API](https://www.heygen.com/ai-video-api)).
  • Network accessline 236
    - **Open weights:** LTX-2.5 ([model card](https://huggingface.co/Lightricks/LTX-2.5/blob/main/README.md)) and MiniMax H3
  • Network accessline 237
    ([repository](https://github.com/MiniMax-AI/MiniMax-H3)); at full precision both exceed a typical laptop's GPU
  • Network accessline 239
    revenue-threshold licences. - **The Sora 2 API is gone:** OpenAI shut down the Videos API and its Sora 2 models on 2026-09-24   ([deprecations](https://developers.openai.com/api/docs/deprecations)).
  • Network accessline 241
    ([deprecations](https://developers.openai.com/api/docs/deprecations)).
  • Network accessline 243
    **Voice:** ElevenLabs v4 ([models](https://elevenlabs.io/docs/overview/models)), Cartesia Sonic
  • Network accessline 244
    ([pricing](https://www.cartesia.ai/pricing)), Google Gemini 3.8 Flash TTS for directed delivery
  • Network accessline 245
    ([model](https://ai.google.dev/gemini-api/docs/models/gemini-3.8-flash-tts)), and Chatterbox to run locally under the
  • Network accessline 246
    MIT licence ([repository](https://github.com/resemble-ai/chatterbox)). Cloning conditions differ by route, so read them
  • Network accessline 249
    **Music:** Suno v6 grants commercial rights on paid downloads only ([rights](https://help.suno.com/en/articles/9601665));
  • Network accessline 250
    Eleven Music's self-serve rights exclude film, TV and radio, so check how its terms classify your use ([music terms](https://elevenlabs.io/music-terms)); Google Lyria 3.5 is cheap for exploration ([guide](https://ai.google.dev/gemini-api/do
  • Network accessline 251
    ([music terms](https://elevenlabs.io/music-terms)); Google
  • Network accessline 252
    Lyria 3.5 is cheap for exploration ([guide](https://ai.google.dev/gemini-api/docs/music-generation)); Stable Audio 3
  • Network accessline 253
    runs locally under a revenue-threshold licence ([licence](https://stability.ai/license)). Udio had disabled downloads
  • Network accessline 254
    at the time of reading ([notice](https://help.udio.com/en/articles/12683565-changes-associated-with-the-universal-music-group-umg-partnership)).
  • Network accessline 257
    **Sound effects:** ElevenLabs Sound Effects, 0.1-30 s with looping ([docs](https://elevenlabs.io/docs/overview/capabilities/sound-effects)); Adobe Firefly sound effects at 48 kHz; Stable
  • Network accessline 258
    ([docs](https://elevenlabs.io/docs/overview/capabilities/sound-effects)); Adobe Firefly sound effects at 48 kHz; Stable
  • Network accessline 264
    - **Restoration and upscaling:** Topaz ([pricing](https://www.topazlabs.com/pricing)); DaVinci Resolve Studio's noise
  • Network accessline 265
    reduction, SuperScale and Speed Warp ([Studio](https://www.blackmagicdesign.com/products/davinciresolve/studio));
  • Network accessline 266
    Neat Video for camera noise; Real-ESRGAN locally ([repository](https://github.com/xinntao/Real-ESRGAN)).
  • Network accessline 267
    - **Interpolation:** Topaz's models, Resolve Speed Warp, or RIFE locally ([repository](https://github.com/hzwer/ECCV2022-RIFE)).
  • Network accessline 268
    - **Matting:** After Effects Object Matte and Roto Brush, Resolve Magic Mask, SAM 3 for segmentation masks to refine   into a soft matte, under its own licence ([repository](https://github.com/facebookresearch/sam3)), and Robust Video   Mat
  • Network accessline 269
    into a soft matte, under its own licence ([repository](https://github.com/facebookresearch/sam3)), and Robust Video
  • Network accessline 274
    **3D and scenes:** Meshy and Tripo for props to clean up afterwards; World Labs Marble for explorable environments ([docs](https://docs.worldlabs.ai/marble/models)). Use manufacturer CAD or measured modelling for a hero product.
  • Network accessline 275
    ([docs](https://docs.worldlabs.ai/marble/models)). Use manufacturer CAD or measured modelling for a hero product.

skills/legible-film/references/grading.md

  • Network accessline 155
    is scored under Accessibility. BBC subtitle guidance describes roughly 160-180 words per minute for many genres, with editorial adjustments; this is a review prompt, not a pass/fail score or proof for burned text. See [BBC subtitle guidance
  • Network accessline 156
    for many genres, with editorial adjustments; this is a review prompt, not a pass/fail score or proof for burned text. See [BBC subtitle guidance](https://www.bbc.co.uk/accessibility/forproducts/guides/subtitles/) and [BBC research on subtit
  • Network accessline 157
    See [BBC subtitle guidance](https://www.bbc.co.uk/accessibility/forproducts/guides/subtitles/) and
  • Network accessline 158
    [BBC research on subtitle speed](https://downloads.bbc.co.uk/rd/pubs/whp/whp-pdf-files/WHP306.pdf). Cite and quote the
  • Network accessline 257
    Signals: encoded shape and duration, first frame, captions and declared platform; these do not establish current platform limits, safe-zone clearance or muted comprehension. Cite the requirement and the affected frame. Platform overlays and
  • Network accessline 258
    limits, safe-zone clearance or muted comprehension. Cite the requirement and the affected frame. Platform overlays and policies change; verify the current official guide, for example [YouTube upload guidance](https://support.google.com/yout
  • Network accessline 259
    policies change; verify the current official guide, for example [YouTube upload guidance](https://support.google.com/youtube/answer/1722171).
  • Network accessline 275
    red flashes and is not a photosensitivity test. Cite the check, standard and affected interval; a draft transcript cannot establish caption accuracy. For applicable web content, [WCAG 2.2](https://www.w3.org/TR/WCAG22/) requires captions fo
  • Network accessline 276
    affected interval; a draft transcript cannot establish caption accuracy. For applicable web content, [WCAG 2.2](https://www.w3.org/TR/WCAG22/) requires captions for prerecorded synchronized audio except its stated exception, and limits flas
  • Network accessline 277
    [WCAG 2.2](https://www.w3.org/TR/WCAG22/) requires captions for prerecorded synchronized audio except its stated
  • Network accessline 331
    copy of this sidecar. `scopes/index.json` maps waveform and vectorscope pictures to the representative frame and time interval for each automatically detected candidate shot; long cuts cap the scope count and disclose that sampling. [QCTool
  • Network accessline 332
    interval for each automatically detected candidate shot; long cuts cap the scope count and disclose that sampling. [QCTools filter descriptions](https://bavc.github.io/qctools/filter_descriptions.html) inspired these diagnostics; their mean
  • Network accessline 333
    [QCTools filter descriptions](https://bavc.github.io/qctools/filter_descriptions.html) inspired these diagnostics;

skills/legible-film/references/kinetic-type.md

  • Network accessline 151
    count); dark bars below 160 cd/m² with at least 20 cd/m² between light and dark; and more than 40% of the screen   when still, or more than 25% when it changes direction, oscillates, flashes or reverses contrast. Smooth flow in one   direct
  • Network accessline 152
    when still, or more than 25% when it changes direction, oscillates, flashes or reverses contrast. Smooth flow in one   direction is exempt ([Ofcom, Section Two guidance, Annex 1](https://www.ofcom.org.uk/siteassets/resources/documents/tv-ra
  • Network accessline 153
    direction is exempt ([Ofcom, Section Two guidance, Annex 1](https://www.ofcom.org.uk/siteassets/resources/documents/tv-radio-and-on-demand/broadcast-guidance/programme-guidance/broadcast-code-guidance/section-2-guidance-notes.pdf)).

skills/legible-film/references/kit.md

  • Network accessline 49
    6. **Stills** of the hardest frames in every size, at full size and at feed size, judged as [picture](picture.md)    says: with the preview served,    `node "<SKILL_DIR>/scripts/film_capture.mjs" stills http://127.0.0.1:8000/?render --at 2.
  • Network accessline 50
    says: with the preview served,    `node "<SKILL_DIR>/scripts/film_capture.mjs" stills http://127.0.0.1:8000/?render --at 2.5,b12 --size 1080x1920    --out qa/stills`, or a quick `make_film.py --preview` and `frame_sheet.py` on its renders.
  • Network accessline 51
    `node "<SKILL_DIR>/scripts/film_capture.mjs" stills http://127.0.0.1:8000/?render --at 2.5,b12 --size 1080x1920

skills/legible-film/references/loop.md

  • Network accessline 57
    `screen.py serve PROJECT --open` for live mode, where their notes and ticks reach the project folder directly and the page follows new versions. When the person reviews away from this machine or with others (a client, an editor, a team), [F
  • Network accessline 58
    page follows new versions. When the person reviews away from this machine or with others (a client, an editor, a team), [Flask](https://flask.do) is the recommended collaboration and feedback layer: post each version there and bring every n
  • Network accessline 59
    team), [Flask](https://flask.do) is the recommended collaboration and feedback layer: post each version there and

skills/legible-film/references/review.md

  • Network accessline 32
    **Reviewing with others: Flask.** The Screening Room is local and private; when the person reviews away from this machine, or with a client, editor or team, use [Flask](https://flask.do), the recommended collaboration and feedback
  • Network accessline 33
    machine, or with a client, editor or team, use [Flask](https://flask.do), the recommended collaboration and feedback
  • Network accessline 34
    layer. Each version goes up as the next version of one asset, and reviewers watch it at speed and leave notes pinned to moments, with drawings on the frame and replies. An agent works it through Flask's MCP server (`https://api.flask.do/api
  • Network accessline 36
    (`https://api.flask.do/api/mcp/mcp` when checked on 2026-10-31; the person signs in once):

skills/legible-film/references/sound.md

  • Network accessline 247
    You cannot hear, but you can listen by instrument. Measure, describe and compare the sound, and say what each measure cannot tell. `listen.py` follows [earshot](https://github.com/Leonxlnx/earshot)'s shape and uses its
  • Network accessline 248
    measure cannot tell. `listen.py` follows [earshot](https://github.com/Leonxlnx/earshot)'s shape and uses its

skills/legible-film/references/sources.md

  • Network accessline 10
    flash thresholds; 0.006 steradians, about 25% of a 10° field; 341 x 256 px at 1024 x 768); 2.3.3 Animation from   Interactions (names parallax and non-essential motion); 1.4.1 Use of Color; 1.4.3 Contrast (4.5:1, 3:1 large   text); 1.4.11 N
  • Network accessline 11
    Interactions (names parallax and non-essential motion); 1.4.1 Use of Color; 1.4.3 Contrast (4.5:1, 3:1 large   text); 1.4.11 Non-text Contrast (3:1); 1.2.2 Captions (Prerecorded). https://www.w3.org/TR/WCAG22/ - WCAG 2.2's note on saturated
  • Network accessline 12
    text); 1.4.11 Non-text Contrast (3:1); 1.2.2 Captions (Prerecorded). https://www.w3.org/TR/WCAG22/
  • Network accessline 14
    above 0.2. `flash_scan.py` implements the WCAG 2.0 working formula ((R−G−B)×320 > 20 where R/(R+G+B) ≥ 0.8), so   its red results are a screen, not a reading of the current definition. - Photosensitivity tools: Electronic Arts IRIS (https:/
  • Network accessline 15
    its red results are a screen, not a reading of the current definition. - Photosensitivity tools: Electronic Arts IRIS (https://github.com/electronicarts/IRIS); Trace Center PEAT   (https://trace.umd.edu/peat/); Harding FPA (https://www.hard
  • Network accessline 16
    - Photosensitivity tools: Electronic Arts IRIS (https://github.com/electronicarts/IRIS); Trace Center PEAT
  • Network accessline 17
    (https://trace.umd.edu/peat/); Harding FPA (https://www.hardingfpa.com/); UK ASA on flashing images in ads
  • Network accessline 18
    (https://www.asa.org.uk/news/flashing-images-in-advertising.html).
  • Network accessline 22
    - [ITU-R BT.1359-1](https://www.itu.int/dms_pubrec/itu-r/rec/bt/R-REC-BT.1359-1-199811-I%21%21PDF-E.pdf), Relative
  • Network accessline 23
    timing of sound and vision for broadcasting: detectability about +45 ms (sound early) to −125 ms (sound late),   acceptability about +90 ms to −185 ms. - [EBU R37-2007](https://tech.ebu.ch/publications/r037): 5 ms early to 15 ms late per st
  • Network accessline 24
    acceptability about +90 ms to −185 ms. - [EBU R37-2007](https://tech.ebu.ch/publications/r037): 5 ms early to 15 ms late per stage; 40 ms early to 60 ms   late at emission.
  • Network accessline 25
    - [EBU R37-2007](https://tech.ebu.ch/publications/r037): 5 ms early to 15 ms late per stage; 40 ms early to 60 ms
  • Network accessline 26
    late at emission. - [ITU-R BS.1770-5](https://www.itu.int/rec/R-REC-BS.1770/en) (11/2023): loudness and true-peak measurement. - [EBU R128-2023](https://tech.ebu.ch/publications/r128) (−23.0 LUFS, true peak ≤ −1 dBTP) and
  • Network accessline 27
    - [ITU-R BS.1770-5](https://www.itu.int/rec/R-REC-BS.1770/en) (11/2023): loudness and true-peak measurement.
  • Network accessline 28
    - [EBU R128-2023](https://tech.ebu.ch/publications/r128) (−23.0 LUFS, true peak ≤ −1 dBTP) and   [R128 s1-2020](https://tech.ebu.ch/publications/r128s1) (short-form: −23 LUFS, maximum short-term −18 LUFS).   EBU's site may refuse automated 
  • Network accessline 29
    [R128 s1-2020](https://tech.ebu.ch/publications/r128s1) (short-form: −23 LUFS, maximum short-term −18 LUFS).   EBU's site may refuse automated requests; open the links in a browser. - ATSC A/85:2026-07 (−24 LKFS; true peak below −2 dBTP; st
  • Network accessline 31
    - ATSC A/85:2026-07 (−24 LKFS; true peak below −2 dBTP; streaming annex −23 to −27 LKFS), read from the ATSC PDF;   ATSC documents are listed at atsc.org. - [EBU Tech 3344](https://tech.ebu.ch/publications/tech3344): lossy codecs raise true
  • Network accessline 32
    ATSC documents are listed at atsc.org. - [EBU Tech 3344](https://tech.ebu.ch/publications/tech3344): lossy codecs raise true peak, more at low bitrates. - [Spotify, Loudness normalization](https://support.spotify.com/us/artists/article/loud
  • Network accessline 33
    - [EBU Tech 3344](https://tech.ebu.ch/publications/tech3344): lossy codecs raise true peak, more at low bitrates.
  • Network accessline 34
    - [Spotify, Loudness normalization](https://support.spotify.com/us/artists/article/loudness-normalization/) (music):
  • Network accessline 39
    - [Netflix, English (USA) Timed Text Style Guide](https://partnerhelp.netflixstudios.com/hc/en-us/articles/217350977-English-USA-Timed-Text-Style-Guide)
  • Network accessline 40
    (revised 2025-12-19): 42 characters per line; up to 20 characters per second (adult) and 17 (children's).   [General requirements](https://partnerhelp.netflixstudios.com/hc/en-us/articles/215758617-Timed-Text-Style-Guide-General-Requirement
  • Network accessline 41
    [General requirements](https://partnerhelp.netflixstudios.com/hc/en-us/articles/215758617-Timed-Text-Style-Guide-General-Requirements):
  • Network accessline 42
    a minimum of 5/6 s (another Netflix page says 20 frames, about 0.8 s), a maximum of 7 s per event, two lines. - Brysbaert, M. (2019). How many words do we read per minute? A review and meta-analysis of reading rate. Journal   of Memory and 
  • Network accessline 44
    of Memory and Language, 109, 104047. https://doi.org/10.1016/j.jml.2019.104047 (238 wpm silent non-fiction).
  • Network accessline 71
    - YouTube recommended upload encoding settings. https://support.google.com/youtube/answer/1722171
  • Network accessline 72
    - FFmpeg documentation (formats: `+faststart`; filters: `ebur128`, `loudnorm`, `psnr`, `libvmaf`, `subtitles`,   `xfade`, `whisper`). https://ffmpeg.org/documentation.html - Mux, "Your browser and my browser see different colors" (2020): un
  • Network accessline 73
    `xfade`, `whisper`). https://ffmpeg.org/documentation.html
  • Network accessline 74
    - Mux, "Your browser and my browser see different colors" (2020): untagged video renders differently by browser.   https://www.mux.com/blog/your-browser-and-my-browser-see-different-colors - Verified on FFmpeg 9.0.2 while writing this skill
  • Network accessline 75
    https://www.mux.com/blog/your-browser-and-my-browser-see-different-colors
  • Network accessline 83
    - LinkedIn video ads specs: https://www.linkedin.com/help/lms/answer/a424737
  • Network accessline 84
    - Meta ads guide, Instagram Reels video ads: https://www.facebook.com/business/ads-guide/
  • Network accessline 85
    - TikTok in-feed ads specifications: https://ads.tiktok.com/resources/help/article/tiktok-auction-in-feed-ads
  • Network accessline 89
    HyperFrames (https://github.com/heygen-com/hyperframes), Remotion (https://www.remotion.dev/docs and its
  • Network accessline 90
    LICENSE.md), Blender (https://www.blender.org), OpenTimelineIO (https://github.com/AcademySoftwareFoundation/OpenTimelineIO),
  • Network accessline 91
    Playwright (https://playwright.dev/docs/videos), WhisperX (https://github.com/m-bain/whisperX), VMAF
  • Network accessline 92
    (https://github.com/Netflix/vmaf), Demucs (https://github.com/adefossez/demucs, licence note of 2026-10-26).

skills/legible-film/references/studio.md

  • Network accessline 135
    film. Measure each motion reference's pace with `motion_scan.py` (still share, longest still stretch, cuts per    10 s; [kinetic-type](kinetic-type.md) §4) and record the numbers beside it. Name a look by its cause (halation,    bleach bypa
  • Network accessline 136
    10 s; [kinetic-type](kinetic-type.md) §4) and record the numbers beside it. Name a look by its cause (halation,    bleach bypass, halftone, a dolly zoom): the [VFX Atlas](https://atlas.letz.ai/) describes 504 effects and looks    from 1820 
  • Network accessline 137
    bleach bypass, halftone, a dolly zoom): the [VFX Atlas](https://atlas.letz.ai/) describes 504 effects and looks

skills/legible-film/scripts/NOTICE

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/assemble.py

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

skills/legible-film/scripts/blank_scan.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 51
    [Credential-related source omitted]

skills/legible-film/scripts/captions.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 108
    [Credential-related source omitted]
  • Access to secretsline 1296
    [Credential-related source omitted]
  • Access to secretsline 1525
    [Credential-related source omitted]
  • Possible obfuscationline 1852
    mask_bytes = base64.b64decode(encoded_mask, validate=True)

skills/legible-film/scripts/check.py

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

skills/legible-film/scripts/compare_versions.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 62
    [Credential-related source omitted]

skills/legible-film/scripts/conform.py

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

skills/legible-film/scripts/cue_list.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 496
    def default_fetch(url):     request = urllib.request.Request(url, headers={'User-Agent': 'legible-film cue_list freeze'})
  • Network accessline 497
    request = urllib.request.Request(url, headers={'User-Agent': 'legible-film cue_list freeze'})
  • Network accessline 498
    with urllib.request.urlopen(request, timeout=30) as response:
  • Network accessline 524
    continue         try:             data = fetch(url)
  • Network accessline 525
    try:             data = fetch(url)         except Exception as error:   # any fetch failure leaves the reference live and the binding unverified
  • Network accessline 526
    data = fetch(url)
  • Access to secretsline 642
    [Credential-related source omitted]

skills/legible-film/scripts/cue_onsets.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 78
    [Credential-related source omitted]

skills/legible-film/scripts/cut.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 256
    [Credential-related source omitted]
  • Access to secretsline 3703
    [Credential-related source omitted]

skills/legible-film/scripts/delivery_check.py

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

skills/legible-film/scripts/dialogue_io.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 33
    [Credential-related source omitted]

skills/legible-film/scripts/exchange.py

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

skills/legible-film/scripts/film_capture.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 23
    node film_capture.mjs info http://127.0.0.1:8000/?render
  • Network accessline 24
    node film_capture.mjs analyse --url http://127.0.0.1:8000/?render
  • Network accessline 253
    }     const url=new URL(a.url||process.env.LF_URL||'');     if(url.protocol!=='http:'||url.hostname!=='127.0.0.1')throw Error('page must be http://127.0.0.1:<port>/');
  • Network accessline 254
    const url=new URL(a.url||process.env.LF_URL||'');     if(url.protocol!=='http:'||url.hostname!=='127.0.0.1')throw Error('page must be http://127.0.0.1:<port>/');     if(requestedSize) {url.searchParams.set('w',String(requestedSize.width));u
  • Network accessline 255
    if(url.protocol!=='http:'||url.hostname!=='127.0.0.1')throw Error('page must be http://127.0.0.1:<port>/');
  • Network accessline 307
    node film_capture.mjs cues film/ --out film/cues.json --source timelines --verify   node film_capture.mjs cues film/ --out cues.json --source declared --ready __cues_ready --global __cues --fps 60   node film_capture.mjs cues http://127.0.0
  • Network accessline 309
    node film_capture.mjs cues http://127.0.0.1:8000/index.html?render --root film/ --out cues.json --source lf
  • Network accessline 434
    const server = http.createServer((req, res) => {     let rel;     try { rel = decodeURIComponent(new URL(req.url, 'http://127.0.0.1').pathname); } catch { res.writeHead(400); res.end(); return; }
  • Network accessline 435
    let rel;     try { rel = decodeURIComponent(new URL(req.url, 'http://127.0.0.1').pathname); } catch { res.writeHead(400); res.end(); return; }     if (rel.endsWith('/')) rel += 'index.html';
  • Network accessline 436
    try { rel = decodeURIComponent(new URL(req.url, 'http://127.0.0.1').pathname); } catch { res.writeHead(400); res.end(); return; }
  • Network accessline 445
    });   await new Promise((resolve, reject) => { server.once('error', reject); server.listen(0, '127.0.0.1', resolve); });   return {server, origin: `http://127.0.0.1:${server.address().port}`, seen};
  • Network accessline 446
    await new Promise((resolve, reject) => { server.once('error', reject); server.listen(0, '127.0.0.1', resolve); });   return {server, origin: `http://127.0.0.1:${server.address().port}`, seen}; }
  • Network accessline 447
    return {server, origin: `http://127.0.0.1:${server.address().port}`, seen};
  • Network accessline 506
    host.setAttribute('data-lf-mounted', '');         const src = host.getAttribute('data-composition-src');         const r = await fetch(src);
  • Network accessline 507
    const src = host.getAttribute('data-composition-src');         const r = await fetch(src);         if (!r.ok) throw Error('scene file ' + src + ' could not be read (' + r.status + ')');
  • Network accessline 508
    const r = await fetch(src);

skills/legible-film/scripts/film_check.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 87
    (r'(?<![\w-])animation(-name)?\s*:', 'CSS animation'),     (r'@keyframes', 'CSS @keyframes'),     (r'\bfetch\s*\(', 'fetch (network)'),
  • Network accessline 88
    (r'@keyframes', 'CSS @keyframes'),     (r'\bfetch\s*\(', 'fetch (network)'),     (r'XMLHttpRequest|\bnew\s+WebSocket\b|\bEventSource\b', 'network request'),
  • Network accessline 89
    (r'\bfetch\s*\(', 'fetch (network)'),
  • Access to secretsline 133
    [Credential-related source omitted]
  • Access to secretsline 140
    [Credential-related source omitted]
  • Access to secretsline 141
    [Credential-related source omitted]
  • Access to secretsline 142
    [Credential-related source omitted]
  • Network accessline 211
    raise RuntimeError('the cue export needs Node and film_capture.mjs beside this script')     target = os.path.join(folder, 'cues.json')     url = f'http://127.0.0.1/index.html?render&w={w}&h={h}' + (f'&res={a.res}' if a.res else '')
  • Network accessline 212
    target = os.path.join(folder, 'cues.json')     url = f'http://127.0.0.1/index.html?render&w={w}&h={h}' + (f'&res={a.res}' if a.res else '')     cmd = [node, capture, 'cues', url, '--root', folder, '--out', target, '--source', 'lf', '--size'
  • Network accessline 213
    url = f'http://127.0.0.1/index.html?render&w={w}&h={h}' + (f'&res={a.res}' if a.res else '')
  • Network accessline 245
    httpd = None if file_only else serve(folder)     url = (Path(folder, 'index.html').as_uri() if file_only else            f'http://127.0.0.1:{httpd.server_address[1]}/index.html')
  • Network accessline 246
    url = (Path(folder, 'index.html').as_uri() if file_only else            f'http://127.0.0.1:{httpd.server_address[1]}/index.html')     url += f'?render&w={w}&h={h}' + (f'&res={a.res}' if a.res else '')
  • Network accessline 247
    f'http://127.0.0.1:{httpd.server_address[1]}/index.html')
  • Access to secretsline 274
    [Credential-related source omitted]
  • Network accessline 448
    else:                 httpd = serve(kept)                 url = f'http://127.0.0.1:{httpd.server_address[1]}/index.html'
  • Network accessline 449
    httpd = serve(kept)                 url = f'http://127.0.0.1:{httpd.server_address[1]}/index.html'             url += f'?render&w={w}&h={h}' + (f'&res={a.res}' if a.res else '')
  • Network accessline 450
    url = f'http://127.0.0.1:{httpd.server_address[1]}/index.html'
  • Access to secretsline 453
    [Credential-related source omitted]

skills/legible-film/scripts/film_render.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 331
    raise ValueError('--page must stay inside the film folder')             page = a.page + ('&' if '?' in a.page else '?') + 'render'             url = f'http://127.0.0.1:{server.server_port}/{page}'
  • Network accessline 332
    page = a.page + ('&' if '?' in a.page else '?') + 'render'             url = f'http://127.0.0.1:{server.server_port}/{page}'             try:
  • Network accessline 333
    url = f'http://127.0.0.1:{server.server_port}/{page}'

skills/legible-film/scripts/flash_scan.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 71
    [Credential-related source omitted]

skills/legible-film/scripts/frame_sheet.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 68
    [Credential-related source omitted]

skills/legible-film/scripts/grade.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Possible obfuscationline 746
    payload = base64.b64decode(row.pop('png'))

skills/legible-film/scripts/kit_selftest.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 103
    thread = threading.Thread(target=server.serve_forever, daemon=True)         thread.start()         url = f"http://127.0.0.1:{server.server_port}/?render"
  • Network accessline 105
    url = f"http://127.0.0.1:{server.server_port}/?render"

skills/legible-film/scripts/listen.py

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

skills/legible-film/scripts/look.py

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

skills/legible-film/scripts/make_film.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 227
    [Credential-related source omitted]
  • Dangerous shell operationline 309
    'ffmpeg': pick('winget install Gyan.FFmpeg', 'brew install ffmpeg', 'sudo apt install ffmpeg'),
  • Dangerous shell operationline 310
    'node': pick('winget install OpenJS.NodeJS.LTS', 'brew install node', 'sudo apt install nodejs npm'),
  • Access to secretsline 711
    [Credential-related source omitted]
  • Network accessline 938
    try:             node = find_tool('node', self.a.node)             url = f'http://127.0.0.1:{server.server_port}/index.html?render'
  • Network accessline 939
    node = find_tool('node', self.a.node)             url = f'http://127.0.0.1:{server.server_port}/index.html?render'             code, text = self.run('info', [node, HERE / 'film_capture.mjs', 'info', url, '--size', label])
  • Network accessline 940
    url = f'http://127.0.0.1:{server.server_port}/index.html?render'

skills/legible-film/scripts/make_sound_kit.py

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

skills/legible-film/scripts/map.py

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

skills/legible-film/scripts/matte.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 46
    MODEL_NAME = 'modnet.onnx' MODEL_SHA256 = '07c308cf0fc7e6e8b2065a12ed7fc07e1de8febb7dc7839d7b7f15dd66584df9' MODEL_URL = ('https://huggingface.co/Xenova/modnet/resolve/'
  • Network accessline 47
    MODEL_SHA256 = '07c308cf0fc7e6e8b2065a12ed7fc07e1de8febb7dc7839d7b7f15dd66584df9' MODEL_URL = ('https://huggingface.co/Xenova/modnet/resolve/'              'fa2fa546052fba4c08921230a26cc69a333fca12/onnx/model.onnx')
  • Network accessline 48
    MODEL_URL = ('https://huggingface.co/Xenova/modnet/resolve/'
  • Network accessline 49
    'fa2fa546052fba4c08921230a26cc69a333fca12/onnx/model.onnx') MODEL_CARD = 'https://huggingface.co/Xenova/modnet' CODE_LICENCE = 'https://github.com/ZHKKKe/MODNet/blob/master/LICENSE'
  • Network accessline 50
    MODEL_CARD = 'https://huggingface.co/Xenova/modnet'
  • Network accessline 51
    CODE_LICENCE = 'https://github.com/ZHKKKe/MODNet/blob/master/LICENSE'

skills/legible-film/scripts/mix_cues.py

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

skills/legible-film/scripts/motion_blur.py

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

skills/legible-film/scripts/motion_scan.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 75
    [Credential-related source omitted]

skills/legible-film/scripts/new_film.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 140
    serve = project.python_command(['-m', 'http.server', '--bind', '127.0.0.1', '--directory', out, '8000'])     print(f'  3. Preview: {serve}')     print('     then open http://127.0.0.1:8000/')
  • Network accessline 141
    print(f'  3. Preview: {serve}')     print('     then open http://127.0.0.1:8000/')     print('     (keys: space play, , . frame, arrows beat, 0-9 jump, S safe area, R reading states, L luminance).')
  • Network accessline 142
    print('     then open http://127.0.0.1:8000/')

skills/legible-film/scripts/onion_frames.py

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

skills/legible-film/scripts/project.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 1691
    [Credential-related source omitted]
  • Access to secretsline 1777
    [Credential-related source omitted]
  • Network accessline 1778
    preload = Path(__file__).with_name('render_block.cjs').resolve().as_posix()     env['NODE_OPTIONS'] = f'--require "{preload}"' + (' ' + env['NODE_OPTIONS'] if env.get('NODE_OPTIONS') else '')     url = f'http://127.0.0.1:{sink.server_addres
  • Network accessline 1779
    env['NODE_OPTIONS'] = f'--require "{preload}"' + (' ' + env['NODE_OPTIONS'] if env.get('NODE_OPTIONS') else '')     url = f'http://127.0.0.1:{sink.server_address[1]}'     for key in ('HTTP_PROXY', 'HTTPS_PROXY', 'ALL_PROXY', 'http_proxy', '
  • Network accessline 1780
    url = f'http://127.0.0.1:{sink.server_address[1]}'

skills/legible-film/scripts/qc_file.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 46
    [Credential-related source omitted]

skills/legible-film/scripts/reframe.py

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

skills/legible-film/scripts/region_check.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 57
    [Credential-related source omitted]

skills/legible-film/scripts/render_block.cjs

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/render_common.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 58
    [Credential-related source omitted]

skills/legible-film/scripts/screen.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 30
    import hashlib import html import http.client
  • Network accessline 31
    import html import http.client import http.cookies
  • Network accessline 32
    import http.client
  • Network accessline 1277
    raw = urllib.parse.unquote(urllib.parse.urlsplit(self.path).path)             if raw == '/favicon.ico':                 icon = (b'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">'
  • Network accessline 1278
    if raw == '/favicon.ico':                 icon = (b'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">'                         b'<rect width="64" height="64" rx="10" fill="#3b5cf6"/>'
  • Network accessline 1279
    icon = (b'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">'
  • Network accessline 1357
    origin = self.headers.get('Origin')             if origin and origin not in {f'http://127.0.0.1:{self.server.server_port}',
  • Network accessline 1358
    if origin and origin not in {f'http://127.0.0.1:{self.server.server_port}',
  • Network accessline 1359
    f'http://localhost:{self.server.server_port}'}:
  • Network accessline 1456
    return False             path = '/screening/index.html'         connection = http.client.HTTPConnection('127.0.0.1', port, timeout=1)
  • Network accessline 1457
    path = '/screening/index.html'         connection = http.client.HTTPConnection('127.0.0.1', port, timeout=1)         try:
  • Network accessline 1458
    connection = http.client.HTTPConnection('127.0.0.1', port, timeout=1)
  • Network accessline 1468
    finally:             connection.close()     except (OSError, ValueError, TypeError, http.client.HTTPException):
  • Network accessline 1469
    connection.close()     except (OSError, ValueError, TypeError, http.client.HTTPException):         return False
  • Network accessline 1470
    except (OSError, ValueError, TypeError, http.client.HTTPException):
  • Network accessline 1502
    server.server_close()         raise     url = 'http:' + '//127.0.0.1:' + str(server.server_port) + '/screening/index.html?t=' + token
  • Network accessline 1503
    raise     url = 'http:' + '//127.0.0.1:' + str(server.server_port) + '/screening/index.html?t=' + token     print(url, flush=True)
  • Network accessline 1504
    url = 'http:' + '//127.0.0.1:' + str(server.server_port) + '/screening/index.html?t=' + token
  • Network accessline 2548
    function expired(){let banner=$('connection');banner.hidden=false;   banner.textContent="This link has expired; reopen the room from the agent's link."} async function post(path,body){let response=await fetch('../api/'+path,{method:'POST',
  • Network accessline 2549
    banner.textContent="This link has expired; reopen the room from the agent's link."} async function post(path,body){let response=await fetch('../api/'+path,{method:'POST',   headers:{'Content-Type':'application/json'},body:JSON.stringify(bod
  • Network accessline 2550
    async function post(path,body){let response=await fetch('../api/'+path,{method:'POST',
  • Network accessline 2590
    }; let snapshot=JSON.stringify(data);async function poll(){try{   let r=await fetch('../api/status',{cache:'no-store'});if(r.status===403){expired();return}if(!r.ok){
  • Network accessline 2591
    let snapshot=JSON.stringify(data);async function poll(){try{   let r=await fetch('../api/status',{cache:'no-store'});if(r.status===403){expired();return}if(!r.ok){     $('connection').hidden=false;
  • Network accessline 2592
    let r=await fetch('../api/status',{cache:'no-store'});if(r.status===403){expired();return}if(!r.ok){

skills/legible-film/scripts/selftest.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 155
    [Credential-related source omitted]
  • Access to secretsline 195
    [Credential-related source omitted]
  • Access to secretsline 213
    [Credential-related source omitted]
  • Access to secretsline 218
    [Credential-related source omitted]

skills/legible-film/scripts/selftest_cases/_browser.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 16
    [Credential-related source omitted]
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 22
    [Credential-related source omitted]
  • Access to secretsline 48
    [Credential-related source omitted]
  • Access to secretsline 52
    [Credential-related source omitted]
  • Access to secretsline 75
    [Credential-related source omitted]

skills/legible-film/scripts/selftest_cases/attach_mix.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/captions.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/chain.py

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

skills/legible-film/scripts/selftest_cases/check.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/conform.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/cue_export.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 72
    [Credential-related source omitted]
  • Network accessline 175
    text[-200:])     runtime = page_copy(root / 'runtime-fetch', html={"window.__timelines = window.__timelines || {};\n(function () {":         "window.__timelines = window.__timelines || {};\nfetch('https://' + 'example.com/lf-fixture.json').
  • Network accessline 176
    runtime = page_copy(root / 'runtime-fetch', html={"window.__timelines = window.__timelines || {};\n(function () {":         "window.__timelines = window.__timelines || {};\nfetch('https://' + 'example.com/lf-fixture.json').catch(() => {});\
  • Network accessline 177
    "window.__timelines = window.__timelines || {};\nfetch('https://' + 'example.com/lf-fixture.json').catch(() => {});\n(function () {"})
  • Network accessline 201
    readme = '<!doctype html><title>notes</title><script src="http://example.com/tracker.js"></script>\n' \
  • Network accessline 202
    '<link rel="stylesheet" href="http://example.com/theme.css">\n'
  • Network accessline 220
    "s.src = 'late/' + 'later.js'; document.head.appendChild(s); })();\n(function () {"})     (late / 'late').mkdir()     (late / 'late' / 'later.js').write_text('if (false) import("https://example.com/unpinned/later.js");\n', encoding='utf-8')
  • Network accessline 221
    (late / 'late').mkdir()     (late / 'late' / 'later.js').write_text('if (false) import("https://example.com/unpinned/later.js");\n', encoding='utf-8')     code, text, doc = export(late)
  • Network accessline 222
    (late / 'late' / 'later.js').write_text('if (false) import("https://example.com/unpinned/later.js");\n', encoding='utf-8')
  • Access to secretsline 304
    [Credential-related source omitted]

skills/legible-film/scripts/selftest_cases/cues.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/custody.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/cut.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 2831
    [Credential-related source omitted]

skills/legible-film/scripts/selftest_cases/cut_record.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/dialogue.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/dialogue_baseline.txt

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

skills/legible-film/scripts/selftest_cases/exchange.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/exchange_write.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/firstrun.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 66
    [Credential-related source omitted]
  • Access to secretsline 80
    [Credential-related source omitted]

skills/legible-film/scripts/selftest_cases/flash.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/footage.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/gaps.py

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

skills/legible-film/scripts/selftest_cases/grade.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/identity.py

  • Executable scriptline 1
    Executable file
  • Network accessline 229
    net = root / 'freeze-net' / 'page'     net.mkdir(parents=True)     pinned = 'https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js'
  • Network accessline 230
    net.mkdir(parents=True)     pinned = 'https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js'     (net / 'index.html').write_text(f'<!doctype html><script src="{pinned}"></script>\n'
  • Network accessline 231
    pinned = 'https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js'
  • Network accessline 232
    (net / 'index.html').write_text(f'<!doctype html><script src="{pinned}"></script>\n'                                     '<a href="https://example.com/about">about</a>\n', encoding='utf-8')     fetched = []
  • Network accessline 233
    '<a href="https://example.com/about">about</a>\n', encoding='utf-8')
  • Network accessline 236
    def fetch(url):
  • Network accessline 250
    loose.mkdir(parents=True)     (loose.parent / 'shared.js').write_text('// shared\n', encoding='utf-8')     (loose / 'index.html').write_text('<!doctype html><script src="https://cdn.jsdelivr.net/npm/gsap@3/dist/gsap.js">'
  • Network accessline 251
    (loose.parent / 'shared.js').write_text('// shared\n', encoding='utf-8')     (loose / 'index.html').write_text('<!doctype html><script src="https://cdn.jsdelivr.net/npm/gsap@3/dist/gsap.js">'                                       '</script>
  • Network accessline 252
    (loose / 'index.html').write_text('<!doctype html><script src="https://cdn.jsdelivr.net/npm/gsap@3/dist/gsap.js">'                                       '</script><script src="../shared.js"></script>\n', encoding='utf-8')     record_loose =
  • Network accessline 339
    data = root / 'data-urls'     data.mkdir()     (data / 'index.html').write_bytes(b'<!doctype html><p data-href="https://example.com/p">x</p>'
  • Network accessline 340
    data.mkdir()     (data / 'index.html').write_bytes(b'<!doctype html><p data-href="https://example.com/p">x</p>'                                       b'<script src="app.js"></script>\n')
  • Network accessline 341
    (data / 'index.html').write_bytes(b'<!doctype html><p data-href="https://example.com/p">x</p>'
  • Network accessline 342
    b'<script src="app.js"></script>\n')     (data / 'app.js').write_bytes(b'const sources = ["https://example.com/a.json", \'https://cdn.example.org/x.png\'];\n'                                   b'const link = `see https://example.net/docs`;\
  • Network accessline 343
    (data / 'app.js').write_bytes(b'const sources = ["https://example.com/a.json", \'https://cdn.example.org/x.png\'];\n'
  • Network accessline 344
    b'const link = `see https://example.net/docs`;\n')     (data / 'facts.json').write_bytes(b'{"site": "https://example.com", "logo": "https://example.com/logo.svg"}\n')     plain = cl.freeze(data, fetch=lambda url: b'')
  • Network accessline 345
    (data / 'facts.json').write_bytes(b'{"site": "https://example.com", "logo": "https://example.com/logo.svg"}\n')     plain = cl.freeze(data, fetch=lambda url: b'')     record('cue_list: URLs in data strings (a JS array, a template string, a 
  • Network accessline 352
    (loads / 'index.html').write_bytes(         b'<!doctype html><link rel="stylesheet" href="style.css">'         b'<img srcset="https://a.example/1.png 1x, https://a.example/2.png 2x" src="local.png">'
  • Network accessline 353
    b'<!doctype html><link rel="stylesheet" href="style.css">'         b'<img srcset="https://a.example/1.png 1x, https://a.example/2.png 2x" src="local.png">'         b'<video poster="https://a.example/p.jpg"></video>'
  • Network accessline 354
    b'<img srcset="https://a.example/1.png 1x, https://a.example/2.png 2x" src="local.png">'
  • Network accessline 355
    b'<video poster="https://a.example/p.jpg"></video>'
  • Network accessline 356
    b'<style>.x{background:url("https://a.example/inline.png")}</style>'
  • Network accessline 357
    b'<script type="module" src="main.js"></script>\n')     (loads / 'style.css').write_bytes(b'@import "https://fonts.example/x.css";\n.b{background:url(https://a.example/bg.png)}\n')     (loads / 'main.js').write_bytes(b"import x from 'https:
  • Network accessline 358
    (loads / 'style.css').write_bytes(b'@import "https://fonts.example/x.css";\n.b{background:url(https://a.example/bg.png)}\n')
  • Network accessline 359
    (loads / 'main.js').write_bytes(b"import x from 'https://esm.example/m.js';\n"
  • Network accessline 360
    b'export { y } from "https://esm.example/n.js";\n'
  • Network accessline 361
    b"const later = () => import('https://esm.example/dyn.js');\n")     (loads / 'local.png').write_bytes(b'png')     positions = cl.freeze(loads, fetch=lambda url: b'')
  • Network accessline 362
    (loads / 'local.png').write_bytes(b'png')     positions = cl.freeze(loads, fetch=lambda url: b'')     wanted = {'https://a.example/1.png', 'https://a.example/2.png', 'https://a.example/p.jpg',
  • Network accessline 363
    positions = cl.freeze(loads, fetch=lambda url: b'')     wanted = {'https://a.example/1.png', 'https://a.example/2.png', 'https://a.example/p.jpg',               'https://a.example/inline.png', 'https://fonts.example/x.css', 'https://a.examp
  • Network accessline 364
    wanted = {'https://a.example/1.png', 'https://a.example/2.png', 'https://a.example/p.jpg',
  • Network accessline 365
    'https://a.example/inline.png', 'https://fonts.example/x.css', 'https://a.example/bg.png',
  • Network accessline 366
    'https://esm.example/m.js', 'https://esm.example/n.js', 'https://esm.example/dyn.js'}

skills/legible-film/scripts/selftest_cases/library.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 216
    if '/v1/audio/' in url:             return json.dumps({'results': [dict(id=c, license=c, license_version='1.0' if c == 'cc0' else '4.0',                   duration=550, url='https://example.org/' + c, title='Fixture', creator='Fixture autho
  • Network accessline 217
    return json.dumps({'results': [dict(id=c, license=c, license_version='1.0' if c == 'cc0' else '4.0',                   duration=550, url='https://example.org/' + c, title='Fixture', creator='Fixture author',                   foreign_landin
  • Network accessline 218
    duration=550, url='https://example.org/' + c, title='Fixture', creator='Fixture author',                   foreign_landing_url='https://example.org/source') for c in ('by-nc', 'by-nd', 'by-sa', 'cc0', 'by')]}).encode()         return (root 
  • Network accessline 219
    foreign_landing_url='https://example.org/source') for c in ('by-nc', 'by-nd', 'by-sa', 'cc0', 'by')]}).encode()

skills/legible-film/scripts/selftest_cases/lock.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 81
    [Credential-related source omitted]

skills/legible-film/scripts/selftest_cases/look.py

  • Executable scriptline 1
    Executable file
  • Network accessline 35
    edited = look.replace('- The feeling in three words:', '- The feeling in three words: calm, exact, warm')     (root / 'look.md').write_text(edited, encoding='utf-8')     code, output = tool('look.py', 'add', root, '--link', 'https://example
  • Network accessline 36
    (root / 'look.md').write_text(edited, encoding='utf-8')     code, output = tool('look.py', 'add', root, '--link', 'https://example.com/a-film', '--note', 'liked its pace')     code2, output2 = tool('look.py', 'set', root, 'R01', '--mode', '
  • Network accessline 37
    code, output = tool('look.py', 'add', root, '--link', 'https://example.com/a-film', '--note', 'liked its pace')
  • Network accessline 43
    code == code2 == 0 and 'calm, exact, warm' in after and '| L01 |' in after            and 'recreate closely' in after and not list((root / 'refs').glob('L01*'))            and next(row for row in index['refs'] if row['id'] == 'L01').get('ur
  • Network accessline 44
    and 'recreate closely' in after and not list((root / 'refs').glob('L01*'))            and next(row for row in index['refs'] if row['id'] == 'L01').get('url') == 'https://example.com/a-film',            output + output2 + after[-500:])
  • Network accessline 45
    and next(row for row in index['refs'] if row['id'] == 'L01').get('url') == 'https://example.com/a-film',

skills/legible-film/scripts/selftest_cases/make.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 317
    [Credential-related source omitted]
  • Access to secretsline 318
    [Credential-related source omitted]
  • Access to secretsline 323
    [Credential-related source omitted]
  • Access to secretsline 325
    [Credential-related source omitted]
  • Access to secretsline 865
    [Credential-related source omitted]

skills/legible-film/scripts/selftest_cases/map.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 324
    [Credential-related source omitted]
  • Access to secretsline 325
    [Credential-related source omitted]
  • Access to secretsline 330
    [Credential-related source omitted]
  • Access to secretsline 332
    [Credential-related source omitted]

skills/legible-film/scripts/selftest_cases/matte.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 196
    [Credential-related source omitted]

skills/legible-film/scripts/selftest_cases/outputs.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/project.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/qcfix.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/readers.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/record.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/register.py

  • Executable scriptline 1
    Executable file
  • Network accessline 51
    const value = f => flags.includes(f) ? flags[flags.indexOf(f) + 1] : null; if (value('--edit-live')) fs.appendFileSync(value('--edit-live'), '\n<!-- edited during the render -->\n'); if (value('--fetch')) { try { await fetch(value('--fetch'
  • Network accessline 52
    if (value('--edit-live')) fs.appendFileSync(value('--edit-live'), '\n<!-- edited during the render -->\n'); if (value('--fetch')) { try { await fetch(value('--fetch')); } catch (e) { console.error('fetch refused: ' + (e.cause?.code || e.mes
  • Network accessline 53
    if (value('--fetch')) { try { await fetch(value('--fetch')); } catch (e) { console.error('fetch refused: ' + (e.cause?.code || e.message)); } }
  • Access to secretsline 108
    [Credential-related source omitted]
  • Access to secretsline 119
    [Credential-related source omitted]
  • Network accessline 360
    check_page(hf_fetch)         code, text = add(root / 'project-fetch', '--cues', hf_fetch / 'cues.json', '--file', root / 'renders' / 'fetch.mp4',                          '--render', stub_cmd('--fetch', 'https://example.com/lf-during-render
  • Network accessline 361
    code, text = add(root / 'project-fetch', '--cues', hf_fetch / 'cues.json', '--file', root / 'renders' / 'fetch.mp4',                          '--render', stub_cmd('--fetch', 'https://example.com/lf-during-render.json'))         record('regi
  • Network accessline 362
    '--render', stub_cmd('--fetch', 'https://example.com/lf-during-render.json'))
  • Network accessline 365
    and 'the network (blocked): example.com:443' in text, text[-300:])         code, text = add(root / 'project-fetch', '--cues', hf_fetch / 'cues.json', '--file', root / 'renders' / 'fetch-b.mp4',                          '--render', stub_cmd(
  • Network accessline 366
    code, text = add(root / 'project-fetch', '--cues', hf_fetch / 'cues.json', '--file', root / 'renders' / 'fetch-b.mp4',                          '--render', stub_cmd('--browser', browser['chrome'], '--goto', 'https://example.com/lf-browser')
  • Network accessline 367
    '--render', stub_cmd('--browser', browser['chrome'], '--goto', 'https://example.com/lf-browser'))
  • Network accessline 488
    gsap = make_page(root / 'page-gsap', head='<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>\n')
  • Access to secretsline 520
    [Credential-related source omitted]

skills/legible-film/scripts/selftest_cases/render.py

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

skills/legible-film/scripts/selftest_cases/reviewfix.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/roles.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/runs.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/screen.py

  • Executable scriptline 1
    Executable file
  • Network accessline 405
    stale_path = root / 'screening/server.json'     stale_path.write_text(json.dumps({'pid': os.getpid(),                                      'url': 'http://127.0.0.1:1/screening/index.html?t=stale'}), encoding='utf-8')
  • Network accessline 406
    stale_path.write_text(json.dumps({'pid': os.getpid(),                                      'url': 'http://127.0.0.1:1/screening/index.html?t=stale'}), encoding='utf-8')     try:
  • Network accessline 407
    'url': 'http://127.0.0.1:1/screening/index.html?t=stale'}), encoding='utf-8')
  • Network accessline 748
    info = root / 'screening/server.json'     info.write_text(json.dumps({'pid': os.getpid(), 'port': 12345,                                 'url': 'http://127.0.0.1:12345/screening/index.html?t=stale-secret-XYZ'}),
  • Network accessline 749
    info.write_text(json.dumps({'pid': os.getpid(), 'port': 12345,                                 'url': 'http://127.0.0.1:12345/screening/index.html?t=stale-secret-XYZ'}),                     encoding='utf-8')
  • Network accessline 750
    'url': 'http://127.0.0.1:12345/screening/index.html?t=stale-secret-XYZ'}),
  • Network accessline 766
    connection.getresponse.return_value = response     with patch.object(screen, 'pid_alive', return_value=True), \             patch.object(screen.http.client, 'HTTPConnection', return_value=connection):
  • Network accessline 767
    with patch.object(screen, 'pid_alive', return_value=True),              patch.object(screen.http.client, 'HTTPConnection', return_value=connection):
  • Network accessline 768
    patch.object(screen.http.client, 'HTTPConnection', return_value=connection):
  • Network accessline 1080
    def request(path, auth=True, headers=None, body=None):             target = base + path + (('?t=' + token) if auth else '')             req = urllib.request.Request(target, data=json.dumps(body).encode() if body is not None else None,
  • Network accessline 1081
    target = base + path + (('?t=' + token) if auth else '')             req = urllib.request.Request(target, data=json.dumps(body).encode() if body is not None else None,                                          headers=headers or {})
  • Network accessline 1082
    req = urllib.request.Request(target, data=json.dumps(body).encode() if body is not None else None,
  • Network accessline 1083
    headers=headers or {})             try:                 with urllib.request.urlopen(req, timeout=5) as response:
  • Network accessline 1084
    try:                 with urllib.request.urlopen(req, timeout=5) as response:                     return response.status, response.read()
  • Network accessline 1085
    with urllib.request.urlopen(req, timeout=5) as response:
  • Network accessline 1087
    except urllib.error.HTTPError as error:                 return error.code, error.read()         with urllib.request.urlopen(base + '/screening/index.html?t=' + token, timeout=5) as response:
  • Network accessline 1088
    return error.code, error.read()         with urllib.request.urlopen(base + '/screening/index.html?t=' + token, timeout=5) as response:             cookie_header = response.headers.get('Set-Cookie', '')
  • Network accessline 1089
    with urllib.request.urlopen(base + '/screening/index.html?t=' + token, timeout=5) as response:
  • Network accessline 1099
    depth_code, depth_body = request('/api/notes', headers={'Content-Type': 'application/json'},                                          body={'text': 'x', 't': .5, 'nested': nested})         deep_request = urllib.request.Request(base + '/api/
  • Network accessline 1100
    body={'text': 'x', 't': .5, 'nested': nested})         deep_request = urllib.request.Request(base + '/api/notes?t=' + token,                                               data=b'{"x":' + b'[' * 3000 + b'0' + b']' * 3000 + b'}',
  • Network accessline 1101
    deep_request = urllib.request.Request(base + '/api/notes?t=' + token,
  • Network accessline 1103
    headers={'Content-Type': 'application/json'})         try:             urllib.request.urlopen(deep_request, timeout=5)
  • Network accessline 1104
    try:             urllib.request.urlopen(deep_request, timeout=5)             deep_code, deep_body = 200, b''
  • Network accessline 1105
    urllib.request.urlopen(deep_request, timeout=5)
  • Network accessline 1113
    record('screen: server rejects requests without token', code == 403, str(code))         try:             urllib.request.urlopen(base + '/screening/index.html', timeout=5)
  • Network accessline 1114
    try:             urllib.request.urlopen(base + '/screening/index.html', timeout=5)             no_cookie = False
  • Network accessline 1115
    urllib.request.urlopen(base + '/screening/index.html', timeout=5)
  • Network accessline 1145
    record('screen launch room: the room serves only its own font files', code == 200 and body == shipped                and other == 404, str((code, other)))         req = urllib.request.Request(base + '/api/approve?t=' + token, data=b'{}',
  • Network accessline 1146
    and other == 404, str((code, other)))         req = urllib.request.Request(base + '/api/approve?t=' + token, data=b'{}',                                      headers={'Origin': 'http://attacker.example', 'Content-Type': 'application/json'})
  • Network accessline 1147
    req = urllib.request.Request(base + '/api/approve?t=' + token, data=b'{}',
  • Network accessline 1148
    headers={'Origin': 'http://attacker.example', 'Content-Type': 'application/json'})         try:             urllib.request.urlopen(req, timeout=5)
  • Network accessline 1149
    try:             urllib.request.urlopen(req, timeout=5)             no_cookie = False
  • Network accessline 1150
    urllib.request.urlopen(req, timeout=5)
  • Network accessline 1242
    const context=await browser.newContext();const a=await context.newPage(),b=await context.newPage();  await a.goto(process.argv[4]);await b.goto(process.argv[5]);  for(const page of [a,b])assert.equal(await page.evaluate(()=>fetch('/api/stat
  • Network accessline 1243
    await a.goto(process.argv[4]);await b.goto(process.argv[5]);  for(const page of [a,b])assert.equal(await page.evaluate(()=>fetch('/api/status').then(r=>r.status)),200);  const error=new Promise(resolve=>b.once('dialog',async dialog=>{
  • Network accessline 1244
    for(const page of [a,b])assert.equal(await page.evaluate(()=>fetch('/api/status').then(r=>r.status)),200);
  • Network accessline 1251
    await a.evaluate(()=>poll());  assert((await a.locator('#connection').innerText()).includes('link has expired'));  assert.equal(await b.evaluate(()=>fetch('/api/status').then(r=>r.status)),200);
  • Network accessline 1252
    assert((await a.locator('#connection').innerText()).includes('link has expired'));  assert.equal(await b.evaluate(()=>fetch('/api/status').then(r=>r.status)),200);  await browser.close();
  • Network accessline 1253
    assert.equal(await b.evaluate(()=>fetch('/api/status').then(r=>r.status)),200);
  • Network accessline 1271
    host, port = '127.0.0.1', info['port']         for _ in range(4):             client = socket.create_connection((host, port), timeout=5)
  • Network accessline 1272
    for _ in range(4):             client = socket.create_connection((host, port), timeout=5)             client.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack('HH' if os.name == 'nt' else 'ii', 1, 0))
  • Network accessline 1273
    client = socket.create_connection((host, port), timeout=5)

skills/legible-film/scripts/selftest_cases/setup.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/sound.py

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

skills/legible-film/scripts/selftest_cases/sound_u4.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/spatial.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/stream.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/taste.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/tighten.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/tracefix.py

  • Executable scriptline 1
    Executable file
  • Access to secretsline 33
    [Credential-related source omitted]
  • Access to secretsline 54
    [Credential-related source omitted]
  • Access to secretsline 357
    [Credential-related source omitted]

skills/legible-film/scripts/selftest_cases/u5a.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/u5a_media.py

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/selftest_cases/u5b.py

  • Executable scriptline 1
    Executable file
  • Dangerous shell operationline 137
    def eval(self): return self
  • Access to secretsline 160
    [Credential-related source omitted]
  • Network accessline 196
    record('setup ear: public CPU installs and model downloads are explicit and unauthenticated',                len(calls) == 3 and '--isolated' in calls[0] and '--isolated' in calls[1]                and 'https://download.pytorch.org/whl/cpu'
  • Network accessline 197
    len(calls) == 3 and '--isolated' in calls[0] and '--isolated' in calls[1]                and 'https://download.pytorch.org/whl/cpu' in calls[0]                and 'https://pypi.org/simple' in calls[1]
  • Network accessline 198
    and 'https://download.pytorch.org/whl/cpu' in calls[0]
  • Network accessline 199
    and 'https://pypi.org/simple' in calls[1]
  • Access to secretsline 320
    [Credential-related source omitted]

skills/legible-film/scripts/setup.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 45
    SPATIAL_MODEL = 'modnet.onnx' SPATIAL_SHA256 = '07c308cf0fc7e6e8b2065a12ed7fc07e1de8febb7dc7839d7b7f15dd66584df9' SPATIAL_URL = ('https://huggingface.co/Xenova/modnet/resolve/'
  • Network accessline 46
    SPATIAL_SHA256 = '07c308cf0fc7e6e8b2065a12ed7fc07e1de8febb7dc7839d7b7f15dd66584df9' SPATIAL_URL = ('https://huggingface.co/Xenova/modnet/resolve/'                'fa2fa546052fba4c08921230a26cc69a333fca12/onnx/model.onnx')
  • Network accessline 47
    SPATIAL_URL = ('https://huggingface.co/Xenova/modnet/resolve/'
  • Dangerous shell operationline 67
    'Linux': ('sudo apt update && sudo apt install ffmpeg', 'sudo apt update && sudo apt install nodejs npm'),
  • Network accessline 68
    }     if system not in commands:         return 'Install a supported build for your operating system; see https://ffmpeg.org/download.html'
  • Network accessline 69
    if system not in commands:         return 'Install a supported build for your operating system; see https://ffmpeg.org/download.html'     command = commands[system][0 if kind == 'ffmpeg' else 1]
  • Network accessline 70
    return 'Install a supported build for your operating system; see https://ffmpeg.org/download.html'
  • Access to secretsline 80
    [Credential-related source omitted]
  • Access to secretsline 81
    [Credential-related source omitted]
  • Dangerous shell operationline 113
    '(sudo apt install python3-venv), then run: ' + fix)
  • Dangerous shell operationline 128
    'python3-venv (sudo apt install python3-venv), then run this command again.') from error
  • Dangerous shell operationline 131
    '(sudo apt install python3-venv), then run this command again.')
  • Access to secretsline 137
    [Credential-related source omitted]
  • Access to secretsline 139
    [Credential-related source omitted]
  • Network accessline 147
    return ('Ubuntu 22.04 commonly supplies FFmpeg 4.4; Debian 11 supplies 4.3. '                 'Upgrade to a release with FFmpeg 5.1 or later, or install a current build from '                 'https://ffmpeg.org/download.html and put it fir
  • Network accessline 148
    'Upgrade to a release with FFmpeg 5.1 or later, or install a current build from '                 'https://ffmpeg.org/download.html and put it first on PATH.')     if system == 'Darwin':
  • Network accessline 149
    'https://ffmpeg.org/download.html and put it first on PATH.')
  • Network accessline 153
    if system == 'Windows':         return command_fix('ffmpeg', system) + '\n    FFmpeg 5.1 or later is required.'     return 'Install FFmpeg 5.1 or later from https://ffmpeg.org/download.html.'
  • Network accessline 155
    return 'Install FFmpeg 5.1 or later from https://ffmpeg.org/download.html.'
  • Access to secretsline 221
    [Credential-related source omitted]
  • Access to secretsline 222
    [Credential-related source omitted]
  • Network accessline 304
    url = 'https://api.github.com/repos/JamesDimachkie/legible-film/releases/latest'     request = urllib.request.Request(url, headers={'Accept': 'application/vnd.github+json',
  • Network accessline 305
    request = urllib.request.Request(url, headers={'Accept': 'application/vnd.github+json',
  • Network accessline 306
    'User-Agent': 'legible-film-setup'})     try:         with urllib.request.urlopen(request, timeout=4) as response:
  • Network accessline 307
    try:         with urllib.request.urlopen(request, timeout=4) as response:             release = json.load(response)
  • Network accessline 308
    with urllib.request.urlopen(request, timeout=4) as response:
  • Access to secretsline 394
    [Credential-related source omitted]
  • Access to secretsline 395
    [Credential-related source omitted]
  • Network accessline 469
    newer, detail = latest_release(version)         add('Skill', 'limited' if newer is None or newer else 'ready', 'Updates', detail,             'Review the latest release at https://github.com/JamesDimachkie/legible-film/releases/latest')
  • Network accessline 470
    add('Skill', 'limited' if newer is None or newer else 'ready', 'Updates', detail,             'Review the latest release at https://github.com/JamesDimachkie/legible-film/releases/latest')     return groups
  • Network accessline 471
    'Review the latest release at https://github.com/JamesDimachkie/legible-film/releases/latest')
  • Network accessline 549
    path = Path(temporary.name)     try:         urllib.request.urlretrieve(SPATIAL_URL, str(path))
  • Network accessline 550
    try:         urllib.request.urlretrieve(SPATIAL_URL, str(path))         if project.file_sha256(path) != SPATIAL_SHA256:
  • Network accessline 551
    urllib.request.urlretrieve(SPATIAL_URL, str(path))
  • Dangerous shell operationline 579
    libraries = (f" On Linux it also needs system libraries: sudo {npx} --prefix {package_dir} playwright-core "
  • Network accessline 607
    python = str(python or sys.executable)     subprocess.run([python, '-I', '-m', 'pip', '--isolated', 'install', 'torch', '--index-url',                     'https://download.pytorch.org/whl/cpu'], check=True, stdout=sys.stderr)
  • Network accessline 608
    subprocess.run([python, '-I', '-m', 'pip', '--isolated', 'install', 'torch', '--index-url',                     'https://download.pytorch.org/whl/cpu'], check=True, stdout=sys.stderr)     subprocess.run([python, '-I', '-m', 'pip', '--isolat
  • Network accessline 609
    'https://download.pytorch.org/whl/cpu'], check=True, stdout=sys.stderr)
  • Network accessline 610
    subprocess.run([python, '-I', '-m', 'pip', '--isolated', 'install', 'transformers<5', 'huggingface-hub',                     'safetensors', 'librosa>=0.10', 'soundfile>=0.12', 'soxr>=0.3',                     '--index-url', 'https://pypi.or
  • Network accessline 611
    'safetensors', 'librosa>=0.10', 'soundfile>=0.12', 'soxr>=0.3',                     '--index-url', 'https://pypi.org/simple'],                    check=True, stdout=sys.stderr)
  • Network accessline 612
    '--index-url', 'https://pypi.org/simple'],

skills/legible-film/scripts/sound_check.py

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

skills/legible-film/scripts/sound_io.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 47
    [Credential-related source omitted]

skills/legible-film/scripts/sound_library.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 27
    Search uses GET https://api.openverse.org/v1/audio/ with q, license, page_size,
  • Network accessline 31
    in the user's cache (or --rate-state). HTTP 429 stops with its Retry-After reason; no retries. See Openverse's API documentation before use: https://api.openverse.org/v1/ and
  • Network accessline 32
    Retry-After reason; no retries. See Openverse's API documentation before use: https://api.openverse.org/v1/ and https://docs.openverse.org/api/reference/authentication_and_throttling.html
  • Network accessline 33
    https://api.openverse.org/v1/ and
  • Network accessline 34
    https://docs.openverse.org/api/reference/authentication_and_throttling.html
  • Access to secretsline 228
    [Credential-related source omitted]
  • Access to secretsline 234
    [Credential-related source omitted]
  • Access to secretsline 257
    [Credential-related source omitted]
  • Network accessline 588
    def fetch(url, limit):
  • Network accessline 589
    public_url(url)     request = urllib.request.Request(url, headers={'User-Agent': 'LegibleFilm/1.2 sound-library (no authentication)'})     with urllib.request.build_opener(PublicRedirect()).open(request, timeout=FETCH_TIMEOUT) as response:
  • Network accessline 590
    request = urllib.request.Request(url, headers={'User-Agent': 'LegibleFilm/1.2 sound-library (no authentication)'})
  • Network accessline 636
    'page_size': a.max, 'duration': 'short'})     try:         payload = json.loads(fetch('https://api.openverse.org/v1/audio/?' + query, 4 * 1024 * 1024))
  • Network accessline 637
    try:         payload = json.loads(fetch('https://api.openverse.org/v1/audio/?' + query, 4 * 1024 * 1024))     except (OSError, ValueError) as exc:
  • Network accessline 638
    payload = json.loads(fetch('https://api.openverse.org/v1/audio/?' + query, 4 * 1024 * 1024))
  • Network accessline 657
    raise ValueError('not a small effect (duration must be <=20 seconds)')             url = item.get('url')             data = fetch(url, 16 * 1024 * 1024)
  • Network accessline 658
    url = item.get('url')             data = fetch(url, 16 * 1024 * 1024)             identity = hashlib.sha256(str(item.get('id', url)).encode()).hexdigest()[:16]
  • Network accessline 659
    data = fetch(url, 16 * 1024 * 1024)
  • Network accessline 673
    path = folder / ('audio.' + extension)                 path.write_bytes(data)             licence_url = ('https://creativecommons.org/publicdomain/zero/1.0/' if code == 'cc0' else
  • Network accessline 674
    path.write_bytes(data)             licence_url = ('https://creativecommons.org/publicdomain/zero/1.0/' if code == 'cc0' else                            f'https://creativecommons.org/licenses/by/{version}/')
  • Network accessline 675
    licence_url = ('https://creativecommons.org/publicdomain/zero/1.0/' if code == 'cc0' else
  • Network accessline 676
    f'https://creativecommons.org/licenses/by/{version}/')

skills/legible-film/scripts/spatial.py

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

skills/legible-film/scripts/spot_cues.py

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

skills/legible-film/scripts/strip.py

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

skills/legible-film/scripts/sync_check.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 67
    [Credential-related source omitted]

skills/legible-film/scripts/taste.py

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

skills/legible-film/scripts/tempo_map.py

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

skills/legible-film/scripts/testpages/identity/.hyperframesignore

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/testpages/identity/assets/logo.svg

  • Network accessline 1
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10"><circle cx="5" cy="5" r="4" fill="#3080c0"/></svg>

skills/legible-film/scripts/testpages/identity/film.js

  • Executable scriptline 1
    Executable file

skills/legible-film/scripts/testpages/labels/assets/fonts/Inter-LICENSE.txt

  • Network accessline 1
    Copyright 2016 The Inter Project Authors (https://github.com/rsms/inter) Inter-Italic[opsz,wght].ttf: Copyright 2016 The Inter Project Authors (https://github.com/rsms/inter)
  • Network accessline 3
    This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
  • Network accessline 5
    http://scripts.sil.org/OFL

skills/legible-film/scripts/testpages/labels/index.html

  • Network accessline 19
    #inner { position: absolute; inset: 0; } </style> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
  • Network accessline 20
    </style> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> </head>
  • Network accessline 21
    <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>

skills/legible-film/scripts/tighten.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 1036
    [Credential-related source omitted]
  • Access to secretsline 1037
    [Credential-related source omitted]

skills/legible-film/scripts/track.py

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

skills/legible-film/scripts/transcribe.py

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

skills/legible-film/scripts/transcript_cut.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 42
    [Credential-related source omitted]

skills/legible-film/scripts/voice_clean.py

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

skills/legible-film/scripts/with_lock.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 75
    [Credential-related source omitted]
  • Access to secretsline 86
    [Credential-related source omitted]
  • Access to secretsline 112
    [Credential-related source omitted]
  • Access to secretsline 113
    [Credential-related source omitted]
  • Access to secretsline 142
    [Credential-related source omitted]
  • Access to secretsline 144
    [Credential-related source omitted]

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.

Declared and executed: 3 facts
Signal confidence: 497 facts

and 447 more

Only the first 500 facts are listed.

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeManifest .claude-plugin/marketplace.json.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md skills/legible-film/SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md skills/legible-film/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md skills/legible-film/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md skills/legible-film/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md skills/legible-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.