Skip to content

feat(registry): add Skill demos to the Skill page and the homepage - #470

Merged
harlan-zw merged 12 commits into
mainfrom
feat/skill-demos
Oct 6, 2026
Merged

harlan-zw merged 12 commits into
mainfrom
feat/skill-demos

Conversation

@harlan-zw

Copy link
Copy Markdown
Collaborator

🔗 Linked issue

None. Follows #463 and the skillry.dev comparison, where Harlan asked for visuals and live demos.

❓ Type of change

  • 📖 Documentation
  • 🐞 Bug fix
  • 👌 Enhancement
  • ✨ New feature
  • 🧹 Chore
  • ⚠️ Breaking change

📚 Description

A visitor could not see what a Skill makes before running it. This adds demos (new GLOSSARY term): one recorded run of a Skill, with its prompt, the output an Agent made, and the Agent and model that made it.

  • Homepage. "See what skills make." is now the first content section. It is a prompt index: pick a prompt and the stage shows its output, a full page you scroll inside one screen, or a film that plays muted while on screen. Reduced motion keeps the poster. brag is pinned first.
  • Skill page. A Demo panel under the header shows the prompt, one full-page screenshot per device in a scrolling window, a live demo in a sandboxed frame, or the video player. It says when the Skill has moved past the recorded commit.
  • Recorder. pnpm demo:record owner/repo/skill --prompt "…" --output index.html|film.mp4 runs Claude Code headless in a temp folder with the Skill loaded through npx skilld run, then writes the demo into the repository. Page Skills get Read, Write and Edit only. Video Skills must run their renderer, so their Bash runs in the Claude Code sandbox: writes stay in the temp folder, ~/.ssh, ~/.config, ~/sites and similar stay unreadable, and the network reaches only package, code and font hosts. Merging the pull request is the human approval; nothing records into production.
  • Serving. /api/skill-demos lists demos; the Skill detail response gains demo. Output pages are served from /demos/<owner>/<repo>/<name>/live under Content-Security-Policy: sandbox allow-scripts and noindex, so generated code never runs as skilld.dev. /demos/** is robots: false.

Seven demos: brag and hyperframes (videos), frontend-design, diagram-design, emil-design-eng, show-me and make-interfaces-feel-better (pages). The media adds about 2.5 MB to the repository. lemo-opuscar is still rendering and will follow.

Decisions for Harlan:

  • anthropics/skills/frontend-design is noindex in production but has a demo here.
  • By request, the homepage stage has no SKILL.md link; the Skill page is where visitors inspect a Skill. VISION.md principle 1 still asks for a one-click link to the source on every Skill surface, so either VISION.md needs that exception or the link comes back.

Architecture: the local recorder writes the manifest, media and output pages into the repository; the registry serves them to the Skill page and the homepage, with the output page sandboxed

🤖 AI disclosure: Harlan Agent Kit modified this description. My AI open-source policy.

A visitor could not see what a Skill makes before running it. A demo is
one recorded run: a fixed prompt, the Agent's output, and how it was
recorded. The Skill page shows the prompt, a scrolling full-page
screenshot, and a live demo in a sandboxed frame. The homepage lists
Skills with demos once three exist.

scripts/record-skill-demo.ts records a demo locally with Claude Code and
writes it into the repository, so merging the pull request is the human
approval. The output page is served under a CSP sandbox and noindex.
VISION principle 1: every surface that shows a Skill names its author and links its source file. Demo cards had neither.
Harlan's review: show the screenshot that fits the device, shorten the recording line to the Agent logo, model, date and commit, make the demo section the first content section, and put author avatars on the cards.
Video Skills render an MP4, so the recorder gives them a sandboxed shell, re-encodes the film small with a poster frame, and can seed the folder with a project. Cards play the video muted on hover or focus; the Skill page shows a player. Adds the show-me demo.
Harlan asked each demo card to say how it was recorded with the Agent
logo, the model and the day, and to play film demos. The endpoint already
sends agent, model and recordedAt, so the homepage type now reads them.
The optional video field matches the shape feat/skill-demos will add.

The helpers pick the shot that fits the screen, keep a one-screen phone
page whole so a toast at its foot stays in view, and format the model and
the film length.
The demo section moves to the top of the homepage, so Harlan wants to
compare layouts before one replaces HomeDemos. Each take reads the same
HomeDemoItem list: an output grid, a before and after lead with a ledger,
a rail of tall page frames, and a prompt index with a stage.

Every take names the Skill through SkillCard, so the avatar, author and
SKILL.md link match every other embed. Films show a poster and play muted
on hover or focus, never on touch screens or under reduced motion.

/_playground/home-demos renders all four in development and 404s in
production.
Harlan picked take D: the prompts are the menu and the stage shows the picked demo. In the stage a film plays muted as soon as it is on screen, except under reduced motion. Takes A to C and the lab page go.
…g line

Harlan's review: drop the Agent output label and the date, since the model is enough; no SKILL.md link on the stage, so visitors inspect a Skill on its page; round the Skill row hover; scroll the prompt list inside the stage height; pin brag to the top.
The client icon bundle lacks lucide volume-x, so the chip logged a failed load each time a film played. The play glyph and the length stay put instead.
@harlan-zw harlan-zw added the harlan-agent-review Pull request triage requires an adversarial Review. Adding this label manually always forces one. label Oct 6, 2026
@harlan-github-agent harlan-github-agent Bot added harlan-agent-review-required Pull request triage requires an adversarial Review for this head commit. harlan-agent-running An Agent holds a Task on this issue or pull request right now. and removed harlan-agent-review Pull request triage requires an adversarial Review. Adding this label manually always forces one. labels Oct 6, 2026
@harlan-github-agent

harlan-github-agent Bot commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

🤖 MERGED

Harlan Agent Kit posted this automated review. It is not Harlan's personal review or approval. AI open source policy. Last updated: 2026-10-06 14:30 UTC.

GitHub merged this pull request.

No material findings were recorded.

The pull request closed.

@harlan-github-agent harlan-github-agent Bot removed the harlan-agent-running An Agent holds a Task on this issue or pull request right now. label Oct 6, 2026
@harlan-zw
harlan-zw merged commit 7a125f3 into main Oct 6, 2026
7 checks passed
@harlan-github-agent harlan-github-agent Bot removed the harlan-agent-review-required Pull request triage requires an adversarial Review for this head commit. label Oct 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant