CtrlK
BlogDocsLog inGet started
Tessl Logo

hook-scaffold

Scaffold and validate Claude Code hooks blocks deterministically (scripts/scaffold_hook.py, scripts/validate_hook.py) for event-driven automation: format-on-save, file guards, notifications, quality gates. Use when the user asks to create, validate or fix a hook or a settings.json hooks block; hook-engineering owns the design rationale, this skill owns the emitted JSON. [EXPLICIT]

60

Quality

75%

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

Fix and improve this skill with Tessl

tessl review fix ./plugins/claude-native-toolkit/skills/hook-scaffold/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

57%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 body is a lean, well-bounded stage contract that correctly pushes depth to a real, high-quality playbook — but it defers all executable guidance to that reference, keeps validation abstract, and its generated Packet block describes a bundle structure that doesn't match what's on disk. Aligning the body's procedure with the scripts that actually ship would close the main gaps.

Suggestions

Inline the key commands into the Procedure (e.g. `python3 scripts/scaffold_hook.py --event <E> --type <command>` and `python3 scripts/validate_hook.py <file>`) so the body is actionable without opening the playbook.

Make the validation step executable: replace "Validate against the Quality Criteria" with a concrete gate — `python3 scripts/validate_hook.py <file>` and `bash scripts/check.sh` must both be green — plus a fix-and-retry loop for failures.

Regenerate or trim the Packet block: it lists knowledge/, prompts/, examples/, agents/, and templates/ directories that don't exist in the bundle, and the playbook/check.sh also reference missing schemas/, examples/, and evals/ paths.

DimensionReasoningScore

Conciseness

The body is lean and assumes competence (the When-NOT table, a 3-step procedure, a short checklist), but trimmable noise remains: the generated Spanish "Packet" block, Spanish Contract labels ("Aceptación/Límites/Casos borde"), and scattered [EXPLICIT]/[INFERENCE]/[SUPUESTO] tags add tokens without guiding the task. Not 5 (unnecessary tokens present); well above 3 (no padded explanations of things Claude already knows).

4 / 5

Actionability

The body's procedure is high-level — "Apply its decision tables; pick the strategy explicitly", "Validate against the Quality Criteria" — with no commands or examples in the body itself; the executable guidance (scaffold/validate invocations) exists only one hop away in references/full-playbook.md. Not 4: the body alone doesn't give a user/Claude the concrete steps without opening the reference; above 2 because it does point to one specific, real playbook and a concrete when-not table.

3 / 5

Workflow Clarity

A sequence is listed and a validation step exists ("Validate against the Quality Criteria"), but validation is implicit and abstract — the body never invokes scripts/validate_hook.py or scripts/check.sh (both exist in the bundle) and has no fix-and-retry loop for a workflow that edits settings.json. Not 4: checkpoints are named but not executable in the body; above 2 because the sequence itself is coherent.

3 / 5

Progressive Disclosure

Scored against the actual bundle: the resource map cleanly signals one real one-level reference (references/full-playbook.md, substantive). But the generated Packet block lists knowledge/, prompts/, examples/, agents/, templates/ directories that do not exist, and the playbook/check.sh reference schemas/hook-config.schema.json, templates/, examples/, and evals/ that are also absent — navigation claims misdescribe the bundle and several referenced paths are dead. Not 4: the mismatch is more than a minor organization gap; above 2 because the one reference that is signaled does resolve to real content.

3 / 5

Total

13

/

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.

The description is specific, explicit about both what it does and when to use it, and cleanly boundaries itself against the related hook-engineering skill. The only gap is synonym coverage for trigger terms (specific hook event names and 'hook event' phrasings).

DimensionReasoningScore

Specificity

"Scaffold and validate Claude Code hooks blocks deterministically (scripts/scaffold_hook.py, scripts/validate_hook.py)" names the concrete actions, the implementing scripts, and the use cases ("format-on-save, file guards, notifications, quality gates") — comprehensive concrete coverage rather than several actions with gaps.

5 / 5

Completeness

Explicitly answers both: what ("Scaffold and validate Claude Code hooks blocks deterministically ... for event-driven automation") and when ("Use when the user asks to create, validate or fix a hook or a settings.json hooks block") with concrete trigger phrases. Not 4: the 'when' clause is fully explicit, not merely present-but-imprecise.

5 / 5

Trigger Term Quality

"create, validate or fix a hook", "settings.json hooks block" are natural user phrasings, but common synonyms are missing — no specific event names (PreToolUse, PostToolUse) or phrasings like "hook event"/"lifecycle hook" that a user might say. Not 5 (synonym coverage incomplete); clearly above 3 (the natural phrases users say are present).

4 / 5

Distinctiveness Conflict Risk

A clear niche with an explicit boundary statement — "hook-engineering owns the design rationale, this skill owns the emitted JSON" — so it is clearly distinguishable from the closely related skill and unlikely to trigger for the wrong one.

5 / 5

Total

19

/

20

Passed

Validation

68%

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

Validation — 11 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

allowed_tools_field

'allowed-tools' contains unusual tool name(s)

Warning

metadata_version

'metadata.version' is missing

Warning

metadata_field

'metadata' should map string keys to string values

Warning

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

referenced_paths_exist

Referenced path issues: 1 missing

Warning

Total

11

/

16

Passed

Repository
JaviMontano/claude-plugins
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.