Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add yschimke/skills --skill compose-previewgit clone --depth 1 https://github.com/yschimke/skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/yschimke/skills/compose-preview)<a href="https://agentmods.dev/skills/yschimke/skills/compose-preview"><img src="https://agentmods.dev/badge/skills/yschimke/skills/compose-preview/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/yschimke/skills/compose-preview"><img src="https://agentmods.dev/badge/skills/yschimke/skills/compose-preview.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00106 | $0.02594 |
| Opus 5.5 | $0.00042 | $0.01038 |
| Sonnet 5.5 | $0.00021 | $0.00519 |
| Haiku 4.5 | $0.00011 | $0.00259 |
Grade A, and why
compose-preview scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 6d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 173 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Compose Preview
Render @Preview composables to PNG without Android Studio (Android via
Robolectric, CMP Desktop via Skia). CLI, Gradle plugin and renderers ship from
compose-ai-tools; the MCP server
from compose-preview-server.
Render first
For a request to render or show a preview, follow the short loop below. For a requested guidelines review, use the review checklist to choose the local, hosted or UI Builder lane before invoking tools. Published catalogs and server-homed designs use hosted tools first; a missing local checkout does not require cloning, Gradle or a cloud environment. If tools are unavailable, report blocked evidence and follow the integration's setup guidance.
With the local MCP server attached (compose-preview-server 3.78.0+), its
initialize instructions say how to call it: render_preview preview=<FunctionName>, no exploring or registering first, no hand-built
mocks. Follow them. This skill adds the budget: a routine render is at most
three tool calls, with no base64 in the reply and images only when you need to
see them.
Your first call is the render. Don't grep for the preview or read its source first: the server finds it by function name. Look things up only if the render fails.
- Render. If your client reads local files (Claude Code, Codex, Gemini
CLI, OpenCode, Antigravity), pass
inline=false. The result ispngPath,sha256, dimensions andchanged, with no image tokens. If it listsotherMatches, render one only if the person asked about it. If it carries avariantChoicewhosemessagesays to ask (several previews matched and the host showed no chooser), the person picks, not you: reply with the rendered match and every entry inchoicesas a numbered list, ask which one they meant, and stop. Don't pick one or shorten the list to "other variants are available". A grid result or a declined choice needs no question. - Look only when you need to. Read
pngPathwith your file reader before you describe or judge the UI; that is what the person sees. Skip the read whenchangedorsha256already answers the question, such as "did my edit land?". Describe only what you saw. If you can't view images here, say so plainly. - Reply briefly, with
pngPathso the person can open the same image. Don't write "the image above": in a terminal or print-mode harness the person doesn't see images your tools return. Point atpngPathinstead.
What ships with it
23 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- references/a11y.md 3.9 KB
- references/agent-cloud.md 7.4 KB
- references/agent-loop.md 13 KB
- references/capture-modes.md 19 KB
- references/catalog-mcp.md 11 KB
- references/cli.md 12 KB
- references/cmp-shared.md 9.1 KB
- references/data-products.md 12 KB
- references/design-guidelines.md 20 KB
- references/display-filters.md 3.1 KB
- references/mcp.md 16 KB
- references/override-knobs.md 8.4 KB
- references/permissions.md 3.5 KB
- references/remote-compose.md 23 KB
- references/resource-previews.md 3.5 KB
- references/runtime-permissions.md 4.9 KB
- references/server-access.md 7.4 KB
- references/setup.md 7.7 KB
- references/state-hoisting.md 1.8 KB
- references/vscode.md 2.4 KB
- references/wear-tiles.md 6.9 KB
- references/wear-ui.md 4.2 KB
- scripts/compose-preview 2.5 KB
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 6d ago Changed · -6 lines scan C → A b3925606ae37
- 9d ago Changed · +1 lines 74e680742d1d
- 10d ago Changed · +19 lines · +8 tokens per session f00202249590
- 15d ago Changed 041ebc1e7e86
- 16d ago Changed · +10 lines 200efaeebeee
- 19d ago Changed · +49 lines · +45 tokens per session dee5147bdd83
- 21d ago Changed · +4 lines 6162a6809e0a
- 23d ago Changed · -351 lines · +7 tokens per session b81d1a1aa162
- 24d ago Changed · +28 lines 684c79f40af5
- 1mo ago First seen · 419 lines · 46 tokens per session scan C 435a01085926
compose-preview is a skill published in the GitHub repository yschimke/skills (2 stars, last pushed 4d ago), licensed Apache-2.0. It adds 106 tokens to every session and 2,594 once invoked, about $0.0004 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
swiftui-liquid-glass
Implement and review iOS 26+ SwiftUI Liquid Glass UI. Use when adopting Liquid Glass or checking its correctness, performance, and design fit.
swiftui-ui-patterns
Build and refactor SwiftUI UI with component patterns and examples. Use when shaping navigation, state, layouts, controls, or screen composition.
tastemaker
Generate genuinely beautiful, on-brand UI instead of generic "AI slop" — use whenever the user asks to build, design, style, or improve a UI, landing page, dashboard, app screen, or component, whenever a PRD/spec needs a design pass before implementation, whenever the user pastes reference images/Pinterest/Dribbble…
compose-component-design
Use when designing or reviewing reusable Jetpack Compose component APIs with modifier parameters, root layout placement, caller-provided variable content, primitive content parameters, optional content, or boolean shape flags.
ideagram
Turn a concept, feature description, blog post, or pitch into a single beautiful, on-brand illustration by matching it to a real unDraw illustration in a local library and recoloring it to the brand accent — genuine illustrator quality, not an AI-drawn approximation. Use whenever the user asks to "make an…
roborazzi
Use when working with Roborazzi screenshot tests on Android/JVM — setting up the Roborazzi Gradle plugin, running record/compare/verify tasks, writing tests with captureRoboImage or RoborazziRule, Compose Preview screenshot testing (ComposablePreviewScanner), Compose Multiplatform (iOS/desktop) screenshots, AI-powered…