# Send Task Engine to your agent
Use the source page and any available docs to guide the install because the item is currently unstable or timing out.
## Fast path
- Open the source page via Review source status.
- If you can obtain the package, extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the source page and extracted files.
## Suggested prompts
### New install

```text
I tried to install a skill package from Yavira, but the item is currently unstable or timing out. Inspect the source page and any extracted docs, then tell me what you can confirm and any manual steps still required.
```
### Upgrade existing

```text
I tried to upgrade a skill package from Yavira, but the item is currently unstable or timing out. Compare the source page and any extracted docs with my current installation, then summarize what changed and what manual follow-up I still need.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "task-engine",
    "name": "Task Engine",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/zeron-G/task-engine",
    "canonicalUrl": "https://clawhub.ai/zeron-G/task-engine",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/task-engine",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=task-engine",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "CLAUDE.md",
      "DESIGN.md",
      "SKILL.md",
      "config/settings.yaml",
      "references/agent-capabilities.md",
      "references/state-transitions.md"
    ],
    "downloadMode": "manual_only",
    "sourceHealth": {
      "source": "tencent",
      "slug": "task-engine",
      "status": "unstable",
      "reason": "timeout",
      "recommendedAction": "retry_later",
      "checkedAt": "2026-05-04T01:19:19.625Z",
      "expiresAt": "2026-05-04T13:19:19.625Z",
      "httpStatus": null,
      "finalUrl": null,
      "contentType": null,
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=task-engine",
        "error": "Timed out after 5000ms",
        "slug": "task-engine"
      },
      "scope": "item",
      "summary": "Item is unstable.",
      "detail": "This item is timing out or returning errors right now. Review the source page and try again later.",
      "primaryActionLabel": "Review source status",
      "primaryActionHref": "https://clawhub.ai/zeron-G/task-engine"
    },
    "validation": {
      "installChecklist": [
        "Wait for the source to recover or retry later.",
        "Review SKILL.md only after the download returns a real package.",
        "Treat this source as transient until the upstream errors clear."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/task-engine",
    "downloadUrl": "https://openagent3.xyz/downloads/task-engine",
    "agentUrl": "https://openagent3.xyz/skills/task-engine/agent",
    "manifestUrl": "https://openagent3.xyz/skills/task-engine/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/task-engine/agent.md"
  }
}
```
## Documentation

### Task Engine

Orchestrates multi-step projects across multiple agents (Claude Code, Eva, others) using a state machine with JSON-based persistence. Each task has subtasks dispatched to agents, tracked via heartbeat, and reported through Discord.

### CLI Commands

All commands run from the skill root:

cd /home/zeron/.openclaw/workspace/skills/task-engine

All commands support --json for machine-readable output:

{"ok": true, "task_id": "TASK-001", "status": "PLANNING", "message": "Created TASK-001"}

### Create a task

python3 scripts/task_engine.py create "Implement feature X" --priority P0 --plan "3 phases: models, API, tests"
python3 scripts/task_engine.py create "Feature Y" --priority P1 --json

### View status

python3 scripts/task_engine.py status                    # All active tasks (table)
python3 scripts/task_engine.py status TASK-001           # Detailed single task
python3 scripts/task_engine.py status TASK-001 --json    # Machine-readable
python3 scripts/task_engine.py status --all              # Include terminal tasks

### Transition task state

python3 scripts/task_engine.py transition TASK-001 approve --note "Plan approved" --json
python3 scripts/task_engine.py transition TASK-001 block --note "Waiting on API key"
python3 scripts/task_engine.py transition TASK-001 complete --note "All verified" --json

### Dispatch subtask to an agent

python3 scripts/task_engine.py dispatch TASK-001 "Implement auth models" \\
    --agent claude-code --type dev --json
python3 scripts/task_engine.py dispatch TASK-001 "Run integration tests" \\
    --agent eva --type test --deps subtask_01,subtask_02

Dispatching the first subtask auto-transitions APPROVED -> IN_PROGRESS.

### Update subtask progress

python3 scripts/task_engine.py subtask TASK-001 subtask_01 start --progress 30 --json
python3 scripts/task_engine.py subtask TASK-001 subtask_01 done --note "Models complete" --json
python3 scripts/task_engine.py subtask TASK-001 subtask_02 fail --note "Schema mismatch" --json

### Check tasks (heartbeat integration)

python3 scripts/task_engine.py check              # Check all active tasks (verbose)
python3 scripts/task_engine.py check TASK-001      # Check one task
python3 scripts/task_engine.py check --quiet       # Minimal output for cron
python3 scripts/task_engine.py check --json        # Machine-readable JSON
python3 scripts/task_engine.py check --discord     # Discord-formatted digest

### Archive completed task

python3 scripts/task_engine.py archive TASK-001 --json    # Only works on terminal tasks

### Auto-dispatch

Auto-dispatch scans subtasks and dispatches ready ones to appropriate agents:

python3 scripts/task_engine.py auto-dispatch TASK-001             # Dispatch ready subtasks
python3 scripts/task_engine.py auto-dispatch TASK-001 --dry-run   # Preview without acting
python3 scripts/task_engine.py auto-dispatch --all                # All active tasks
python3 scripts/task_engine.py auto-dispatch TASK-001 --subtask subtask_02  # Specific subtask
python3 scripts/task_engine.py auto-dispatch TASK-001 --subtask subtask_01 --show-context  # View dispatch context

Output is always JSON with dispatches and skipped arrays.

### Notify (Discord formatting)

Generate Discord-formatted notification messages:

