Skip to content
Back to skills

Cmux Capture

ASecurity

Screenshot or record a cmux window from the CLI, for a pull request, a bug report, or to see what the app actually looks like right now. Use when a change is visual, when a drag or an animation cannot be described in text, or when a reviewer needs evidence rather than a claim.

  • 27,663 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 30, 2026
ai-agentsgobashawstesting

Works with

  • cli

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 30, 2026

npx -y skills add manaflow-ai/cmux --skill cmux-capture --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Cmux Capture?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Cmux Capture
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/manaflow-ai-cmux-capture/badge)](https://www.skillsdirectory.com/skills/manaflow-ai-cmux-capture)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: cmux-capture
description: Screenshot or record a cmux window from the CLI, for a pull request, a bug report, or to see what the app actually looks like right now. Use when a change is visual, when a drag or an animation cannot be described in text, or when a reviewer needs evidence rather than a claim.
---

# Screenshots and clips of cmux

`cmux shot` writes a png or a jpeg of a cmux window. `cmux record` writes an mp4
or a gif of one. Both capture only cmux's own windows, both go through the
same permission-free path, and both work in a release build and inside CI. No
Screen Recording permission is involved and none is ever requested.

```bash
cmux shot --label settings-sheet                  # png of the frontmost window
cmux shot --jpg --max-width 1200 --out ~/before.jpg
cmux record start --gif --max-seconds 8 --label sidebar-drag
cmux record note "dragging the workspace"         # caption, drawn into the clip
cmux record stop
```

`shot` prints `<width>x<height> <bytes> <path>`. `record` prints
`<id> <state> <frames> <path>`. Both take `--json` for the whole response.

## Which one

Take a screenshot when the thing is still: a sheet, a menu, a layout, a label,
a color. Record when the thing is a change over time: a drag, an animation, a
reorder, two views settling in an order, a spinner that should stop. A
screenshot of a drag shows nothing, and a clip of a static sheet is a large file
a reviewer has to click to play.

## Working from a clip to a still

`--region x,y,w,h` is the same rectangle in both commands, in window points from
the window's top left. So a detail noticed in a clip can be shot with the same
four numbers:

```bash
cmux record start --region 0,0,420,900 --max-seconds 6   # watch the sidebar
cmux shot --region 0,0,420,900 --label sidebar-final     # keep the end state
```

## Notes for an agent recording its own cmux

- A recording **stops itself** at `--max-seconds` (default 15, maximum 120), so
  a clip is never left running by an agent that stops paying attention. Set it
  above the time the actions take or the clip ends early.
- **One at a time.** A second `record start` is refused with `conflict` while
  one is running. `cmux record list` says whether anything is going, and
  `cmux record status` reports the frame count, with the effective frame rate
  in `--json`.
- **Caption as you go.** `cmux record note "<text>"` draws text into the clip
  from that moment on. A clip has no step list beside it, so one note before
  each thing a reviewer should notice is worth more than a longer clip.
  `--no-captions` turns them off.
- **The clip is only cmux.** Another app in front of the cmux window does not
  appear in the frames, so a capture does not have to own the screen.
- **Frames are timed by when they were captured**, so a clip plays at the speed
  things happened even when the sampler fell behind the requested rate. Check
  `fps_effective` in `--json` if a clip looks slower than expected.
- A `gif` is the shape to paste into a pull request, and `--gif` already picks
  the 8 fps and half scale that keep one small; an mp4 is sharper and needs a
  click to play. `scripts/pr-media.py` uploads either and converts an mp4 to a
  gif on the way.
- Neither command replaces a directory or destroys an existing file before the
  new one is closed. `--out` on a path that is not a file is refused, and so is
  one whose extension does not match the format: `--out clip.gif` needs `--gif`.

## In a CI dogfood tour

A dogfood scenario records with a `record` step wrapping the steps that matter,
and captions with `note`, rather than by calling the CLI. The step table and the
options are in
[cmux-testing/references/dogfood-scenarios.md](../cmux-testing/references/dogfood-scenarios.md).

## Deep-dive references

| Reference | When to use |
| --- | --- |
| [references/commands.md](references/commands.md) | Every flag, the response shape, the error codes, window selection, limits |

Files in this skill

  • SKILL.md3.9 KB
  • references/commands.md6.8 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.