Atmos Asciicast Development Skill
SkillWeb & browsingCreate and update Atmos repository asciicast demos for internal documentation, website publishing, and CastPlayer embeds.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Atmos Asciicast Development Skill skill
What this skill tells your AI
The instructions your AI receives, as published by cloudposse/atmos in .claude/skills/atmos-asciicast/SKILL.md and read by ahel’s review.
Use this Claude skill when creating or updating committed .cast recordings inside the Atmos repository.
This is an internal Atmos development skill. It is intentionally separate from distributed Agent Skills. Do not symlink it to agent-skills, copy internal website assumptions into Agent Skills, or treat Claude skills and Agent Skills as synchronized artifacts.
Intent
Atmos casts are product demos, regression evidence, and documentation examples at the same time. They should show users that Atmos workflows are simple to follow and that the feature being demonstrated works in a realistic project.
- Tell a small story a user can follow: inspect context, run the Atmos command, show the result.
- Prefer Atmos-native commands and workflow features over clever shell expressions.
- Keep recorded steps light. A visible step should usually be one command with one teaching purpose.
- Use hidden setup, cleanup, and fixture preparation only to make the recorded story deterministic.
- Treat each cast as evidence for a feature: include the command output that proves the behavior, then validate the committed
.cast.
Defaults
-
Use shared cast defaults when available instead of repeating terminal settings on each cast step:
defaults: cast: !include cast-defaults.yaml .cast simulate: !include cast-defaults.yaml .simulate env: !include cast-defaults.yaml .env.recording -
Keep common recording settings in
cast-defaults.yamlundercast,simulate, andenv(env.commandfor command setup,env.recordingfor the recorded process). -
Write curated Atmos docs casts under
website/static/casts/...; they are served from/casts/.... -
Use
type: castwithmode: stepsfor deterministic command demos that need exit-code propagation. -
Use
mode: sessiononly when the demo must show typed input, prompts, key presses, or terminal timing. -
Keep ad hoc local recordings in the XDG cache via
--cast; do not commit cache recordings.
Fixture Policy
- Use deterministic Atmos demo fixtures under
demo/casts. - Do not reuse product examples or test fixtures just to make a docs cast easier.
- Keep demo output stable: no local absolute paths, hostnames, real account IDs, secrets, random IDs, or live timestamps.
Workflow Patterns
- Put repeatable setup in
atmos casts setupusingtype: workdirfor fixture copies and a localGOBINfor the Atmos binary. - Keep pre-recording
cleansteps simple; they remove stale.castfiles before recording and do not need failure cleanup semantics. - Put cleanup-after-recording steps after the
type: caststep and usewhen: alwayswhen they restore secrets, stop services, or remove Terraform state. - Leave validation steps success-only so validation runs only after recording and required cleanup complete successfully.
- Use
output: nonefor noisy setup, reset, and cleanup commands that should not be part of the story. - Prefer
type: castmode: stepswith nestedtype: shellsteps for command demos; addtype: simulatesteps only when typed prompts make a longer story easier to follow. - Use
type: toastfor short recorded status narration instead of shellprintfoutput. - Keep large shell scripts out of recorded casts. If unavoidable, hide them in setup/cleanup and explain the user-facing result with lightweight Atmos commands in the recording.
- Use path-based custom command names for demo casts, for example
casts generate demo fixtures native-terraform plan, and publish fixture casts under/casts/demo/fixtures/....
Authoring Checklist
-
Define the user-facing story before editing YAML: what feature is being proven, what command should the user remember, and what output proves it worked?
-
Add or update the workflow/custom command that regenerates the cast.
-
Regenerate the
.castintowebsite/static/casts. -
Review the cast as plain text for secrets, local paths, unstable timestamps, noisy logs, and shell complexity that distracts from Atmos.
-
Embed it with the website
CastPlayercomponent when the corresponding docs page can show it usefully, and in the feature's changelog blog post (see thepull-requestskill's Blog post section) — new commands and features should ship their blog post with a working demo, not just prose. UseCastPlayerdirectly in blog posts, followed by a[View the full example](/examples/<name>)link; don't reach forEmbedExamplethere.<CastPlayer src="/casts/cli/describe-component.cast" title="describe component" chrome controls scrubber /> -
Commit only
.castfiles: the website renders them client-side, so no display derivatives are needed. Commit GIF/MP4/PNG/JPEG derivatives only when a publishing target cannot consume the player.
Static Screengrabs
Docs screengrabs (CLI help output, command output snapshots) are plain .cast recordings committed under website/static/casts/screengrabs/ and rendered as a single static frame with the CastPlayer static prop:
<CastPlayer title="atmos about --help" src="/casts/screengrabs/atmos-about--help.cast" static chrome />
Static mode shows the final terminal content of the whole recording at natural height (no playback, no controls, no viewport clipping). The bulk help screengrabs are generated by atmos --chdir=demo/casts casts generate screengrabs cli, which records every command in demo/casts/screengrabs/demo-stacks.txt via the global --cast flag; story-style demo casts (e.g. learn/mindset) are custom commands under demo/casts/atmos.d/screengrabs/.
Static Render Formats (CLI)
atmos cast render supports native static outputs in addition to GIF/MP4: --html (inline-styled span fragment), --ascii (plain text, no ANSI), --png, and --jpg. These are rendered in-process from the recording's final terminal content — no aha, agg, or ffmpeg required. The global --cast flag accepts the same extensions (--cast=out.png), including on --help invocations. Use these for artifacts outside the website (GitHub embeds, image exports, machine-readable text); the website itself consumes raw casts.
Signals
- GitHub stars
- 1k
- Forks
- 175
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
atmos-asciicast- Source
- github.com/cloudposse/atmos