---
name: Error Recovery
slug: error-recovery
category: AI Engineering
description: "Error Recovery guides an agent through a decision tree for tool call failures: retry transient errors once, fix and retry structural ones, or escalate if blocking. It switches tools after repeated failures and logs failed tasks to a database."
github: "https://github.com/aden-hive/hive/tree/main/core/framework/skills/_default_skills/error-recovery"
language: Python
stars: 10907
forks: 5668
install: "npx degit https://github.com/aden-hive/hive/tree/main/core/framework/skills/_default_skills/error-recovery ~/.claude/skills/error-recovery"
installs_to: ~/.claude/skills/error-recovery
source_path: core/framework/skills/_default_skills/error-recovery/SKILL.md
collection_size: 24
category_size: 2451
collection_url: "https://dirskills.com/collections/aden-hive/hive"
added: 2026-08-15T06:50:11.946Z
last_synced: 2026-08-15T06:50:11.946Z
canonical_url: "https://dirskills.com/skills/error-recovery"
---

# Error Recovery

Error Recovery guides an agent through a decision tree for tool call failures: retry transient errors once, fix and retry structural ones, or escalate if blocking. It switches tools after repeated failures and logs failed tasks to a database.

**Install:**

```bash
npx degit https://github.com/aden-hive/hive/tree/main/core/framework/skills/_default_skills/error-recovery ~/.claude/skills/error-recovery
```

## README

## Operational Protocol: Error Recovery

When a tool call fails:

1. **Diagnose** — classify the failure as *transient* (network blip, rate limit, timeout) or *structural* (wrong selector, missing auth, invalid schema, permission denied).

2. **Decide:**
   - Transient → retry once.
   - Structural + fixable → fix the input and retry.
   - Structural + unfixable → record the failure and move to the next item.
   - Blocking all progress → escalate.

3. **Adapt** — if the same tool has failed {{max_retries_per_tool}}+ times in a row, stop using it and find an alternative approach.

**Never silently drop a failed item.** If the item is a task in the colony queue, write the failure to the DB instead of an in-memory buffer:

```bash
sqlite3 "$DB_PATH" "UPDATE tasks SET status='failed', last_error='<one-sentence reason>', completed_at=datetime('now'), updated_at=datetime('now') WHERE id='<task-id>' AND worker_id='<your-worker-id>';"
```

The `tasks.retry_count` column and the stale-claim reclaimer handle auto-retry for crashes; your job is the within-run decision tree above. See `hive.colony-progress-tracker` for the full queue protocol.
