CRITICAL: Use for error handling. Triggers: Result, Option, Error, ?, unwrap, expect, panic, anyhow, thiserror, when to panic vs return Result, custom error, error propagation, 错误处理, Result 用法, 什么时候用 panic
63
74%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Passed
No known issues
Optimize this skill with Tessl
npx tessl skill review --optimize ./skills/m06-error-handling/SKILL.mdQuality
Discovery
72%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 excels at trigger term coverage with an impressive list of Rust error handling keywords including Chinese translations, and occupies a clear, distinct niche. However, it reads more like a keyword index than a skill description — it lacks concrete action verbs describing what the skill actually does (e.g., 'implement custom error types', 'choose between Result and panic', 'set up anyhow/thiserror').
Suggestions
Add concrete capability descriptions: e.g., 'Guides implementation of custom error types, error propagation with ?, choosing between panic and Result, and setting up anyhow/thiserror crates.'
Restructure to separate 'what it does' from 'when to use it': e.g., 'Teaches Rust error handling patterns including custom errors, propagation, and recovery. Use when the user asks about Result, Option, unwrap, expect, panic, anyhow, or thiserror.'
| Dimension | Reasoning | Score |
|---|---|---|
Specificity | It names the domain ('error handling') and lists relevant types/concepts (Result, Option, Error, anyhow, thiserror, custom error, error propagation), but doesn't describe concrete actions like 'implement custom error types' or 'convert between error types'. The description is more a list of trigger terms than a description of capabilities. | 2 / 3 |
Completeness | The 'when' is addressed via the 'Triggers:' list and 'CRITICAL: Use for error handling', but the 'what does this do' part is weak — it only says 'error handling' without describing specific actions or capabilities the skill provides. The trigger list partially compensates but doesn't fully replace an explicit 'Use when...' clause. | 2 / 3 |
Trigger Term Quality | Excellent coverage of natural keywords users would say: 'Result', 'Option', 'Error', '?', 'unwrap', 'expect', 'panic', 'anyhow', 'thiserror', 'custom error', 'error propagation', plus Chinese equivalents. These are exactly the terms a Rust developer would use when asking about error handling. | 3 / 3 |
Distinctiveness Conflict Risk | Error handling in Rust is a very clear niche. The specific trigger terms (Result, Option, anyhow, thiserror, unwrap, expect, panic) are highly distinctive and unlikely to conflict with other skills. The domain is well-scoped. | 3 / 3 |
Total | 10 / 12 Passed |
Implementation
77%Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.
This is a well-structured decision-oriented skill that excels at helping Claude choose the right error handling strategy through clear flowcharts, tables, and thinking prompts. Its main weakness is the lack of executable, multi-line code examples—particularly for thiserror custom error definitions and anyhow context usage, which are the most practically valuable patterns. The references to other skills in the bundle are reasonable but unverifiable without bundle files.
Suggestions
Add a complete, executable thiserror example showing #[derive(Error)] with multiple variants and a From implementation
Add a complete anyhow example showing .context() usage in a function that chains multiple fallible operations with ?
| Dimension | Reasoning | Score |
|---|---|---|
Conciseness | The content is lean and efficient throughout. It uses tables extensively to compress information, avoids explaining what Result, Option, or panic are conceptually, and assumes Claude already knows Rust. Every section adds decision-making value rather than tutorial padding. | 3 / 3 |
Actionability | While the decision flowcharts and tables provide clear guidance on *when* to use each pattern, the actual code examples are minimal one-liners in table cells rather than executable, contextual snippets. There are no complete examples showing thiserror derive macros, anyhow usage with .context(), or custom error type definitions—key practical patterns a user would need. | 2 / 3 |
Workflow Clarity | The 'Thinking Prompt' section provides a clear 3-step decision sequence, and the 'Decision Flowchart' gives an explicit branching workflow. For a conceptual/decision-making skill (not a destructive or batch operation), the sequencing is clear and the checkpoints (ask what kind of failure, who handles it, what context is needed) are well-defined. | 3 / 3 |
Progressive Disclosure | The skill references related skills (m13-domain-error, m11-ecosystem, m05-type-driven, m14-mental-model, m09-domain) but no bundle files are provided, so it's unclear if these exist. The 'Trace Up/Down' sections provide navigation but the references feel like they point to a broader system that isn't verified. The content itself is well-structured with clear sections but could benefit from confirmed external references. | 2 / 3 |
Total | 10 / 12 Passed |
Validation
90%Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.
Validation — 10 / 11 Passed
Validation for skill structure
| Criteria | Description | Result |
|---|---|---|
frontmatter_unknown_keys | Unknown frontmatter key(s) found; consider removing or moving to metadata | Warning |
Total | 10 / 11 Passed | |
fa60f79
Table of Contents
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.