Borrowing it
Nothing to install: this file belongs to doublej/consult-user-mcp. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/doublej/consult-user-mcp/main/.claude/commands/build-skin.mdgit clone --depth 1 https://github.com/doublej/consult-user-mcpWrote 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/commands/doublej/consult-user-mcp/build-skin)<a href="https://agentmods.dev/commands/doublej/consult-user-mcp/build-skin"><img src="https://agentmods.dev/badge/commands/doublej/consult-user-mcp/build-skin.svg" alt="Measured on agentmods" 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.00018 | $0.05601 |
| Opus 5 | $0.00009 | $0.02801 |
| Sonnet 5 | $0.00004 | $0.01120 |
| Haiku 4.5 | $0.00002 | $0.00560 |
Grade A, and why
build-skin 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 7d 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 — 420 lines — stays where its author put it; the contents beside it link to each section on GitHub.
<visual_direction> $ARGUMENTS </visual_direction>
If <visual_direction> is empty, stop and ask for it in one sentence. Do not invent one.
If it names a file or a design-handoff archive, unpack it to your scratchpad and read it before anything else. A handoff usually contains two kinds of document and they are not equal:
- A decision sheet ("pick one from each row") is a menu of options that may never have been answered. It is not the direction.
- A resolved system ("locked system: …", a logo-construction page, exported assets) carries the picks that were actually made. That is the direction. Where the two disagree, the resolved system wins.
Read the exported assets too — an .svg mark tells you the final geometry and which element owns the accent.
A handoff may quote values from the current Theme.swift. Those are the appearance you are blind to. Take the
system (which hue, which ground, which face, which element carries the accent) and discard any literal value
it attributes to today's build.
Treat the blindfold as a rule, not just a wall:
- Do not read, search, reconstruct, or ask about the current appearance. If a tool call is denied, that is the system working. Move on — never route around it with a different tool, a shell command, or git history.
- The deny-list is not airtight and you must not lean on it.
Theme/,Components/,Dialogs/and the existing skins hold the current appearance.<chassis_api>below reproduces every declaration you need from them, with types. If you find yourself about to grep one of those paths, the answer is already in this brief — go read it again. If a value from the existing UI reaches you anyway, discard it. - Never run a dialog without
DIALOG_SKINset to your own skin's id. The default renders the current UI. - Screenshot only the window id returned by
test-cases/capture-dialog.swift, never the screen or another window. Do not open the built app's other windows, the docs site, or any image in the repo.
If you catch yourself reasoning from "how it probably looks today", stop. The contract is the only input.
- Pick your skin's name and confirm
dialog-cli/Sources/DialogCLI/Skins/<YourName>/is empty —find … -type fandgit ls-files …. A stub directory may exist from an earlier attempt. Say in your first message to the user what folder you are building in and whether it was empty. If it has contents, stop and ask before touching them. - Confirm the repo is clean (
git status). Commit anything outstanding first.
<the_contract>
Read UI-BEHAVIOUR-SPECIFICATION.md in full before writing anything. It is the complete behavioural contract
for eight surfaces and it is deliberately free of visual design. It is long; read it in two passes rather than
skimming one.
How to read it:
- Read the tier before the requirement (§0.1). LAW is invariant — keyboard model, outcome model, what the agent receives. CAPABILITY means the person must be able to do a thing and the form is yours. DEFAULT is one workable answer you may replace outright. §0.2 lists what the contract deliberately does not specify — arrangement, decomposition, grouping, idiom — and that list is the size of your freedom.
- §3 is a list of capabilities, not components. Two entries may be one element; one entry may be three. Assembling it top to bottom in the order written is the failure mode §0.3 exists to prevent — run both checks there before you commit to a design.
- Everywhere it says a thing MUST be distinguishable, distinct, or not read as something else, it is handing you a design problem. Those are the requirements you are being paid to answer. Collect them first.
- §7.5 lists things a style may add that the default has not: a label naming the surface kind, an ordinal beside each option, a count of what is chosen, a placeholder on the text surface. It ends with "anything else" — the list is examples, not permission.
- §10 lists behavioural defects in the current build. You inherit the behaviour, not the defects — where a defect is a visual failure (10.4, 10.9, 10.12, 10.14, 10.26 especially), fix it in your skin rather than reproducing it.
- Where it is silent on appearance, you decide. Silence is permission, not an omission.
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.
- 7d ago First seen · 420 lines · 18 tokens per session scan A c07310382016
build-skin is a command published in the GitHub repository doublej/consult-user-mcp (40 stars, last pushed 18d ago), licensed MIT. It adds 18 tokens to every session and 5,601 once invoked, about $0.0001 per session on Opus 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-30.
Other commands, from other repositories
create-excalidraw-dataflow
description: "Create data flow diagram (Excalidraw) (Use any time you need a diagram)".
create-excalidraw-diagram
description: "Create system architecture or technical diagram (Excalidraw) (Use any time you need a diagram)".
bmad-cis-agent-presentation-master
Visual communication and presentation expert for slide decks, pitch decks, and visual storytelling. Use when the user asks to talk to Caravaggio or requests the Presentation Expert.
bmad-cis-design-thinking
Guide human-centered design processes using empathy-driven methodologies. Use when the user says "lets run design thinking" or "I want to apply design thinking".
bmad-ux
Capture the user's UX vision in two documents: DESIGN.md for how the product looks and EXPERIENCE.md for how it behaves. Use when the user says "lets create UX design" or "create UX specifications" or "help me plan the UX".
bmad-cis-agent-design-thinking-coach
Design thinking maestro for human-centered design processes. Use when the user asks to talk to Maya or requests the Design Thinking Maestro.