Agent skill · Audited from source
cli-demo-generator
skill · daymade/claude-code-skillsMIT licenceAudited 28 Oct 2026 · source 278159d60e54
Is it safe? No — BLOCK, grade D (69/100). We read this skill's source at commit 278159d60e54 and found no filesystem, network or shell access and no hard-coded secrets. The audit raised 3 findings, 1 critical or high. What it does: Generates professional animated CLI demos as GIFs using VHS terminal recordings. Use to create terminal demos, record CLI workflows as GIFs, generate animated documentation, build demo tapes for README files, or…
Cite
Cite this page
ModelsAtlas. “cli-demo-generator (daymade/claude-code-skills)”. Retrieved 28 Oct 2026. https://modelsatlas.com/skills/daymade/cli-demo-generator
Blocked. The page stays public so you can check this skill if someone recommended it to you. The audit found 1 critical or high finding, starting with “Privilege escalation / persistence” in scripts/record_interactive.sh:62. Do not install it without reading them.
Trust audit
Audit 0.4.1 · source read 28 Oct 2026
BLOCK means the audit found something that could harm you or your machine. Grade D is shared by 642 of 14,816 audited skills.
What the source does
- FilesystemNone observedNo reads or writes in the source
- NetworkNone observedNo outbound calls in the source
- ShellNone observedNo commands run in the source
- DependenciesPinnedNothing floats
- SecretsNone foundNo keys in source
Five audit layers
| Layer | What we check | Result | Findings |
|---|---|---|---|
L0 Provenance | Repo owner, licence, archive status, activity | PASS | 1 |
L1 Static source | Secrets, path traversal, supply chain, hidden code | FAIL | 1 |
L2 Instructions | Prompt injection, authority framing, hidden directives | PASS | 1 |
L3 Inventory | The files and declarations match the source | PASS | 0 |
L4 Sandbox | Run in isolation and watch behaviour | SKIPPED why | 0 |
Gates applied: no behavioural pass.
Findings (3)
HIGHPrivilege escalation / persistencepriv.escalate · scripts/record_interactive.sh:62
echo " Linux: sudo apt install asciinema"
- Why
- asks for elevated privileges
- Fix
- —
LOWInventory / provenanceinv.symlink · AGENTS.md
AGENTS.md
- Why
- link not followed
- Fix
- —
INFOPrompt injectionscope.undeclared_system · <declared scope>
system use found in code, not declared in the description
- Why
- the description does not admit a capability the code has
- Fix
- declare system use in the description, or remove it
Audit 0.4.1 · source sha 278159d60e54 · 28 Oct 2026Report an issue or request a re-scan
Provenance
Who published it, and what the verdict is pinned to
- Publisherdaymade GitHub userOwner of the repository this skill is read from
- Source folderdaymade/claude-code-skills/cli-demo-generatorThe exact folder we audited
- LicenceMITAs the repository states it
- Commit pinned for this verdict278159d60e54A new audit runs when the source changes
- Repository statusNot archivedPushed today
- Sandboxed runNot runSkills are read, not executed; layer L4 is skipped
What it tells the agent
Full source on GitHub ↗Its description: Generates professional animated CLI demos as GIFs using VHS terminal recordings. Use to create terminal demos, record CLI workflows as GIFs, generate animated documentation, build demo tapes for README files, or…
---
name: cli-demo-generator
description: >-
Generates professional animated CLI demos as GIFs using VHS terminal recordings. Use to create
terminal demos, record CLI workflows as GIFs, generate animated documentation, build demo tapes
for README files, or showcase any command-line tool visually: record terminal / VHS tape / demo
GIF / animate my CLI.
---
# CLI Demo Generator
Create professional animated CLI demos. Four approaches, from fully automated to pixel-precise manual control.
## Quick Start
**Simplest path** — give commands, get GIF:
```bash
python3 ${CLAUDE_SKILL_DIR}/scripts/auto_generate_demo.py \
-c "npm install my-package" \
-c "npm run build" \
-o demo.gif
```
**Self-bootstrapping demo** — for repeatable recordings that clean their own state:
```bash
python3 ${CLAUDE_SKILL_DIR}/scripts/auto_generate_demo.py \
-c "npm install my-package" \
-c "npm run build" \
-o demo.gif \
--bootstrap "npm uninstall my-package 2>/dev/null" \
--speed 2
```
## Critical: VHS Parser Limitations
VHS `Type` strings cannot contain `$`, `\"`, or backticks. These cause parse errors:
```tape
# FAILS — VHS parser rejects special chars
Type "echo \"hello $USER\""
Type "claude() { command claude \"$@\"; }"
```
**Workaround: base64 encode the command**, decode at runtime:
```bash
# 1. Encode your complex command
echo 'claude() { command claude "$@" 2>&1 | grep -v "noise"; }' | base64
# Output: Y2xhdWRlKCkgey4uLn0K
# 2. Use in tape
Type "echo Y2xhdWRlKCkgey4uLn0K | base64 -d > /tmp/wrapper.sh && source /tmp/wrapper.sh"
```
This pattern is essential for output filtering, function definitions, and any command with shell special characters.
## Approaches
### 1. Automated Generation (Recommended)
```bash
python3 ${CLAUDE_SKILL_DIR}/scripts/auto_generate_demo.py \
-c "command1" -c "command2" \
-o output.gif \
--title "My Demo" \
--theme "Catppuccin Latte" \
--font-size 24 \
--width 1400 --height 600
```
| Flag | Default | Description |
|------|---------|-------------|
| `-c` | required | Command to include (repeatable) |
| `-o` | required | Output GIF path |
| `--title` | none | Title shown at start |
| `--theme` | Dracula | VHS theme name |
| `--font-size` | 16 | Font size in pt |
| `--width` | 1400 | Terminal width px |
| `--height` | 700 | Terminal height px |
| `--bootstrap` | none | Hidden setup command (repeatable) |
| `--filter` | none | Regex pattern to filter from output |
| `--speed` | 1 | Playback speed multiplier (uses gifsicle) |
| `--no-execute` | false | Generate .tape only |
Smart timing: `install`/`build`/`test`/`deploy` → 3s, `ls`/`pwd`/`echo` → 1s, others → 2s.
### 2. Batch Generation
Create multiple demos from one config:
```yaml
# demos.yaml
demos:
- name: "Install"
output: "install.gif"
commands: ["npm install my-package"]
- name: "Usage"
output: "usage.gif"
commands: ["my-package --help", "my-package run"]
```
```bash
python3 ${CLAUDE_SKILL_DIR}/scripts/batch_generate.py demos.yaml --output-dir ./gifs
```
### 3. Interactive Recording
Record a live terminal session:
```bash
bash ${CLAUDE_SKILL_DIR}/scripts/record_interactive.sh output.gif --theme "Catppuccin Latte"
# Type commands naturally, Ctrl+D when done
```
Requires asciinema (`brew install asciinema`).
### 4. Manual Tape File
For maximum control, write a tape directly. Templates in `assets/templates/`:
- `basic.tape` — simple command sequence
- `interactive.tape` — typing simulation
- `self-bootstrap.tape` — **self-cleaning demo with hidden setup** (recommended for repeatable demos)
## Advanced Patterns
These patterns come from production use. See `references/advanced_patterns.md` for full details.
### Self-Bootstrapping Demos
Demos that clean previous state, set up environment, and hide all of it from the viewer:
```tape
Hide
Type "cleanup-previous-state 2>/dev/null"
Enter
Sleep 2s
Type "clear"
Enter
Sleep 500ms
Show
Type "the-command-users-see"
Enter
Sleep 3s
```
The `Hide` → commands → `clear` → `Show` sequence is critical. `clear` wipes the terminal buffer so hidden commands don't leak into the GIF.
### Output Noise Filtering
Filter noisy progress lines from commands that produce verbose output:
```tape
# Hidden: create a wrapper function that filters noise
Hide
Type "echo <base64-encoded-wrapper> | base64 -d > /tmp/w.sh && source /tmp/w.sh"
Enter
Sleep 500ms
Type "clear"
Enter
Sleep 500ms
Show
# Visible: clean command, filtered output
Type "my-noisy-command"
Enter
Sleep 3s
```
### Frame Verification
After recording, verify GIF content by extracting key frames:
```bash
# Extract frames at specific positions
ffmpeg -i demo.gif -vf "select=eq(n\,100)" -frames:v 1 /tmp/frame.png -y 2>/dev/null
# View the frame (Claude can read images)
# Use Read tool on /tmp/frame.png to verify content
```
### Post-Processing Speed-Up
Use gifsicle to speed up recordings without re-recording:
```bash
# 2x speed (halve frame delay)
gifsicle -d2 original.gif "#0-" > fast.gif
# 1.5x speed
gifsicle -d4 original.gif "#0-" > faster.gif
```
### Template Placeholder Pattern
Keep tape files generic with placeholders, replace at build time:
```tape
# In tape file
Type "claude plugin marketplace add MARKETPLACE_REPO"
# In build script
sed "s|MARKETPLACE_REPO|$DETECTED_REPO|g" template.tape > rendered.tape
vhs rendered.tape
```
## Timing & Sizing Reference
| Context | Width | Height | Font | Duration |
|---------|-------|--------|------|----------|
| README/docs | 1400 | 600 | 16-20 | 10-20s |
| Presentation | 1800 | 900 | 24 | 15-30s |
| Compact embed | 1200 | 600 | 14-16 | 10-15s |
| Wide output | 1600 | 800 | 16 | 15-30s |
See `references/best_practices.md` for detailed guidelines.
## Troubleshooting
| Problem | Solution |
|---------|----------|
| VHS not installed | `brew install charmbracelet/tap/vhs` |
| gifsicle not installed | `brew install gifsicle` |
| GIF too large | Reduce dimensions, sleep times, or use `--speed 2` |
| Text wraps/breakExcerpt, first 6,000 characters of SKILL.md, verbatim from the audited commit. It is text from someone else’s repository, quoted so you can judge it before your agent reads it.
Install
Pinned to the audited commit 278159d
git clone https://github.com/daymade/claude-code-skills git -C claude-code-skills checkout 278159d60e54
The author documents no install command, so this uses the repository directly. Our verdict covers commit 278159d60e54 only.
Works in
The author has not said which agents this skill supports, and we have not tested it in any.
Audit history
Every audit, every source change
- ✕BLOCK D 69 / 100
first audit · source
278159d60e54
README badge
For maintainers · shows the latest audit
[](https://modelsatlas.com/skills/daymade/cli-demo-generator/)
The badge shows our verdict and grade for this skill, and links back to this page. It changes when the audit does.
Similar skills
affaan-m/ECC
Docker and Docker Compose patterns for local development, container security, networking, volume strategies, and multi-service orchestration. Use when setting up containerized development environments or reviewing…
n8n-io/n8n
Fetch and display the full transcript from a Loom video URL. Use when the user wants to get or read a Loom transcript.
anthropics/skills
Reference for the Claude API / Anthropic SDK — model ids, pricing, params, streaming, tool use, MCP, agents, caching, token counting, model migration. TRIGGER — read BEFORE opening the target file; don't skip because it…
Add this badge to your README
[](https://modelsatlas.com/skills/daymade/cli-demo-generator/)
<a href="https://modelsatlas.com/skills/daymade/cli-demo-generator/"><img src="https://modelsatlas.com/skills/daymade/cli-demo-generator/badge.svg" alt="ModelsAtlas: BLOCK D"></a>
Questions about cli-demo-generator
What does the cli-demo-generator skill do?
Is cli-demo-generator safe to install?
What can cli-demo-generator access on my machine?
What do I need installed to use cli-demo-generator?
How current is this page?
Sources
- github.com/daymade/claude-code-skills/tree/main/cli-demo-generat — the audited source at commit 278159d60e54 and every finding aboveObserved · 28 Oct 2026
Spotted something wrong? Report a correction · Methodology
Keep going in your AI
Opens with this page as the source. We add nothing else to the prompt.
- What does the cli-demo-generator skill do?
- Is cli-demo-generator safe to install?
- What can cli-demo-generator access on my machine?