consult-user-mcp: Command for Claude Code

.claude/commands/build-skin.md

build-skin is a command for Claude Code from doublej/consult-user-mcp. It costs 18 tokens per session (5,601 once invoked), scanned A, original, MIT.

A command for designing a completely new visual skin for a dialog-based application from a written behaviour and style brief. A skin changes an interface's visual appearance without defining its underlying behaviour.

In plain words
What is it for?
It is for producing a new dialog interface design from supplied visual instructions and resolved design assets.
Why use it?
It prevents the design from being influenced by the existing interface when the goal is to create a fresh visual direction.

Command for Claude Code

Written for Claude Code: $ARGUMENTS substitution. Also seen: mentions subagents.

This is doublej/consult-user-mcp's own configuration. It tells Claude Code how to work on consult-user-mcp itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything consult-user-mcp configures →

Needs its repository: it reads a path above its own folder, which exists only inside the repository. The line is DIALOG_SKIN=<yours> .build/debug/DialogCLI confirm "$(cat ../test-cases/cases/confirm/basic.json)".

Reuse

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.

Copy the file
curl -O https://raw.githubusercontent.com/doublej/consult-user-mcp/main/.claude/commands/build-skin.md
Clone the repo
git clone --depth 1 https://github.com/doublej/consult-user-mcp

Made for: Claude Code.

Wrote 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.

agentmods badge for build-skin

README.md
[![agentmods](https://agentmods.dev/badge/commands/doublej/consult-user-mcp/build-skin.svg)](https://agentmods.dev/commands/doublej/consult-user-mcp/build-skin)
Your own site
<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>
Per session 18 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 5,601 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce 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

Measured 7d ago against content hash c07310382016, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-06, from the pricing page.

Security

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.

.claude/commands/build-skin.md · 420 lines

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_SKIN set 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.

  1. Pick your skin's name and confirm dialog-cli/Sources/DialogCLI/Skins/<YourName>/ is empty — find … -type f and git 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.
  2. 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.

Read the full file on GitHub · 420 lines

Changes

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.

  1. 7d ago First seen · 420 lines · 18 tokens per session scan A c07310382016

Subscribe to this mod's changes

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.