The two skills
| Skill | What it does |
|---|---|
/showoff |
Turns a project, PR, app, or evidence folder into a polished showcase video, poster, plan, and share copy. Parallel research lanes, every claim verified before render. |
/figureout |
Gives Claude the ability to watch any video. Point it at a YouTube link or a local file and Claude sees the frames and reads the transcript, then answers your questions with timestamps. |
Give Claude eyes: /figureout
Claude cannot watch a video. /figureout fixes that.
Hand it a public video URL or a local file, and it pulls a timestamped transcript (native captions first, with a Whisper fallback) and extracts auto-scaled frames with FFmpeg. Claude then reads those frames as images and combines them with the transcript -- so by the time it answers, it has genuinely seen and heard the video.
/figureout https://www.youtube.com/watch?v=... what happens in this video?
/figureout ./screen-recording.mp4 summarize the bug being demonstrated
/figureout https://youtu.be/... --start 00:30 --end 00:45 zoom in on one moment
- Captions-first, Whisper-fallback. Free and instant when captions exist; falls back to Groq or OpenAI Whisper (extracted audio only) when they do not.
- Smart frame budgets. Scene-aware sampling, perceptual de-duplication, and auto-scaled resolution keep the frame set small but representative.
- Focus mode and cue frames. Narrow to a time window, or pin exact timestamps to inspect specific moments frame by frame.
- Feeds
/showoff. Pass--feed-showoffto emit a structured analysis a/showoffrun can ingest as grounded evidence -- watch a demo recording, then showcase it.
Full details: skills/figureout/SKILL.md.
Why ShowOff
- Two skills, one install.
/showoffproduces cinema;/figureoutgives Claude the eyes to watch any video. They compose: analyze a recording, then showcase it. - Parallel by design. Evidence, narrative, visuals, proof, and taste are researched independently, then reconciled by one orchestrator.
- Grounded in the real project. Unsourced metrics, invented features, and fake UI are excluded before they reach the screen.
- Taste is a gate, not a prompt adjective. Explicit design dials govern typography, density, motion, accessibility, and anti-template checks.
- Delivery is verified. HyperFrames must pass its checks, preview approval is required, and the poster is pixel-matched against the MP4's actual frame zero.
[!NOTE] Build provenance: ShowOff was built by Goose using Phoenix, a harness for building and operating outer-loop systems.
Install
As standalone skills (recommended)
npx skills add https://github.com/All-The-Vibes/ShowOff --skill showoff
npx skills add https://github.com/All-The-Vibes/ShowOff --skill figureout
This installs the standalone skills, invoked as /showoff and /figureout.
As a Claude Code plugin
/plugin marketplace add All-The-Vibes/ShowOff
/plugin install showoff@showoff
Installing the plugin brings both skills. Claude Code namespaces plugin skills, so with this
install method invoke /showoff:showoff and /showoff:figureout instead of the bare names.
Usage
The examples below use the recommended standalone skill install.
/showoff -- make the showcase
/showoff auto-detect the current project (cwd)
/showoff https://demo.myapp.io a running app or website
/showoff https://github.com/acme/app/pull/42 a GitHub PR
/showoff ./evidence a supplied evidence path (no git needed)
/showoff --format vertical portrait 9:16 output
/showoff --narration add a narration track, captions, transcript
/showoff --duration 40 --goal pitch 40-second pitch
/showoff --media approved auto-approve grounded media opportunities
/showoff --title "My Project" --tone bold set the title and tone
/showoff showoff-output/20260721-101500 resume and re-render the poster
/showoff flags
| Flag | Values | Default |
|---|---|---|
--tone |
any preset or freeform phrase | professional |
--format |
landscape, vertical, square |
landscape |
--duration |
integer 10-90 (seconds) | 25 |
--audience |
any phrase | general |
--goal |
demo, pitch, update, tutorial |
demo |
--narration |
flag (no value) | off |
--media |
auto, approved, none |
auto |
--title |
quoted string | inferred |
| positional | project path, GitHub PR URL, or app URL | cwd |
To resume a prior run, pass its timestamped output directory as the positional argument plus a plain-language instruction. There is no resume flag.
Run vs. resume: if the run directory is incomplete (not done), ShowOff continues
in the same directory, repairing or adding only missing artifacts. If the run directory is
done, ShowOff treats it as source material and creates a new timestamped sibling --
it never writes into a completed run.
/figureout -- watch a video
/figureout https://www.youtube.com/watch?v=... watch and summarize a video
/figureout ./demo.mp4 what feature is shown? ask a question about a local file
/figureout <url> --detail transcript transcript-only, no video download
/figureout <url> --start 00:30 --end 00:45 focus on a time window
/figureout <url> --timestamps "00:10,01:22" pin exact moments as cue frames
/figureout <url> --feed-showoff emit analysis for a /showoff run to ingest
/figureout flags
| Flag | Values | Default |
|---|---|---|
| positional | public video URL or local video path | required |
--question |
quoted string (or trailing free text) | none |
--detail |
transcript, efficient, balanced, token-burner |
balanced |
--start / --end |
seconds or MM:SS (focus window) |
full video |
--timestamps |
comma list of MM:SS cue frames |
none |
--resolution |
frame width in px | 512 |
--no-dedup |
flag (no value); keep near-duplicate frames | dedup on |
--no-whisper |
flag (no value); never fall back to Whisper | fallback on |
--out-dir |
path for the working directory | system temp |
--feed-showoff |
flag (no value); write figureout-analysis.json |
off |
How it works
/showoff invoked
|
v
+---------------------------+
| State sensor | project-context.mjs + validate-output.mjs
+---------------------------+
|
v
+---------------------------------------------------------------+
| Five read-only worker lanes (parallel, return findings) |
| evidence-investigator product-narrator visual-curator |
| proof-auditor taste-director |
+---------------------------------------------------------------+
|
v
+---------------------------+
| Orchestrator reconciles | verifies claims, drops UNVERIFIED,
| and writes the artifacts | writes dossier + plan (only writer)
+---------------------------+
|
v
+---------------------------+
| Media opportunity pass | one checkpoint; --media auto/approved/none
+---------------------------+
|
v
+---------------------------+
| HyperFrames composition | check, preview approval, render
+---------------------------+
|
v
showoff-output\<YYYYMMDD-HHMMSS>\
evidence-dossier.md
showoff-plan.md
composition-brief.md
composition\ (HyperFrames project)
showoff.mp4
showoff.jpg
share-copy.md
showoff-manifest.json
captions.vtt (narration only)
transcript.md (narration only)
HyperFrames owns the composition mechanics, check, preview, and render. Media OS owns asset resolution and generation, and only after explicit approval. ShowOff never publishes.
Requirements
| Component | Minimum version | Used by |
|---|---|---|
| Claude Code | 2.1.198 | both |
| Node.js | 22.0.0 | both |
| FFmpeg | 6.0 | both |
| HyperFrames | installed and on PATH | /showoff |
| yt-dlp | installed and on PATH | /figureout (URL sources) |
| Groq or OpenAI API key | optional | /figureout (Whisper fallback when captions are absent) |
/figureout ships a setup preflight (scripts/setup.mjs) that checks for FFmpeg, ffprobe,
and yt-dlp and scaffolds a config file for an optional Whisper key.
Outputs
Every normal invocation writes a new timestamped directory under showoff-output\ in the
project root. A prior run is never overwritten. Resuming an incomplete run continues in the
same directory; invoking with a completed run as the positional creates a new sibling.
evidence-dossier.md-- reconciled, sourced factsshowoff-plan.md-- narrative, visual assets, proof audit, taste, scene breakdowncomposition-brief.md-- the brief handed to HyperFramescomposition\-- the HyperFrames projectshowoff.mp4-- the composed video (25 s default, 10-90 s accepted)showoff.jpg-- the strongest settled frame, baked as frame 0share-copy.md-- platform-ready share copyshowoff-manifest.json-- provenance, config, reproducibility, and claimscaptions.vttandtranscript.md-- only when--narrationis set
Privacy and boundary
ShowOff never automatically publishes or uploads the finished video, poster, or any
artifact. It writes only to the local timestamped run directory and records published: false in the manifest.
External network access is limited and explicit. ShowOff may contact the network only to:
inspect a supplied PR URL or app URL, run Claude Code model work, update the HyperFrames
sub-skill, and send explicitly approved requests to Media OS providers. Media providers
receive only the approved request payload; project evidence is not uploaded without an
approved Media OS request, and credential files are never read. Every external endpoint
actually contacted is recorded in the manifest's external_services_used. ShowOff does not
overstate privacy or imply the machine never reaches the network.
Validate and test
npm test
npm test runs the repository validator (scripts/validate-skill.mjs) and the runtime
tests (scripts/test-runtime.mjs). The validator checks required files, SKILL.md
frontmatter and resolvable references, JSON integrity, version agreement across manifests,
script syntax, em dash hygiene, placeholder content, and the absence of obsolete flags or
output names. The runtime tests exercise project-context.mjs and validate-output.mjs
against temporary fixtures, including a poster frame-zero pixel-match test that decodes
both showoff.mp4 and showoff.jpg to raw rgb24 via FFmpeg and verifies the mean
absolute error is at or below 3.0. FFmpeg is required for npm test; it is already listed
under Requirements.
You can also validate the plugin manifest:
claude plugin validate .
Repository layout
ShowOff/
.claude-plugin/ plugin.json and marketplace.json
docs/ architecture.md
evals/ evals.json
scripts/ validate-skill.mjs, test-runtime.mjs
skills/
showoff/
SKILL.md
references/ orchestration, project-inspection, narrative, taste,
media, composition, delivery
templates/ showoff-plan.md, composition-brief.md
scripts/ project-context.mjs, validate-output.mjs
figureout/
SKILL.md
references/ pipeline, transcription, setup, showoff-bridge
templates/ analysis-report.md
scripts/ figureout.mjs, frames.mjs, transcribe.mjs, whisper.mjs,
config.mjs, setup.mjs, project-context.mjs, showoff-bridge.mjs
CONTRIBUTING.md
LICENSE
README.md
SECURITY.md
package.json
Inspiration
ShowOff is an original implementation. The general concept of automating project showcase creation was inspired by work in the open-source community, including the idea explored at https://github.com/latent-spaces/brag. ShowOff shares no code, assets, or phrasing with that project and is not affiliated with it.
License
MIT. See LICENSE.
No comments yet
Be the first to share your take.