reidond/kedra/m06-error-handling
Claude Code and agent skill by reidond/kedra
Trust tier 3
- community
Source check pending
Checking that the SKILL.md file is still in the repository.
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
Install
npx vskill@latest install reidond/kedra/m06-error-handlingSKILL.md
The same SKILL.md was published earlier as irfanfaraaz/claude-kit/m06-error-handling.
Error Handling
Layer 1: Language Mechanics
Core Question
Is this failure expected or a bug?
Before choosing error handling strategy:
- Can this fail in normal operation?
- Who should handle this failure?
- What context does the caller need?
Error → Design Question
| Pattern | Don't Just Say | Ask Instead | |
|---|---|---|---|
| unwrap panics | "Use ?" | Is None/Err actually possible here? | |
| Type mismatch on ? | "Use anyhow" | Are error types designed correctly? | |
| Lost error context | "Add .context()" | What does the caller need to know? | |
| Too many error variants | "Use Box<dyn Error>" | Is error granularity right? |
Thinking Prompt
Before handling an error:
- What kind of failure is this?
- Expected → Result<T, E>
- Absence normal → Option<T>
- Bug/invariant → panic!
- Unrecoverable → panic!
- Who handles this?
- Caller → propagate with ?
- Current function → match/if-let
- User → friendly error message
- Programmer → panic with message
- What context is needed?
- Type of error → thiserror variants
- Call chain → anyhow::Context
- Debug info → anyhow or tracing
Trace Up ↑
When error strategy is unclear:
| Situation | Trace To | Question | |
|---|---|---|---|
| Too many unwraps | m09-domain | Is the data model right? | |
| Error context design | m13-domain-error | What recovery is needed? | |
| Library vs app errors | m11-ecosystem | Who are the consumers? |
Trace Down ↓
From design to implementation:
Quick Reference
| Pattern | When | Example | |
|---|---|---|---|
Result<T, E> | Recoverable error | fn read() -> Result<String, io::Error> | |
Option<T> | Absence is normal | fn find() -> Option<&Item> | |
? | Propagate error | let data = file.read()?; | |
unwrap() | Dev/test only | config.get("key").unwrap() | |
expect() | Invariant holds | env.get("HOME").expect("HOME set") | |
panic! | Unrecoverable | panic!("critical failure") |
Library vs Application
| Context | Error Crate | Why | |
|---|---|---|---|
| Library | thiserror | Typed errors for consumers | |
| Application | anyhow | Ergonomic error handling | |
| Mixed | Both | thiserror at boundaries, anyhow internally |
Decision Flowchart
Common Errors
| Error | Cause | Fix | |
|---|---|---|---|
unwrap() panic | Unhandled None/Err | Use ? or match | |
| Type mismatch | Different error types | Use anyhow or From | |
| Lost context | ? without context | Add .context() | |
cannot use ? | Missing Result return | Return Result<(), E> |
Anti-Patterns
| Anti-Pattern | Why Bad | Better | |
|---|---|---|---|
.unwrap() everywhere | Panics in production | .expect("reason") or ? | |
| Ignore errors silently | Bugs hidden | Handle or propagate | |
panic! for expected errors | Bad UX, no recovery | Result | |
| Box<dyn Error> everywhere | Lost type info | thiserror |
Related Skills
| When | See | |
|---|---|---|
| Domain error strategy | m13-domain-error | |
| Crate boundaries | m11-ecosystem | |
| Type-safe errors | m05-type-driven | |
| Mental models | m14-mental-model |
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingusr/src/kedra/plugins/rust-skills/skills/m06-error-handling/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/reidond/kedra/m06-error-handling)