Photos
codewhale-hq/Codewhale
Search a local macOS Photos library and export selected copies when the user asks to find or use their own photos.
A skill your agent uses 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…
$ npx skills add scenario-labs/skills --skill scenario-fan-cam -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install scenario-labs/skills scenario-fan-cam --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/scenario-labs/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/scenario-fan-cam .claude/skills/scenario-fan-cam && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "scenario-fan-cam" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/scenario-fan-cam into .claude/skills/scenario-fan-cam/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-fan-cam", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/scenario-labs/skills/tree/main/skills/scenario-fan-camType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add scenario-labs/skills --skill scenario-fan-cam -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install scenario-labs/skills scenario-fan-cam --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/scenario-labs/skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/scenario-fan-cam .agents/skills/scenario-fan-cam && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "scenario-fan-cam" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/scenario-fan-cam into .agents/skills/scenario-fan-cam/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-fan-cam", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add scenario-labs/skills --skill scenario-fan-cam -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install scenario-labs/skills scenario-fan-cam --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/scenario-labs/skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/scenario-fan-cam .cursor/skills/scenario-fan-cam && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "scenario-fan-cam" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/scenario-fan-cam into .cursor/skills/scenario-fan-cam/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-fan-cam", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/scenario-labs/skills.git --path skills/scenario-fan-cam--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add scenario-labs/skills --skill scenario-fan-cam -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install scenario-labs/skills scenario-fan-cam --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/scenario-labs/skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/scenario-fan-cam .gemini/skills/scenario-fan-cam && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "scenario-fan-cam" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/scenario-fan-cam into .gemini/skills/scenario-fan-cam/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-fan-cam", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install scenario-labs/skills scenario-fan-camInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add scenario-labs/skills --skill scenario-fan-cam -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/scenario-labs/skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/scenario-fan-cam .github/skills/scenario-fan-cam && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "scenario-fan-cam" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/scenario-fan-cam into .github/skills/scenario-fan-cam/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-fan-cam", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add scenario-labs/skills --skill scenario-fan-cam -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install scenario-labs/skills scenario-fan-cam --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/scenario-labs/skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/scenario-fan-cam .opencode/skills/scenario-fan-cam && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "scenario-fan-cam" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/scenario-fan-cam into .opencode/skills/scenario-fan-cam/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-fan-cam", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
scenario-fan-camA skill your agent uses 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…
Scenario Fan Cam is an agent skill from scenario-labs/skills. 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.
Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
The repository describes itself as: Get production-ready images, video, audio, and 3D from any AI agent: skills that pick the right model, price before spending, and keep characters and brands consistent through… The licence is MIT.
9 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit f6f8ab7. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npxFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Scenario Fan Cam loads about 2.1k tokens when it runs. Until then it costs about 115 tokens; SKILL.md has 1,123 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from scenario-labs/skills at commit f6f8ab7, republished under its MIT licence (© scenario-labs). 1,123 words, ~2,136 tokens.
.claude/skills/scenario-fan-cam/SKILL.md (or your agent's skills folder).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.
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.
upload_asset the photo once and reuse the returned asset id.collection_create, catalog write lane, name only), then collection_add_assets each keeper as it lands; its returned itemCount is the receipt.recommend with capability="img2img" and the placement described in words; prefer a ranked entry that takes several reference images, and read model_schema_get for those inputs (scenario-image for the lane, scenario-consistency for reference discipline).asset_display it for approval, and inventory the likeness features that must hold (face geometry, hairline, skin tone, wardrobe) with the analysis lane from scenario-asset-analysis; a change in any inventoried feature fails. Unattended, that inventory stands in for the user's sign-off.recommend with capability="img2video" and the reaction described in words, then check the pick against scenario-kling or scenario-video. The brief's length filters members: duration is usually a fixed enum a member either reaches or does not, and the tiers that reach it sit far apart on price, so model_schema_get each candidate and compare with model_run dry_run=true.wait=false, then jobs_wait re-called with pending_job_ids on timeout, never a second model_run.firstFrame and lastFrame off asset_get first, then model_scenario-video-to-image-seq for a mid-clip frame (a tool-model lane per scenario-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.model_scenario-compose-video (a tool-model lane per scenario-video-assembly), layering the score strip and channel bug from scenario-text-overlay in the safe corners; a local editor is the wrong lane. Give every overlay layer an explicit width and height, since leaving them empty is documented as native size and does not hold, and pin durationMode: "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 free firstFrame) and confirm every layer is present and placed before delivering. Then cut 9:16 per scenario-formats, a resize rather than a reframe, whose video members outpaint a wider frame instead of cutting one. Its cover mode 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_display both.© scenario-labs, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/scenario-fan-cam of scenario-labs/skills.
Open the folder on GitHubat commit f6f8ab7
Scenario Fan Cam next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Scenario Fan Cam this skillscenario-labs/skills | 946 | — | ~2.1k | Automated safety check: Pass | MIT | |
| Photoscodewhale-hq/Codewhale | 41k | — | ~386 | Automated safety check: Pass | MIT | |
| Sports Fan-Cam Videofal-ai-community/skills | 251 | — | ~3.2k | Automated safety check: Pass | None | |
| Test Scenariosphuryn/pm-skills | 27k | — | ~866 | Automated safety check: Pass | MIT | |
| Upload PhotoDevin-AXIS/iPolloWork | 6.8k | — | ~373 | Automated safety check: Pass | Custom licence | |
| Adding Warehouse Person PropertiesPostHog/posthog | 40k | — | ~2.9k | Automated safety check: Pass | Custom licence |
codewhale-hq/Codewhale
Search a local macOS Photos library and export selected copies when the user asks to find or use their own photos.
fal-ai-community/skills
Produces a personalized, broadcast-style fan-cam video from one photo of a person, using the genmedia CLI to generate a stadium frame and then animate it.
phuryn/pm-skills
Create comprehensive test scenarios from user stories with test objectives, starting conditions, user roles, step-by-step actions, and expected outcomes.
Devin-AXIS/iPolloWork
upload a photo/image/screenshot, host an image, get a public image URL, put images on Vercel Blob, embed images in a PR/comment/doc.
PostHog/posthog
Sync columns from a synced data warehouse table onto PostHog person or group properties, so warehouse data becomes usable anywhere person and group properties already work: feature flag targeting…
sickn33/agentic-awesome-skills
Install and use the official Photo to Anime package, pinned by digest, for paid hosted work on the Beatra service.
scenario-labs/skills
A skill your agent uses when drawing or animating with Grease Pencil in Blender 5.x from Python: 2D or 2.5D illustration, frame-by-frame animation, a cutout or part-based 2D character, strokes with…
scenario-labs/skills
A skill your agent uses when grooming hair or fur in Blender with hair curves, such as a character hairstyle, animal fur, procedural fur in geometry nodes, or hair cards and mesh hair for games.
scenario-labs/skills
A skill your agent uses when lighting, rendering or compositing in Blender: light a character, product or hero shot, interior at dusk or night, three-point or motivated lighting, sun and sky, HDRI…
scenario-labs/skills
A skill your agent uses when creating a ChatGPT pet or Codex pet with Scenario: hatching an animated companion from a text idea, a character, mascot or brand cue, or reference photos and art; making…
scenario-labs/skills
A skill your agent uses when animating characters or scenes in Godot 4.7: AnimationPlayer clips and RESET, AnimationTree state machines and blend spaces built in code, Mixamo or glTF import, loop…
scenario-labs/skills
A skill your agent uses when adding or fixing sound in Godot 4.7: audio buses and effects, volume sliders, 'too many sounds', combat audio with hundreds of enemies, sounds clipping or distorting, 3D…
A skill your agent uses 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…. Scenario Fan Cam is an agent skill from scenario-labs/skills. 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.
Scenario Fan Cam fits situations like: putting a person from a photo into live-broadcast crowd footage with Scenario: a stadium; arena fan-cam reaction; kiss-cam moment; A spectator cutaway at a match.
Run `npx skills add scenario-labs/skills --skill scenario-fan-cam -a claude-code`. Or copy the skill folder (skills/scenario-fan-cam in scenario-labs/skills) into .claude/skills/scenario-fan-cam in your project. Claude Code loads it when a task matches its description.
Run `npx skills add scenario-labs/skills --skill scenario-fan-cam -a codex`. Or copy the skill folder (skills/scenario-fan-cam in scenario-labs/skills) into .agents/skills/scenario-fan-cam in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add scenario-labs/skills --skill scenario-fan-cam -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/scenario-fan-cam, .gemini/skills/scenario-fan-cam, .github/skills/scenario-fan-cam and .opencode/skills/scenario-fan-cam in your project.
Going by SKILL.md and its folder, Scenario Fan Cam needs the command-line tools its instructions call (npx). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Scenario Fan Cam is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.1k tokens (SKILL.md is roughly 8.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Scenario Fan Cam: Photos (codewhale-hq/Codewhale, 41k stars), Sports Fan-Cam Video (fal-ai-community/skills, 251 stars), Test Scenarios (phuryn/pm-skills, 27k stars) and Upload Photo (Devin-AXIS/iPolloWork, 6.8k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
scenario-labs (a GitHub organization) maintains it in scenario-labs/skills, which has 946 GitHub stars. The repository holds 146 skills in this directory. The repository was last updated on October 10, 2026.
Source: scenario-labs/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.