CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl-labs/graceful-degradation

Every external call needs a timeout, every timeout needs a fallback — resilience patterns for HTTP, databases, and third-party services

88

4.72x
Quality

90%

Does it follow best practices?

Impact

85%

4.72x

Average score across 5 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

external-calls-have-timeouts.jsonverifiers/

{
  "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"
    }
  ]
}

tile.json