一键导入
asciinema-demos
Create 1-3 short asciinema demo recordings (5-20 seconds each) that demonstrate completed work. Use only when explicitly instructed to create demos.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Create 1-3 short asciinema demo recordings (5-20 seconds each) that demonstrate completed work. Use only when explicitly instructed to create demos.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Address review comments on a pull request -- apply CLAUDE:/SCULPTOR:-prefixed instructions, and critically evaluate feedback from automated reviewers (Vet, Copilot, or any bot)
Prune code comments down to what helps future maintainers. Reviews comments on the current branch's diff and removes incidental history, defensive justification, and correctness arguments. Invoke with /crispy-comments.
End-to-end dev workflow for the minds app stack -- first-time bring-up, every-startup vendor/mngr sync, and the iteration loop against a running Docker agent. Use this when starting or restarting the dev Electron app, or after changing any minds component (mngr, the system interface, the default workspace template).
Create a new PRIVATE GitHub repo that is a full-history copy of imbue-ai/default-workspace-template's current main branch, clone it to <parent-dir>/<repo-name> (default $HOME/project), and push. Use when the user asks to "spin up a new default-workspace-template clone", "fork the default-workspace-template as a private repo", "make me a new private copy of default-workspace-template", or similar.
Use the root justfile as the canonical entry point for ANY minds task -- minds app (desktop client), pool hosts, minds environments (activate/deploy/destroy), minds deployments, and minds tests. Before running ad-hoc `uv run minds ...` / `mngr imbue_cloud ...` commands, check the justfile for a named recipe; if none exists for the task, ADD one. Use whenever the request involves the minds app, pool/leased hosts, a minds env/tier (dev/staging/production), or a minds deploy.
Cut a new production release of the minds app (version bump, FALLBACK_BRANCH, vendor/mngr sync, and minds-v<version> tags on both mngr and default-workspace-template, proven green on CI). The full procedure lives in apps/minds/docs/release.md in the mngr checkout; this skill defers to it. Use when the user asks to "release a new version of minds", "cut a minds release", "bump the minds version", "update the vendored mngr in default-workspace-template", or anything of that shape.
| name | asciinema-demos |
| description | Create 1-3 short asciinema demo recordings (5-20 seconds each) that demonstrate completed work. Use only when explicitly instructed to create demos. |
This skill provides guidelines for creating short, looping terminal demo recordings that visually demonstrate completed work. The demos serve as proof that a task was done correctly and help reviewers quickly understand what changed.
Each demo session produces 1-3 recordings (each 5-20 seconds) as looping GIFs. The workflow is:
The following tools must be available:
asciinema (terminal recorder) -- records .cast filesagg (asciinema gif generator) -- converts .cast to .gifpython3 with json module (standard library) -- for .cast file verificationIf they are not, simply make a note in the PR that the demos could not be generated, and which tools should be installed to enable them.
Before recording anything, think carefully about what to demo. This is the most important step.
Ask yourself:
Common demo types:
| Scenario | What to show |
|---|---|
| New CLI command | Run the command with typical arguments, show the output |
| Bug fix | Show the fixed behavior |
| Data/config change | Show the data exists and has correct values (e.g., cat, jq, grep) and that the core dependent behavior works |
| Performance improvement | Run a benchmark or timed command showing the improvement (and the necessary context to understand) |
| New feature in existing command | Run the command exercising the new feature |
| Refactor (no behavior change) | Show that the core dependent behavior(s) still work |
Guidelines:
cat, head, jq, grep, or sqlite3 to show the relevant parts.For each demo, create a bash script for that specific demo. Place them in a temporary location or in .demos/scripts/.
Template for a demo script:
#!/usr/bin/env bash
# Demo: Brief description of what this demonstrates
# Optionally set up a clean prompt for the recording
export PS1='$ '
# Add brief pauses between commands so the viewer can read the output
echo "$ some-command --flag"
some-command --flag
sleep 1
echo ""
echo "$ another-command"
another-command
sleep 1
Important considerations for demo scripts:
For commands that would normally block waiting for input or run indefinitely:
timeout to limit execution time: timeout 5 some-long-commandecho "y" | some-commandyes | head -1 | for yes/no promptssome-command --background
sleep 2
show-status-command
To make the demo look natural (as if someone is typing), you can echo the command before running it:
# Show the command being "typed", then run it
echo '$ mngr list'
mngr list
sleep 1
Or, for a more polished look, use a helper function that simulates typing:
type_cmd() {
local cmd="$1"
printf '$ '
for ((i=0; i<${#cmd}; i++)); do
printf '%s' "${cmd:$i:1}"
sleep 0.03
done
printf '\n'
eval "$cmd"
}
type_cmd "mngr list"
sleep 1
export PS1='$ ' for a clean promptcommand 2>/dev/nullhead -n 20 or similar to truncate long outputclearImportant considerations for cleanup scripts:
rm or any destructive commands! Always double-check that the script cannot accidentally delete important files or directories.Use the helper script scripts/record_demo.sh to record each demo:
./scripts/record_demo.sh <demo_script> <output_name> [options]
Examples:
# Basic recording
./scripts/record_demo.sh .demos/scripts/demo1.sh feature-demo; .demos/scripts/demo1_cleanup.sh
# Custom terminal size and speed
./scripts/record_demo.sh .demos/scripts/demo1.sh feature-demo --cols 120 --rows 24 --speed 1.5; .demos/scripts/demo1_cleanup.sh
# Recording without GIF conversion (for faster iteration)
./scripts/record_demo.sh .demos/scripts/demo1.sh feature-demo --no-gif; .demos/scripts/demo1_cleanup.sh
The script produces three files in .demos/ (or the directory specified by --out-dir):
<name>.cast -- the asciinema recording<name>.gif -- the GIF (unless --no-gif)<name>.txt -- plain text dump of the recording outputKey options:
| Option | Default | Description |
|---|---|---|
--cols N | 100 | Terminal width |
--rows N | 30 | Terminal height |
--theme THEME | monokai | GIF color theme |
--font-size N | 16 | Font size in pixels for GIF |
--speed N | 1 | Playback speed multiplier |
--idle-limit N | 2 | Max idle time between events (seconds) |
--last-frame N | 3 | How long the final frame displays (seconds) |
--out-dir DIR | .demos | Output directory |
--no-gif | Skip GIF conversion (faster for iteration) | |
--no-loop | Disable GIF looping |
This is critical. Since you cannot watch the GIF, you must verify the recording by reading the text dump.
Read the .txt file to confirm:
cat .demos/feature-demo.txt
You can also inspect the .cast file directly to check timing:
# Check the total duration (time of last event)
tail -1 .demos/feature-demo.cast
# Check all events
cat .demos/feature-demo.cast
Verification checklist:
If the recording does not look right:
.txt dump--no-gif while iterating for speed)Common problems and fixes:
| Problem | Fix |
|---|---|
| Output is truncated/wrapped | Increase --cols |
| Recording is too long | Remove unnecessary sleep calls, use --speed 2 |
| Recording is too short | Add sleep calls between commands |
| Command produced an error | Fix the demo script or the underlying issue |
| Too much output | Use head, tail, or grep to filter |
| Interactive command blocked | Use timeout, pipe input, or mock the interaction |
If the demos should be attached to a GitHub PR, you need to make the GIF accessible via URL.
NEVER try to commit files the demo files, especially not the GIFs.
Instead, upload via GitHub's attachment API
GitHub allows uploading images by posting them as assets. This avoids committing binary files to the repo. Use gh to create a release asset or attach to an issue/PR comment via the API.
--no-gif while iterating on the demo script. Only convert to GIF once you are satisfied with the .txt output.--speed 1.5 or --speed 2 if the demo has natural pauses that would make it feel slow.jq with colors, grep --color). This makes the GIF more readable..demos/ directory is gitignored. NEVER commit GIFs!