python3 scripts/task_engine.py notify digest               # Full heartbeat digest
python3 scripts/task_engine.py notify TASK-001 created     # Task creation message
python3 scripts/task_engine.py notify TASK-001 status      # Status update with progress
python3 scripts/task_engine.py notify TASK-001 transition   # Last transition
python3 scripts/task_engine.py notify TASK-001 completed    # Completion summary
python3 scripts/task_engine.py notify TASK-001 alert --type stuck --subtask-id subtask_01

### Rebuild index (recovery)

Reconstruct index.json from task directories if it gets corrupted:

python3 scripts/task_engine.py rebuild-index         # Scan and rebuild
python3 scripts/task_engine.py rebuild-index --json  # Machine-readable output

### Heartbeat Integration

Add step 4.3 to the heartbeat's cmd_beat() function, after the ongoing.json check:

# 4.3 Task Engine check
logger.info("[4.3/8] Task Engine check")
try:
    import sys
    sys.path.insert(0, str(Path("/home/zeron/.openclaw/workspace/skills/task-engine/scripts")))
    from engine.checker import check_all_tasks
    te_result = check_all_tasks()
    if te_result.get("alerts"):
        alerts.extend(te_result["alerts"])
        all_ok = False
    if te_result.get("summary"):
        logger.info("  Tasks: %s", te_result["summary"])
except ImportError:
    logger.debug("  Task engine not installed, skipping")
except Exception as e:
    logger.warning("  Task engine check failed: %s", e)

The check is cheap (~300-500 tokens per heartbeat for 1-3 active tasks). It reads index.json first, then only loads task/subtask files for active tasks.

### State Machine

PLANNING ──approve──> APPROVED ──start──> IN_PROGRESS ──test──> TESTING ──review──> REVIEW ──complete──> COMPLETED
    │                                         │  │                 │  │                │
    │reject                              block│  │fail        reopen│  │fail       reopen│ fail
    v                                         v  v                 v  v                v   v
 REJECTED                                BLOCKED FAILED      IN_PROGRESS FAILED   IN_PROGRESS FAILED
                                           │
                                      unblock│
                                           v
                                      IN_PROGRESS

Terminal states: COMPLETED, FAILED, REJECTED.

See references/state-transitions.md for the full transition table.

### Subtask states

PENDING -> ASSIGNED -> IN_PROGRESS -> DONE
                │            │
                │block       │fail / block
                v            v
             BLOCKED      FAILED / BLOCKED

### Auto-transitions (checked by heartbeat)

ConditionActionAll type: dev subtasks DONETask -> TESTINGAll type: test subtasks DONETask -> REVIEWFirst subtask dispatchedTask APPROVED -> IN_PROGRESSAny subtask FAILEDAlert for human interventionSubtask stuck 3+ heartbeatsAlert via DiscordTask past ETAAlert as overdue

### Discord Formatting

The discord_formatter.py module generates formatted messages for Discord notifications. All formatting is pure string generation — no API calls.

Available formats:

Task created: New task announcement with priority and plan
Status update: Progress bars and subtask tree
Transition: State change with emoji indicators
Alert: Urgent stuck/overdue/failed alerts with human ping
Completion summary: Final report with subtask results
Heartbeat digest: Full summary of all active tasks

Progress bars render as: [████░░░░░░] 40%

### Agent Capabilities

AgentKeyBest ForMax ParallelClaude Codeclaude-codeDev, refactor, debug, docs3EvaevaTest, validate, system-ops1

Agent selection priority:

Preferred agent (if specified and capable)
Match by preferred_types
Match by broader capabilities
Fallback to Eva

See references/agent-capabilities.md for full details.

### Corrupted index.json

python3 scripts/task_engine.py rebuild-index --json

Scans all tasks/TASK-*/task.json files and reconstructs the index. Skips invalid/unreadable files.

### Common errors

ErrorCauseFixInvalid transition: X + 'event'Transition not allowed from current stateCheck references/state-transitions.mdTask TASK-XXX not foundTask doesn't exist or was archivedCheck tasks/ and tasks/archive/Cannot archive: not terminalTask must be COMPLETED/FAILED/REJECTEDTransition to terminal state firstAgent at capacityMax parallel instances reachedWait for running subtasks to completeDependency not DONEBlocked by incomplete subtaskComplete blocking subtask first

### JSON parse errors

The engine handles corrupt JSON files gracefully:

During check: skips bad tasks, logs warning, continues
During rebuild-index: skips unreadable files, reports in output
All CLI commands catch exceptions and return clean error messages (not tracebacks)

### Data Location

Task files: /home/zeron/.openclaw/workspace/tasks/TASK-NNN/
Index: /home/zeron/.openclaw/workspace/tasks/index.json
Archive: /home/zeron/.openclaw/workspace/tasks/archive/
Config: /home/zeron/.openclaw/workspace/skills/task-engine/config/settings.yaml
Agent reference: /home/zeron/.openclaw/workspace/skills/task-engine/references/agent-capabilities.md
State transitions: /home/zeron/.openclaw/workspace/skills/task-engine/references/state-transitions.md
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: zeron-G
- Version: 1.0.0
## Source health
- Status: unstable
- Item is unstable.
- This item is timing out or returning errors right now. Review the source page and try again later.
- Health scope: item
- Reason: timeout
- Checked at: 2026-05-04T01:19:19.625Z
- Expires at: 2026-05-04T13:19:19.625Z
- Recommended action: Review source status
## Links
- [Detail page](https://openagent3.xyz/skills/task-engine)
- [Send to Agent page](https://openagent3.xyz/skills/task-engine/agent)
- [JSON manifest](https://openagent3.xyz/skills/task-engine/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/task-engine/agent.md)
- [Download page](https://openagent3.xyz/downloads/task-engine)