CRITICAL: Use for mutability issues. Triggers: E0596, E0499, E0502, cannot borrow as mutable, already borrowed as immutable, mut, &mut, interior mutability, Cell, RefCell, Mutex, RwLock, 可变性, 内部可变性, 借用冲突
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/m03-mutability/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 and distinctiveness, providing comprehensive keywords including error codes, type names, natural language error messages, and multilingual terms. However, it fails to describe what the skill actually does—it only states it's 'for mutability issues' without specifying concrete actions like diagnosing, fixing, or explaining. Adding explicit capability verbs would significantly improve it.
Suggestions
Add concrete action verbs describing what the skill does, e.g., 'Diagnoses and fixes Rust mutability and borrowing errors' instead of just 'Use for mutability issues'.
Restructure to separate 'what it does' from 'when to use it', e.g., 'Diagnoses Rust borrow checker errors, suggests refactoring for interior mutability patterns, and fixes mutable/immutable borrow conflicts. Use when...'
| Dimension | Reasoning | Score |
|---|---|---|
Specificity | The description names the domain (mutability issues in Rust) and references specific error codes (E0596, E0499, E0502) and types (Cell, RefCell, Mutex, RwLock), but it doesn't describe concrete actions the skill performs—only what it triggers on. There's no mention of what it actually does (e.g., 'diagnoses', 'fixes', 'refactors'). | 2 / 3 |
Completeness | The 'when' is well-covered with explicit trigger terms and error codes. However, the 'what' is weak—it says 'Use for mutability issues' but never explains what the skill actually does about those issues (diagnose, fix, explain, refactor). The description focuses almost entirely on triggers rather than capabilities. | 2 / 3 |
Trigger Term Quality | Excellent coverage of natural trigger terms including Rust compiler error codes (E0596, E0499, E0502), natural language phrases ('cannot borrow as mutable', 'already borrowed as immutable'), key Rust types (Cell, RefCell, Mutex, RwLock), and even Chinese translations (可变性, 内部可变性, 借用冲突). These are terms users would naturally use when encountering these issues. | 3 / 3 |
Distinctiveness Conflict Risk | Highly distinctive with very specific Rust compiler error codes, Rust-specific types, and a narrow domain (mutability/borrowing issues). This is unlikely to conflict with other skills due to the precise technical niche it occupies. | 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 diagnostic skill that excels at conciseness and workflow clarity through effective use of tables and decision trees. Its main weakness is the lack of concrete, executable Rust code examples—given that it's triggered by specific compiler errors (E0596, E0499, E0502), showing before/after code transformations would make it significantly more actionable. The cross-references to other skills are useful for navigation but cannot be verified without bundle files.
Suggestions
Add concrete before/after Rust code examples for at least the top 2-3 error codes (E0596, E0499, E0502), showing the problematic code and the fix
Include a minimal executable example of Cell<T> vs RefCell<T> usage to make the interior mutability decision table actionable rather than abstract
| Dimension | Reasoning | Score |
|---|---|---|
Conciseness | The content is lean and well-structured using tables and decision trees. It assumes Claude understands Rust's borrow checker and doesn't waste tokens explaining basic concepts. Every section adds value through decision-making frameworks rather than explanations. | 3 / 3 |
Actionability | The skill provides good decision tables and diagnostic questions, but lacks executable code examples. There are no concrete Rust code snippets showing how to apply Cell, RefCell, Mutex, etc. in practice—only type names and abstract patterns. For a skill triggered by specific compiler errors, showing before/after code would significantly improve actionability. | 2 / 3 |
Workflow Clarity | The 'Thinking Prompt' section provides a clear 3-step decision sequence, and the 'Trace Up/Trace Down' sections create explicit diagnostic workflows with clear branching logic. The 'Error → Design Question' table transforms error codes into actionable investigation steps. For a diagnostic/decision skill (not a destructive operation), this level of workflow clarity is appropriate. | 3 / 3 |
Progressive Disclosure | The skill references related skills (m02-resource, m07-concurrency, m09-domain, m15-anti-pattern) but no bundle files are provided to support these references. The content itself is well-organized with clear sections, but the cross-references cannot be verified and there's no indication these files exist in the bundle. | 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.