scenario-fan-cam
Use when putting a person from a photo into live-broadcast crowd footage with Scenario: a stadium or arena fan-cam reaction, a jumbotron or kiss-cam moment, a spectator cutaway at a match or concert, a courtside or front-row sighting, or a personalized sports-TV still that then animates into video.
Install / Use
npx skills add scenario-labs/skills --skill scenario-fan-camInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
Development & EngineeringSupported Platforms
Our assessment of scenario-fan-cam
scenario-fan-cam scores 82/100 on our quality scale, 3369th of 4,647 Development & Engineering skills we index.
Its SKILL.md is 8.4 KB long, split into 5 sections and no code examples: a thorough specification that gives an agent plenty to work with.
With 1,048 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated 8 days ago, so scenario-fan-cam is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
scenario-fan-cam compared with similar skills
All 4 of these similar skills score higher than scenario-fan-cam; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| scenario-fan-cam (this skill)by scenario-labs | 82 | 1.0k | 8d ago | SKILL.md |
| LocalAIby mudler | 100 | 50.0k | today | MCP Server |
| algorithmic-artby anthropics | 100 | 177.9k | 34d ago | SKILL.md |
| pptxby anthropics | 100 | 177.9k | 34d ago | SKILL.md |
| math-olympiadby anthropics | 100 | 43.1k | 8d ago | SKILL.md |
Frequently asked questions
- How do I install scenario-fan-cam?
- Run
npx skills add scenario-labs/skills --skill scenario-fan-cam. The install tabs above show the steps for each supported agent. - Which AI agents does scenario-fan-cam work with?
- It is written for Zed, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is scenario-fan-cam safe to use?
- It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is scenario-fan-cam still maintained?
- The repository was last updated 8 days ago, so scenario-fan-cam is actively maintained.
Skill content
View source on GitHubname: scenario-fan-cam description: "Use when putting a person from a photo into live-broadcast crowd footage with Scenario: a stadium or arena fan-cam reaction, a jumbotron or kiss-cam moment, a spectator cutaway at a match or concert, a courtside or front-row sighting, or a personalized sports-TV still that then animates into video. Keywords: fan cam, crowd reaction, jumbotron, stadium screen, kiss cam, broadcast cutaway, spectator, crowd shot, sports TV, courtside, arena." license: MIT
Scenario Fan Cam
Overview
A fan cam is a two-stage build: an identity-preserving image edit places the person into a 16:9 broadcast still, and image-to-video animates the approved still into a reaction. The uploaded photo is an identity reference, never a start frame: feeding it straight to a video model animates a portrait, not a broadcast. Stage one is cheap and stage two is not, so the still carries every decision worth approving.
Use only photos of the user or of people who gave them permission; refuse celebrity or stranger
insertions. Real faces also trip provider filters more than most subjects: on a block, see
scenario-moderation. Connection and the core loop: see the scenario skill in this repo. If a
sibling skill named here is missing from your available skills, ask the user to install it
(npx skills add scenario-labs/skills --skill <name>); unattended, proceed from tool schemas and
flag the gap.
Quick reference
Discover members with recommend, passing the stage's capability and the user's own words: it ranks
by measured cost and latency and names the purpose-built pick, where a capability-worded search
returns hundreds of keyword hits with nothing to choose between them. Read next_step before taking
a pick, per the scenario skill. Keep search for a member you can already name. Never assert a
generative model's id as a constant. Scenario's own single-purpose tool models are named outright
below: there is exactly one of each, so discovering them would only re-derive a constant.
| Stage | What happens | Detail |
| ----------------- | -------------------------------------------------------------------------------- | -------------------------------------------------- |
| 1. Identity still | Image-edit member (img2img) composites the person into a 16:9 crowd frame | scenario-image, scenario-consistency |
| 2. Still gate | Likeness checked against the photo before any video money is spent | scenario-asset-analysis |
| 3. Animate | Image-to-video from the approved still, reaction beats, one camera move | scenario-kling, scenario-video |
| 4. Identity gate | Frames extracted from the clip, compared to the approved still | scenario-asset-analysis |
| 5. Overlays | Score strip, channel bug, lower third composited as post layers, never generated | scenario-text-overlay, scenario-video-assembly |
| 6. Derivatives | 9:16 and 1:1 social cuts off the 16:9 master | scenario-formats |
Broadcast grammar is what sells the shot, so prompt it explicitly at both stages: long-lens compression with the crowd defocused in front and behind, harsh stadium floodlight or arena strobe, slight motion blur, the camera hunting and reframing as it finds the subject. Keep the person mid-ground among other fans, off-center, at broadcast camera height. A centered, well-lit, eye-level subject reads as a photoshoot in a stadium, not a cutaway.
Give the reaction an arc rather than a state: oblivious, then noticing the camera or the screen, then the reaction the user asked for (cheering, laughing, disbelief, heartbreak). Multi-beat prompting per the video family's contract keeps the turn inside one clip.
Worked example: caught on the stadium screen, 8 seconds
- Collect the photo, the sport or event, venue mood, wardrobe, and the wanted reaction.
upload_assetthe photo once and reuse the returned asset id. - Create this run's collection before the first generation (
collection_create, catalog write lane,nameonly), thencollection_add_assetseach keeper as it lands; its returneditemCountis the receipt. recommendwithcapability="img2img"and the placement described in words; prefer a ranked entry that takes several reference images, and readmodel_schema_getfor those inputs (scenario-imagefor the lane,scenario-consistencyfor reference discipline).- Edit prompt: "the person from the reference image seated mid-crowd at a floodlit football stadium, 16:9 television cutaway, long-lens crowd compression, no text, logos, or graphics in frame". Keep the plate text-free: overlays come later.
- Gate the still:
asset_displayit for approval, and inventory the likeness features that must hold (face geometry, hairline, skin tone, wardrobe) with the analysis lane fromscenario-asset-analysis; a change in any inventoried feature fails. Unattended, that inventory stands in for the user's sign-off. recommendwithcapability="img2video"and the reaction described in words, then check the pick againstscenario-klingorscenario-video. The brief's length filters members:durationis usually a fixed enum a member either reaches or does not, and the tiers that reach it sit far apart on price, somodel_schema_geteach candidate and compare withmodel_rundry_run=true.- Run with the approved still as the start image and two beats: "she chats, unaware" then "she
spots herself on the stadium screen, stands, and cheers", one slow reframing move,
wait=false, thenjobs_waitre-called withpending_job_idson timeout, never a secondmodel_run. - Check the clip against the approved still on frames the platform produced: the free
firstFrameandlastFrameoffasset_getfirst, thenmodel_scenario-video-to-image-seqfor a mid-clip frame (a tool-model lane perscenario-video-editing). A local extraction is not a substitute at any budget, because it yields no asset to file or audit and the gate stops being traceable. A change in any inventoried feature fails the clip, and so does legible generated type: ribbon boards and jumbotron glyphs creep in even against a no-text prompt, worst late in the clip. The retry starts from the same still, never from the drifted output. - Assemble on-platform with
model_scenario-compose-video(a tool-model lane perscenario-video-assembly), layering the score strip and channel bug fromscenario-text-overlayin the safe corners; a local editor is the wrong lane. Give every overlay layer an explicitwidthandheight, since leaving them empty is documented as native size and does not hold, and pindurationMode: "custom"to the clip's length, since an image layer otherwise stretches the composition past it. A succeeded compose job is not proof the layers drew: pull a frame from the composite (the freefirstFrame) and confirm every layer is present and placed before delivering. Then cut 9:16 perscenario-formats, a resize rather than a reframe, whose video members outpaint a wider frame instead of cutting one. Itscovermode crops from the center, so when the subject sits off-center put the master on a 9:16 compositor canvas positioned to hold them instead.asset_displayboth.
Common mistakes
- Animating the uploaded photo directly: the mandatory stage is the broadcast still; skip it only when the user hands over an already approved 16:9 frame.
- Letting the image or video model render the scoreboard, channel bug, or jersey sponsor text: generated type drifts frame to frame; composite graphics in post on a text-free plate.
- Portrait staging: centered subject, flattering light, and empty seats around them break the documentary read; bury them in a reacting crowd.
- Judging likeness from one glance at the moving clip: drift hides between glances; run the frame-extract gate.
- Retrying from a drifted clip instead of the approved still: errors compound.
- Composing the master at 9:16: broadcast is 16:9; verticals are derivatives.
- A flat emotional state for the whole clip: without the notice-then-react turn, the result is a looping portrait, not a fan cam.
- Compound camera moves: one reframing drift; the crowd and the reaction supply the motion.
Related Skills
LocalAI
50.0kLocalAI is the open-source AI engine. Run any model - LLMs, vision, voice, image, video - on any hardware. No GPU required.
algorithmic-art
177.9kCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems.
pptx
177.9kUse this skill any time a .pptx or .potx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx or .potx file (even if the extracted content will be used elsewhere, like in an em…
math-olympiad
43.1k"Solve competition math problems (IMO, Putnam, USAMO, AIME) with adversarial verification that catches the errors self-verification misses.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
