Specification
Skill ID
pika-labs/pika-plugins/stagefight
Publisher
pika-labs
Repository
pika-plugins
Installs
0
Files
1
Synced
Sep 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

pika-labs/pika-plugins/stagefightInstalls these files
  • SKILL.md

What this skill tells the agent

stagefight

A two-call pika pipeline: stage still (generate_image, gpt-image-2) → fight clip (generate_video, image-to-video, ~10s, 16:9). The clip is fan-filmed POV phone footage of a choreographed cosplay performance on a themed stage — two performers clash, a live-stage effect bursts, the crowd reacts. One run produces one clip for one matchup.

The core job of this skill: figure out WHO is fighting (ask the user, or suggest matchups), then AUTHOR fresh prompts in the structure of the bundled examples and generate a new video. The examples in examples/ are the pattern to follow, not a fixed catalog — every run should produce a new matchup composed the same way. The look is calibrated and the safety framing is load-bearing: keep every fixed sentence of the two templates and fill only the marked [SLOTS].

★ Why it works — the method (this is the actual research, do not drop any of it)

Raw "two people fighting" prompts get moderation-blocked. These four moves are what make fight content reliably generate, and together they ARE the trend's aesthetic:

  1. Frame it as a wholesome theatrical performance. Every clip prompt opens, verbatim: "Wholesome theatrical stage performance, choreographed cosplay, advertiser-safe." and closes with "Believable live-stage effects, not cartoon magic." This reframes combat as a stunt show, which clears the safety pass. Never describe injury, blood, real weapons connecting, or "cartoon magic" — describe choreography, props, and stage pyrotechnics.
  2. Fan-filmed audience POV. "POV handheld phone footage from the audience, raised above other people's heads filming the stage," with "a large audience in the foreground — dark silhouetted heads, many holding up phones recording." This is both the viral "I was there" aesthetic AND part of the safety (it reads as documenting a performance, not real violence).
  3. Costumed ORIGINAL characters — never real people, never named IP. Use archetypes ("a lean samurai in a straw hat", "a horned demon in black robes", "a spiky-blond-haired ninja in an orange tracksuit"). Real-person faces get moderation-blocked on both backends; named/trademarked characters drift and trip flags. Describe the cosplay (hair, costume, props), not a brand.
  4. Live-stage effect, grounded. The "wow" beat is a believable practical effect — a puff of stage smoke, green stage fire and sparks, a wall of water / geyser. Both performers recoil/brace dramatically; nobody gets hurt.

Moderation ops: re-roll the same call on a block (don't immediately swap providers). If a video gen runs past ~4 min before failing, the content already cleared the safety pass — the failure is infrastructural, just retry. Do NOT bake music in via `reference_audio` — that path trips moderation; add music/SFX in post. Different Seedance backends (ark / fal) have different moderation pipelines if you need to retry.

Prerequisites

pika MCP available. Tool prefix varies by host — use whatever is exposed. Tools: generate_image, generate_video, task_status; optional for finishing: generate_music / SFX + edit_concat / edit_audio_mix.

Stage 0 — Who's fighting? (settle this first) — One matchup → one clip.

  1. If the user already named two fighters — in the /stagefight args or their message (e.g. "frost mage vs ember knight", "my cat vs a dragon", "two robots") — use them, skip the menu, go straight to Compose. Don't re-ask.
  1. Otherwise ask with ONE `AskUserQuestion` (header: Matchup). It MUST give the user a way to supply their own characters — make that the first option — plus exactly 3 template matchups:
  • "Pick your own two fighters" — I'll name them → when chosen, ask "Who are your two fighters?" and use the answer. (The auto-added Other field also lets them type a matchup straight in.)
  • Ninja vs ninja — smoke
  • Samurai vs horned demon — green fire
  • Sorceress vs vampire (water-stage) — geyser Never auto-select a template — the whole point is the user chooses or types their own. Do NOT just print 3 suggestions as prose and proceed; present the real 4-option menu and wait.
  1. Aspect: default to 16:9 silently (the trend look). Only ask about 9:16 if the user mentions vertical/TikTok/Reels.

Once the matchup is set, compose the prompts yourself (next section), confirm in one line ("Generating your staged-fight clip — frost mage vs ember knight…"), and run end-to-end — no further yes/no gates.

Compose the prompts (the authoring step, NEVER skip it)

You are composing for the USER'S two fighters. Start from THEM and DERIVE everything else. The ninja / samurai / sorceress examples are illustrations of the formula, not the output — if the user said "X vs Y", the video is about X vs Y. Never silently default to one of the example matchups, and never substitute a different fight than the one chosen. Defaulting to ninja/samurai/water when the user asked for something else is the #1 failure of this skill.

Derive each of the four variables FROM the chosen fighters:

  • Stage = a themed set those two characters would believably duel on — what world are they from? — + 2–4 concrete props + a backdrop + time-of-day/light. (Wizards → a stone arena; mecha → a neon dome; cowboys → a saloon street. Not a temple unless they're temple characters.)
  • Performer A (LEFT) / Performer B (RIGHT) = each as live-action cosplay: hair, costume, a prop, a stance. Archetypes only — never real people; translate any named/trademarked character into its describable costume (no brand names in the prompt).
  • Signature effect = the one believable live-stage payoff that fits THIS fight (smoke / colored fire + sparks / water geyser / dust + lantern-glow / ice shards / embers / confetti-cannon…), that both performers react to.

Worked derivation (arbitrary matchup, to show the move): user asks "robot boxer vs sumo wrestler." → Stage: neon-lit night arena, holographic banners, ring ropes, sponsor lanterns, city skyline behind. → LEFT: a tall chrome humanoid robot in red boxing gloves, joints glowing, guard up. → RIGHT: a massive sumo wrestler in a ceremonial mawashi, stamping low. → Effect: a shockwave of dust and sparks as glove meets palm. → then drop those into the two templates. (Notice: nothing ninja/temple/water — every variable came from the actual fighters. Do this for whatever the user picks.)

Step 1 — Stage still (generate_image, gpt-image-2)

Bakes the stage, both performers, and the filming crowd into frame 0 so Step 2 only has to animate the clash. Template — keep every fixed sentence, fill the `[SLOTS]`:

A recording from the audience at an outdoor theater performance at [TIME-OF-DAY/SETTING]. [STAGE: a wooden stage recreating <themed set> — <2-4 concrete set pieces, lanterns/gate/fog/water/etc>, <backdrop>]. On stage, two performers in high-quality live-action cosplay face off several meters apart: on the LEFT, [PERFORMER A — cosplay: hair, costume, prop, stance]; on the RIGHT, [PERFORMER B — cosplay: hair, costume, prop, stance]. A large audience fills the foreground — dark silhouetted heads, many holding up phones recording with glowing screens. The camera films from far back in the crowd, slightly off-center, performers small on the wide stage, slight handheld tilt. Realistic phone-camera look, faint digital noise, [natural light note]. High resolution, no text, no UI.

Use this skill in a project

Open any RiverX project, search the Skills panel for pika-labs/pika-plugins/stagefight, and install it in one click.

Use this skill