Agent skill

Michel CLI Demo Recorder

by PackmindHub in PackmindHub/packmind

Produce proof-of-execution demos of the Packmind CLI (packmind-cli) as terminal-styled images (colors and formatting preserved exactly), for embedding in a GitHub PR.

Apache-2.0Auto-check passedAI & LLM Engineering

Install Michel CLI Demo Recorder

skills CLI
$ npx skills add PackmindHub/packmind --skill michel-cli-demo-recorder -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install PackmindHub/packmind michel-cli-demo-recorder --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/PackmindHub/packmind.git skills-src && mkdir -p .claude/skills && cp -r skills-src/scripts/michel/michel-cli-demo-recorder .claude/skills/michel-cli-demo-recorder && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
michel-cli-demo-recorder
GitHub stars
317
Token cost
~3.4k tokens
SKILL.md length
1,255 words
Files
2 (incl. scripts)
Skills in repo
35
Repo updated
First seen
Licence
Apache-2.0

At a glance

Produce proof-of-execution demos of the Packmind CLI (packmind-cli) as terminal-styled images (colors and formatting preserved exactly), for embedding in a GitHub PR.

  • Works in 4 steps: Color dies when stdout isn't a TTY.… → The PTY tool differs by OS. macOS ships… → GitHub does not render SVG in PR/issue… → …
  • It when the user says record a CLI demo
  • SKILL.md covers When to reach for this skill, Why a skill exists for this, The one command you run and Recipe, plus 2 more sections
  • Runs JavaScript scripts from its folder; calls node, bash and brew; reaches github.com

What it does

Michel CLI Demo Recorder is an agent skill from PackmindHub/packmind. Produce proof-of-execution demos of the Packmind CLI (packmind-cli) as terminal-styled images (colors and formatting preserved exactly), for embedding in a GitHub PR. Renders a crisp master SVG and rasterizes it to a PNG — the PNG is what you embed, because GitHub does not render SVG in PR/issue bodies. Use this whenever a dev task touches the CLI — new command, changed output, new flag, bug fix in terminal rendering — and the PR would benefit from showing the tool actually running. Trigger it when the user says…

Its SKILL.md is about 3.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts.

It sits in AI & LLM Engineering, covering Debugging and Embeddings. It works with GitHub. The repository describes itself as: Packmind seamlessly captures your engineering playbook and turns it into AI context, guardrails, and governance. The licence is Apache-2.0.

When your agent uses it

  • It when the user says record a CLI demo
  • Show the command output
  • Add a terminal screenshot to the PR
  • Prove the CLI works

Example prompts

  • “record a CLI demo”
  • “show the command output”
  • “add a terminal screenshot to the PR”
  • “/michel-cli-demo-recorder”

Requirements

  • Node.js
  • Docker

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. Color dies when stdout isn't a TTY. packmind-cli colors its output with chalk (see apps/cli/src/infra/utils/consoleLogger.ts), which…
  2. The PTY tool differs by OS. macOS ships BSD script (script -q ); Linux ships util-linux script (script -qec "" ). And BSD script only…
  3. GitHub does not render SVG in PR/issue bodies — at all. Its image proxy (Camo) refuses image/svg+xml, so an … embed shows up broken no…
  4. No SVG rasterizer = no PNG. The PNG step shells out to rsvg-convert (package librsvg2-bin), which is baked into the Michel worker image…

What it can do on your machine

Read from SKILL.md and the folder at commit 67de8a2. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (JavaScript), which the agent can run.

    Shell commands in SKILL.md call:

    • node
    • bash
    • brew
    • docker
    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Michel CLI Demo Recorder loads about 3.4k tokens when it runs. Until then it costs about 240 tokens; SKILL.md has 1,255 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~240
When it runs · the whole SKILL.md, loaded when a task matches
~3.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from PackmindHub/packmind at commit 67de8a2, republished under its Apache-2.0 licence (© PackmindHub). 1,255 words, ~3,429 tokens.

