← Files get-fableARCHIVED FILE
assets/skills/claude-code/run-skill-generator/template.md
4.04 KB · Oct 3, 2026 · 06:31 UTC
--- name: run-<unit-name> description: Build, run, and drive <unit-name>. Use when asked to start <unit-name>, run its tests, build it, take a screenshot of its UI, or interact with the running app. --- <One-sentence description: what this is and how an agent drives it. Name the handle here — "drive it via `.claude/skills/run-<unit-name>/driver.mjs` under xvfb" for a desktop app, or "start the dev server then drive it via `chromium-cli`" for a web app — so an agent knows where to look first.> <If the unit isn't at repo root:> All paths below are relative to `<unit-dir>/`. ## Prerequisites <System-level requirements. The exact `apt-get install` line you ran — not a generic list, the one that actually worked. Target Ubuntu.> ```bash sudo apt-get update sudo apt-get install -y <packages-you-actually-installed> ``` <Runtime versions if they matter:> ```bash # Example: Node 20 via nvm, Python 3.12 via uv, etc. ``` ## Setup <One-time setup after clone: install deps, configure, apply any patches (feature-gate overrides, config stubs) with the exact command.> ```bash <commands> ``` <Env vars — required vs optional, with sensible defaults:> ```bash export FOO_API_KEY=... # required — get from <where> export BAR_MODE=dev # optional — default is prod ``` ## Build <Skip if no separate build step. Otherwise the exact command:> ```bash <command> ``` ## Run (agent path) <This is the section a future agent actually uses. If you built a driver/REPL/smoke script, this documents how to launch it and what it does. If the app is simple enough that `curl` or a one-liner suffices, that one-liner goes here.> ```bash <launch-the-driver-or-smoke-script> ``` <For REPL-style drivers, show the tmux wrapping. Poll for a ready marker between send-keys and capture-pane — faster than a fixed sleep and fails loudly instead of capturing a half-rendered screen:> ```bash tmux new-session -d -s app -x 200 -y 50 tmux send-keys -t app '<launch command>' Enter timeout 30 bash -c 'until tmux capture-pane -t app -p | grep -q "<ready-marker>"; do sleep 0.2; done' tmux send-keys -t app '<first driver command>' Enter tmux capture-pane -t app -p ``` <Where artifacts land (screenshots, logs) — absolute paths:> Screenshots → `/tmp/shots/`. Logs → `/tmp/<app>.log`. <If the driver has commands, a table:> | command | what it does | |---|---| | `<cmd>` | <description> | ## Run (human path) <If meaningfully different from the agent path. Brief — agents won't use this, humans can figure it out.> ```bash <command> # → <what happens>. <how to stop>. ``` ## Test ```bash <command> ``` <Expected result — "N suites pass", or specific known-flaky tests.> --- <Optional sections below — include only if relevant and only with content you actually hit, not generic advice.> ## Gotchas <Non-obvious traps. The things that look like they should work but don't, with the workaround. If this section is generic, delete it.> - **<specific thing>** — <why it breaks> → <what to do instead> ## Troubleshooting <Symptom → fix. Only errors you actually encountered.> - **<exact error message or symptom>**: <cause>. <fix>. <!--- NOTE ON THE FRONTMATTER ABOVE: - Replace <unit-name> in both `name:` and `description:`. The `name:` becomes the slash command (/run-<unit-name>) and must match the directory name. - The `description:` is what Claude scans to decide whether to load this skill automatically. Keep the verbs — "start," "run," "build," "test," "screenshot" — they're what an asking agent will actually type. NOTE ON THE DRIVER: - If you wrote a driver script, it lives in this same directory (next to this file) by default. Reference it from the Run section. - For a web app there's usually no driver file — the `chromium-cli` heredoc in the Run section is the harness. - If the driver grows into something the project's test suite wants — shared launch helpers, a real e2e harness — move it to scripts/ or e2e/ in the unit, and update the paths here. The skill stays put. Delete everything from `---` above onwards before committing. --->
SHA-256: 3a8202ce96dd800ccd8ec381ec57dda58f673bf937fe5cf3092113fab6750e13