一键导入
demo-from-url
Generate a complete demo-machine YAML spec by crawling a live web app. Give it a URL and description, get a ready-to-run spec.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Generate a complete demo-machine YAML spec by crawling a live web app. Give it a URL and description, get a ready-to-run spec.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Generate a polished product demo video from a YAML spec using demo-machine. Use when the user wants to create, run, or update a demo video for their app.
Automatically fix a broken demo-machine spec by analyzing failure artifacts (screenshots, DOM, error logs). Use when a demo fails after a UI change.
Generate compelling AI narration for every step in a demo-machine spec. Use when a spec has no narration or needs better narration text.
AI quality review of a completed demo run. Analyzes event log, timing, and narration to flag issues and suggest improvements.
Convert an existing Playwright or Cypress E2E test file into a demo-machine YAML spec. Reuses test coverage as demo scripts.
Translate all narration text in a demo-machine spec to another language, producing a localized copy.
| name | demo-from-url |
| description | Generate a complete demo-machine YAML spec by crawling a live web app. Give it a URL and description, get a ready-to-run spec. |
| argument-hint | <url> [description] |
| allowed-tools | Read, Write, Edit, Glob, Grep, Bash(node *), Bash(pnpm *), Bash(npx *) |
Navigate to a live web application, discover its interactive elements, identify the primary user journey, and generate a complete demo-machine YAML spec with narration.
$ARGUMENTS should start with a URL (required), optionally followed by a description of what to demo./demo-from-url http://localhost:3000/demo-from-url http://localhost:3000 Show the task management workflow/demo-from-url https://myapp.example.com Demonstrate user signup and first project creationFirst, understand the app by navigating to the URL and inspecting the page:
node -e "
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch({ headless: true });
const page = await browser.newPage();
await page.goto('YOUR_URL');
const html = await page.content();
console.log(html);
await browser.close();
})();
"
Identify:
Choose the primary user journey based on the app's purpose. Examples:
Break it into 3–5 chapters, each representing a cohesive action sequence.
Create a spec file with:
meta:
title: "App Name Demo"
resolution:
width: 1920
height: 1080
runner:
command: "npm run dev" # or null if already running
url: "http://localhost:3000"
timeout: 10000
chapters:
- title: "Chapter 1: Opening"
narration: "Welcome to the app."
steps:
- action: navigate
url: "http://localhost:3000"
- action: wait
timeout: 500
- action: click
target:
by: role
role: button
name: "Get Started"
narration: "Click Get Started to begin."
- title: "Chapter 2: Main Workflow"
steps:
# ... more steps
When creating target blocks, prefer this order:
by: testId — Most stable
target:
by: testId
testId: "submit-button"
by: role + name — Accessible, stable
target:
by: role
role: button
name: "Submit"
by: label — For form elements
target:
by: label
label: "Email"
by: text — As fallback
target:
by: text
text: "Click here"
selector — Last resort
selector: ".primary-button"
Use these actions to build your journey:
navigate — Go to a URLclick — Click an elementtype — Type text into an inputselect — Select a dropdown optioncheck / uncheck — Toggle checkboxeshover — Hover over an elementpress — Press a keyboard keyscroll — Scroll the pagewait — Pause for a durationassert — Verify element visibility or textscreenshot — Capture the current statewait and intermediate stepsAfter generating the spec:
# Validate the YAML structure
node dist/cli.js validate <spec.yaml>
# Dry-run the spec (don't record)
node dist/cli.js run <spec.yaml> --no-record
# Full capture with rendering
node dist/cli.js run <spec.yaml> --output ./output
meta:
title: "Todo App Demo"
resolution:
width: 1920
height: 1080
runner:
command: "npm run dev"
url: "http://localhost:3000"
timeout: 10000
chapters:
- title: "Creating a Task"
narration: "Let's create our first task."
steps:
- action: navigate
url: "http://localhost:3000"
- action: click
target:
by: testId
testId: "new-task-btn"
- action: type
target:
by: label
label: "Task title"
text: "Design the landing page"
narration: "Type in our task."
- action: click
target:
by: role
role: button
name: "Add"
narration: "Click Add to save."
- title: "Completing a Task"
narration: "Now mark it as complete."
steps:
- action: click
target:
by: role
role: checkbox
name: "Design the landing page"
narration: "Check off the task."
- action: wait
timeout: 500
- action: assert
target:
by: text
text: "Design the landing page"
visible: true
narration: "Task is marked complete."
Arguments: $ARGUMENTS