Download SKILL.mdSave it as .claude/skills/michel-cli-demo-recorder/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
michel-cli-demo-recorder
description
Produce proof-of-execution demos of the Packmind CLI (`packmind-cli`) as terminal-styled images (colors and formatting preserved exactly), for embedding in a GitHub PR. Renders a crisp master SVG and rasterizes it to a PNG — the PNG is what you embed, because GitHub does not render SVG in PR/issue bodies. Use this whenever a dev task touches the CLI — new command, changed output, new flag, bug fix in terminal rendering — and the PR would benefit from showing the tool actually running. Trigger it when the user says "record a CLI demo", "show the command output", "add a terminal screenshot to the PR", "prove the CLI works", "capture the CLI", "demo the command", or whenever you finish CLI work and are about to open or update a PR. Default to running this for any PR whose diff includes CLI source, even if the user didn't explicitly ask for a screenshot — a CLI PR without a visual of the output is an incomplete deliverable.

CLI Demo Recorder

Turn a local packmind-cli invocation into a polished, colored terminal screenshot that drops straight into a GitHub PR. The renderer writes a crisp master SVG and, by default, rasterizes it to a PNG next to it — the PNG is the artifact you embed, because GitHub refuses to render SVG in a PR/issue body (its image proxy rejects image/svg+xml). The companion to michel-ui-demo-recorder — that one records the browser UI; this one captures the terminal.

When to reach for this skill

  • You just implemented or changed a CLI command/flag/output and are opening or updating a PR.
  • "Add a screenshot of the CLI to the PR", "show what the command prints", "prove it runs".
  • A bug was about terminal rendering (colors, alignment, truncation) and the fix needs visual evidence.
  • Anytime the PR diff includes CLI source (apps/cli/) — attach a demo by default; reviewers shouldn't have to clone and run it to see the output.

The deliverable is one or more terminal-window images, each showing a fake prompt line (user@host dir % <command>) followed by the command's real, fully-colored output. The renderer emits two files per demo: a .svg master (crisp at any zoom, a few KB, exact-color — keep it as the source) and a .png rasterized from it. Embed the PNG in the PR — GitHub does not render SVG in PR/issue bodies, so an embedded SVG shows up broken. The PNG is what reviewers actually see.

Why a skill exists for this

