Not in the top 1,000 by GitHub stars
Neelshah1810/Claude-Video-Skills
11 Claude skills that make professional motion-graphics videos (launch films, explainers, social ads, data stories) as HTML + MP4. Works with Claude and Claude Code.
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
brand-film/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
d1645496774c → d1645496774c
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → d1645496774c
No earlier version was observed for comparison.
data-story/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
d1645496774c → d1645496774c
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → d1645496774c
No earlier version was observed for comparison.
event-promo/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
d1645496774c → d1645496774c
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → d1645496774c
No earlier version was observed for comparison.
explainer-video/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
d1645496774c → d1645496774c
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → d1645496774c
No earlier version was observed for comparison.
feature-update/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
d1645496774c → d1645496774c
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → d1645496774c
No earlier version was observed for comparison.
launch-film/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
d1645496774c → d1645496774c
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → d1645496774c
No earlier version was observed for comparison.
motion-film/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
d1645496774c → d1645496774c
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → d1645496774c
No earlier version was observed for comparison.
product-walkthrough/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
d1645496774c → d1645496774c
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → d1645496774c
No earlier version was observed for comparison.
social-ad/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
d1645496774c → d1645496774c
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → d1645496774c
No earlier version was observed for comparison.
testimonial-video/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
d1645496774c → d1645496774c
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → d1645496774c
No earlier version was observed for comparison.
tutorial-video/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
d1645496774c → d1645496774c
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → d1645496774c
No earlier version was observed for comparison.
Heat
1.7- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
- brand-film
brand-film - data-story
data-story - event-promo
event-promo - explainer-video
explainer-video - feature-update
feature-update - launch-film
launch-film - motion-film
motion-film - product-walkthrough
product-walkthrough - social-ad
social-ad - testimonial-video
testimonial-video - tutorial-video
tutorial-video
How it works
brand-film
When your agent uses it
Create a cinematic BRAND FILM as one self-contained HTML file: a manifesto told in few, beautiful words, colour-field or photo panels with slow Ken Burns moves, values that draw themselves, and a logo sting with letter stagger and tracking settle, carried by a synthesized score (pads, bells, long reverb) or synced to a voiceover. Verified frame by frame and exportable to MP4. Use for brand manifestos, origin and mission stories, values and culture films, rebrand reveals, anniversaries, recruitment films, idents and 5-second logo stings, for any company, studio, product or cause, in any style from premium to playful. Accepts creative dials --creativity, --typography, --animation and --motion (low, medium or high; medium by default).
What it loads into context
Frontmatter
187 tokensAlways available to the agent
SKILL.md
49,378 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Your role: the senior creative team
- 0. Creative controls (read the request for these first)
- 1. Output contract (always)
- 2. Gather inputs first (ask once, briefly; default the rest and say what you assumed)
- 3. Research with web search (before designing)
- 4. The brand-film playbook
- 5. Style presets (pick one, or let the brand override)
- 6. Design system (decide it, then never improvise)
- 7. The starter film (complete and working; copy it, then build on it)
- 8. Brand techniques
- 9. Sound: the score engine
- 10. Toolkit: verify, analyse, embed, export
- 11. Verify (mandatory before you say "done")
- 12. Export, collisions and pitfalls
- 13. Hand-off message
- 14. Appendix: embedded files (the starter film and the toolkit)
Scripts executed separately
scripts/analyze.pyscripts/fonts.pyscripts/inline.pyscripts/verify.pyscripts/vo_timing.py
Files
SKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesSKILL.mdcore157,396 bytesexamples/morrow-manifesto.htmlasset272,149 bytesexamples/morrow-manifesto.jpgasset91,921 bytesexamples/morrow-manifesto.mp4asset2,298,820 bytesscripts/analyze.pyruns7,755 bytesscripts/fonts.pyruns5,216 bytesscripts/inline.pyruns5,004 bytesscripts/verify.pyruns20,712 bytesscripts/vo_timing.pyruns5,017 bytestemplates/starter.htmlasset45,273 bytes
Read SKILL.md
# Brand films, manifestos and logo stings
You make people feel what a brand stands for in under a minute: few words, lots of space, and every move slow and certain. A brand film sells a belief, not a feature, so the type, the pacing and the music do most of the work. Everything you need is in this skill's folder: the playbook, the style presets, a complete working starter film, the techniques, the score engine and the verification toolkit. This one file holds everything: the playbook, plus the starter film and the toolkit scripts embedded in the appendix (section 14), so it works on its own. Installed as a folder, the same files also sit in `templates/` and `scripts/`, and `examples/` holds a finished film (HTML, MP4 and poster) that shows the quality bar.
## Your role: the senior creative team
Work as the senior in-house team that makes product and brand films at companies like Apple, Google, Microsoft and Adobe, in one person:
- a **creative director** who owns the idea;
- a **senior motion designer** who owns the design, the motion graphics and the transitions;
- a **film editor** who owns rhythm and story;
- a **typographer** who owns every letter on screen;
- a **sound designer** who owns the score.
Hold their bar, not their look: never copy another company's brand identity or visual style. Typefaces released under open licences (IBM Plex, for example) are fine to use as type.View the complete source on GitHubdata-story
When your agent uses it
Create a compelling DATA STORY VIDEO as one self-contained HTML file: big counters, bar charts that grow and annotate themselves, line charts that draw with a moving marker, donuts, comparisons and a closing line, all driven by real data, with a synthesized score that marks every number. Verified frame by frame and exportable to MP4. Use for year-in-review and "wrapped" videos, results and impact reports, investor and board updates, KPI recaps, survey findings, case-study numbers and any "show these metrics as a video" request, for any company, team or project, in any style. Accepts creative dials --creativity, --typography, --animation and --motion (low, medium or high; medium by default).
What it loads into context
Frontmatter
174 tokensAlways available to the agent
SKILL.md
50,476 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Your role: the senior creative team
- 0. Creative controls (read the request for these first)
- 1. Output contract (always)
- 2. Gather inputs first (ask once, briefly; default the rest and say what you assumed)
- 3. Research with web search (before designing)
- 4. The data-story playbook
- 5. Style presets (pick one, or let the brand override)
- 6. Design system (decide it, then never improvise)
- 7. The starter film (complete and working; copy it, then build on it)
- 8. Chart techniques
- 9. Sound: the score engine
- 10. Toolkit: verify, analyse, embed, export
- 11. Verify (mandatory before you say "done")
- 12. Export, collisions and pitfalls
- 13. Hand-off message
- 14. Appendix: embedded files (the starter film and the toolkit)
Scripts executed separately
scripts/analyze.pyscripts/fonts.pyscripts/inline.pyscripts/verify.pyscripts/vo_timing.py
Files
SKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesSKILL.mdcore159,390 bytesexamples/halden-bikes-2025.htmlasset594,677 bytesexamples/halden-bikes-2025.jpgasset99,625 bytesexamples/halden-bikes-2025.mp4asset2,671,158 bytesscripts/analyze.pyruns7,755 bytesscripts/fonts.pyruns5,216 bytesscripts/inline.pyruns5,004 bytesscripts/verify.pyruns20,712 bytesscripts/vo_timing.pyruns5,017 bytestemplates/starter.htmlasset49,325 bytes
Read SKILL.md
# Data stories, reports and year-in-review videos
You make numbers feel like a story: one number per moment, each one given a reason to matter, charts that build in the order you read them, and an ending that thanks or asks. **The data must be real**; the motion only makes it legible. Everything you need is in this skill's folder: the playbook, the style presets, a complete working starter film, the chart techniques, the score engine and the verification toolkit. This one file holds everything: the playbook, plus the starter film and the toolkit scripts embedded in the appendix (section 14), so it works on its own. Installed as a folder, the same files also sit in `templates/` and `scripts/`, and `examples/` holds a finished film (HTML, MP4 and poster) that shows the quality bar.
## Your role: the senior creative team
Work as the senior in-house team that makes product and brand films at companies like Apple, Google, Microsoft and Adobe, in one person:
- a **creative director** who owns the idea;
- a **senior motion designer** who owns the design, the motion graphics and the transitions;
- a **film editor** who owns rhythm and story;
- a **typographer** who owns every letter on screen;
- a **sound designer** who owns the score.
Hold their bar, not their look: never copy another company's brand identity or visual style. Typefaces released under open licences (IBM Plex, for example) are fine to use as type.View the complete source on GitHubevent-promo
When your agent uses it
Create an energetic EVENT PROMO VIDEO as one self-contained HTML file: the event name popping in, date, time and place, speaker cards, the agenda, a 3-2-1 countdown and a "Save your seat" call to action with confetti, cut on the beat of a synthesized score. Verified frame by frame and exportable to MP4. Use for conferences, meetups, webinars, workshops, launches and launch parties, festivals, concerts, sales and open days, store openings, school and community events, "save the date" and "starts in 3 days" countdown posts, for any organizer or brand, in any style from playful to corporate. Accepts creative dials --creativity, --typography, --animation and --motion (low, medium or high; medium by default).
What it loads into context
Frontmatter
190 tokensAlways available to the agent
SKILL.md
51,128 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Your role: the senior creative team
- 0. Creative controls (read the request for these first)
- 1. Output contract (always)
- 2. Gather inputs first (ask once, briefly; default the rest and say what you assumed)
- 3. Research with web search (before designing)
- 4. The event-promo playbook
- 5. Style presets (pick one, or let the brand override)
- 6. Design system (decide it, then never improvise)
- 7. The starter film (complete and working; copy it, then build on it)
- 8. Event techniques
- 9. Sound: the score engine
- 10. Toolkit: verify, analyse, embed, export
- 11. Verify (mandatory before you say "done")
- 12. Export, collisions and pitfalls
- 13. Hand-off message
- 14. Appendix: embedded files (the starter film and the toolkit)
Scripts executed separately
scripts/analyze.pyscripts/fonts.pyscripts/inline.pyscripts/verify.pyscripts/vo_timing.py
Files
SKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesSKILL.mdcore160,958 bytesexamples/fieldwork-27-promo.htmlasset245,056 bytesexamples/fieldwork-27-promo.jpgasset152,557 bytesexamples/fieldwork-27-promo.mp4asset7,006,715 bytesscripts/analyze.pyruns7,755 bytesscripts/fonts.pyruns5,216 bytesscripts/inline.pyruns5,004 bytesscripts/verify.pyruns20,712 bytesscripts/vo_timing.pyruns5,017 bytestemplates/starter.htmlasset49,861 bytes
Read SKILL.md
# Event promos, invitations and countdowns
You make people put a date in their calendar: what it is, when and where, why it is worth it, and how to get in, all in about 20 seconds. An event promo is a poster that moves, so the facts must be unmissable and the energy must match the event. Everything you need is in this skill's folder: the playbook, the style presets, a complete working starter film, the techniques, the score engine and the verification toolkit. This one file holds everything: the playbook, plus the starter film and the toolkit scripts embedded in the appendix (section 14), so it works on its own. Installed as a folder, the same files also sit in `templates/` and `scripts/`, and `examples/` holds a finished film (HTML, MP4 and poster) that shows the quality bar.
## Your role: the senior creative team
Work as the senior in-house team that makes product and brand films at companies like Apple, Google, Microsoft and Adobe, in one person:
- a **creative director** who owns the idea;
- a **senior motion designer** who owns the design, the motion graphics and the transitions;
- a **film editor** who owns rhythm and story;
- a **typographer** who owns every letter on screen;
- a **sound designer** who owns the score.
Hold their bar, not their look: never copy another company's brand identity or visual style. Typefaces released under open licences (IBM Plex, for example) are fine to use as type.View the complete source on GitHubexplainer-video
When your agent uses it
Create a clear, memorable EXPLAINER VIDEO as one self-contained HTML file: problem → how it works → proof → next step, told with kinetic typography, animated diagrams, before/after comparisons and product moments, synced to a voiceover (with captions) or carried by type and a synthesized score. Verified frame by frame and exportable to MP4. Use for "explain how it works", "what is X", feature explainers, one-video-per-feature series, concept and process explainers, service explainers and animated diagrams, for any product, service, idea or process, in any style. Accepts creative dials --creativity, --typography, --animation and --motion (low, medium or high; medium by default).
What it loads into context
Frontmatter
177 tokensAlways available to the agent
SKILL.md
50,413 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Your role: the senior creative team
- 0. Creative controls (read the request for these first)
- 1. Output contract (always)
- 2. Gather inputs first (ask once, briefly; default the rest and say what you assumed)
- 3. Research with web search (before designing)
- 4. The explainer playbook
- 5. Style presets (pick one, or let the brand override)
- 6. Design system (decide it, then never improvise)
- 7. The starter film (complete and working; copy it, then build on it)
- 8. Explainer techniques
- 9. Sound: the score engine
- 10. Toolkit: verify, analyse, embed, export
- 11. Verify (mandatory before you say "done")
- 12. Export, collisions and pitfalls
- 13. Hand-off message
- 14. Appendix: embedded files (the starter film and the toolkit)
Scripts executed separately
scripts/analyze.pyscripts/fonts.pyscripts/inline.pyscripts/verify.pyscripts/vo_timing.py
Files
SKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesSKILL.mdcore159,529 bytesexamples/heat-pump-explainer.htmlasset245,855 bytesexamples/heat-pump-explainer.jpgasset145,934 bytesexamples/heat-pump-explainer.mp4asset4,780,488 bytesscripts/analyze.pyruns7,755 bytesscripts/fonts.pyruns5,216 bytesscripts/inline.pyruns5,004 bytesscripts/verify.pyruns20,712 bytesscripts/vo_timing.pyruns5,017 bytestemplates/starter.htmlasset48,456 bytes
Read SKILL.md
# Explainer videos
You turn something complicated into something obvious in about a minute. A great explainer has one question it answers, three ideas at most, and a picture for every sentence. Everything you need is in this skill's folder: the playbook, the style presets, a complete working starter film, the techniques, the score engine and the verification toolkit. This one file holds everything: the playbook, plus the starter film and the toolkit scripts embedded in the appendix (section 14), so it works on its own. Installed as a folder, the same files also sit in `templates/` and `scripts/`, and `examples/` holds a finished film (HTML, MP4 and poster) that shows the quality bar.
## Your role: the senior creative team
Work as the senior in-house team that makes product and brand films at companies like Apple, Google, Microsoft and Adobe, in one person:
- a **creative director** who owns the idea;
- a **senior motion designer** who owns the design, the motion graphics and the transitions;
- a **film editor** who owns rhythm and story;
- a **typographer** who owns every letter on screen;
- a **sound designer** who owns the score.
Hold their bar, not their look: never copy another company's brand identity or visual style. Typefaces released under open licences (IBM Plex, for example) are fine to use as type.View the complete source on GitHubfeature-update
When your agent uses it
Create a crisp FEATURE UPDATE / WHAT'S NEW / RELEASE NOTES VIDEO as one self-contained HTML file: a release header, each new feature with a NEW badge, a one-line benefit and a live UI demo (toggles, typing, selections, before/after), a changelog roll-up and an update CTA, with a synthesized score. Verified frame by frame and exportable to MP4. Use for monthly updates, changelog videos, "we shipped" roundups, version release videos, product newsletters and in-app announcement clips, for any software, app, platform or hardware product, in any style. Accepts creative dials --creativity, --typography, --animation and --motion (low, medium or high; medium by default).
What it loads into context
Frontmatter
174 tokensAlways available to the agent
SKILL.md
50,323 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Your role: the senior creative team
- 0. Creative controls (read the request for these first)
- 1. Output contract (always)
- 2. Gather inputs first (ask once, briefly; default the rest and say what you assumed)
- 3. Research with web search (before designing)
- 4. The feature-update playbook
- 5. Style presets (pick one, or let the brand override)
- 6. Design system (decide it, then never improvise)
- 7. The starter film (complete and working; copy it, then build on it)
- 8. Update techniques
- 9. Sound: the score engine
- 10. Toolkit: verify, analyse, embed, export
- 11. Verify (mandatory before you say "done")
- 12. Export, collisions and pitfalls
- 13. Hand-off message
- 14. Appendix: embedded files (the starter film and the toolkit)
Scripts executed separately
scripts/analyze.pyscripts/fonts.pyscripts/inline.pyscripts/verify.pyscripts/vo_timing.py
Files
SKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesSKILL.mdcore158,889 bytesexamples/quarry-3-2-whats-new.htmlasset289,387 bytesexamples/quarry-3-2-whats-new.jpgasset129,951 bytesexamples/quarry-3-2-whats-new.mp4asset2,732,547 bytesscripts/analyze.pyruns7,755 bytesscripts/fonts.pyruns5,216 bytesscripts/inline.pyruns5,004 bytesscripts/verify.pyruns20,712 bytesscripts/vo_timing.pyruns5,017 bytestemplates/starter.htmlasset50,218 bytes
Read SKILL.md
# Feature updates and release videos
You turn a release into something people want to watch: every feature gets the same clear slot, shows itself working in two seconds, and the whole thing ends with the small fixes rolling past and one action. Everything you need is in this skill's folder: the playbook, the style presets, a complete working starter film, the techniques, the score engine and the verification toolkit. This one file holds everything: the playbook, plus the starter film and the toolkit scripts embedded in the appendix (section 14), so it works on its own. Installed as a folder, the same files also sit in `templates/` and `scripts/`, and `examples/` holds a finished film (HTML, MP4 and poster) that shows the quality bar.
## Your role: the senior creative team
Work as the senior in-house team that makes product and brand films at companies like Apple, Google, Microsoft and Adobe, in one person:
- a **creative director** who owns the idea;
- a **senior motion designer** who owns the design, the motion graphics and the transitions;
- a **film editor** who owns rhythm and story;
- a **typographer** who owns every letter on screen;
- a **sound designer** who owns the score.
Hold their bar, not their look: never copy another company's brand identity or visual style. Typefaces released under open licences (IBM Plex, for example) are fine to use as type.View the complete source on GitHublaunch-film
When your agent uses it
Create a cinematic product or feature LAUNCH FILM as one self-contained HTML video (kinetic typography, motion graphics, rebuilt product UI, a synthesized score that drops on the reveal), verified frame by frame and exportable to MP4. Use for launch videos, product announcements, "we just shipped" films, hero videos for a launch page, Product Hunt or keynote openers, and teaser trailers, for any brand, product, app, service or idea, in any style (professional, clean, bold, fun, premium, tech, warm, editorial), even if the user only gives a product name, a feature list, screenshots or a brand guide. Accepts creative dials --creativity, --typography, --animation and --motion (low, medium or high; medium by default).
What it loads into context
Frontmatter
185 tokensAlways available to the agent
SKILL.md
53,154 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Your role: the senior creative team
- 0. Creative controls (read the request for these first)
- 1. Output contract (always)
- 2. Gather inputs first (ask once, briefly; default the rest and say what you assumed)
- 3. Research with web search (before designing)
- 4. The launch playbook
- 5. Style presets (pick one, or let the brand override)
- 6. Design system (decide it, then never improvise)
- 7. The starter film (complete and working; copy it, then build on it)
- 8. Launch techniques
- 9. Sound: the score engine
- 10. Toolkit: verify, analyse, embed, export
- 11. Verify (mandatory before you say "done")
- 12. Export, collisions and pitfalls
- 13. Hand-off message
- 14. Appendix: embedded files (the starter film and the toolkit)
Scripts executed separately
scripts/analyze.pyscripts/fonts.pyscripts/inline.pyscripts/verify.pyscripts/vo_timing.py
Files
SKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesSKILL.mdcore167,968 bytesexamples/tally-launch.htmlasset149,175 bytesexamples/tally-launch.jpgasset62,138 bytesexamples/tally-launch.mp4asset4,548,535 bytesscripts/analyze.pyruns7,755 bytesscripts/fonts.pyruns5,216 bytesscripts/inline.pyruns5,004 bytesscripts/verify.pyruns20,712 bytesscripts/vo_timing.pyruns5,017 bytestemplates/starter.htmlasset54,893 bytes
Read SKILL.md
# Launch films
You direct, design, edit and score a launch film the way a top motion studio would, and the edit is code. A launch film has one job: make the audience feel the problem, reveal the product as the answer, prove it in seconds, and leave them with one line and one action. Everything you need is in this skill's folder: the playbook, the style presets, a complete working starter film, the techniques, the score engine and the verification toolkit. This one file holds everything: the playbook, plus the starter film and the toolkit scripts embedded in the appendix (section 14), so it works on its own. Installed as a folder, the same files also sit in `templates/` and `scripts/`, and `examples/` holds a finished film (HTML, MP4 and poster) that shows the quality bar.
## Your role: the senior creative team
Work as the senior in-house team that makes product and brand films at companies like Apple, Google, Microsoft and Adobe, in one person:
- a **creative director** who owns the idea;
- a **senior motion designer** who owns the design, the motion graphics and the transitions;
- a **film editor** who owns rhythm and story;
- a **typographer** who owns every letter on screen;
- a **sound designer** who owns the score.
Hold their bar, not their look: never copy another company's brand identity or visual style. Typefaces released under open licences (IBM Plex, for example) are fine to use as type.View the complete source on GitHubmotion-film
When your agent uses it
Create professional launch films, product explainer videos, app walkthroughs and kinetic-typography motion graphics as ONE self-contained HTML file (1920×1080 timeline, every frame a pure function of time), with a synthesized Web Audio score or a synced voiceover, verified frame-by-frame in headless Chrome and exportable to MP4. Use whenever someone asks for a launch video, promo, product demo or walkthrough video, explainer, animated ad, kinetic typography, motion graphics, title sequence, social clip, or "make a video" without a video editor, even if they only share a script, screenshots, a brand guide, a voiceover MP3 or reference videos. Accepts creative dials --creativity, --typography, --animation and --motion (low, medium or high; medium by default).
What it loads into context
Frontmatter
190 tokensAlways available to the agent
SKILL.md
48,967 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Your role: the senior creative team
- 0. Creative controls (read the request for these first)
- 1. Output contract (always)
- 2. Gather inputs first (ask once, briefly; use defaults for the rest)
- 3. Research with web search (before designing)
- 4. Story, script and beat sheet
- 5. Design system (decide before coding)
- 6. Engine (start from this template)
- 7. Sound: a synthesized score on the film clock
- 8. Verify everything (mandatory before you say "done")
- 9. Export to MP4 (when asked)
- 10. Hard-won pitfalls
- 11. Hand-off message
- 12. Appendix: embedded files (the starter film and the toolkit)
Scripts executed separately
scripts/analyze.pyscripts/fonts.pyscripts/inline.pyscripts/verify.pyscripts/vo_timing.py
Files
SKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesSKILL.mdcore156,803 bytesexamples/low-tide-titles.htmlasset493,333 bytesexamples/low-tide-titles.jpgasset133,596 bytesexamples/low-tide-titles.mp4asset2,914,462 bytesscripts/analyze.pyruns7,755 bytesscripts/fonts.pyruns5,216 bytesscripts/inline.pyruns5,004 bytesscripts/verify.pyruns20,712 bytesscripts/vo_timing.pyruns5,017 bytestemplates/starter.htmlasset54,893 bytes
Read SKILL.md
# Motion films
You make videos the way a motion designer and an editor would, but the "edit" is code. One HTML file holds the stage, the fonts, the product UI, the animation and the sound. It plays in any modern browser, seeks to any frame, and exports to MP4. This one file holds everything: the playbook, plus the engine (a complete starter film) and the toolkit scripts embedded in the appendix (section 12), so it works on its own. Installed as a folder, the same files also sit in `templates/` and `scripts/`, and `examples/` holds a finished film (HTML, MP4 and poster) that shows the quality bar.
## Your role: the senior creative team
Work as the senior in-house team that makes product and brand films at companies like Apple, Google, Microsoft and Adobe, in one person:
- a **creative director** who owns the idea;
- a **senior motion designer** who owns the design, the motion graphics and the transitions;
- a **film editor** who owns rhythm and story;
- a **typographer** who owns every letter on screen;
- a **sound designer** who owns the score.
Hold their bar, not their look: never copy another company's brand identity or visual style. Typefaces released under open licences (IBM Plex, for example) are fine to use as type.View the complete source on GitHubproduct-walkthrough
When your agent uses it
Create a polished PRODUCT WALKTHROUGH or app tour video as one self-contained HTML file: the real UI rebuilt in HTML/CSS inside a browser frame, a smooth zoom camera, a cursor that moves and clicks, page changes, loading states, spotlights, callouts and chapter cards, with a synced voiceover or a synthesized score. Verified frame by frame and exportable to MP4. Use for product tours, demo videos, "show every screen" overviews, onboarding tours, sales demos and walkthrough series, for any SaaS, app, dashboard, website or tool, in any style, even if the user only shares screenshots and a feature list. Accepts creative dials --creativity, --typography, --animation and --motion (low, medium or high; medium by default).
What it loads into context
Frontmatter
187 tokensAlways available to the agent
SKILL.md
52,867 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Your role: the senior creative team
- 0. Creative controls (read the request for these first)
- 1. Output contract (always)
- 2. Gather inputs first (ask once, briefly; default the rest and say what you assumed)
- 3. Research with web search (before designing)
- 4. The walkthrough playbook
- 5. Style presets (pick one, or let the brand override)
- 6. Design system (decide it, then never improvise)
- 7. The starter film (complete and working; copy it, then build on it)
- 8. Walkthrough techniques
- 9. Sound: the score engine
- 10. Toolkit: verify, analyse, embed, export
- 11. Verify (mandatory before you say "done")
- 12. Export, collisions and pitfalls
- 13. Hand-off message
- 14. Appendix: embedded files (the starter film and the toolkit)
Scripts executed separately
scripts/analyze.pyscripts/fonts.pyscripts/inline.pyscripts/verify.pyscripts/vo_timing.py
Files
SKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesSKILL.mdcore167,189 bytesexamples/harbor-walkthrough.htmlasset320,250 bytesexamples/harbor-walkthrough.jpgasset212,833 bytesexamples/harbor-walkthrough.mp4asset9,033,153 bytesscripts/analyze.pyruns7,755 bytesscripts/fonts.pyruns5,216 bytesscripts/inline.pyruns5,004 bytesscripts/verify.pyruns20,712 bytesscripts/vo_timing.pyruns5,017 bytestemplates/starter.htmlasset55,576 bytes
Read SKILL.md
# Product walkthroughs
You make a walkthrough that feels like the best screen recording ever made: perfectly paced, never lost, every click deliberate. The trick is that nothing is recorded. The product UI is rebuilt in HTML/CSS at native size and filmed with a virtual camera, so every move is exact and repeatable. Everything you need is in this skill's folder: the playbook, the style presets, a complete working starter film, the techniques, the score engine and the verification toolkit. This one file holds everything: the playbook, plus the starter film and the toolkit scripts embedded in the appendix (section 14), so it works on its own. Installed as a folder, the same files also sit in `templates/` and `scripts/`, and `examples/` holds a finished film (HTML, MP4 and poster) that shows the quality bar.
## Your role: the senior creative team
Work as the senior in-house team that makes product and brand films at companies like Apple, Google, Microsoft and Adobe, in one person:
- a **creative director** who owns the idea;
- a **senior motion designer** who owns the design, the motion graphics and the transitions;
- a **film editor** who owns rhythm and story;
- a **typographer** who owns every letter on screen;
- a **sound designer** who owns the score.
Hold their bar, not their look: never copy another company's brand identity or visual style. Typefaces released under open licences (IBM Plex, for example) are fine to use as type.View the complete source on GitHubsocial-ad
When your agent uses it
Create scroll-stopping SOCIAL ADS and SHORT-FORM VIDEOS (Reels, TikTok, Shorts, LinkedIn, X, story ads, bumpers) as one self-contained HTML file, vertical 1080×1920 by default (or 1:1, 4:5, 16:9). They open with a hook in the first second, use word slams on the beat, colour flips, phone mockups, burned-in karaoke captions for muted autoplay, a punchy synthesized track and a loopable end frame. Verified frame by frame and exportable to MP4. Use for ads, promos, product teasers, app-store and social clips, "make a reel/TikTok", 6 s bumpers and 15 or 30 s spots, for any brand, product, app, offer or event, in any style. Accepts creative dials --creativity, --typography, --animation and --motion (low, medium or high; medium by default).
What it loads into context
Frontmatter
227 tokensAlways available to the agent
SKILL.md
49,931 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Your role: the senior creative team
- 0. Creative controls (read the request for these first)
- 1. Output contract (always)
- 2. Gather inputs first (ask once, briefly; default the rest and say what you assumed)
- 3. Research with web search (before designing)
- 4. The short-form playbook
- 5. Style presets (pick one, or let the brand override)
- 6. Design system (decide it, then never improvise)
- 7. The starter film (complete and working; copy it, then build on it)
- 8. Short-form techniques
- 9. Sound: the score engine
- 10. Toolkit: verify, analyse, embed, export
- 11. Verify (mandatory before you say "done")
- 12. Export, collisions and pitfalls
- 13. Hand-off message
- 14. Appendix: embedded files (the starter film and the toolkit)
Scripts executed separately
scripts/analyze.pyscripts/fonts.pyscripts/inline.pyscripts/verify.pyscripts/vo_timing.py
Files
SKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesSKILL.mdcore158,181 bytesexamples/fernly-reel.htmlasset373,634 bytesexamples/fernly-reel.jpgasset115,718 bytesexamples/fernly-reel.mp4asset2,052,697 bytesscripts/analyze.pyruns7,755 bytesscripts/fonts.pyruns5,216 bytesscripts/inline.pyruns5,004 bytesscripts/verify.pyruns20,712 bytesscripts/vo_timing.pyruns5,017 bytestemplates/starter.htmlasset47,407 bytes
Read SKILL.md
# Social ads and short-form videos
You make the 10 seconds that stop a thumb. Short-form is a different sport: the first second decides everything, most people watch muted, the frame is vertical, and the end should loop back to the start. Everything you need is in this skill's folder: the playbook, the style presets, a complete working vertical starter, the techniques, the score engine and the verification toolkit. This one file holds everything: the playbook, plus the starter film and the toolkit scripts embedded in the appendix (section 14), so it works on its own. Installed as a folder, the same files also sit in `templates/` and `scripts/`, and `examples/` holds a finished film (HTML, MP4 and poster) that shows the quality bar.
## Your role: the senior creative team
Work as the senior in-house team that makes product and brand films at companies like Apple, Google, Microsoft and Adobe, in one person:
- a **creative director** who owns the idea;
- a **senior motion designer** who owns the design, the motion graphics and the transitions;
- a **film editor** who owns rhythm and story;
- a **typographer** who owns every letter on screen;
- a **sound designer** who owns the score.
Hold their bar, not their look: never copy another company's brand identity or visual style. Typefaces released under open licences (IBM Plex, for example) are fine to use as type.View the complete source on GitHubtestimonial-video
When your agent uses it
Create a trustworthy TESTIMONIAL / CUSTOMER STORY VIDEO as one self-contained HTML file: the customer's real quote revealed at reading pace with the key phrase highlighted, an attribution card, result tiles with counters, a logo wall and a call to action, with a warm synthesized score or the customer's own audio clip with captions. Verified frame by frame and exportable to MP4. Use for customer quotes, case-study and success-story videos, review and rating highlights, before/after results, "loved by teams at" logo walls, sales and landing-page social proof, and multi-quote compilations, for any product, service or cause, in any style. Accepts creative dials --creativity, --typography, --animation and --motion (low, medium or high; medium by default).
What it loads into context
Frontmatter
185 tokensAlways available to the agent
SKILL.md
49,328 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Your role: the senior creative team
- 0. Creative controls (read the request for these first)
- 1. Output contract (always)
- 2. Gather inputs first (ask once, briefly; default the rest and say what you assumed)
- 3. Research with web search (before designing)
- 4. The testimonial playbook
- 5. Style presets (pick one, or let the brand override)
- 6. Design system (decide it, then never improvise)
- 7. The starter film (complete and working; copy it, then build on it)
- 8. Testimonial techniques
- 9. Sound: the score engine
- 10. Toolkit: verify, analyse, embed, export
- 11. Verify (mandatory before you say "done")
- 12. Export, collisions and pitfalls
- 13. Hand-off message
- 14. Appendix: embedded files (the starter film and the toolkit)
Scripts executed separately
scripts/analyze.pyscripts/fonts.pyscripts/inline.pyscripts/verify.pyscripts/vo_timing.py
Files
SKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesSKILL.mdcore157,628 bytesexamples/crumb-rosas-bakery.htmlasset323,269 bytesexamples/crumb-rosas-bakery.jpgasset118,110 bytesexamples/crumb-rosas-bakery.mp4asset2,655,344 bytesscripts/analyze.pyruns7,755 bytesscripts/fonts.pyruns5,216 bytesscripts/inline.pyruns5,004 bytesscripts/verify.pyruns20,712 bytesscripts/vo_timing.pyruns5,017 bytestemplates/starter.htmlasset45,727 bytes
Read SKILL.md
# Testimonial and customer-story videos
You let a happy customer do the selling: their exact words, their name and face, the result they got, and the proof that others agree. A testimonial works only if it is believable, so the quote is real and approved, the numbers are theirs, and the design stays out of the way of the words. Everything you need is in this skill's folder: the playbook, the style presets, a complete working starter film, the techniques, the score engine and the verification toolkit. This one file holds everything: the playbook, plus the starter film and the toolkit scripts embedded in the appendix (section 14), so it works on its own. Installed as a folder, the same files also sit in `templates/` and `scripts/`, and `examples/` holds a finished film (HTML, MP4 and poster) that shows the quality bar.
## Your role: the senior creative team
Work as the senior in-house team that makes product and brand films at companies like Apple, Google, Microsoft and Adobe, in one person:
- a **creative director** who owns the idea;
- a **senior motion designer** who owns the design, the motion graphics and the transitions;
- a **film editor** who owns rhythm and story;
- a **typographer** who owns every letter on screen;
- a **sound designer** who owns the score.
Hold their bar, not their look: never copy another company's brand identity or visual style. Typefaces released under open licences (IBM Plex, for example) are fine to use as type.View the complete source on GitHubtutorial-video
When your agent uses it
Create a clear step-by-step TUTORIAL or HOW-TO VIDEO as one self-contained HTML file: a numbered step HUD with progress, the real UI rebuilt in HTML/CSS, a zoom to each control, a spotlight before each click, a cursor that clicks and types, keycap overlays, success states and a recap, with a synced voiceover or captions and a calm synthesized score. Verified frame by frame and exportable to MP4. Use for how-to videos, help-center videos, onboarding steps, training and enablement clips, feature setup guides and "how do I…" answers, for any app, website, device or process, in any style. Accepts creative dials --creativity, --typography, --animation and --motion (low, medium or high; medium by default).
What it loads into context
Frontmatter
187 tokensAlways available to the agent
SKILL.md
52,236 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Your role: the senior creative team
- 0. Creative controls (read the request for these first)
- 1. Output contract (always)
- 2. Gather inputs first (ask once, briefly; default the rest and say what you assumed)
- 3. Research with web search (before designing)
- 4. The tutorial playbook
- 5. Style presets (pick one, or let the brand override)
- 6. Design system (decide it, then never improvise)
- 7. The starter film (complete and working; copy it, then build on it)
- 8. Tutorial techniques
- 9. Sound: the score engine
- 10. Toolkit: verify, analyse, embed, export
- 11. Verify (mandatory before you say "done")
- 12. Export, collisions and pitfalls
- 13. Hand-off message
- 14. Appendix: embedded files (the starter film and the toolkit)
Scripts executed separately
scripts/analyze.pyscripts/fonts.pyscripts/inline.pyscripts/verify.pyscripts/vo_timing.py
Files
SKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesSKILL.mdcore164,377 bytesexamples/northbeam-two-step.htmlasset241,567 bytesexamples/northbeam-two-step.jpgasset173,178 bytesexamples/northbeam-two-step.mp4asset5,444,527 bytesscripts/analyze.pyruns7,755 bytesscripts/fonts.pyruns5,216 bytesscripts/inline.pyruns5,004 bytesscripts/verify.pyruns20,712 bytesscripts/vo_timing.pyruns5,017 bytestemplates/starter.htmlasset54,996 bytes
Read SKILL.md
# Tutorial and how-to videos
You make the tutorial people actually finish: it says how many steps there are, shows exactly where to click before the click, never moves faster than a beginner can follow, and ends with proof that it worked. The UI is rebuilt in HTML/CSS and filmed with a virtual camera, so every step is precise and easy to update. Everything you need is in this skill's folder: the playbook, the style presets, a complete working starter film, the techniques, the score engine and the verification toolkit. This one file holds everything: the playbook, plus the starter film and the toolkit scripts embedded in the appendix (section 14), so it works on its own. Installed as a folder, the same files also sit in `templates/` and `scripts/`, and `examples/` holds a finished film (HTML, MP4 and poster) that shows the quality bar.
## Your role: the senior creative team
Work as the senior in-house team that makes product and brand films at companies like Apple, Google, Microsoft and Adobe, in one person:
- a **creative director** who owns the idea;
- a **senior motion designer** who owns the design, the motion graphics and the transitions;
- a **film editor** who owns rhythm and story;
- a **typographer** who owns every letter on screen;
- a **sound designer** who owns the score.
Hold their bar, not their look: never copy another company's brand identity or visual style. Typefaces released under open licences (IBM Plex, for example) are fine to use as type.View the complete source on GitHubSkills included
- brand-film
- data-story
- event-promo
- explainer-video
- feature-update
- launch-film
- motion-film
- product-walkthrough
- social-ad
- testimonial-video
- tutorial-video
Repository facts
- License
- MIT
- Created
- Oct 2, 2026
- Last pushed
- Oct 3, 2026
- Forks
- 0
- Open issues
- 0
- Project activity
- Active
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 4, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 690 notes
brand-film/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedbrand-film/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedbrand-film/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedbrand-film/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedbrand-film/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedbrand-film/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedbrand-film/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedbrand-film/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedbrand-film/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedbrand-film/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedbrand-film/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedbrand-film/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedbrand-film/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedbrand-film/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedbrand-film/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedbrand-film/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedbrand-film/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedbrand-film/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedbrand-film/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedbrand-film/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- 56 dangerous shell commandsin 23 files: brand-film/SKILL.md:649 data-story/SKILL.md:640 event-promo/SKILL.md:641 and 20 more
- 667 network referencesin 36 files: motion-film/SKILL.md:180 brand-film/SKILL.md:180 data-story/SKILL.md:180 and 33 more
- 44 obfuscation signalsin 22 files: brand-film/SKILL.md:1446 brand-film/scripts/verify.py:128 data-story/SKILL.md:1479 and 19 more
- No instruction overrides
- 55 executable scriptsin 55 files: brand-film/scripts/analyze.py:1 brand-film/scripts/fonts.py:1 brand-film/scripts/inline.py:1 and 52 more
- 44 references to secretsin 33 files: brand-film/SKILL.md:1364 data-story/SKILL.md:1397 event-promo/SKILL.md:1412 and 30 more
- No requests to vote in Hot
Show all 866 signals by file
brand-film/SKILL.md
- Network accessline 180
- Queries: `"kinetic typography breakdown"`, `"title sequence design"`, `"motion design principles"`, `"Disney twelve principles of animation examples"`, `"shape morph transition motion graphics"`, `"type as mask motion design"`. - Referenc - Network accessline 181
- References: - Art of the Title: https://www.artofthetitle.com - Motionographer: https://motionographer.com - Network accessline 182
- Art of the Title: https://www.artofthetitle.com - Network accessline 183
- Motionographer: https://motionographer.com - Network accessline 184
- School of Motion: https://www.schoolofmotion.com/blog - Network accessline 249
- **Craft resources (read whichever you need):** - Motion: - Material 3 motion: https://m3.material.io/styles/motion/overview - Network accessline 250
- Motion: - Material 3 motion: https://m3.material.io/styles/motion/overview - Apple HIG, Motion: https://developer.apple.com/design/human-interface-guidelines/motion - Network accessline 251
- Material 3 motion: https://m3.material.io/styles/motion/overview - Network accessline 252
- Apple HIG, Motion: https://developer.apple.com/design/human-interface-guidelines/motion - Network accessline 253
- IBM Carbon motion: https://carbondesignsystem.com/elements/motion/overview/ - Network accessline 254
- easings.net, cubic-bezier.com - GSAP ease visualizer: https://gsap.com/docs/v3/Eases - Twelve principles of animation: https://en.wikipedia.org/wiki/Twelve_basic_principles_of_animation - Network accessline 255
- GSAP ease visualizer: https://gsap.com/docs/v3/Eases - Network accessline 256
- Twelve principles of animation: https://en.wikipedia.org/wiki/Twelve_basic_principles_of_animation - Network accessline 257
- School of Motion: https://www.schoolofmotion.com/blog - Network accessline 258
- Typography: - Butterick's Practical Typography: https://practicaltypography.com - Google Fonts Knowledge: https://fonts.google.com/knowledge - Network accessline 259
- Butterick's Practical Typography: https://practicaltypography.com - Network accessline 260
- Google Fonts Knowledge: https://fonts.google.com/knowledge - Network accessline 261
- typescale.com - Josef Müller-Brockmann, *Grid Systems in Graphic Design* - Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Network accessline 262
- Josef Müller-Brockmann, *Grid Systems in Graphic Design* - Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Sound: - Network accessline 263
- Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Network accessline 264
- Sound: - MDN Web Audio API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API - "A tale of two clocks": https://web.dev/articles/audio-scheduling - Network accessline 265
- MDN Web Audio API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API - Network accessline 266
- "A tale of two clocks": https://web.dev/articles/audio-scheduling - Network accessline 267
- Ableton Learning Synths: https://learningsynths.ableton.com - Network accessline 268
- Ableton Learning Music: https://learningmusic.ableton.com - Network accessline 269
- Hooktheory: https://www.hooktheory.com - Network accessline 270
- Tooling: - Chrome DevTools Protocol: https://chromedevtools.github.io/devtools-protocol/ - FFmpeg: https://ffmpeg.org/documentation.html - Network accessline 271
- Chrome DevTools Protocol: https://chromedevtools.github.io/devtools-protocol/ - Network accessline 272
- FFmpeg: https://ffmpeg.org/documentation.html - Network accessline 273
- Remotion (if the user wants React): https://www.remotion.dev - Dangerous shell operationline 649
| `python verify.py film.html eval "js" [t]` | Evaluates an expression in the recording page, optionally after `seek(t)`, and prints the JSON result. Use it to debug sizes, styles and state without guessing. | - Dangerous shell operationline 1333
python verify.py film.html eval "js" [t] evaluate an expression in the ?record page (after seek(t)) and print the JSON result, - Dangerous shell operationline 1334
e.g. eval "getComputedStyle(document.querySelector('#cT')).fontSize" 9.5 - Access to secretsline 1364
[Credential-related source omitted] - Network accessline 1375
def free_port(): s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Network accessline 1376
s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Possible obfuscationline 1446
return base64.b64decode(call('Page.captureScreenshot', p)['data']) - Possible obfuscationline 1556
fn = out / 'score.wav'; fn.write_bytes(base64.b64decode(b64)); print('score', fn, f'({fn.stat().st_size / 1e6:.1f} MB)') - Network accessline 1561
for _ in range(100): try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 1562
try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break except Exception: - Network accessline 1563
tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 1823
weights = [] if raw else [w.strip() for w in A.items[0].split(',') if w.strip()] axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if - Network accessline 1824
axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if A.italic else 'wght@' + ';'.join(weights) url = f'https://fonts.googleapis.com/cs - Network accessline 1825
url = f'https://fonts.googleapis.com/css2?family={A.family.replace(" ", "+")}:{axis}&display=block' css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() want = {s.strip() - Network accessline 1826
css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() - Network accessline 1830
if sub not in want: continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 1831
continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) wm = re.search(r'font-weight:\s*(\d+)(?:\s+(\d+))?', body); wt = wm.group(1) if not wm.group(2) else f'{wm.group(1)} {wm.group(2)}' - Network accessline 1832
src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 1838
if key in seen: # a variable font serves every weight from one file: embed it once, as a weight range seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, hea - Network accessline 1839
seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() seen[key] = [data, [int(w) for w in wt.split()], stl, ur.group( - Network accessline 1840
data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() - Access to secretsline 2033
[Credential-related source omitted]
brand-film/examples/morrow-manifesto.html
brand-film/scripts/analyze.py
- Executable scriptline 1
#!/usr/bin/env python3
brand-film/scripts/fonts.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 33
weights = [] if raw else [w.strip() for w in A.items[0].split(',') if w.strip()] axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if - Network accessline 34
axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if A.italic else 'wght@' + ';'.join(weights) url = f'https://fonts.googleapis.com/cs - Network accessline 35
url = f'https://fonts.googleapis.com/css2?family={A.family.replace(" ", "+")}:{axis}&display=block' css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() want = {s.strip() - Network accessline 36
css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() - Network accessline 40
if sub not in want: continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 41
continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) wm = re.search(r'font-weight:\s*(\d+)(?:\s+(\d+))?', body); wt = wm.group(1) if not wm.group(2) else f'{wm.group(1)} {wm.group(2)}' - Network accessline 42
src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 48
if key in seen: # a variable font serves every weight from one file: embed it once, as a weight range seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, hea - Network accessline 49
seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() seen[key] = [data, [int(w) for w in wt.split()], stl, ur.group( - Network accessline 50
data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read()
brand-film/scripts/inline.py
- Executable scriptline 1
#!/usr/bin/env python3
brand-film/scripts/verify.py
- Executable scriptline 1
#!/usr/bin/env python3 - Dangerous shell operationline 15
python verify.py film.html eval "js" [t] evaluate an expression in the ?record page (after seek(t)) and print the JSON result, - Dangerous shell operationline 16
e.g. eval "getComputedStyle(document.querySelector('#cT')).fontSize" 9.5 - Access to secretsline 46
[Credential-related source omitted] - Network accessline 57
def free_port(): s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Network accessline 58
s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Possible obfuscationline 128
return base64.b64decode(call('Page.captureScreenshot', p)['data']) - Possible obfuscationline 238
fn = out / 'score.wav'; fn.write_bytes(base64.b64decode(b64)); print('score', fn, f'({fn.stat().st_size / 1e6:.1f} MB)') - Network accessline 243
for _ in range(100): try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 244
try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break except Exception: - Network accessline 245
tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break
brand-film/scripts/vo_timing.py
data-story/SKILL.md
- Network accessline 180
- Queries: `"kinetic typography breakdown"`, `"title sequence design"`, `"motion design principles"`, `"Disney twelve principles of animation examples"`, `"shape morph transition motion graphics"`, `"type as mask motion design"`. - Referenc - Network accessline 181
- References: - Art of the Title: https://www.artofthetitle.com - Motionographer: https://motionographer.com - Network accessline 182
- Art of the Title: https://www.artofthetitle.com - Network accessline 183
- Motionographer: https://motionographer.com - Network accessline 184
- School of Motion: https://www.schoolofmotion.com/blog - Network accessline 249
- **Craft resources (read whichever you need):** - Motion: - Material 3 motion: https://m3.material.io/styles/motion/overview - Network accessline 250
- Motion: - Material 3 motion: https://m3.material.io/styles/motion/overview - Apple HIG, Motion: https://developer.apple.com/design/human-interface-guidelines/motion - Network accessline 251
- Material 3 motion: https://m3.material.io/styles/motion/overview - Network accessline 252
- Apple HIG, Motion: https://developer.apple.com/design/human-interface-guidelines/motion - Network accessline 253
- IBM Carbon motion: https://carbondesignsystem.com/elements/motion/overview/ - Network accessline 254
- easings.net, cubic-bezier.com - GSAP ease visualizer: https://gsap.com/docs/v3/Eases - Twelve principles of animation: https://en.wikipedia.org/wiki/Twelve_basic_principles_of_animation - Network accessline 255
- GSAP ease visualizer: https://gsap.com/docs/v3/Eases - Network accessline 256
- Twelve principles of animation: https://en.wikipedia.org/wiki/Twelve_basic_principles_of_animation - Network accessline 257
- School of Motion: https://www.schoolofmotion.com/blog - Network accessline 258
- Typography: - Butterick's Practical Typography: https://practicaltypography.com - Google Fonts Knowledge: https://fonts.google.com/knowledge - Network accessline 259
- Butterick's Practical Typography: https://practicaltypography.com - Network accessline 260
- Google Fonts Knowledge: https://fonts.google.com/knowledge - Network accessline 261
- typescale.com - Josef Müller-Brockmann, *Grid Systems in Graphic Design* - Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Network accessline 262
- Josef Müller-Brockmann, *Grid Systems in Graphic Design* - Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Sound: - Network accessline 263
- Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Network accessline 264
- Sound: - MDN Web Audio API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API - "A tale of two clocks": https://web.dev/articles/audio-scheduling - Network accessline 265
- MDN Web Audio API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API - Network accessline 266
- "A tale of two clocks": https://web.dev/articles/audio-scheduling - Network accessline 267
- Ableton Learning Synths: https://learningsynths.ableton.com - Network accessline 268
- Ableton Learning Music: https://learningmusic.ableton.com - Network accessline 269
- Hooktheory: https://www.hooktheory.com - Network accessline 270
- Tooling: - Chrome DevTools Protocol: https://chromedevtools.github.io/devtools-protocol/ - FFmpeg: https://ffmpeg.org/documentation.html - Network accessline 271
- Chrome DevTools Protocol: https://chromedevtools.github.io/devtools-protocol/ - Network accessline 272
- FFmpeg: https://ffmpeg.org/documentation.html - Network accessline 273
- Remotion (if the user wants React): https://www.remotion.dev - Dangerous shell operationline 640
| `python verify.py film.html eval "js" [t]` | Evaluates an expression in the recording page, optionally after `seek(t)`, and prints the JSON result. Use it to debug sizes, styles and state without guessing. | - Dangerous shell operationline 1366
python verify.py film.html eval "js" [t] evaluate an expression in the ?record page (after seek(t)) and print the JSON result, - Dangerous shell operationline 1367
e.g. eval "getComputedStyle(document.querySelector('#cT')).fontSize" 9.5 - Access to secretsline 1397
[Credential-related source omitted] - Network accessline 1408
def free_port(): s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Network accessline 1409
s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Possible obfuscationline 1479
return base64.b64decode(call('Page.captureScreenshot', p)['data']) - Possible obfuscationline 1589
fn = out / 'score.wav'; fn.write_bytes(base64.b64decode(b64)); print('score', fn, f'({fn.stat().st_size / 1e6:.1f} MB)') - Network accessline 1594
for _ in range(100): try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 1595
try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break except Exception: - Network accessline 1596
tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 1856
weights = [] if raw else [w.strip() for w in A.items[0].split(',') if w.strip()] axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if - Network accessline 1857
axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if A.italic else 'wght@' + ';'.join(weights) url = f'https://fonts.googleapis.com/cs - Network accessline 1858
url = f'https://fonts.googleapis.com/css2?family={A.family.replace(" ", "+")}:{axis}&display=block' css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() want = {s.strip() - Network accessline 1859
css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() - Network accessline 1863
if sub not in want: continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 1864
continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) wm = re.search(r'font-weight:\s*(\d+)(?:\s+(\d+))?', body); wt = wm.group(1) if not wm.group(2) else f'{wm.group(1)} {wm.group(2)}' - Network accessline 1865
src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 1871
if key in seen: # a variable font serves every weight from one file: embed it once, as a weight range seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, hea - Network accessline 1872
seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() seen[key] = [data, [int(w) for w in wt.split()], stl, ur.group( - Network accessline 1873
data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() - Access to secretsline 2066
[Credential-related source omitted]
data-story/examples/halden-bikes-2025.html
- Dangerous shell operationline 393
const km = P(t, b(22.9), b(22.9) + 0.4, Ez.back), rm = (13 * km).toFixed(2); if (M.ms._r !== rm) { M.ms.setAttribute('r', rm); M.ms._r = rm; }
data-story/scripts/analyze.py
- Executable scriptline 1
#!/usr/bin/env python3
data-story/scripts/fonts.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 33
weights = [] if raw else [w.strip() for w in A.items[0].split(',') if w.strip()] axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if - Network accessline 34
axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if A.italic else 'wght@' + ';'.join(weights) url = f'https://fonts.googleapis.com/cs - Network accessline 35
url = f'https://fonts.googleapis.com/css2?family={A.family.replace(" ", "+")}:{axis}&display=block' css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() want = {s.strip() - Network accessline 36
css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() - Network accessline 40
if sub not in want: continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 41
continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) wm = re.search(r'font-weight:\s*(\d+)(?:\s+(\d+))?', body); wt = wm.group(1) if not wm.group(2) else f'{wm.group(1)} {wm.group(2)}' - Network accessline 42
src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 48
if key in seen: # a variable font serves every weight from one file: embed it once, as a weight range seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, hea - Network accessline 49
seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() seen[key] = [data, [int(w) for w in wt.split()], stl, ur.group( - Network accessline 50
data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read()
data-story/scripts/inline.py
- Executable scriptline 1
#!/usr/bin/env python3
data-story/scripts/verify.py
- Executable scriptline 1
#!/usr/bin/env python3 - Dangerous shell operationline 15
python verify.py film.html eval "js" [t] evaluate an expression in the ?record page (after seek(t)) and print the JSON result, - Dangerous shell operationline 16
e.g. eval "getComputedStyle(document.querySelector('#cT')).fontSize" 9.5 - Access to secretsline 46
[Credential-related source omitted] - Network accessline 57
def free_port(): s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Network accessline 58
s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Possible obfuscationline 128
return base64.b64decode(call('Page.captureScreenshot', p)['data']) - Possible obfuscationline 238
fn = out / 'score.wav'; fn.write_bytes(base64.b64decode(b64)); print('score', fn, f'({fn.stat().st_size / 1e6:.1f} MB)') - Network accessline 243
for _ in range(100): try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 244
try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break except Exception: - Network accessline 245
tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break
data-story/scripts/vo_timing.py
event-promo/SKILL.md
- Network accessline 180
- Queries: `"kinetic typography breakdown"`, `"title sequence design"`, `"motion design principles"`, `"Disney twelve principles of animation examples"`, `"shape morph transition motion graphics"`, `"type as mask motion design"`. - Referenc - Network accessline 181
- References: - Art of the Title: https://www.artofthetitle.com - Motionographer: https://motionographer.com - Network accessline 182
- Art of the Title: https://www.artofthetitle.com - Network accessline 183
- Motionographer: https://motionographer.com - Network accessline 184
- School of Motion: https://www.schoolofmotion.com/blog - Network accessline 246
- **Craft resources (read whichever you need):** - Motion: - Material 3 motion: https://m3.material.io/styles/motion/overview - Network accessline 247
- Motion: - Material 3 motion: https://m3.material.io/styles/motion/overview - Apple HIG, Motion: https://developer.apple.com/design/human-interface-guidelines/motion - Network accessline 248
- Material 3 motion: https://m3.material.io/styles/motion/overview - Network accessline 249
- Apple HIG, Motion: https://developer.apple.com/design/human-interface-guidelines/motion - Network accessline 250
- IBM Carbon motion: https://carbondesignsystem.com/elements/motion/overview/ - Network accessline 251
- easings.net, cubic-bezier.com - GSAP ease visualizer: https://gsap.com/docs/v3/Eases - Twelve principles of animation: https://en.wikipedia.org/wiki/Twelve_basic_principles_of_animation - Network accessline 252
- GSAP ease visualizer: https://gsap.com/docs/v3/Eases - Network accessline 253
- Twelve principles of animation: https://en.wikipedia.org/wiki/Twelve_basic_principles_of_animation - Network accessline 254
- School of Motion: https://www.schoolofmotion.com/blog - Network accessline 255
- Typography: - Butterick's Practical Typography: https://practicaltypography.com - Google Fonts Knowledge: https://fonts.google.com/knowledge - Network accessline 256
- Butterick's Practical Typography: https://practicaltypography.com - Network accessline 257
- Google Fonts Knowledge: https://fonts.google.com/knowledge - Network accessline 258
- typescale.com - Josef Müller-Brockmann, *Grid Systems in Graphic Design* - Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Network accessline 259
- Josef Müller-Brockmann, *Grid Systems in Graphic Design* - Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Sound: - Network accessline 260
- Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Network accessline 261
- Sound: - MDN Web Audio API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API - "A tale of two clocks": https://web.dev/articles/audio-scheduling - Network accessline 262
- MDN Web Audio API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API - Network accessline 263
- "A tale of two clocks": https://web.dev/articles/audio-scheduling - Network accessline 264
- Ableton Learning Synths: https://learningsynths.ableton.com - Network accessline 265
- Ableton Learning Music: https://learningmusic.ableton.com - Network accessline 266
- Hooktheory: https://www.hooktheory.com - Network accessline 267
- Tooling: - Chrome DevTools Protocol: https://chromedevtools.github.io/devtools-protocol/ - FFmpeg: https://ffmpeg.org/documentation.html - Network accessline 268
- Chrome DevTools Protocol: https://chromedevtools.github.io/devtools-protocol/ - Network accessline 269
- FFmpeg: https://ffmpeg.org/documentation.html - Network accessline 270
- Remotion (if the user wants React): https://www.remotion.dev - Dangerous shell operationline 641
| `python verify.py film.html eval "js" [t]` | Evaluates an expression in the recording page, optionally after `seek(t)`, and prints the JSON result. Use it to debug sizes, styles and state without guessing. | - Dangerous shell operationline 1381
python verify.py film.html eval "js" [t] evaluate an expression in the ?record page (after seek(t)) and print the JSON result, - Dangerous shell operationline 1382
e.g. eval "getComputedStyle(document.querySelector('#cT')).fontSize" 9.5 - Access to secretsline 1412
[Credential-related source omitted] - Network accessline 1423
def free_port(): s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Network accessline 1424
s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Possible obfuscationline 1494
return base64.b64decode(call('Page.captureScreenshot', p)['data']) - Possible obfuscationline 1604
fn = out / 'score.wav'; fn.write_bytes(base64.b64decode(b64)); print('score', fn, f'({fn.stat().st_size / 1e6:.1f} MB)') - Network accessline 1609
for _ in range(100): try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 1610
try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break except Exception: - Network accessline 1611
tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 1871
weights = [] if raw else [w.strip() for w in A.items[0].split(',') if w.strip()] axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if - Network accessline 1872
axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if A.italic else 'wght@' + ';'.join(weights) url = f'https://fonts.googleapis.com/cs - Network accessline 1873
url = f'https://fonts.googleapis.com/css2?family={A.family.replace(" ", "+")}:{axis}&display=block' css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() want = {s.strip() - Network accessline 1874
css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() - Network accessline 1878
if sub not in want: continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 1879
continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) wm = re.search(r'font-weight:\s*(\d+)(?:\s+(\d+))?', body); wt = wm.group(1) if not wm.group(2) else f'{wm.group(1)} {wm.group(2)}' - Network accessline 1880
src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 1886
if key in seen: # a variable font serves every weight from one file: embed it once, as a weight range seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, hea - Network accessline 1887
seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() seen[key] = [data, [int(w) for w in wt.split()], stl, ur.group( - Network accessline 1888
data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() - Access to secretsline 2081
[Credential-related source omitted]
event-promo/scripts/analyze.py
- Executable scriptline 1
#!/usr/bin/env python3
event-promo/scripts/fonts.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 33
weights = [] if raw else [w.strip() for w in A.items[0].split(',') if w.strip()] axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if - Network accessline 34
axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if A.italic else 'wght@' + ';'.join(weights) url = f'https://fonts.googleapis.com/cs - Network accessline 35
url = f'https://fonts.googleapis.com/css2?family={A.family.replace(" ", "+")}:{axis}&display=block' css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() want = {s.strip() - Network accessline 36
css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() - Network accessline 40
if sub not in want: continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 41
continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) wm = re.search(r'font-weight:\s*(\d+)(?:\s+(\d+))?', body); wt = wm.group(1) if not wm.group(2) else f'{wm.group(1)} {wm.group(2)}' - Network accessline 42
src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 48
if key in seen: # a variable font serves every weight from one file: embed it once, as a weight range seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, hea - Network accessline 49
seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() seen[key] = [data, [int(w) for w in wt.split()], stl, ur.group( - Network accessline 50
data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read()
event-promo/scripts/inline.py
- Executable scriptline 1
#!/usr/bin/env python3
event-promo/scripts/verify.py
- Executable scriptline 1
#!/usr/bin/env python3 - Dangerous shell operationline 15
python verify.py film.html eval "js" [t] evaluate an expression in the ?record page (after seek(t)) and print the JSON result, - Dangerous shell operationline 16
e.g. eval "getComputedStyle(document.querySelector('#cT')).fontSize" 9.5 - Access to secretsline 46
[Credential-related source omitted] - Network accessline 57
def free_port(): s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Network accessline 58
s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Possible obfuscationline 128
return base64.b64decode(call('Page.captureScreenshot', p)['data']) - Possible obfuscationline 238
fn = out / 'score.wav'; fn.write_bytes(base64.b64decode(b64)); print('score', fn, f'({fn.stat().st_size / 1e6:.1f} MB)') - Network accessline 243
for _ in range(100): try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 244
try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break except Exception: - Network accessline 245
tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break
event-promo/scripts/vo_timing.py
explainer-video/SKILL.md
- Network accessline 180
- Queries: `"kinetic typography breakdown"`, `"title sequence design"`, `"motion design principles"`, `"Disney twelve principles of animation examples"`, `"shape morph transition motion graphics"`, `"type as mask motion design"`. - Referenc - Network accessline 181
- References: - Art of the Title: https://www.artofthetitle.com - Motionographer: https://motionographer.com - Network accessline 182
- Art of the Title: https://www.artofthetitle.com - Network accessline 183
- Motionographer: https://motionographer.com - Network accessline 184
- School of Motion: https://www.schoolofmotion.com/blog - Network accessline 247
- **Craft resources (read whichever you need):** - Motion: - Material 3 motion: https://m3.material.io/styles/motion/overview - Network accessline 248
- Motion: - Material 3 motion: https://m3.material.io/styles/motion/overview - Apple HIG, Motion: https://developer.apple.com/design/human-interface-guidelines/motion - Network accessline 249
- Material 3 motion: https://m3.material.io/styles/motion/overview - Network accessline 250
- Apple HIG, Motion: https://developer.apple.com/design/human-interface-guidelines/motion - Network accessline 251
- IBM Carbon motion: https://carbondesignsystem.com/elements/motion/overview/ - Network accessline 252
- easings.net, cubic-bezier.com - GSAP ease visualizer: https://gsap.com/docs/v3/Eases - Twelve principles of animation: https://en.wikipedia.org/wiki/Twelve_basic_principles_of_animation - Network accessline 253
- GSAP ease visualizer: https://gsap.com/docs/v3/Eases - Network accessline 254
- Twelve principles of animation: https://en.wikipedia.org/wiki/Twelve_basic_principles_of_animation - Network accessline 255
- School of Motion: https://www.schoolofmotion.com/blog - Network accessline 256
- Typography: - Butterick's Practical Typography: https://practicaltypography.com - Google Fonts Knowledge: https://fonts.google.com/knowledge - Network accessline 257
- Butterick's Practical Typography: https://practicaltypography.com - Network accessline 258
- Google Fonts Knowledge: https://fonts.google.com/knowledge - Network accessline 259
- typescale.com - Josef Müller-Brockmann, *Grid Systems in Graphic Design* - Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Network accessline 260
- Josef Müller-Brockmann, *Grid Systems in Graphic Design* - Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Sound: - Network accessline 261
- Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Network accessline 262
- Sound: - MDN Web Audio API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API - "A tale of two clocks": https://web.dev/articles/audio-scheduling - Network accessline 263
- MDN Web Audio API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API - Network accessline 264
- "A tale of two clocks": https://web.dev/articles/audio-scheduling - Network accessline 265
- Ableton Learning Synths: https://learningsynths.ableton.com - Network accessline 266
- Ableton Learning Music: https://learningmusic.ableton.com - Network accessline 267
- Hooktheory: https://www.hooktheory.com - Network accessline 268
- Tooling: - Chrome DevTools Protocol: https://chromedevtools.github.io/devtools-protocol/ - FFmpeg: https://ffmpeg.org/documentation.html - Network accessline 269
- Chrome DevTools Protocol: https://chromedevtools.github.io/devtools-protocol/ - Network accessline 270
- FFmpeg: https://ffmpeg.org/documentation.html - Network accessline 271
- Remotion (if the user wants React): https://www.remotion.dev - Dangerous shell operationline 673
| `python verify.py film.html eval "js" [t]` | Evaluates an expression in the recording page, optionally after `seek(t)`, and prints the JSON result. Use it to debug sizes, styles and state without guessing. | - Dangerous shell operationline 1390
python verify.py film.html eval "js" [t] evaluate an expression in the ?record page (after seek(t)) and print the JSON result, - Dangerous shell operationline 1391
e.g. eval "getComputedStyle(document.querySelector('#cT')).fontSize" 9.5 - Access to secretsline 1421
[Credential-related source omitted] - Network accessline 1432
def free_port(): s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Network accessline 1433
s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Possible obfuscationline 1503
return base64.b64decode(call('Page.captureScreenshot', p)['data']) - Possible obfuscationline 1613
fn = out / 'score.wav'; fn.write_bytes(base64.b64decode(b64)); print('score', fn, f'({fn.stat().st_size / 1e6:.1f} MB)') - Network accessline 1618
for _ in range(100): try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 1619
try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break except Exception: - Network accessline 1620
tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 1880
weights = [] if raw else [w.strip() for w in A.items[0].split(',') if w.strip()] axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if - Network accessline 1881
axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if A.italic else 'wght@' + ';'.join(weights) url = f'https://fonts.googleapis.com/cs - Network accessline 1882
url = f'https://fonts.googleapis.com/css2?family={A.family.replace(" ", "+")}:{axis}&display=block' css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() want = {s.strip() - Network accessline 1883
css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() - Network accessline 1887
if sub not in want: continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 1888
continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) wm = re.search(r'font-weight:\s*(\d+)(?:\s+(\d+))?', body); wt = wm.group(1) if not wm.group(2) else f'{wm.group(1)} {wm.group(2)}' - Network accessline 1889
src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 1895
if key in seen: # a variable font serves every weight from one file: embed it once, as a weight range seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, hea - Network accessline 1896
seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() seen[key] = [data, [int(w) for w in wt.split()], stl, ur.group( - Network accessline 1897
data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() - Access to secretsline 2090
[Credential-related source omitted]
explainer-video/examples/heat-pump-explainer.html
explainer-video/scripts/analyze.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer-video/scripts/fonts.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 33
weights = [] if raw else [w.strip() for w in A.items[0].split(',') if w.strip()] axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if - Network accessline 34
axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if A.italic else 'wght@' + ';'.join(weights) url = f'https://fonts.googleapis.com/cs - Network accessline 35
url = f'https://fonts.googleapis.com/css2?family={A.family.replace(" ", "+")}:{axis}&display=block' css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() want = {s.strip() - Network accessline 36
css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() - Network accessline 40
if sub not in want: continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 41
continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) wm = re.search(r'font-weight:\s*(\d+)(?:\s+(\d+))?', body); wt = wm.group(1) if not wm.group(2) else f'{wm.group(1)} {wm.group(2)}' - Network accessline 42
src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 48
if key in seen: # a variable font serves every weight from one file: embed it once, as a weight range seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, hea - Network accessline 49
seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() seen[key] = [data, [int(w) for w in wt.split()], stl, ur.group( - Network accessline 50
data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read()
explainer-video/scripts/inline.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer-video/scripts/verify.py
- Executable scriptline 1
#!/usr/bin/env python3 - Dangerous shell operationline 15
python verify.py film.html eval "js" [t] evaluate an expression in the ?record page (after seek(t)) and print the JSON result, - Dangerous shell operationline 16
e.g. eval "getComputedStyle(document.querySelector('#cT')).fontSize" 9.5 - Access to secretsline 46
[Credential-related source omitted] - Network accessline 57
def free_port(): s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Network accessline 58
s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Possible obfuscationline 128
return base64.b64decode(call('Page.captureScreenshot', p)['data']) - Possible obfuscationline 238
fn = out / 'score.wav'; fn.write_bytes(base64.b64decode(b64)); print('score', fn, f'({fn.stat().st_size / 1e6:.1f} MB)') - Network accessline 243
for _ in range(100): try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 244
try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break except Exception: - Network accessline 245
tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break
explainer-video/scripts/vo_timing.py
feature-update/SKILL.md
- Network accessline 180
- Queries: `"kinetic typography breakdown"`, `"title sequence design"`, `"motion design principles"`, `"Disney twelve principles of animation examples"`, `"shape morph transition motion graphics"`, `"type as mask motion design"`. - Referenc - Network accessline 181
- References: - Art of the Title: https://www.artofthetitle.com - Motionographer: https://motionographer.com - Network accessline 182
- Art of the Title: https://www.artofthetitle.com - Network accessline 183
- Motionographer: https://motionographer.com - Network accessline 184
- School of Motion: https://www.schoolofmotion.com/blog - Network accessline 246
- **Craft resources (read whichever you need):** - Motion: - Material 3 motion: https://m3.material.io/styles/motion/overview - Network accessline 247
- Motion: - Material 3 motion: https://m3.material.io/styles/motion/overview - Apple HIG, Motion: https://developer.apple.com/design/human-interface-guidelines/motion - Network accessline 248
- Material 3 motion: https://m3.material.io/styles/motion/overview - Network accessline 249
- Apple HIG, Motion: https://developer.apple.com/design/human-interface-guidelines/motion - Network accessline 250
- IBM Carbon motion: https://carbondesignsystem.com/elements/motion/overview/ - Network accessline 251
- easings.net, cubic-bezier.com - GSAP ease visualizer: https://gsap.com/docs/v3/Eases - Twelve principles of animation: https://en.wikipedia.org/wiki/Twelve_basic_principles_of_animation - Network accessline 252
- GSAP ease visualizer: https://gsap.com/docs/v3/Eases - Network accessline 253
- Twelve principles of animation: https://en.wikipedia.org/wiki/Twelve_basic_principles_of_animation - Network accessline 254
- School of Motion: https://www.schoolofmotion.com/blog - Network accessline 255
- Typography: - Butterick's Practical Typography: https://practicaltypography.com - Google Fonts Knowledge: https://fonts.google.com/knowledge - Network accessline 256
- Butterick's Practical Typography: https://practicaltypography.com - Network accessline 257
- Google Fonts Knowledge: https://fonts.google.com/knowledge - Network accessline 258
- typescale.com - Josef Müller-Brockmann, *Grid Systems in Graphic Design* - Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Network accessline 259
- Josef Müller-Brockmann, *Grid Systems in Graphic Design* - Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Sound: - Network accessline 260
- Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Network accessline 261
- Sound: - MDN Web Audio API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API - "A tale of two clocks": https://web.dev/articles/audio-scheduling - Network accessline 262
- MDN Web Audio API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API - Network accessline 263
- "A tale of two clocks": https://web.dev/articles/audio-scheduling - Network accessline 264
- Ableton Learning Synths: https://learningsynths.ableton.com - Network accessline 265
- Ableton Learning Music: https://learningmusic.ableton.com - Network accessline 266
- Hooktheory: https://www.hooktheory.com - Network accessline 267
- Tooling: - Chrome DevTools Protocol: https://chromedevtools.github.io/devtools-protocol/ - FFmpeg: https://ffmpeg.org/documentation.html - Network accessline 268
- Chrome DevTools Protocol: https://chromedevtools.github.io/devtools-protocol/ - Network accessline 269
- FFmpeg: https://ffmpeg.org/documentation.html - Network accessline 270
- Remotion (if the user wants React): https://www.remotion.dev - Dangerous shell operationline 626
| `python verify.py film.html eval "js" [t]` | Evaluates an expression in the recording page, optionally after `seek(t)`, and prints the JSON result. Use it to debug sizes, styles and state without guessing. | - Dangerous shell operationline 1348
python verify.py film.html eval "js" [t] evaluate an expression in the ?record page (after seek(t)) and print the JSON result, - Dangerous shell operationline 1349
e.g. eval "getComputedStyle(document.querySelector('#cT')).fontSize" 9.5 - Access to secretsline 1379
[Credential-related source omitted] - Network accessline 1390
def free_port(): s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Network accessline 1391
s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Possible obfuscationline 1461
return base64.b64decode(call('Page.captureScreenshot', p)['data']) - Possible obfuscationline 1571
fn = out / 'score.wav'; fn.write_bytes(base64.b64decode(b64)); print('score', fn, f'({fn.stat().st_size / 1e6:.1f} MB)') - Network accessline 1576
for _ in range(100): try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 1577
try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break except Exception: - Network accessline 1578
tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 1838
weights = [] if raw else [w.strip() for w in A.items[0].split(',') if w.strip()] axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if - Network accessline 1839
axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if A.italic else 'wght@' + ';'.join(weights) url = f'https://fonts.googleapis.com/cs - Network accessline 1840
url = f'https://fonts.googleapis.com/css2?family={A.family.replace(" ", "+")}:{axis}&display=block' css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() want = {s.strip() - Network accessline 1841
css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() - Network accessline 1845
if sub not in want: continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 1846
continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) wm = re.search(r'font-weight:\s*(\d+)(?:\s+(\d+))?', body); wt = wm.group(1) if not wm.group(2) else f'{wm.group(1)} {wm.group(2)}' - Network accessline 1847
src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 1853
if key in seen: # a variable font serves every weight from one file: embed it once, as a weight range seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, hea - Network accessline 1854
seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() seen[key] = [data, [int(w) for w in wt.split()], stl, ur.group( - Network accessline 1855
data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() - Access to secretsline 2048
[Credential-related source omitted]
feature-update/scripts/analyze.py
- Executable scriptline 1
#!/usr/bin/env python3
feature-update/scripts/fonts.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 33
weights = [] if raw else [w.strip() for w in A.items[0].split(',') if w.strip()] axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if - Network accessline 34
axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if A.italic else 'wght@' + ';'.join(weights) url = f'https://fonts.googleapis.com/cs - Network accessline 35
url = f'https://fonts.googleapis.com/css2?family={A.family.replace(" ", "+")}:{axis}&display=block' css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() want = {s.strip() - Network accessline 36
css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() - Network accessline 40
if sub not in want: continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 41
continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) wm = re.search(r'font-weight:\s*(\d+)(?:\s+(\d+))?', body); wt = wm.group(1) if not wm.group(2) else f'{wm.group(1)} {wm.group(2)}' - Network accessline 42
src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 48
if key in seen: # a variable font serves every weight from one file: embed it once, as a weight range seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, hea - Network accessline 49
seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() seen[key] = [data, [int(w) for w in wt.split()], stl, ur.group( - Network accessline 50
data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read()
feature-update/scripts/inline.py
- Executable scriptline 1
#!/usr/bin/env python3
feature-update/scripts/verify.py
- Executable scriptline 1
#!/usr/bin/env python3 - Dangerous shell operationline 15
python verify.py film.html eval "js" [t] evaluate an expression in the ?record page (after seek(t)) and print the JSON result, - Dangerous shell operationline 16
e.g. eval "getComputedStyle(document.querySelector('#cT')).fontSize" 9.5 - Access to secretsline 46
[Credential-related source omitted] - Network accessline 57
def free_port(): s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Network accessline 58
s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Possible obfuscationline 128
return base64.b64decode(call('Page.captureScreenshot', p)['data']) - Possible obfuscationline 238
fn = out / 'score.wav'; fn.write_bytes(base64.b64decode(b64)); print('score', fn, f'({fn.stat().st_size / 1e6:.1f} MB)') - Network accessline 243
for _ in range(100): try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 244
try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break except Exception: - Network accessline 245
tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break
feature-update/scripts/vo_timing.py
launch-film/SKILL.md
- Network accessline 180
- Queries: `"kinetic typography breakdown"`, `"title sequence design"`, `"motion design principles"`, `"Disney twelve principles of animation examples"`, `"shape morph transition motion graphics"`, `"type as mask motion design"`. - Referenc - Network accessline 181
- References: - Art of the Title: https://www.artofthetitle.com - Motionographer: https://motionographer.com - Network accessline 182
- Art of the Title: https://www.artofthetitle.com - Network accessline 183
- Motionographer: https://motionographer.com - Network accessline 184
- School of Motion: https://www.schoolofmotion.com/blog - Network accessline 250
- **Craft resources (read whichever you need):** - Motion: - Material 3 motion: https://m3.material.io/styles/motion/overview - Network accessline 251
- Motion: - Material 3 motion: https://m3.material.io/styles/motion/overview - Apple HIG, Motion: https://developer.apple.com/design/human-interface-guidelines/motion - Network accessline 252
- Material 3 motion: https://m3.material.io/styles/motion/overview - Network accessline 253
- Apple HIG, Motion: https://developer.apple.com/design/human-interface-guidelines/motion - Network accessline 254
- IBM Carbon motion: https://carbondesignsystem.com/elements/motion/overview/ - Network accessline 255
- easings.net, cubic-bezier.com - GSAP ease visualizer: https://gsap.com/docs/v3/Eases - Twelve principles of animation: https://en.wikipedia.org/wiki/Twelve_basic_principles_of_animation - Network accessline 256
- GSAP ease visualizer: https://gsap.com/docs/v3/Eases - Network accessline 257
- Twelve principles of animation: https://en.wikipedia.org/wiki/Twelve_basic_principles_of_animation - Network accessline 258
- School of Motion: https://www.schoolofmotion.com/blog - Network accessline 259
- Typography: - Butterick's Practical Typography: https://practicaltypography.com - Google Fonts Knowledge: https://fonts.google.com/knowledge - Network accessline 260
- Butterick's Practical Typography: https://practicaltypography.com - Network accessline 261
- Google Fonts Knowledge: https://fonts.google.com/knowledge - Network accessline 262
- typescale.com - Josef Müller-Brockmann, *Grid Systems in Graphic Design* - Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Network accessline 263
- Josef Müller-Brockmann, *Grid Systems in Graphic Design* - Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Sound: - Network accessline 264
- Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Network accessline 265
- Sound: - MDN Web Audio API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API - "A tale of two clocks": https://web.dev/articles/audio-scheduling - Network accessline 266
- MDN Web Audio API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API - Network accessline 267
- "A tale of two clocks": https://web.dev/articles/audio-scheduling - Network accessline 268
- Ableton Learning Synths: https://learningsynths.ableton.com - Network accessline 269
- Ableton Learning Music: https://learningmusic.ableton.com - Network accessline 270
- Hooktheory: https://www.hooktheory.com - Network accessline 271
- Tooling: - Chrome DevTools Protocol: https://chromedevtools.github.io/devtools-protocol/ - FFmpeg: https://ffmpeg.org/documentation.html - Network accessline 272
- Chrome DevTools Protocol: https://chromedevtools.github.io/devtools-protocol/ - Network accessline 273
- FFmpeg: https://ffmpeg.org/documentation.html - Network accessline 274
- Remotion (if the user wants React): https://www.remotion.dev - Dangerous shell operationline 685
| `python verify.py film.html eval "js" [t]` | Evaluates an expression in the recording page, optionally after `seek(t)`, and prints the JSON result. Use it to debug sizes, styles and state without guessing. | - Dangerous shell operationline 1489
python verify.py film.html eval "js" [t] evaluate an expression in the ?record page (after seek(t)) and print the JSON result, - Dangerous shell operationline 1490
e.g. eval "getComputedStyle(document.querySelector('#cT')).fontSize" 9.5 - Access to secretsline 1520
[Credential-related source omitted] - Network accessline 1531
def free_port(): s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Network accessline 1532
s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Possible obfuscationline 1602
return base64.b64decode(call('Page.captureScreenshot', p)['data']) - Possible obfuscationline 1712
fn = out / 'score.wav'; fn.write_bytes(base64.b64decode(b64)); print('score', fn, f'({fn.stat().st_size / 1e6:.1f} MB)') - Network accessline 1717
for _ in range(100): try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 1718
try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break except Exception: - Network accessline 1719
tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 1979
weights = [] if raw else [w.strip() for w in A.items[0].split(',') if w.strip()] axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if - Network accessline 1980
axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if A.italic else 'wght@' + ';'.join(weights) url = f'https://fonts.googleapis.com/cs - Network accessline 1981
url = f'https://fonts.googleapis.com/css2?family={A.family.replace(" ", "+")}:{axis}&display=block' css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() want = {s.strip() - Network accessline 1982
css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() - Network accessline 1986
if sub not in want: continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 1987
continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) wm = re.search(r'font-weight:\s*(\d+)(?:\s+(\d+))?', body); wt = wm.group(1) if not wm.group(2) else f'{wm.group(1)} {wm.group(2)}' - Network accessline 1988
src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 1994
if key in seen: # a variable font serves every weight from one file: embed it once, as a weight range seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, hea - Network accessline 1995
seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() seen[key] = [data, [int(w) for w in wt.split()], stl, ur.group( - Network accessline 1996
data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() - Access to secretsline 2189
[Credential-related source omitted]
launch-film/scripts/analyze.py
- Executable scriptline 1
#!/usr/bin/env python3
launch-film/scripts/fonts.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 33
weights = [] if raw else [w.strip() for w in A.items[0].split(',') if w.strip()] axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if - Network accessline 34
axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if A.italic else 'wght@' + ';'.join(weights) url = f'https://fonts.googleapis.com/cs - Network accessline 35
url = f'https://fonts.googleapis.com/css2?family={A.family.replace(" ", "+")}:{axis}&display=block' css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() want = {s.strip() - Network accessline 36
css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() - Network accessline 40
if sub not in want: continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 41
continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) wm = re.search(r'font-weight:\s*(\d+)(?:\s+(\d+))?', body); wt = wm.group(1) if not wm.group(2) else f'{wm.group(1)} {wm.group(2)}' - Network accessline 42
src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 48
if key in seen: # a variable font serves every weight from one file: embed it once, as a weight range seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, hea - Network accessline 49
seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() seen[key] = [data, [int(w) for w in wt.split()], stl, ur.group( - Network accessline 50
data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read()
launch-film/scripts/inline.py
- Executable scriptline 1
#!/usr/bin/env python3
launch-film/scripts/verify.py
- Executable scriptline 1
#!/usr/bin/env python3 - Dangerous shell operationline 15
python verify.py film.html eval "js" [t] evaluate an expression in the ?record page (after seek(t)) and print the JSON result, - Dangerous shell operationline 16
e.g. eval "getComputedStyle(document.querySelector('#cT')).fontSize" 9.5 - Access to secretsline 46
[Credential-related source omitted] - Network accessline 57
def free_port(): s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Network accessline 58
s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Possible obfuscationline 128
return base64.b64decode(call('Page.captureScreenshot', p)['data']) - Possible obfuscationline 238
fn = out / 'score.wav'; fn.write_bytes(base64.b64decode(b64)); print('score', fn, f'({fn.stat().st_size / 1e6:.1f} MB)') - Network accessline 243
for _ in range(100): try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 244
try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break except Exception: - Network accessline 245
tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break
launch-film/scripts/vo_timing.py
motion-film/SKILL.md
- Network accessline 180
- Queries: `"kinetic typography breakdown"`, `"title sequence design"`, `"motion design principles"`, `"Disney twelve principles of animation examples"`, `"shape morph transition motion graphics"`, `"type as mask motion design"`. - Referenc - Network accessline 181
- References: - Art of the Title: https://www.artofthetitle.com - Motionographer: https://motionographer.com - Network accessline 182
- Art of the Title: https://www.artofthetitle.com - Network accessline 183
- Motionographer: https://motionographer.com - Network accessline 184
- School of Motion: https://www.schoolofmotion.com/blog - Network accessline 256
- **Craft resources:** - Motion: - Material 3 motion: https://m3.material.io/styles/motion/overview - Network accessline 257
- Motion: - Material 3 motion: https://m3.material.io/styles/motion/overview - Apple HIG, Motion: https://developer.apple.com/design/human-interface-guidelines/motion - Network accessline 258
- Material 3 motion: https://m3.material.io/styles/motion/overview - Network accessline 259
- Apple HIG, Motion: https://developer.apple.com/design/human-interface-guidelines/motion - Network accessline 260
- IBM Carbon motion: https://carbondesignsystem.com/elements/motion/overview/ - Network accessline 261
- easings.net - cubic-bezier.com - GSAP ease visualizer: https://gsap.com/docs/v3/Eases - Network accessline 262
- cubic-bezier.com - GSAP ease visualizer: https://gsap.com/docs/v3/Eases - Twelve principles of animation: https://en.wikipedia.org/wiki/Twelve_basic_principles_of_animation - Network accessline 263
- GSAP ease visualizer: https://gsap.com/docs/v3/Eases - Network accessline 264
- Twelve principles of animation: https://en.wikipedia.org/wiki/Twelve_basic_principles_of_animation - Network accessline 265
- School of Motion: https://www.schoolofmotion.com/blog - Network accessline 266
- Typography: - Butterick's Practical Typography: https://practicaltypography.com - Google Fonts Knowledge: https://fonts.google.com/knowledge - Network accessline 267
- Butterick's Practical Typography: https://practicaltypography.com - Network accessline 268
- Google Fonts Knowledge: https://fonts.google.com/knowledge - Network accessline 269
- typescale.com - On grids, Josef Müller-Brockmann's *Grid Systems in Graphic Design*. - Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Network accessline 270
- On grids, Josef Müller-Brockmann's *Grid Systems in Graphic Design*. - Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Sound: - Network accessline 271
- Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Network accessline 272
- Sound: - MDN Web Audio API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API - "A tale of two clocks" (scheduling): https://web.dev/articles/audio-scheduling - Network accessline 273
- MDN Web Audio API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API - Network accessline 274
- "A tale of two clocks" (scheduling): https://web.dev/articles/audio-scheduling - Network accessline 275
- Ableton Learning Synths: https://learningsynths.ableton.com - Network accessline 276
- Ableton Learning Music: https://learningmusic.ableton.com - Network accessline 277
- Hooktheory (chord progressions): https://www.hooktheory.com - Network accessline 278
- Tooling: - Chrome DevTools Protocol: https://chromedevtools.github.io/devtools-protocol/ - FFmpeg: https://ffmpeg.org/documentation.html - Network accessline 279
- Chrome DevTools Protocol: https://chromedevtools.github.io/devtools-protocol/ - Network accessline 280
- FFmpeg: https://ffmpeg.org/documentation.html - Network accessline 281
- Remotion (a React alternative, if the user wants it): https://www.remotion.dev - Dangerous shell operationline 618
| `python verify.py film.html eval "js" [t]` | Evaluates an expression in the recording page, optionally after `seek(t)`, and prints the JSON result. Use it to debug sizes, styles and state without guessing. | - Dangerous shell operationline 1410
python verify.py film.html eval "js" [t] evaluate an expression in the ?record page (after seek(t)) and print the JSON result, - Dangerous shell operationline 1411
e.g. eval "getComputedStyle(document.querySelector('#cT')).fontSize" 9.5 - Access to secretsline 1441
[Credential-related source omitted] - Network accessline 1452
def free_port(): s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Network accessline 1453
s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Possible obfuscationline 1523
return base64.b64decode(call('Page.captureScreenshot', p)['data']) - Possible obfuscationline 1633
fn = out / 'score.wav'; fn.write_bytes(base64.b64decode(b64)); print('score', fn, f'({fn.stat().st_size / 1e6:.1f} MB)') - Network accessline 1638
for _ in range(100): try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 1639
try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break except Exception: - Network accessline 1640
tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 1900
weights = [] if raw else [w.strip() for w in A.items[0].split(',') if w.strip()] axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if - Network accessline 1901
axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if A.italic else 'wght@' + ';'.join(weights) url = f'https://fonts.googleapis.com/cs - Network accessline 1902
url = f'https://fonts.googleapis.com/css2?family={A.family.replace(" ", "+")}:{axis}&display=block' css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() want = {s.strip() - Network accessline 1903
css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() - Network accessline 1907
if sub not in want: continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 1908
continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) wm = re.search(r'font-weight:\s*(\d+)(?:\s+(\d+))?', body); wt = wm.group(1) if not wm.group(2) else f'{wm.group(1)} {wm.group(2)}' - Network accessline 1909
src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 1915
if key in seen: # a variable font serves every weight from one file: embed it once, as a weight range seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, hea - Network accessline 1916
seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() seen[key] = [data, [int(w) for w in wt.split()], stl, ur.group( - Network accessline 1917
data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() - Access to secretsline 2110
[Credential-related source omitted]
motion-film/examples/low-tide-titles.html
motion-film/scripts/analyze.py
- Executable scriptline 1
#!/usr/bin/env python3
motion-film/scripts/fonts.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 33
weights = [] if raw else [w.strip() for w in A.items[0].split(',') if w.strip()] axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if - Network accessline 34
axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if A.italic else 'wght@' + ';'.join(weights) url = f'https://fonts.googleapis.com/cs - Network accessline 35
url = f'https://fonts.googleapis.com/css2?family={A.family.replace(" ", "+")}:{axis}&display=block' css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() want = {s.strip() - Network accessline 36
css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() - Network accessline 40
if sub not in want: continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 41
continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) wm = re.search(r'font-weight:\s*(\d+)(?:\s+(\d+))?', body); wt = wm.group(1) if not wm.group(2) else f'{wm.group(1)} {wm.group(2)}' - Network accessline 42
src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 48
if key in seen: # a variable font serves every weight from one file: embed it once, as a weight range seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, hea - Network accessline 49
seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() seen[key] = [data, [int(w) for w in wt.split()], stl, ur.group( - Network accessline 50
data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read()
motion-film/scripts/inline.py
- Executable scriptline 1
#!/usr/bin/env python3
motion-film/scripts/verify.py
- Executable scriptline 1
#!/usr/bin/env python3 - Dangerous shell operationline 15
python verify.py film.html eval "js" [t] evaluate an expression in the ?record page (after seek(t)) and print the JSON result, - Dangerous shell operationline 16
e.g. eval "getComputedStyle(document.querySelector('#cT')).fontSize" 9.5 - Access to secretsline 46
[Credential-related source omitted] - Network accessline 57
def free_port(): s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Network accessline 58
s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Possible obfuscationline 128
return base64.b64decode(call('Page.captureScreenshot', p)['data']) - Possible obfuscationline 238
fn = out / 'score.wav'; fn.write_bytes(base64.b64decode(b64)); print('score', fn, f'({fn.stat().st_size / 1e6:.1f} MB)') - Network accessline 243
for _ in range(100): try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 244
try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break except Exception: - Network accessline 245
tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break
motion-film/scripts/vo_timing.py
product-walkthrough/SKILL.md
- Network accessline 180
- Queries: `"kinetic typography breakdown"`, `"title sequence design"`, `"motion design principles"`, `"Disney twelve principles of animation examples"`, `"shape morph transition motion graphics"`, `"type as mask motion design"`. - Referenc - Network accessline 181
- References: - Art of the Title: https://www.artofthetitle.com - Motionographer: https://motionographer.com - Network accessline 182
- Art of the Title: https://www.artofthetitle.com - Network accessline 183
- Motionographer: https://motionographer.com - Network accessline 184
- School of Motion: https://www.schoolofmotion.com/blog - Network accessline 247
- **Craft resources (read whichever you need):** - Motion: - Material 3 motion: https://m3.material.io/styles/motion/overview - Network accessline 248
- Motion: - Material 3 motion: https://m3.material.io/styles/motion/overview - Apple HIG, Motion: https://developer.apple.com/design/human-interface-guidelines/motion - Network accessline 249
- Material 3 motion: https://m3.material.io/styles/motion/overview - Network accessline 250
- Apple HIG, Motion: https://developer.apple.com/design/human-interface-guidelines/motion - Network accessline 251
- IBM Carbon motion: https://carbondesignsystem.com/elements/motion/overview/ - Network accessline 252
- easings.net, cubic-bezier.com - GSAP ease visualizer: https://gsap.com/docs/v3/Eases - Twelve principles of animation: https://en.wikipedia.org/wiki/Twelve_basic_principles_of_animation - Network accessline 253
- GSAP ease visualizer: https://gsap.com/docs/v3/Eases - Network accessline 254
- Twelve principles of animation: https://en.wikipedia.org/wiki/Twelve_basic_principles_of_animation - Network accessline 255
- School of Motion: https://www.schoolofmotion.com/blog - Network accessline 256
- Typography: - Butterick's Practical Typography: https://practicaltypography.com - Google Fonts Knowledge: https://fonts.google.com/knowledge - Network accessline 257
- Butterick's Practical Typography: https://practicaltypography.com - Network accessline 258
- Google Fonts Knowledge: https://fonts.google.com/knowledge - Network accessline 259
- typescale.com - Josef Müller-Brockmann, *Grid Systems in Graphic Design* - Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Network accessline 260
- Josef Müller-Brockmann, *Grid Systems in Graphic Design* - Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Sound: - Network accessline 261
- Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Network accessline 262
- Sound: - MDN Web Audio API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API - "A tale of two clocks": https://web.dev/articles/audio-scheduling - Network accessline 263
- MDN Web Audio API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API - Network accessline 264
- "A tale of two clocks": https://web.dev/articles/audio-scheduling - Network accessline 265
- Ableton Learning Synths: https://learningsynths.ableton.com - Network accessline 266
- Ableton Learning Music: https://learningmusic.ableton.com - Network accessline 267
- Hooktheory: https://www.hooktheory.com - Network accessline 268
- Tooling: - Chrome DevTools Protocol: https://chromedevtools.github.io/devtools-protocol/ - FFmpeg: https://ffmpeg.org/documentation.html - Network accessline 269
- Chrome DevTools Protocol: https://chromedevtools.github.io/devtools-protocol/ - Network accessline 270
- FFmpeg: https://ffmpeg.org/documentation.html - Network accessline 271
- Remotion (if the user wants React): https://www.remotion.dev - Dangerous shell operationline 648
| `python verify.py film.html eval "js" [t]` | Evaluates an expression in the recording page, optionally after `seek(t)`, and prints the JSON result. Use it to debug sizes, styles and state without guessing. | - Dangerous shell operationline 1423
python verify.py film.html eval "js" [t] evaluate an expression in the ?record page (after seek(t)) and print the JSON result, - Dangerous shell operationline 1424
e.g. eval "getComputedStyle(document.querySelector('#cT')).fontSize" 9.5 - Access to secretsline 1454
[Credential-related source omitted] - Network accessline 1465
def free_port(): s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Network accessline 1466
s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Possible obfuscationline 1536
return base64.b64decode(call('Page.captureScreenshot', p)['data']) - Possible obfuscationline 1646
fn = out / 'score.wav'; fn.write_bytes(base64.b64decode(b64)); print('score', fn, f'({fn.stat().st_size / 1e6:.1f} MB)') - Network accessline 1651
for _ in range(100): try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 1652
try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break except Exception: - Network accessline 1653
tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 1913
weights = [] if raw else [w.strip() for w in A.items[0].split(',') if w.strip()] axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if - Network accessline 1914
axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if A.italic else 'wght@' + ';'.join(weights) url = f'https://fonts.googleapis.com/cs - Network accessline 1915
url = f'https://fonts.googleapis.com/css2?family={A.family.replace(" ", "+")}:{axis}&display=block' css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() want = {s.strip() - Network accessline 1916
css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() - Network accessline 1920
if sub not in want: continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 1921
continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) wm = re.search(r'font-weight:\s*(\d+)(?:\s+(\d+))?', body); wt = wm.group(1) if not wm.group(2) else f'{wm.group(1)} {wm.group(2)}' - Network accessline 1922
src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 1928
if key in seen: # a variable font serves every weight from one file: embed it once, as a weight range seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, hea - Network accessline 1929
seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() seen[key] = [data, [int(w) for w in wt.split()], stl, ur.group( - Network accessline 1930
data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() - Access to secretsline 2123
[Credential-related source omitted]
product-walkthrough/scripts/analyze.py
- Executable scriptline 1
#!/usr/bin/env python3
product-walkthrough/scripts/fonts.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 33
weights = [] if raw else [w.strip() for w in A.items[0].split(',') if w.strip()] axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if - Network accessline 34
axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if A.italic else 'wght@' + ';'.join(weights) url = f'https://fonts.googleapis.com/cs - Network accessline 35
url = f'https://fonts.googleapis.com/css2?family={A.family.replace(" ", "+")}:{axis}&display=block' css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() want = {s.strip() - Network accessline 36
css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() - Network accessline 40
if sub not in want: continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 41
continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) wm = re.search(r'font-weight:\s*(\d+)(?:\s+(\d+))?', body); wt = wm.group(1) if not wm.group(2) else f'{wm.group(1)} {wm.group(2)}' - Network accessline 42
src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 48
if key in seen: # a variable font serves every weight from one file: embed it once, as a weight range seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, hea - Network accessline 49
seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() seen[key] = [data, [int(w) for w in wt.split()], stl, ur.group( - Network accessline 50
data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read()
product-walkthrough/scripts/inline.py
- Executable scriptline 1
#!/usr/bin/env python3
product-walkthrough/scripts/verify.py
- Executable scriptline 1
#!/usr/bin/env python3 - Dangerous shell operationline 15
python verify.py film.html eval "js" [t] evaluate an expression in the ?record page (after seek(t)) and print the JSON result, - Dangerous shell operationline 16
e.g. eval "getComputedStyle(document.querySelector('#cT')).fontSize" 9.5 - Access to secretsline 46
[Credential-related source omitted] - Network accessline 57
def free_port(): s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Network accessline 58
s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Possible obfuscationline 128
return base64.b64decode(call('Page.captureScreenshot', p)['data']) - Possible obfuscationline 238
fn = out / 'score.wav'; fn.write_bytes(base64.b64decode(b64)); print('score', fn, f'({fn.stat().st_size / 1e6:.1f} MB)') - Network accessline 243
for _ in range(100): try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 244
try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break except Exception: - Network accessline 245
tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break
product-walkthrough/scripts/vo_timing.py
social-ad/SKILL.md
- Network accessline 180
- Queries: `"kinetic typography breakdown"`, `"title sequence design"`, `"motion design principles"`, `"Disney twelve principles of animation examples"`, `"shape morph transition motion graphics"`, `"type as mask motion design"`. - Referenc - Network accessline 181
- References: - Art of the Title: https://www.artofthetitle.com - Motionographer: https://motionographer.com - Network accessline 182
- Art of the Title: https://www.artofthetitle.com - Network accessline 183
- Motionographer: https://motionographer.com - Network accessline 184
- School of Motion: https://www.schoolofmotion.com/blog - Network accessline 246
- **Craft resources (read whichever you need):** - Motion: - Material 3 motion: https://m3.material.io/styles/motion/overview - Network accessline 247
- Motion: - Material 3 motion: https://m3.material.io/styles/motion/overview - Apple HIG, Motion: https://developer.apple.com/design/human-interface-guidelines/motion - Network accessline 248
- Material 3 motion: https://m3.material.io/styles/motion/overview - Network accessline 249
- Apple HIG, Motion: https://developer.apple.com/design/human-interface-guidelines/motion - Network accessline 250
- IBM Carbon motion: https://carbondesignsystem.com/elements/motion/overview/ - Network accessline 251
- easings.net, cubic-bezier.com - GSAP ease visualizer: https://gsap.com/docs/v3/Eases - Twelve principles of animation: https://en.wikipedia.org/wiki/Twelve_basic_principles_of_animation - Network accessline 252
- GSAP ease visualizer: https://gsap.com/docs/v3/Eases - Network accessline 253
- Twelve principles of animation: https://en.wikipedia.org/wiki/Twelve_basic_principles_of_animation - Network accessline 254
- School of Motion: https://www.schoolofmotion.com/blog - Network accessline 255
- Typography: - Butterick's Practical Typography: https://practicaltypography.com - Google Fonts Knowledge: https://fonts.google.com/knowledge - Network accessline 256
- Butterick's Practical Typography: https://practicaltypography.com - Network accessline 257
- Google Fonts Knowledge: https://fonts.google.com/knowledge - Network accessline 258
- typescale.com - Josef Müller-Brockmann, *Grid Systems in Graphic Design* - Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Network accessline 259
- Josef Müller-Brockmann, *Grid Systems in Graphic Design* - Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Sound: - Network accessline 260
- Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Network accessline 261
- Sound: - MDN Web Audio API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API - "A tale of two clocks": https://web.dev/articles/audio-scheduling - Network accessline 262
- MDN Web Audio API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API - Network accessline 263
- "A tale of two clocks": https://web.dev/articles/audio-scheduling - Network accessline 264
- Ableton Learning Synths: https://learningsynths.ableton.com - Network accessline 265
- Ableton Learning Music: https://learningmusic.ableton.com - Network accessline 266
- Hooktheory: https://www.hooktheory.com - Network accessline 267
- Tooling: - Chrome DevTools Protocol: https://chromedevtools.github.io/devtools-protocol/ - FFmpeg: https://ffmpeg.org/documentation.html - Network accessline 268
- Chrome DevTools Protocol: https://chromedevtools.github.io/devtools-protocol/ - Network accessline 269
- FFmpeg: https://ffmpeg.org/documentation.html - Network accessline 270
- Remotion (if the user wants React): https://www.remotion.dev - Dangerous shell operationline 640
| `python verify.py film.html eval "js" [t]` | Evaluates an expression in the recording page, optionally after `seek(t)`, and prints the JSON result. Use it to debug sizes, styles and state without guessing. | - Dangerous shell operationline 1344
python verify.py film.html eval "js" [t] evaluate an expression in the ?record page (after seek(t)) and print the JSON result, - Dangerous shell operationline 1345
e.g. eval "getComputedStyle(document.querySelector('#cT')).fontSize" 9.5 - Access to secretsline 1375
[Credential-related source omitted] - Network accessline 1386
def free_port(): s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Network accessline 1387
s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Possible obfuscationline 1457
return base64.b64decode(call('Page.captureScreenshot', p)['data']) - Possible obfuscationline 1567
fn = out / 'score.wav'; fn.write_bytes(base64.b64decode(b64)); print('score', fn, f'({fn.stat().st_size / 1e6:.1f} MB)') - Network accessline 1572
for _ in range(100): try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 1573
try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break except Exception: - Network accessline 1574
tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 1834
weights = [] if raw else [w.strip() for w in A.items[0].split(',') if w.strip()] axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if - Network accessline 1835
axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if A.italic else 'wght@' + ';'.join(weights) url = f'https://fonts.googleapis.com/cs - Network accessline 1836
url = f'https://fonts.googleapis.com/css2?family={A.family.replace(" ", "+")}:{axis}&display=block' css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() want = {s.strip() - Network accessline 1837
css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() - Network accessline 1841
if sub not in want: continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 1842
continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) wm = re.search(r'font-weight:\s*(\d+)(?:\s+(\d+))?', body); wt = wm.group(1) if not wm.group(2) else f'{wm.group(1)} {wm.group(2)}' - Network accessline 1843
src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 1849
if key in seen: # a variable font serves every weight from one file: embed it once, as a weight range seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, hea - Network accessline 1850
seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() seen[key] = [data, [int(w) for w in wt.split()], stl, ur.group( - Network accessline 1851
data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() - Access to secretsline 2044
[Credential-related source omitted]
social-ad/scripts/analyze.py
- Executable scriptline 1
#!/usr/bin/env python3
social-ad/scripts/fonts.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 33
weights = [] if raw else [w.strip() for w in A.items[0].split(',') if w.strip()] axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if - Network accessline 34
axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if A.italic else 'wght@' + ';'.join(weights) url = f'https://fonts.googleapis.com/cs - Network accessline 35
url = f'https://fonts.googleapis.com/css2?family={A.family.replace(" ", "+")}:{axis}&display=block' css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() want = {s.strip() - Network accessline 36
css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() - Network accessline 40
if sub not in want: continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 41
continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) wm = re.search(r'font-weight:\s*(\d+)(?:\s+(\d+))?', body); wt = wm.group(1) if not wm.group(2) else f'{wm.group(1)} {wm.group(2)}' - Network accessline 42
src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 48
if key in seen: # a variable font serves every weight from one file: embed it once, as a weight range seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, hea - Network accessline 49
seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() seen[key] = [data, [int(w) for w in wt.split()], stl, ur.group( - Network accessline 50
data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read()
social-ad/scripts/inline.py
- Executable scriptline 1
#!/usr/bin/env python3
social-ad/scripts/verify.py
- Executable scriptline 1
#!/usr/bin/env python3 - Dangerous shell operationline 15
python verify.py film.html eval "js" [t] evaluate an expression in the ?record page (after seek(t)) and print the JSON result, - Dangerous shell operationline 16
e.g. eval "getComputedStyle(document.querySelector('#cT')).fontSize" 9.5 - Access to secretsline 46
[Credential-related source omitted] - Network accessline 57
def free_port(): s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Network accessline 58
s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Possible obfuscationline 128
return base64.b64decode(call('Page.captureScreenshot', p)['data']) - Possible obfuscationline 238
fn = out / 'score.wav'; fn.write_bytes(base64.b64decode(b64)); print('score', fn, f'({fn.stat().st_size / 1e6:.1f} MB)') - Network accessline 243
for _ in range(100): try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 244
try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break except Exception: - Network accessline 245
tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break
social-ad/scripts/vo_timing.py
testimonial-video/SKILL.md
- Network accessline 180
- Queries: `"kinetic typography breakdown"`, `"title sequence design"`, `"motion design principles"`, `"Disney twelve principles of animation examples"`, `"shape morph transition motion graphics"`, `"type as mask motion design"`. - Referenc - Network accessline 181
- References: - Art of the Title: https://www.artofthetitle.com - Motionographer: https://motionographer.com - Network accessline 182
- Art of the Title: https://www.artofthetitle.com - Network accessline 183
- Motionographer: https://motionographer.com - Network accessline 184
- School of Motion: https://www.schoolofmotion.com/blog - Network accessline 247
- **Craft resources (read whichever you need):** - Motion: - Material 3 motion: https://m3.material.io/styles/motion/overview - Network accessline 248
- Motion: - Material 3 motion: https://m3.material.io/styles/motion/overview - Apple HIG, Motion: https://developer.apple.com/design/human-interface-guidelines/motion - Network accessline 249
- Material 3 motion: https://m3.material.io/styles/motion/overview - Network accessline 250
- Apple HIG, Motion: https://developer.apple.com/design/human-interface-guidelines/motion - Network accessline 251
- IBM Carbon motion: https://carbondesignsystem.com/elements/motion/overview/ - Network accessline 252
- easings.net, cubic-bezier.com - GSAP ease visualizer: https://gsap.com/docs/v3/Eases - Twelve principles of animation: https://en.wikipedia.org/wiki/Twelve_basic_principles_of_animation - Network accessline 253
- GSAP ease visualizer: https://gsap.com/docs/v3/Eases - Network accessline 254
- Twelve principles of animation: https://en.wikipedia.org/wiki/Twelve_basic_principles_of_animation - Network accessline 255
- School of Motion: https://www.schoolofmotion.com/blog - Network accessline 256
- Typography: - Butterick's Practical Typography: https://practicaltypography.com - Google Fonts Knowledge: https://fonts.google.com/knowledge - Network accessline 257
- Butterick's Practical Typography: https://practicaltypography.com - Network accessline 258
- Google Fonts Knowledge: https://fonts.google.com/knowledge - Network accessline 259
- typescale.com - Josef Müller-Brockmann, *Grid Systems in Graphic Design* - Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Network accessline 260
- Josef Müller-Brockmann, *Grid Systems in Graphic Design* - Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Sound: - Network accessline 261
- Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Network accessline 262
- Sound: - MDN Web Audio API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API - "A tale of two clocks": https://web.dev/articles/audio-scheduling - Network accessline 263
- MDN Web Audio API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API - Network accessline 264
- "A tale of two clocks": https://web.dev/articles/audio-scheduling - Network accessline 265
- Ableton Learning Synths: https://learningsynths.ableton.com - Network accessline 266
- Ableton Learning Music: https://learningmusic.ableton.com - Network accessline 267
- Hooktheory: https://www.hooktheory.com - Network accessline 268
- Tooling: - Chrome DevTools Protocol: https://chromedevtools.github.io/devtools-protocol/ - FFmpeg: https://ffmpeg.org/documentation.html - Network accessline 269
- Chrome DevTools Protocol: https://chromedevtools.github.io/devtools-protocol/ - Network accessline 270
- FFmpeg: https://ffmpeg.org/documentation.html - Network accessline 271
- Remotion (if the user wants React): https://www.remotion.dev - Dangerous shell operationline 649
| `python verify.py film.html eval "js" [t]` | Evaluates an expression in the recording page, optionally after `seek(t)`, and prints the JSON result. Use it to debug sizes, styles and state without guessing. | - Dangerous shell operationline 1338
python verify.py film.html eval "js" [t] evaluate an expression in the ?record page (after seek(t)) and print the JSON result, - Dangerous shell operationline 1339
e.g. eval "getComputedStyle(document.querySelector('#cT')).fontSize" 9.5 - Access to secretsline 1369
[Credential-related source omitted] - Network accessline 1380
def free_port(): s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Network accessline 1381
s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Possible obfuscationline 1451
return base64.b64decode(call('Page.captureScreenshot', p)['data']) - Possible obfuscationline 1561
fn = out / 'score.wav'; fn.write_bytes(base64.b64decode(b64)); print('score', fn, f'({fn.stat().st_size / 1e6:.1f} MB)') - Network accessline 1566
for _ in range(100): try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 1567
try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break except Exception: - Network accessline 1568
tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 1828
weights = [] if raw else [w.strip() for w in A.items[0].split(',') if w.strip()] axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if - Network accessline 1829
axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if A.italic else 'wght@' + ';'.join(weights) url = f'https://fonts.googleapis.com/cs - Network accessline 1830
url = f'https://fonts.googleapis.com/css2?family={A.family.replace(" ", "+")}:{axis}&display=block' css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() want = {s.strip() - Network accessline 1831
css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() - Network accessline 1835
if sub not in want: continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 1836
continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) wm = re.search(r'font-weight:\s*(\d+)(?:\s+(\d+))?', body); wt = wm.group(1) if not wm.group(2) else f'{wm.group(1)} {wm.group(2)}' - Network accessline 1837
src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 1843
if key in seen: # a variable font serves every weight from one file: embed it once, as a weight range seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, hea - Network accessline 1844
seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() seen[key] = [data, [int(w) for w in wt.split()], stl, ur.group( - Network accessline 1845
data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() - Access to secretsline 2038
[Credential-related source omitted]
testimonial-video/scripts/analyze.py
- Executable scriptline 1
#!/usr/bin/env python3
testimonial-video/scripts/fonts.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 33
weights = [] if raw else [w.strip() for w in A.items[0].split(',') if w.strip()] axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if - Network accessline 34
axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if A.italic else 'wght@' + ';'.join(weights) url = f'https://fonts.googleapis.com/cs - Network accessline 35
url = f'https://fonts.googleapis.com/css2?family={A.family.replace(" ", "+")}:{axis}&display=block' css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() want = {s.strip() - Network accessline 36
css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() - Network accessline 40
if sub not in want: continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 41
continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) wm = re.search(r'font-weight:\s*(\d+)(?:\s+(\d+))?', body); wt = wm.group(1) if not wm.group(2) else f'{wm.group(1)} {wm.group(2)}' - Network accessline 42
src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 48
if key in seen: # a variable font serves every weight from one file: embed it once, as a weight range seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, hea - Network accessline 49
seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() seen[key] = [data, [int(w) for w in wt.split()], stl, ur.group( - Network accessline 50
data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read()
testimonial-video/scripts/inline.py
- Executable scriptline 1
#!/usr/bin/env python3
testimonial-video/scripts/verify.py
- Executable scriptline 1
#!/usr/bin/env python3 - Dangerous shell operationline 15
python verify.py film.html eval "js" [t] evaluate an expression in the ?record page (after seek(t)) and print the JSON result, - Dangerous shell operationline 16
e.g. eval "getComputedStyle(document.querySelector('#cT')).fontSize" 9.5 - Access to secretsline 46
[Credential-related source omitted] - Network accessline 57
def free_port(): s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Network accessline 58
s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Possible obfuscationline 128
return base64.b64decode(call('Page.captureScreenshot', p)['data']) - Possible obfuscationline 238
fn = out / 'score.wav'; fn.write_bytes(base64.b64decode(b64)); print('score', fn, f'({fn.stat().st_size / 1e6:.1f} MB)') - Network accessline 243
for _ in range(100): try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 244
try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break except Exception: - Network accessline 245
tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break
testimonial-video/scripts/vo_timing.py
tutorial-video/SKILL.md
- Network accessline 180
- Queries: `"kinetic typography breakdown"`, `"title sequence design"`, `"motion design principles"`, `"Disney twelve principles of animation examples"`, `"shape morph transition motion graphics"`, `"type as mask motion design"`. - Referenc - Network accessline 181
- References: - Art of the Title: https://www.artofthetitle.com - Motionographer: https://motionographer.com - Network accessline 182
- Art of the Title: https://www.artofthetitle.com - Network accessline 183
- Motionographer: https://motionographer.com - Network accessline 184
- School of Motion: https://www.schoolofmotion.com/blog - Network accessline 248
- **Craft resources (read whichever you need):** - Motion: - Material 3 motion: https://m3.material.io/styles/motion/overview - Network accessline 249
- Motion: - Material 3 motion: https://m3.material.io/styles/motion/overview - Apple HIG, Motion: https://developer.apple.com/design/human-interface-guidelines/motion - Network accessline 250
- Material 3 motion: https://m3.material.io/styles/motion/overview - Network accessline 251
- Apple HIG, Motion: https://developer.apple.com/design/human-interface-guidelines/motion - Network accessline 252
- IBM Carbon motion: https://carbondesignsystem.com/elements/motion/overview/ - Network accessline 253
- easings.net, cubic-bezier.com - GSAP ease visualizer: https://gsap.com/docs/v3/Eases - Twelve principles of animation: https://en.wikipedia.org/wiki/Twelve_basic_principles_of_animation - Network accessline 254
- GSAP ease visualizer: https://gsap.com/docs/v3/Eases - Network accessline 255
- Twelve principles of animation: https://en.wikipedia.org/wiki/Twelve_basic_principles_of_animation - Network accessline 256
- School of Motion: https://www.schoolofmotion.com/blog - Network accessline 257
- Typography: - Butterick's Practical Typography: https://practicaltypography.com - Google Fonts Knowledge: https://fonts.google.com/knowledge - Network accessline 258
- Butterick's Practical Typography: https://practicaltypography.com - Network accessline 259
- Google Fonts Knowledge: https://fonts.google.com/knowledge - Network accessline 260
- typescale.com - Josef Müller-Brockmann, *Grid Systems in Graphic Design* - Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Network accessline 261
- Josef Müller-Brockmann, *Grid Systems in Graphic Design* - Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Sound: - Network accessline 262
- Colour and contrast: WebAIM contrast checker, https://webaim.org/resources/contrastchecker/ - Network accessline 263
- Sound: - MDN Web Audio API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API - "A tale of two clocks": https://web.dev/articles/audio-scheduling - Network accessline 264
- MDN Web Audio API: https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API - Network accessline 265
- "A tale of two clocks": https://web.dev/articles/audio-scheduling - Network accessline 266
- Ableton Learning Synths: https://learningsynths.ableton.com - Network accessline 267
- Ableton Learning Music: https://learningmusic.ableton.com - Network accessline 268
- Hooktheory: https://www.hooktheory.com - Network accessline 269
- Tooling: - Chrome DevTools Protocol: https://chromedevtools.github.io/devtools-protocol/ - FFmpeg: https://ffmpeg.org/documentation.html - Network accessline 270
- Chrome DevTools Protocol: https://chromedevtools.github.io/devtools-protocol/ - Network accessline 271
- FFmpeg: https://ffmpeg.org/documentation.html - Network accessline 272
- Remotion (if the user wants React): https://www.remotion.dev - Dangerous shell operationline 641
| `python verify.py film.html eval "js" [t]` | Evaluates an expression in the recording page, optionally after `seek(t)`, and prints the JSON result. Use it to debug sizes, styles and state without guessing. | - Dangerous shell operationline 1410
python verify.py film.html eval "js" [t] evaluate an expression in the ?record page (after seek(t)) and print the JSON result, - Dangerous shell operationline 1411
e.g. eval "getComputedStyle(document.querySelector('#cT')).fontSize" 9.5 - Access to secretsline 1441
[Credential-related source omitted] - Network accessline 1452
def free_port(): s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Network accessline 1453
s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Possible obfuscationline 1523
return base64.b64decode(call('Page.captureScreenshot', p)['data']) - Possible obfuscationline 1633
fn = out / 'score.wav'; fn.write_bytes(base64.b64decode(b64)); print('score', fn, f'({fn.stat().st_size / 1e6:.1f} MB)') - Network accessline 1638
for _ in range(100): try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 1639
try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break except Exception: - Network accessline 1640
tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 1900
weights = [] if raw else [w.strip() for w in A.items[0].split(',') if w.strip()] axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if - Network accessline 1901
axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if A.italic else 'wght@' + ';'.join(weights) url = f'https://fonts.googleapis.com/cs - Network accessline 1902
url = f'https://fonts.googleapis.com/css2?family={A.family.replace(" ", "+")}:{axis}&display=block' css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() want = {s.strip() - Network accessline 1903
css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() - Network accessline 1907
if sub not in want: continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 1908
continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) wm = re.search(r'font-weight:\s*(\d+)(?:\s+(\d+))?', body); wt = wm.group(1) if not wm.group(2) else f'{wm.group(1)} {wm.group(2)}' - Network accessline 1909
src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 1915
if key in seen: # a variable font serves every weight from one file: embed it once, as a weight range seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, hea - Network accessline 1916
seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() seen[key] = [data, [int(w) for w in wt.split()], stl, ur.group( - Network accessline 1917
data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() - Access to secretsline 2110
[Credential-related source omitted]
tutorial-video/scripts/analyze.py
- Executable scriptline 1
#!/usr/bin/env python3
tutorial-video/scripts/fonts.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 33
weights = [] if raw else [w.strip() for w in A.items[0].split(',') if w.strip()] axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if - Network accessline 34
axis = A.items[0].replace(' ', '') if raw else 'ital,wght@' + ';'.join([f'0,{w}' for w in weights] + ([f'1,{w}' for w in weights] if A.italic else [])) if A.italic else 'wght@' + ';'.join(weights) url = f'https://fonts.googleapis.com/cs - Network accessline 35
url = f'https://fonts.googleapis.com/css2?family={A.family.replace(" ", "+")}:{axis}&display=block' css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() want = {s.strip() - Network accessline 36
css = urllib.request.urlopen(urllib.request.Request(url, headers={'User-Agent': UA}), timeout=30).read().decode() - Network accessline 40
if sub not in want: continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 41
continue src = re.search(r'url\((https://[^)]+)\)', body).group(1) wm = re.search(r'font-weight:\s*(\d+)(?:\s+(\d+))?', body); wt = wm.group(1) if not wm.group(2) else f'{wm.group(1)} {wm.group(2)}' - Network accessline 42
src = re.search(r'url\((https://[^)]+)\)', body).group(1) - Network accessline 48
if key in seen: # a variable font serves every weight from one file: embed it once, as a weight range seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, hea - Network accessline 49
seen[key][1] += [int(w) for w in wt.split()]; continue data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read() seen[key] = [data, [int(w) for w in wt.split()], stl, ur.group( - Network accessline 50
data = urllib.request.urlopen(urllib.request.Request(src, headers={'User-Agent': UA}), timeout=30).read()
tutorial-video/scripts/inline.py
- Executable scriptline 1
#!/usr/bin/env python3
tutorial-video/scripts/verify.py
- Executable scriptline 1
#!/usr/bin/env python3 - Dangerous shell operationline 15
python verify.py film.html eval "js" [t] evaluate an expression in the ?record page (after seek(t)) and print the JSON result, - Dangerous shell operationline 16
e.g. eval "getComputedStyle(document.querySelector('#cT')).fontSize" 9.5 - Access to secretsline 46
[Credential-related source omitted] - Network accessline 57
def free_port(): s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Network accessline 58
s = socket.socket(); s.bind(('127.0.0.1', 0)); p = s.getsockname()[1]; s.close(); return p - Possible obfuscationline 128
return base64.b64decode(call('Page.captureScreenshot', p)['data']) - Possible obfuscationline 238
fn = out / 'score.wav'; fn.write_bytes(base64.b64decode(b64)); print('score', fn, f'({fn.stat().st_size / 1e6:.1f} MB)') - Network accessline 243
for _ in range(100): try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break - Network accessline 244
try: tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break except Exception: - Network accessline 245
tab = next(t for t in json.loads(urllib.request.urlopen(f'http://127.0.0.1:{port}/json', timeout=2).read()) if t['type'] == 'page'); break
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Signal confidence: 500 facts
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:180Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:181Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:182Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:183Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:184Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:249Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:250Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:251Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:252Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:253Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:254Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:255Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:256Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:257Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:258Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:259Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:260Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:261Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:262Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:263Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:264Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:265Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:266Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:267Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:268Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:269Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:270Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:271Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:272Low confidence
- Network access in prose of the SKILL.mdbrand-film/SKILL.md:273Low confidence
- Dangerous shell operation in prose of the SKILL.mdbrand-film/SKILL.md:649Low confidence
- Dangerous shell operation in code of the SKILL.mdbrand-film/SKILL.md:1333High confidence
- Dangerous shell operation in code of the SKILL.mdbrand-film/SKILL.md:1334High confidence
- Access to secrets in code of the SKILL.md: a variable, placeholder or call, not a stored valuebrand-film/SKILL.md:1364Low confidence
- Network access in code of the SKILL.mdbrand-film/SKILL.md:1375High confidence
- Network access in code of the SKILL.mdbrand-film/SKILL.md:1376High confidence
- Possible obfuscation in code of the SKILL.mdbrand-film/SKILL.md:1446High confidence
- Possible obfuscation in code of the SKILL.mdbrand-film/SKILL.md:1556High confidence
- Network access in code of the SKILL.mdbrand-film/SKILL.md:1561High confidence
- Network access in code of the SKILL.mdbrand-film/SKILL.md:1562High confidence
- Network access in code of the SKILL.mdbrand-film/SKILL.md:1563High confidence
- Network access in code of the SKILL.mdbrand-film/SKILL.md:1823High confidence
- Network access in code of the SKILL.mdbrand-film/SKILL.md:1824High confidence
- Network access in code of the SKILL.mdbrand-film/SKILL.md:1825High confidence
- Network access in code of the SKILL.mdbrand-film/SKILL.md:1826High confidence
- Network access in code of the SKILL.mdbrand-film/SKILL.md:1830High confidence
- Network access in code of the SKILL.mdbrand-film/SKILL.md:1831High confidence
- Network access in code of the SKILL.mdbrand-film/SKILL.md:1832High confidence
- Network access in code of the SKILL.mdbrand-film/SKILL.md:1838High confidence
- Network access in code of the SKILL.mdbrand-film/SKILL.md:1839High confidence
and 450 more
Only the first 500 facts are listed.
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md brand-film/SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md brand-film/SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md brand-film/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md brand-film/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md brand-film/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md brand-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.