charm-freeze
Generate PNG, SVG, or WebP screenshots of code and terminal output with freeze. Use when screenshotting code, freeze, terminal-to-image, or capturing styled code snippets as images.
Best use case
charm-freeze is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Generate PNG, SVG, or WebP screenshots of code and terminal output with freeze. Use when screenshotting code, freeze, terminal-to-image, or capturing styled code snippets as images.
Teams using charm-freeze should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/charm-freeze/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How charm-freeze Compares
| Feature / Agent | charm-freeze | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Generate PNG, SVG, or WebP screenshots of code and terminal output with freeze. Use when screenshotting code, freeze, terminal-to-image, or capturing styled code snippets as images.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# charm-freeze
Generate images of code and terminal output using `freeze`.
## Basic Usage
```bash
# screenshot a file (auto-detects language)
freeze main.go -o main.png
# pipe code in
cat artichoke.hs | freeze -o out.svg
# capture live terminal command output
freeze --execute "eza -lah" -o eza.png
```
## Output Formats
Default output is `freeze.png`. Supports `.svg`, `.png`, `.webp`.
```bash
freeze main.go -o out.svg
freeze main.go -o out.png
freeze main.go -o out.webp
# all at once
freeze main.go -o out.{svg,png,webp}
```
If piped (e.g. `freeze main.go > out.svg`), outputs to stdout.
## Language Detection
Auto-detects from filename or content. Override with `--language`:
```bash
cat script.sh | freeze --language bash
freeze file.txt --language python
```
## Themes
```bash
freeze main.go --theme dracula
freeze main.go --theme charm # default
freeze main.go --theme github
```
## Fonts
Defaults: JetBrains Mono, 14px, 1.2 line-height.
```bash
freeze main.go \
--font.family "SF Mono" \
--font.size 16 \
--line-height 1.4
# embed a font file (TTF, WOFF, WOFF2)
freeze main.go --font.file ./FiraCode.ttf
# enable ligatures
freeze main.go --font.ligatures
```
## Decorations
```bash
# window controls (macOS style)
freeze main.go --window
# rounded corners
freeze main.go --border.radius 8
# border outline
freeze main.go --border.width 1 --border.color "#515151" --border.radius 8
# drop shadow
freeze main.go --shadow.blur 20 --shadow.x 0 --shadow.y 10
# background color
freeze main.go --background "#08163f"
```
## Layout
```bash
# padding (1, 2, or 4 values)
freeze main.go --padding 20
freeze main.go --padding 20,40
freeze main.go --padding 20,60,20,40 # top right bottom left
# margin (same syntax)
freeze main.go --margin 20,40
# fixed height
freeze main.go --height 400
```
## Line Numbers
```bash
freeze main.go --show-line-numbers
# capture specific lines only
freeze main.go --show-line-numbers --lines 10,25
```
## Configurations
Three built-in presets:
```bash
freeze -c base main.go # minimal
freeze -c full main.go # macOS-like, shadow + window controls
freeze -c user main.go # your saved config (~/.config/freeze/user.json)
# custom JSON config
freeze -c ./custom.json main.go
```
Example `custom.json`:
```json
{
"window": true,
"border": { "radius": 8, "width": 1, "color": "#515151" },
"shadow": { "blur": 20, "x": 0, "y": 10 },
"padding": [20, 40, 20, 20],
"font": { "family": "JetBrains Mono", "size": 14 },
"line_height": 1.2
}
```
## Interactive Mode
```bash
freeze --interactive
```
Opens a TUI to tweak all settings visually. Saves result to `~/.config/freeze/user.json`.
## Screenshot TUIs
Capture a running TUI via tmux:
```bash
tmux capture-pane -pet 1 | freeze -c full -o helix.png
```
## Wrap Long Lines
```bash
freeze main.go --wrap 80
```Related Skills
charm-vhs
Record terminal sessions as GIF/MP4/WebM from declarative .tape scripts with VHS. Use when creating terminal demos, recording CLI sessions, VHS tape files, or generating terminal GIFs.
charm-ultraviolet
Low-level Go terminal primitives - cell-based rendering, input handling, screen management. Use when building custom Go terminal renderers, ultraviolet, cell buffers, or performance-critical TUI work below Bubble Tea's abstraction level.
charm-pop
Send emails from the terminal with pop - TUI and CLI modes, SMTP and Resend support, attachments. Use when sending email from terminal, pop, CLI email, or piping email content from shell scripts.
charm-lipgloss
CSS-like terminal styling for Go with lipgloss v2 - styles, colors, borders, layout, tables, lists, and trees. Use when styling Go terminal output, lipgloss, terminal layout composition, or building styled tables/lists/trees in Go.
charm-huh
Build interactive terminal forms and prompts in Go with huh - input, select, confirm, multiselect, validation, theming. Use when building Go terminal forms, huh, interactive Go prompts, or form fields with validation. NOT for shell script prompts (use gum).
charm-harmonica
Physics-based animation for Go TUIs - damped spring oscillator and projectile motion. Use when adding spring animations, physics-based motion, or smooth transitions to Go terminal apps. No Ease function exists in this library.
charm-gum
Interactive shell script prompts, fuzzy filters, spinners, and styled output with gum. Use when building bash/shell script UIs, gum commands, interactive shell prompts, or CLI script workflows. NOT for Go terminal forms (use huh).
charm-fang
Wrap Cobra with styled help, error output, auto versioning, and manpage generation via fang. Use when building Go CLIs with fang, styled Cobra help, or adding lipgloss-rendered help pages to a Go CLI.
charm-ecosystem
Architect's guide to the charmbracelet Go TUI ecosystem - which libraries to combine, dependency hierarchy, integration patterns. Use when choosing charm libraries, planning TUI architecture, combining bubbletea/lipgloss/bubbles/huh, or asking 'which charm library for X'. NOT for specific library API details (use individual charm-* skills).
charm-crush
Architecture patterns from Crush, charmbracelet's production agentic coding CLI built on bubbletea v2, lipgloss v2, bubbles v2, glamour v2, and ultraviolet. Use when building production bubbletea apps, composing charm TUI components at scale, designing agentic CLI tools, implementing streaming LLM UIs, or asking about crush internals. NOT for individual charm library basics.
charm-bubbletea
Build terminal UIs in Go with Bubble Tea v2's Elm Architecture (Model/Update/View). Use when building Go TUI apps, tea.Model, tea.Cmd, Elm architecture, or terminal applications. NOT for pre-built TUI components (use bubbles).
charm-bubbles
Pre-built TUI components for Bubble Tea apps - spinner, text input, textarea, list, table, viewport, paginator, progress bar. Use when adding Go TUI components, bubbles, or terminal widgets to a Bubble Tea app. NOT for the core TUI framework (use bubbletea).