Capturing colored CLI output correctly has several non-obvious traps that waste time if you hit them mid-task:

  1. Color dies when stdout isn't a TTY. packmind-cli colors its output with chalk (see apps/cli/src/infra/utils/consoleLogger.ts), which — like most well-behaved CLIs — emits ANSI only when it detects a real terminal or FORCE_COLOR is set. Pipe the output to a file with neither and you get plain, colorless text — the exact opposite of the goal. The bundled converter both sets FORCE_COLOR=3 and runs the command under a pseudo-terminal (PTY), so color survives even for commands that gate strictly on isTTY. Don't hand-roll the capture.
  2. The PTY tool differs by OS. macOS ships BSD script (script -q <file> <cmd>); Linux ships util-linux script (script -qec "<cmd>" <file>). And BSD script only writes the full session to its typescript file, not to a piped stdout. The bundled converter handles both — don't hand-roll it.
  3. GitHub does not render SVG in PR/issue bodies — at all. Its image proxy (Camo) refuses image/svg+xml, so an ![…](…svg) embed shows up broken no matter whether you use a relative path, a /raw/ URL, or raw.githubusercontent.com. (A committed .svg does render on the github.com file view, but that's not where a PR demo lives.) PNG has no such restriction. So: rasterize the SVG to PNG and embed the PNG. The renderer does this automatically.
  4. No SVG rasterizer = no PNG. The PNG step shells out to rsvg-convert (package librsvg2-bin), which is baked into the Michel worker image (fly/Dockerfile.worker). On a dev Mac without it, the script falls back to qlmanage (ships with macOS); install brew install librsvg for the primary path. If neither exists the script errors with the install hint — don't paper over it with --no-png and then embed a broken SVG.

scripts/render-cli-demo.mjs codifies the working recipe so you don't relearn it each time.

The one command you run

bash
PACKMIND_EDITION="$(bash scripts/michel/resolve-edition.sh)" node .claude/skills/michel-cli-demo-recorder/scripts/render-cli-demo.mjs \
  --out docs/cli-demos/standards-list.svg \
  --text-out docs/cli-demos/standards-list.txt \
  --title "packmind-cli — standards list" \
  --prompt-cmd "packmind-cli standards list" \
  -- node dist/apps/cli/main.cjs standards list

This writes three files: standards-list.svg (master), standards-list.png (rasterized — this is what you embed), and standards-list.txt (plain-text sidecar). The PNG name is derived from --out unless you pass --png.

FlagMeaning
--outwhere to write the master SVG (required)
--pngwhere to write the rasterized PNG (default: --out with the extension swapped to .png). The PNG is what you embed in the PR.
--no-pngskip rasterization, emit the SVG only. Use only when you are not embedding in a PR body (e.g. for a committed file-view link); a PR demo needs the PNG.
-- <command...>everything after -- is the command run under the PTY (required). For this repo that is node dist/apps/cli/main.cjs <subcommand…>.
--prompt-cmdthe text drawn on the fake prompt line. Defaults to the actual executed command. Since the real invocation is the verbose node dist/apps/cli/main.cjs …, pass the friendly packmind-cli … form here so the demo reads cleanly — that is how an installed user runs it.
--titlewindow title-bar caption. Omit for no caption.
--cwddirectory to run the command in (default: current dir — i.e. the repo root, where dist/apps/cli/main.cjs lives).
--text-outalso write an ANSI-stripped plain-text copy. Always pass this — see "Verify".
--themedark (default) or light.

Runs under node. The PNG step needs rsvg-convert (librsvg2-bin) — baked into the Michel worker image; on a dev Mac it falls back to qlmanage or you brew install librsvg.

Show full SKILL.md (701 more words)Show less

Recipe

  1. Build the CLI first. This repo's CLI runs from dist/, so build it with npm run packmind-cli:build. It produces dist/apps/cli/main.cjs, which you then run with node dist/apps/cli/main.cjs. A demo of stale dist/ proves nothing about your change.
  2. Set the edition. Resolve it from the git remote — export PACKMIND_EDITION="$(bash scripts/michel/resolve-edition.sh)" (oss for the OSS repo, proprietary for packmind-proprietary) — or the CLI may behave differently than expected.
  3. Start anything the CLI talks to. Commands that hit the Packmind API (login, whoami, standards/commands/skills pulls, playbook) need the local stack up, or they only print the error/unauthenticated path. If you want populated, colorful output, bring the stack up and confirm it's serving before recording — see the michel-run-local-dev-stack skill (docker compose up -d). Local-only commands (--help, --version, lint, diff, config) need no server. If the point of the demo is the error message, skip the server deliberately.
  4. Pick representative commands. Choose the invocations that show off the change. Good defaults: the headline command (populated output), --help, and any new/changed flag. One demo per invocation — small focused images beat one giant scroll.
  5. Render each with the command above, writing into a stable folder (docs/cli-demos/ is a good home; create it). Each render produces both the .svg master and the .png you'll embed.
  6. Verify (next section) before trusting the image.
  7. Embed in the PR (section after).
  8. Clean up any background stack you started (docker compose down — see the michel-run-local-dev-stack skill).

Verify before you commit

Verify by content first, then by eye:

  • Read the --text-out sidecar (primary gate). It's the exact text that got captured, ANSI stripped. Confirm it shows what your change should produce — right rows, right counts, the new flag's effect, aligned columns. If the sidecar is empty or shows an error you didn't intend, the demo is wrong regardless of how the image looks.
  • Read the .png (every host). The rasterizer that produces the PNG also makes it directly viewable — Read the .png to confirm colors, bold/dim, and alignment look right. This works on the Linux worker now (the image bakes in librsvg2-bin), not just macOS.

A demo that captured the wrong state (server down, stale build, not logged in, empty DB) is worse than no demo — it misleads the reviewer. Treat the sidecar as a required gate.

Embed in the PR

Commit the PNG (and the .svg master + optional .txt) into the repo on the PR's branch, then embed the PNG by absolute /raw/ URL in the PR body — never the SVG (it renders broken). Relative paths and /blob/ URLs do not render in a PR description either; use https://github.com/<org>/<repo>/raw/<branch-or-commit-sha>/<path> (pin to the commit sha for a stable image). Directly under the image, add a short What the demo shows: bullet list — the written scenario — so a reviewer who can't or won't open the image still understands what was run and what it proves:

markdown
## CLI demo

![packmind-cli standards list](https://github.com/PackmindHub/packmind/raw/<commit-sha>/docs/cli-demos/standards-list.png)

**What the demo shows:**

- Run `packmind-cli standards list` against a seeded org
- Output lists the 3 active standards with their rule counts, colored by status
- Confirms the new `--status active` flag narrows the list to active standards only

<details><summary>Plain text</summary>

```text
<paste docs/cli-demos/standards-list.txt here, or link it>
```
</details>
```

The What the demo shows: bullets follow the same rules as the UI demo scenario: synthetic, essentials only (what command runs → what the output proves), one line per bullet, readable without opening the image. The plain-text <details> block is a courtesy fallback for anyone whose viewer won't render the image, and it's searchable/diff-able in a way an image isn't.

What "good" looks like

  • The output shown is the real output of your changed CLI, against a realistic state — verified via the text sidecar.
  • Colors, bold, dim, and column alignment match a real terminal (the converter preserves SGR: 16-color, 256-color, truecolor, bold, dim, italic, underline).
  • The prompt line shows the friendly packmind-cli … form (via --prompt-cmd) — that's how an installed user invokes it — while the command actually executed under the PTY is the repo's node dist/apps/cli/main.cjs ….
  • One tight demo per invocation (SVG master + PNG); a few KB each.
  • The PNG is embedded in the PR (renders on GitHub); the SVG is kept as the crisp source.
  • For a multi-step change, a small set of demos (headline command + the new flag + an error/edge case) tells the whole story.

Bundled files

  • scripts/render-cli-demo.mjs — the whole pipeline: PTY capture (OS-aware) → ANSI/SGR parse → terminal-styled SVG → PNG rasterization (rsvg-convert, with a macOS qlmanage fallback), plus an optional plain-text sidecar. No npm dependencies; PNG needs rsvg-convert (librsvg2-bin) on the host.

© PackmindHub, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (scripts) in scripts/michel/michel-cli-demo-recorder of PackmindHub/packmind.

  • SKILL.md
  • scripts/render-cli-demo.mjs

Open the folder on GitHubat commit 67de8a2

Compare with similar skills

Michel CLI Demo Recorder next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Michel CLI Demo Recorder compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Michel CLI Demo Recorder this skillPackmindHub/packmind317—~3.4kAutomated safety check: PassApache-2.0
PR Demomikeyobrien/ralph-orchestrator3.2k—~1.3kAutomated safety check: PassMIT
Yas Demo Texttmck-code/yet-another-statusline242—~649Automated safety check: PassBSD-3-Clause
ML Failure DebuggerLeeroo-AI/superml195—~9.5kAutomated safety check: PassApache-2.0
Embeddings via 9Routerdecolua/9router30k—~604Automated safety check: PassMIT
Esmfold2JimLiu/science-skills2274 repos~2.5kAutomated safety check: PassApache-2.0

Similar skills

  • PR Demo

    mikeyobrien/ralph-orchestrator

    A skill your agent uses when creating animated demos (GIFs) for pull requests or documentation.

    3.2k GitHub stars~1.3k tokensUpdated 4 days ago
    AI & LLM EngineeringAuto-check passed
  • Yas Demo Text

    tmck-code/yet-another-statusline

    Convert make demo/img statusline snapshots into ANSI-stripped plain text for diffing and PR embedding.

    242 GitHub stars~649 tokensUpdated 5 days ago
    AI & LLM EngineeringAuto-check passed
  • ML Failure Debugger

    Leeroo-AI/superml

    Diagnoses failing ML and AI work, such as OOM, NaN, divergence, crashes, slow throughput, wrong outputs and dependency conflicts, with every claim backed by documentation citations.

    195 GitHub stars~9.5k tokensUpdated 6 mo ago
    AI & LLM EngineeringAuto-check passed
  • Embeddings via 9Router

    decolua/9router

    Generates vector embeddings through the 9Router /v1/embeddings endpoint, using models from providers such as OpenAI, Gemini, Mistral and Voyage for RAG and semantic search.

    30k GitHub stars~604 tokensUpdated yesterday
    AI & LLM EngineeringAuto-check passed
  • Esmfold2

    JimLiu/science-skills

    Biohub ESMFold2 / ESMFold2-Fast all-atom co-folding (Candido et al.

    227 GitHub starsUsed in 4 repos~2.5k tokens
    AI & LLM EngineeringAuto-check passed
  • AutoRAG Doctor

    Marker-Inc-Korea/AutoRAG

    Diagnoses and repairs a broken AutoRAG install so every configured datasource is both indexed and returns real search hits.

    5.1k GitHub stars~3.3k tokensUpdated today
    AI & LLM EngineeringAuto-check passed

More from PackmindHub/packmind

All 35 skills in this repo
  • Michel UI Demo Recorder

    PackmindHub/packmind

    Record polished UI demo videos and screenshots of a running web app using Playwright MCP — for client deliverables, release notes, feature walkthroughs, or bug repros.

    317 GitHub stars~6.4k tokensUpdated today
    Auto-check passed
  • Packmind Create Skill

    PackmindHub/packmind

    Guide for creating effective skills. An agent skill from PackmindHub/packmind.

    317 GitHub stars~3.5k tokensUpdated today
    Auto-check: notes
  • Doc Audit

    PackmindHub/packmind

    Audit Packmind end-user documentation (apps/doc/) for broken links, outdated CLI references, non-existent concepts, misleading information, and missing coverage.

    317 GitHub stars~2.4k tokensUpdated today
    Auto-check passed
  • Feature Sprint

    PackmindHub/packmind

    Execute the implementation plan produced by /feature-spec. An agent skill from PackmindHub/packmind.

    317 GitHub stars~1.9k tokensUpdated today
    Auto-check passed
  • Review an implemented GitHub issue the way a senior Packmind engineer would — the human-judgment checks that ESLint, the TypeScript compiler, and e2e tests cannot catch (authorization scoping…

    317 GitHub stars~2.7k tokensUpdated today
    Auto-check passed
  • Packmind Update Playbook

    PackmindHub/packmind

    A skill your agent uses when updating, adding, fixing, changing, or deprecating Packmind playbook artifacts (standards, commands, skills).

    317 GitHub stars~1.9k tokensUpdated today
    Auto-check passed

Works with

Questions about Michel CLI Demo Recorder

What does Michel CLI Demo Recorder do?

Produce proof-of-execution demos of the Packmind CLI (packmind-cli) as terminal-styled images (colors and formatting preserved exactly), for embedding in a GitHub PR. Michel CLI Demo Recorder is an agent skill from PackmindHub/packmind. Produce proof-of-execution demos of the Packmind CLI (packmind-cli) as terminal-styled images (colors and formatting preserved exactly), for embedding in a GitHub PR.

When should I use Michel CLI Demo Recorder?

Michel CLI Demo Recorder fits situations like: it when the user says record a CLI demo; show the command output; add a terminal screenshot to the PR; prove the CLI works.

How do I install Michel CLI Demo Recorder in Claude Code?

Run `npx skills add PackmindHub/packmind --skill michel-cli-demo-recorder -a claude-code`. Or copy the skill folder (scripts/michel/michel-cli-demo-recorder in PackmindHub/packmind) into .claude/skills/michel-cli-demo-recorder in your project. Claude Code loads it when a task matches its description.

How do I install Michel CLI Demo Recorder in Codex?

Run `npx skills add PackmindHub/packmind --skill michel-cli-demo-recorder -a codex`. Or copy the skill folder (scripts/michel/michel-cli-demo-recorder in PackmindHub/packmind) into .agents/skills/michel-cli-demo-recorder in your project. Codex loads it when a task matches its description.

Can I use Michel CLI Demo Recorder in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add PackmindHub/packmind --skill michel-cli-demo-recorder -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/michel-cli-demo-recorder, .gemini/skills/michel-cli-demo-recorder, .github/skills/michel-cli-demo-recorder and .opencode/skills/michel-cli-demo-recorder in your project.

What does Michel CLI Demo Recorder need to run?

Going by SKILL.md and its folder, Michel CLI Demo Recorder needs JavaScript for the scripts in its folder and the command-line tools its instructions call (node, bash, brew, docker and npm). Our summary lists: Node.js; Docker.

Does Michel CLI Demo Recorder access the network?

SKILL.md names 1 domain. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Michel CLI Demo Recorder safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Michel CLI Demo Recorder use?

Michel CLI Demo Recorder is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Michel CLI Demo Recorder use?

About 3.4k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Michel CLI Demo Recorder?

Skills that share tags, products or a category with Michel CLI Demo Recorder: PR Demo (mikeyobrien/ralph-orchestrator, 3.2k stars), Yas Demo Text (tmck-code/yet-another-statusline, 242 stars), ML Failure Debugger (Leeroo-AI/superml, 195 stars) and Embeddings via 9Router (decolua/9router, 30k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Michel CLI Demo Recorder?

PackmindHub (a GitHub organization) maintains it in PackmindHub/packmind, which has 317 GitHub stars. The repository holds 35 skills in this directory. The repository was last updated on October 9, 2026.

Source: PackmindHub/packmind on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.