Asset: Still · diff
git:20260826.720d8d8 to git:20260910.d07fb9a
1 added, 1 removed. Audit A to A.
---
name: "Asset: Still"
description: "Render a styled image of a code snippet or a command's output with freeze, using the project's freeze theme block"
- when_to_use: "When a README, article or card needs a code image or a picture of terminal output; when the user says code screenshot, snippet image, carbon-style, or 'show this function'."
+ when_to_use: "When a README, article or card needs a code image or a picture of terminal output; when the user says code screenshot, snippet image, carbon-style or 'show this function'."
model: sonnet
effort: low
metadata:
glyph: ᛊ
family: asset
disable-model-invocation: true
allowed-tools: ["Read", "Write", "Glob", "Grep", "Bash"]
argument-hint: "<file [lines a-b] | run: <command>> [svg] [theme family]"
---
# Code and terminal stills
Load `asset-conventions` first; freeze flags are in `~/.claude/library/references/asset-tools.md`.
```xml
<asset-still>
<arguments>
A file path with an optional line range ("src/auth.ts 40-72", "lines 40 to 72"), or `run:` followed by a command whose output to capture. "svg" switches output format. A theme family name selects the freeze block.
</arguments>
<steps>
<step num="1">Resolve the `freeze` theme (`theme.ts freeze --project .` prints the theme file path) and emit its config to `docs/assets/stills/.freeze.json` (`bun ~/.claude/library/scripts/theme/emit.ts <resolved theme file> -o docs/assets/stills/.freeze.json`).</step>
<step num="2">
Render:
- file: `freeze <file> --config docs/assets/stills/.freeze.json [--lines a,b] -o docs/assets/stills/<file-slug>[-a-b].png`. Language is auto-detected; pass `--language svelte` for `.svelte` when detection misses.
- command: `freeze --execute "<command>" --config … -o docs/assets/stills/<command-slug>.png`. Commands run in the project root; anything with side effects gets shown to the user first.
</step>
<step num="3">Quality gate: Read the PNG; check nothing is clipped at the right edge (add `--wrap 100` if so) and the window bar renders. Report path, dimensions, README snippet.</step>
</steps>
<rules>
<rule>Line ranges keep at most ~40 lines; longer snippets get split or cropped to the interesting part and the crop is stated.</rule>
<rule>Never capture output that could contain secrets (`env`, tokens, `.env` contents).</rule>
</rules>
</asset-still>
```