live-check — Claude Code skill: render replies without screenshots
Loads the working copy of a plugin into a live Claude session and shows how replies actually draw. Useful after any visual change.
npx skills add NahumLitvin/prismantis --skill live-check -a claude-codeWhat live-check does
The skill pulls the working copy of prismantis into a Claude session and prints a sample reply covering whatever the change touches: a table with numbers and an aligned column, a bash block with flags and a quoted string, a path, a link, a heading and a mermaid block. Then it renders that output.
Window captures are blocked for agents, so the skill takes another route. It runs the session in a hidden terminal, records every byte drawn, and replays the recording into xterm.js inside headless Chrome. Locked screen, parallel runs — both fine. You need capture.py and render.mjs from .claude/skills/live-check/, plus the @xterm/xterm package installed into a scratch folder. render.mjs locates Chrome or Chromium on its own or reads the CHROME variable. On Windows you have to ask a person for a Win+Shift+S capture. xterm.js draws no kitty images and no desktop surface, so treat those as unchecked.
What to look at: column alignment, rule lengths, colors against the theme tokens, wrapping at narrow widths, and whether anything fell back to the engine renderer. A dim line naming prismantis in the transcript means a hook was refused, and that gets fixed first. Hebrew is rendered every time via /prismantis demo-rtl, with each line read right to left against rtlShowcaseText in hooks/help.ts — sentences, list items, table cells, quotes, diagram labels.
What it helps with
- see how a reply draws in the terminal without taking a screenshot
- check column alignment and wrapping at narrow widths
- catch a fallback to the engine renderer
- render Hebrew right to left and verify letter order
- make sure a render carries no private names or hostnames
Example prompts for the agent
- Load the working copy and render a sample reply with a table and a
bashblock - Run live-check after I change the theme colors
- Render
/prismantis demo-rtland check every Hebrew line
How to install live-check
1Skills CLI (Vercel)
npx skills add NahumLitvin/prismantis --skill live-check -a claude-code2Manually: put the files in place
~/.claude/skills/live-check/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/live-check/
1Skills CLI (Vercel)
npx skills add NahumLitvin/prismantis --skill live-check -a codex2Manually: put the files in place
.agents/skills/live-check/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add NahumLitvin/prismantis --skill live-check -a cursor2Manually: put the files in place
.cursor/skills/live-check/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install NahumLitvin/prismantis live-check2Manually: put the files in place
.github/skills/live-check/SKILL.md1Skills CLI (Vercel)
npx skills add NahumLitvin/prismantis --skill live-check -a gemini-cli2Platform CLI
gemini skills install https://github.com/NahumLitvin/prismantis --path .claude/skills/live-checkManually: put the files in place
.devin/skills/live-check/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add NahumLitvin/prismantis --skill live-check -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about live-check
How do I install live-check in Claude Code?
Run npx skills add NahumLitvin/prismantis --skill live-check -a claude-code. The skill file lands at ~/.claude/skills/live-check/SKILL.md.
What does live-check do?
It loads the working copy of prismantis into a live Claude session, prints a sample reply and renders it by recording bytes into xterm.js. You see the real look of a reply without a screenshot.
Why does the skill avoid screenshots?
Window captures are blocked for agents and pull in whatever else is open. Instead the session runs in a hidden terminal and its output replays in headless Chrome.
Source text
SKILL.md · MIT
--- name: live-check description: Load the working copy of prismantis into a real Claude Code session and render how replies draw, with no screenshot. Use after any visual change, when asked to "screenshot", "see it", "try it live", or before claiming a rendering fix works. --- # Live check Tests prove the tree. Only a real render proves the look. 1. **Load the working copy:** - From a new terminal: `claude --plugin-dir <repo path>`. Saving files hot-reloads it. - From inside a session that loaded the `plugin-authoring` skill: copy `.claude-plugin/plugin.json`, `hooks/` and `types/` into that session's dev-mods folder. The person answers the one-time "Enable hot reloading" prompt, and the mod loads when the turn ends. Copy again after every edit. 2. **Print a sample reply** containing everything the change touches: a table with numbers and an aligned column, a `bash` block with flags and a quoted string, a path, a link, a heading and a `mermaid` block. 3. **Render it, never screenshot.** Window captures are blocked for agents and grab whatever else is open. Instead run the session in a hidden terminal, record every byte it draws, and replay that into xterm.js in headless Chrome. This works with the screen locked and in parallel: ``` npm i -s --prefix <scratch> @xterm/xterm timeout 70 python3 .claude/skills/live-check/capture.py <scratch>/demo.bin <repo> 110 80 '[[45,""]]' claude --plugin-dir <repo> "/prismantis demo" node .claude/skills/live-check/render.mjs <scratch>/demo.bin <scratch>/demo.png 110 80 <scratch>/node_modules/@xterm/xterm ``` Then read the PNG. `capture.py` takes the output file, working directory, columns, rows and a JSON list of `[seconds to wait, keys to type]` steps, then the command. Raise the rows to see more of a long reply. `render.mjs` finds Chrome or Chromium itself, or reads `CHROME`. On Windows, ask the person for a Win+Shift+S capture. xterm.js draws no kitty images and no desktop surface, so say those are unchecked. 4. **Check** column alignment, rule lengths, colors against the theme tokens, wrapping at narrow widths, and that nothing falls back to the engine renderer. A dim line naming `prismantis` in the transcript means a hook was refused; fix that first. **Hebrew, every time:** also render `/prismantis demo-rtl` and read every Hebrew line right to left against `rtlShowcaseText` in hooks/help.ts: sentences, list items, table cells, quotes and every diagram label. Word order and letter order both count. If something looks off, read the bytes in the `.bin` before blaming the render: on a terminal without bidi they must be in display order (`םולש`, not `שלום`). 5. **Before publishing a render**, check it, including the status line under the prompt, shows no private repo names, hostnames, internal versions or other work data. Use a neutral sample for README images.
© NahumLitvin · MIT · NahumLitvin/prismantis