CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

crush-config

Use when the user needs help configuring Crush — writing crushrc (the Bash config format) or crush.json, setting up providers, models, LSPs, MCP servers, hooks, skills, permissions, or changing Crush behavior.

Quality

88%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

78%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

An excellent executable reference — commands, flags, and examples are concrete and copy-paste ready, and merge/priority semantics are stated precisely. Its main weakness is monolithic structure: the hooks runtime protocol and legacy JSON mapping tables are inlined in a 400+ line body instead of being split into one-level-deep reference files, and there is no explicit step for validating that a new config loads.

Suggestions

Move the Hooks runtime section (event list, stdin schema, env-var table, exit-code semantics, Claude Code compatibility) into references/hooks.md, keeping only the `hook add` syntax and a one-line pointer in the body.

Move the crushrc↔crush.json mapping and shell-expansion tables into references/json.md, linked from the existing 'Legacy JSON format' heading, so the body serves as a crushrc-focused overview.

Add a short validation step after the command examples (e.g., relaunch Crush and check for the merge warning, or run `crush models` to confirm the new provider/model registered) so users can verify their config loaded.

DimensionReasoningScore

Conciseness

The body is efficient and assumes competence — it never explains what Bash, MCP, or LSPs are, and uses terse flag lists and mapping tables throughout ('--extra-header KEY VALUE (repeatable)', 'Deny wins over allow'). It sits at 4 rather than 5 because of minor trimmable redundancy: the 'crushrc at a glance' example largely duplicates the Commands section, and a few prose asides ('Because it is real Bash you get includes, secrets, conditionals, and variables for free') restate what the example already shows. It is clearly above the 3 anchor, which requires unnecessary explanation.

4 / 5

Actionability

Nearly everything is copy-paste ready: full command syntax ('mcp add <name> --type stdio|sse|http [flags]'), complete flag enumerations, and executable examples covering the common cases ('provider add deepseek --type completions --base-url ... --api-key "${DEEPSEEK_API_KEY:?set DEEPSEEK_API_KEY}"'). This matches the 5 anchor — executable guidance with specific examples for the common cases — with no pseudocode gaps that would drop it to 4.

5 / 5

Workflow Clarity

The document sequences the config task well: format choice and discovery priority up front, then per-entity command references, then runtime semantics ('Statements run top to bottom; later statements win'), and edge-case behavior is explicit ('If a directory has both crushrc and crush.json, they merge (crushrc wins on conflicts) and Crush logs a warning'). It falls short of the 5 anchor because there is no validation checkpoint — no step for verifying that a newly written config loads correctly (e.g., re-running Crush and checking the warning log or `crush models` output). It is above the 3 anchor since ordering, merge rules, and failure behavior ('A failing $(command) aborts the load') are stated, not implicit.

4 / 5

Progressive Disclosure

Section structure and in-document navigation are good (clear headers, working anchors like [Hooks runtime](#hooks-runtime), a scoped [Legacy JSON format](#legacy-json-format) section). However, at over 400 lines with no bundle files, substantial content that belongs in separate reference files is inlined — the ~90-line Hooks runtime protocol (stdin schema, env-var table, exit codes, Claude Code compatibility) and the crushrc↔crush.json mapping tables are prime candidates for references/hooks.md and references/json.md. This matches the 3 anchor ('some structure but could be better organized; content that should be separate is inline') rather than 2, since the inline content is well-sectioned and navigable, and rather than 4, which assumes most content is appropriately split across files.

3 / 5

Total

16

/

20

Passed

Description

92%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A strong description that explicitly states what the skill does and when to use it, with a comprehensive list of concrete configuration domains. The only minor gap is a few natural trigger synonyms, which keeps trigger term quality just below the top anchor.

DimensionReasoningScore

Specificity

The description lists multiple specific concrete actions — 'writing crushrc (the Bash config format) or crush.json, setting up providers, models, LSPs, MCP servers, hooks, skills, permissions, or changing Crush behavior' — giving comprehensive coverage of the skill's scope. It matches the 5 anchor ('lists multiple specific concrete actions; comprehensive coverage') rather than 4, which would imply minor coverage gaps; every major config surface is named.

5 / 5

Completeness

It explicitly answers both questions: 'what' is 'writing crushrc ... or crush.json, setting up providers, models, LSPs, MCP servers, hooks, skills, permissions' and 'when' is the explicit trigger 'Use when the user needs help configuring Crush'. This matches the 5 anchor (both what and when explicit with concrete trigger phrases), not 4, whose 'when' clause would be less specific.

5 / 5

Trigger Term Quality

Good keyword coverage with natural terms users would say: 'configuring', 'providers', 'models', 'MCP servers', 'hooks', 'permissions', plus format names 'crushrc' and 'crush.json'. It falls short of the 5 anchor because common variations like 'API keys', 'config file', or 'change settings' are absent, but it is well above the 3 anchor's 'missing common variations'.

4 / 5

Distinctiveness Conflict Risk

The description names a specific product ('Crush') and its specific config artifacts ('crushrc', 'crush.json'), giving it a clear niche with distinct triggers and minimal conflict risk with generic configuration skills. It clearly matches the 5 anchor rather than 4, which would require some overlap with closely related skills.

5 / 5

Total

19

/

20

Passed

Validation

100%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository

charmbracelet/crush

Path

internal/skills/builtin/crush-config/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.