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.
testing
Capture one compounding repo-technical learning while a solved problem is still fresh. Use when: after a bug fix, diagnosis, delivery, review, or incident reveals a reusable pattern worth adding to `docs/solutions/`. Trigger: /compound, /capture-learning, /learning.
testing
Route Misty Step factory application capabilities. Use when choosing, auditing, integrating, or operating Canary, Powder, Landmark, Aesthetic, or Bitterblossom: production observability, incidents, health checks, error logging, backlog/work-card state, release intelligence, UI/UX system adoption, or supervised/unsupervised agent dispatch. Trigger: /factory-apps, /factory-stack.
testing
Prove a skill beats no-skill with a falsifiable A/B eval, or retire it. Design, generate, run, and maintain a skill-specific eval: name the one claim the skill must earn, run it skill-on vs raw same-model, grade blind with objective checks first, return a keep/adapt/cut verdict. Use when: "eval this skill", "does this skill help", "prove the skill beats no skill", "write an eval for", "benchmark a skill", "is this skill worth it", "skill A/B", "skill regression test", "generate skill evals". Trigger: /skill-eval, /eval-skill, /prove-skill.
tools
> Template. Copy to `<target-repo>/.agents/skills/<repo>-<domain>/SKILL.md` > and fill every bracketed placeholder from the live target repo. Delete this > line and every other `> ` guidance line before committing. See > `../../references/repo-local-skill-generation.md` for the full process. --- name: <repo>-<domain> description: | [One paragraph: what this skill verifies/runs/operates for <repo>, stated in terms of the repo's real shape (service/CLI/library/etc.), not generic process. En