Install any skill in seconds. Free to start, no credit card required.
Get Started Free →iii-hq/iii-error-handling
Handle iii engine and SDK errors across Node, Python, Rust, and browser workers.
Passed 18 of 22 test cases with the skill, and 6 of 22 without it.
and 17 more in the full report
12 fixed6 passed either way4 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 12 test cases the skill fixed. Same model, same prompt, with and without the skill.
Write a Node.js snippet using iii-sdk that triggers 'orders::charge' and specifically throws a custom Error('Policy denied orders::charge') when permission is denied.
| Checked | Without skill | With skill |
|---|---|---|
| Uses error instanceof InvocationError in Node.js. | Missed | Passed |
| Checks error.code === FORBIDDEN to throw the custom error. | Missed | Passed |
The instructions your model reads when the skill loads.
iii has two broad error classes: SDK/local errors and engine/remote invocation errors. Agents should branch on the error code instead of matching only message strings.
Branch on exact code strings, but keep engine wire codes separate from SDK-local codes.
| Code | Emitted by | Meaning | Typical handling |
|---|---|---|---|
function_not_found | Engine and SDK local dispatch | No registered function is available under that ID | Check function ID, worker install/startup, discovery, and trigger type hints |
invocation_error | Engine invocation/router path | Engine failed to route, remember, or complete the invocation | Inspect engine logs, protocol state, and worker connectivity |
invocation_stopped | Engine invocation handler | Invocation was cancelled or stopped by the engine/runtime | Treat as failed work; decide whether caller should retry |
FORBIDDEN | RBAC / worker-gated engine functions | RBAC denied the action | Do not retry blindly; inspect policy, auth context, and allowed functions |
timeout | Engine/worker wire error when a worker reports lowercase timeout | Invocation exceeded a timeout reported through the wire protocol | Treat as timeout, but do not assume every SDK maps it to a timeout subclass |
function_not_invokable | SDK local dispatch | Registration exists but cannot be invoked as a normal local function | Inspect registration/invocation type |
invocation_failed | SDK worker handler wrappers | Local worker handler, HTTP-invoked function wrapper, or SDK-side handler path failed | Inspect handler logs, stacktrace, and payload validation |
TIMEOUT | Node/Python SDK caller timeout | Client waited longer than trigger() timeout | Increase timeout only if the workload is expected to run long; otherwise optimize or enqueue |
timeout, TIMEOUT, transport, or worker reconnect failures only when the operation is idempotent.FORBIDDEN without changing auth/policy.function_not_found by calling the same ID repeatedly; discover functions or install/start the missing worker.TriggerAction.Enqueue({ queue }) and queue retry/DLQ policy.import { InvocationError } from 'iii-sdk'
test cases passed, vs 6 / 22 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.