Every external call needs a timeout, every timeout needs a fallback — resilience patterns for HTTP, databases, and third-party services
88
90%
Does it follow best practices?
Impact
85%
4.72xAverage score across 5 eval scenarios
Passed
No known issues
{
"instruction": "Set explicit timeouts on every external HTTP request and database connection",
"relevant_when": "Agent makes HTTP requests to external services or APIs, or creates database connections",
"context": "A missing timeout is the most common resilience bug. When a dependency hangs, a request without a timeout blocks the connection indefinitely — eventually exhausting the connection pool and bringing down the entire service, not just the requests that use the failing dependency. Every fetch(), axios(), requests.get(), http.Client, and database pool must have an explicit timeout. Default: 5 seconds for HTTP, 5s connection / 10s query for databases.",
"sources": [
{
"type": "file",
"filename": "skills/graceful-degradation/SKILL.md",
"tile": "tessl-labs/graceful-degradation@0.2.0"
}
],
"checklist": [
{
"name": "fetch-has-timeout",
"rule": "Every fetch() call includes signal: AbortSignal.timeout(ms) in the options. No bare fetch(url) calls without a timeout signal.",
"relevant_when": "Agent writes code that calls fetch() to make HTTP requests"
},
{
"name": "axios-has-timeout",
"rule": "Every axios request includes a timeout option (e.g., { timeout: 5000 })",
"relevant_when": "Agent writes code that uses axios to make HTTP requests"
},
{
"name": "python-requests-has-timeout",
"rule": "Every requests.get/post/put/delete call includes timeout= parameter (e.g., timeout=5)",
"relevant_when": "Agent writes Python code using the requests library"
},
{
"name": "database-connection-has-timeout",
"rule": "Database connection pools and connections include explicit timeout configuration (connectionTimeoutMillis, busy_timeout, connectTimeout, serverSelectionTimeoutMS, or equivalent)",
"relevant_when": "Agent creates database connections or connection pools"
},
{
"name": "database-queries-have-error-handling",
"rule": "Database queries are wrapped in try/catch (or try/except in Python) so that connection failures and query timeouts are caught, not allowed to crash the process",
"relevant_when": "Agent writes code that executes database queries"
}
]
}