skills/demo/SKILL.md
Capture evidence for what changed: blurb, paste, screenshot, GIF, video, launch note, or repo-local demo skill. Pick by change shape, audience, and budget. Use when: "make a demo", "record walkthrough", "PR evidence", "upload screenshots", "show what changed", "release notes blurb", "scaffold demo", "generate demo skill". Trigger: /demo.
npx skillsauth add phrazzld/agent-skills demoInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Every app has a demo path. The question is never "is there something
to show?" — it's "what shape does showing take in this codebase, for
this change, for this audience?" A refactor's demo is a PR-description
bullet pointing at the diff stats; a new endpoint's demo is a curl
paired with its JSON response; a CLI flag's demo is a terminal paste;
a UI change's demo is a screenshot or GIF; a tentpole launch's demo is
a narrated video. Same skill, different output.
The failure mode this skill exists to prevent is the silent skip —
shipping a change with no visible record of what moved, because the
repo doesn't have a video pipeline or GitHub upload path. The canonical
artifact surface is .evidence/<branch>/<date>/; if a repo cannot use it,
the demo path must name its durable alternative.
Every demo outcome answers:
See harnesses/shared/AGENTS.md (Completion Evidence) for the shared evidence
core; this phase keeps artifact-specific local fields.
## Completion Gate
- Exact end-user behavior shown: behavior or internal operator behavior the artifact demonstrates.
- Evidence that proves it: direct link to screenshot, GIF, video, paste, launch note, or artifact path.
- Summary embed: inline Markdown media for screenshots/GIFs/videos when the destination supports rendering.
- Exact command/path/route exercised: command, URL, route, file path, or tool call used to capture it.
- Repo-fit check: repo convention or audience surface the artifact matches.
- Residual risk: unshown path, unsupported state, or none with reason.
For internal changes, the demo may be a committed text artifact, but it still names the developer/operator behavior that changed.
When .harness-kit/work/ledger.jsonl is available, /demo calls
cargo run --locked -p harness-kit-checks -- work-ledger append with phase_started before capture and
phase_completed after the artifact or text-proof evidence
ref exists. Use blocker_added when capture fails and set next_action to the
smallest recovery step.
You are the executive orchestrator.
delegate on judgment per the shared Roster contract: native subagents
by default; add cross-model critics, roster providers, or sprite lanes
(/sprites) only when they answer a distinct question. See
harnesses/shared/AGENTS.md (Roster).
Local lane guidance: Use one lane for capture planning and another for cold quality review against the scoped audience, changed behavior, and artifact constraints.
Before capturing anything, answer three questions in order:
What changed? Classify the diff:
| Change shape | Demo path |
|---|---|
| Browser / UI | Screenshot of the new state; GIF if interactive; before/after pair for visual deltas |
| API / HTTP endpoint / serverless handler | curl request + response body pasted in PR or release notes; before/after pair for breaking changes |
| CLI / command-line tool | Terminal recording (asciinema, vhs) or copy/paste of --help output plus a representative invocation |
| Library / SDK / package | Code snippet showing the new API in use; type-check output or REPL session if relevant |
| MCP server / agent tool / LLM skill | Sample tool-call invocation and its result; conversation transcript excerpt; registration block for new tools |
| Internal refactor / infra / dependency bump / build config | Committed demo.md, release-notes blurb, or PR-description bullet that proves the operator/developer behavior changed |
Who is the audience? PR reviewer wants the minimum proof the change works. Team Slack wants a short, punchy visual. External customers want polish and context. The audience determines fidelity and framing, not whether a demo exists.
What's the time budget? Seconds (paste a log line), minutes (screenshot, curl paste, terminal recording), hours (edited GIF, before/after pair), days (narrated video, launch piece). Match fidelity to budget; under-investing is fine when the change is routine, over-investing is waste.
If shape, audience, and budget agree on "blurb is enough" — write the blurb. If they point at "screenshot + one-liner" — capture and paste. If they point at "polished video" — scaffold (or run the scaffolded skill) and invoke the full workflow.
| Situation | Action |
|---|---|
| First argument is scaffold, or user said "scaffold demo" / "generate demo skill" | Read references/scaffold.md and follow it |
| A project-local .claude/skills/demo/SKILL.md exists and the change needs polish | Defer to the project-local skill |
| Change shape is internal / refactor / infra / dep bump | Use the text-artifact path below — write durable proof, don't open a capture tool |
| Change shape is routine (single screenshot, curl paste, terminal paste, code snippet) | Use the quick-capture path |
| Change shape warrants polish (GIF with before/after, edited walkthrough, narrated video) | Use the polished path |
The demo is a small text artifact, not a skipped artifact. This is the lowest fidelity proof path.
.evidence/<branch>/<date>/demo.md or the repo's durable equivalent.Refactor: extract rate-limiting from handler into middleware. No behavior change; 4 handlers now share the same limiter.For the dominant case — one change, one surface, one screenshot or paste. Fast, in-context, no subagents.
asciinema rec for multi-step invocations.For tentpole changes, recurring demo needs, or anything that will be seen outside the PR. Each phase is a separate subagent; the critic inspects artifacts cold to prevent self-grading.
vhs, asciinema,
Remotion, hand-captured). Name the target surface (PR comment, draft
release, changelog, customer email, Slack post)..evidence/<branch>/<date>/ and commit
them with the branch. Embed or link that path in the target surface.
A draft GitHub release plus PR comment is an optional mirror when reviewers
need inline asset URLs; PR description path links, release notes, git notes,
and Slack/email for audience-facing posts are all valid. Pick the surface by
audience, not by habit.# WebM -> GIF (800px, 8fps, 128 colors)
ffmpeg -y -i input.webm \
-vf "fps=8,scale=800:-1:flags=lanczos,split[s0][s1];[s0]palettegen=max_colors=128[p];[s1][p]paletteuse=dither=bayer" \
-loop 0 output.gif
For detailed capture patterns, read skills/qa/references/evidence-capture.md.
For PR evidence upload via draft releases, read references/pr-evidence-upload.md.
For Remotion video composition, read references/remotion.md.
For TTS narration, read references/tts-narration.md.
The artifact and the surface are separate choices. Pick the artifact from shape; pick the surface from audience.
| Surface | Good for |
|---|---|
| PR description (markdown + inline images) | Reviewers; the default |
| Release notes / changelog entry | Users reading between versions |
| .evidence/<branch>/<date>/ | Canonical offline storage; default for QA/demo artifacts |
| Draft GitHub release (gh release create --draft) | Optional mirror for large assets or inline PR URLs |
| Commit message body | Long-term record, especially for text-proof outcomes |
| git notes | Durable annotation without touching history |
| Team Slack / internal post | Timely visual update; lossy over time |
| Customer email / launch post | External polished path |
When publishing or summarizing demo evidence, make the artifact visible from
the summary itself. Use direct Markdown links for text artifacts and inline
Markdown media for screenshots, GIFs, or videos where supported, for example
.
When a repo vendors or specializes this skill, the local guidance should name the actual demo path for THAT codebase. Concretely:
vhs tapes checked into demo/? asciinema uploads? If none
exist yet, name the lightest-weight option that fits the stack.An exact-copy vendored copy is valid only for a repo that is itself the canonical source. For ordinary repos, either rely on the system-wide skill or add concrete local demo defaults that earn the checked-in copy.
gh release is a sign that the path is different here,
not that there is none. .evidence/<branch>/<date>/ is the default
durable surface unless the repo declares another..evidence/<branch>/<date>/ or the repo's
durable equivalent. Do not elide it.Run cargo run --locked -p harness-kit-checks -- check-evidence-blocks skills to prove /demo keeps a
local Completion Gate. Semantic demo quality is verified by the produced
artifact path, screenshot, GIF, video, release note, or text-proof artifact in
the run.
tools
Enumerates the peer AI agent CLIs installed on this machine (codex, claude, pi, opencode, cursor-agent, grok, agy, hermes, thinktank) and how to invoke each headlessly. A capability map, not a quota: useful for fresh-context adversarial review on a different model family, second opinions, competing attempts, and wide benches. Use when: "ask codex", "ask another model", "second opinion", "cross-model review", "what AI tools do I have", "other agents", "different model family", "adversarial critique from another provider". Trigger: /roster.
development
Run lane cards on Fly Sprites: remote, isolated, scale-to-zero sandboxes for heavy or parallel agent work. Golden-checkpoint provisioning so lanes start on a ready sprite with zero setup tokens. Use when: "run this on a sprite", "remote lane", "offload to a sandbox", "dispatch to sprites", "bake a sprite", "sprite fleet", heavy/long-running/parallel sub-agent work that should not run on this machine. Trigger: /sprites, /sprite-lane.
testing
Compose and launch roster-backed specialist lanes with prompt-native lane cards and receipts. Use when: "dispatch agents", "use subagents", "compose a team", "run provider lanes", "make lane cards". Trigger: /dispatch, /subagents, /lanes.
tools
Fast session-start repository orientation from live local evidence. Use when: "orient yourself", "start of session", "new session", "where are we", "catch me up before acting", "what should I do next", after compaction, after switching worktrees, or before choosing a Harness Kit workflow. Trigger: /orient, /ground, /session-start.