CtrlK
BlogDocsLog inGet started
Tessl Logo

crush-hooks

Use when the user wants to add, write, debug, or configure a Crush hook — gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior in crush.json.

74

Quality

93%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Critical

Do not install without reviewing

SKILL.md
Quality
Evals
Security

Quality

Content

82%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.

The content is a strong, dense reference for a niche API Claude would not know: executable examples, precise semantics (shallow-merge updated_input, config-order aggregation, deny>allow precedence), and useful debugging guidance. Weak spots are minor: one placeholder in the rewrite example, no explicit hook-testing verification step in the authoring workflow, and an unlinked external reference pointer with no bundle files.

Suggestions

Replace the `some-rewriter` placeholder in the rewrite example with a concrete (even trivial) transformation — e.g. `sed 's/npm test/npm test -- --runInBand/'` — so the example is copy-paste executable.

Add a verification step to the Authoring Checklist, such as testing the hook against a sample stdin payload (`echo '{"tool_name":"bash",...}' | ./hooks/my-hook.sh`) before wiring it into crush.json, closing the workflow's validation gap.

Turn the `docs/hooks/README.md` mention into a proper markdown link, and if the skill grows, move the env-var and exit-code tables into a `references/` file to strengthen progressive disclosure.

DimensionReasoningScore

Conciseness

The body is lean and dense — configuration schema, env-var and exit-code tables, and four canonical examples with no padding and no explanation of concepts Claude already knows (e.g., no tutorial on regex, JSON, or shell scripting). It matches the score-5 anchor ('lean and efficient; assumes Claude's competence; every token earns its place'); score 4 would require identifiable instances of over-explanation to trim, and none stand out.

5 / 5

Actionability

Three of the four canonical examples are copy-paste executable (the rm -rf blocker, the inline allow echo, the Go context injector), and the config snippets are concrete. It falls short of the score-5 anchor because the rewrite example pipes through an unexplained placeholder — `jq -r '.tool_input.command' | some-rewriter` — so that example is not executable as written; the user-specific rewriting logic is implicitly but not explicitly justified, which is exactly the 'minor gaps' of the score-4 anchor.

4 / 5

Workflow Clarity

The Authoring Checklist gives a clear 5-step sequence (shebang/set flags, chmod, config entry, intent decision, shallow-merge reminder) and the Debugging section supplies error-recovery guidance (timeout behavior, non-2/49 exits, stderr logging, matcher regex). It does not reach 5 because there is no explicit verification checkpoint such as testing the hook against a sample stdin payload before wiring it into crush.json — the 'minor validation gaps' of the score-4 anchor. The destructive-operations cap does not apply since the workflow authors hooks rather than performing destructive/batch operations.

4 / 5

Progressive Disclosure

The single file (~205 lines) is well organized into scannable sections (Events, Configuration, Input, Output, Aggregation, Examples, Checklist, Debugging, Compatibility) with a one-level pointer to the full reference ('For the full reference, see docs/hooks/README.md'). It stops short of the score-5 anchor because that pointer is not a proper link and no bundle file exists, so reference-grade detail (env-var/exit-code tables) is inlined rather than split out — the 'minor organization gaps' and 'references mostly clear' of the score-4 anchor; it is well above score 3, where structure would be weak or references buried.

4 / 5

Total

17

/

20

Passed

Description

100%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.

The description is excellent: it explicitly states both what the skill does and when to use it, using concrete, third-person action verbs with natural synonym coverage and a clearly delineated niche (Crush hooks in crush.json). It matches the strongest good_overall_examples in structure and specificity.

DimensionReasoningScore

Specificity

The description lists multiple specific concrete actions — "add, write, debug, or configure a Crush hook", "gating or blocking tool calls, approving or rewriting tool input before execution, injecting context into tool results, or troubleshooting hook behavior" — giving comprehensive coverage of the skill's capabilities with no vague filler. It matches the score-5 anchor ('lists multiple specific concrete actions; comprehensive coverage') and exceeds score 4, which permits minor coverage gaps; none are evident.

5 / 5

Completeness

Both 'what' and 'when' are explicitly answered: the 'Use when the user wants to...' clause gives concrete trigger conditions, and the em-dash clause states what the skill does (gating/blocking, approving/rewriting, injecting context, troubleshooting). It mirrors the score-5 anchor example structure; it is above score 4 because the 'when' is fully explicit with concrete trigger phrases rather than merely present.

5 / 5

Trigger Term Quality

Natural trigger terms are comprehensive and include synonyms: "add, write, debug, or configure" (authoring synonyms), "gating or blocking" (blocking synonyms), "troubleshooting", plus the concrete artifact names "Crush hook" and "crush.json". This matches the score-5 anchor's requirement for synonym coverage; score 4 ('a few natural terms missing') would apply only if common phrasings were absent, and a user asking to write, block with, or troubleshoot a hook would phrase it in terms already covered.

5 / 5

Distinctiveness Conflict Risk

The description names a clear niche — Crush hooks in crush.json — with distinct triggers ('Crush hook', 'crush.json', 'tool input'), giving minimal conflict risk with other skills. Even against a closely related Claude Code hooks skill, the repeated 'Crush' qualifier disambiguates, fitting the score-5 anchor ('clear niche with distinct triggers; minimal conflict risk').

5 / 5

Total

20

/

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