CtrlK
BlogDocsLog inGet started
Tessl Logo

simon/skills

Auto-generated tile from GitHub (10 skills)

92

1.16x
Quality

94%

Does it follow best practices?

Impact

92%

1.16x

Average score across 44 eval scenarios

SecuritybySnyk

Advisory

Suggest reviewing before use

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-32/

{
  "context": "Tests whether the agent correctly diagnoses and resolves libuv thread pool bottlenecks in a Node.js gateway service: configuring UV_THREADPOOL_SIZE via environment (not process.env at runtime), replacing dns.lookup with dns.resolve* for high-throughput paths, adding thread pool monitoring, streaming large files, and correctly sizing the thread pool based on workload type.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "UV_THREADPOOL_SIZE in env",
      "description": "UV_THREADPOOL_SIZE is set as a shell/environment variable at process start (e.g. in a start script, package.json scripts, or .env comment) — NOT set via 'process.env.UV_THREADPOOL_SIZE = ...' inside the Node.js application code after startup",
      "max_score": 15
    },
    {
      "name": "No runtime process.env set",
      "description": "The delivered code does NOT contain 'process.env.UV_THREADPOOL_SIZE = ...' (setting at runtime has no effect and must be avoided)",
      "max_score": 10
    },
    {
      "name": "UV_THREADPOOL_SIZE within limit",
      "description": "The recommended or configured UV_THREADPOOL_SIZE value does not exceed 1024",
      "max_score": 5
    },
    {
      "name": "dns.resolve* replaces lookup",
      "description": "In the high-throughput DNS path, the code uses dns.resolve4(), dns.resolve(), or another dns.resolve*() method instead of dns.lookup()",
      "max_score": 15
    },
    {
      "name": "dns.lookup not used in hot path",
      "description": "The refactored hot path does NOT call dns.lookup() or dns.promises.lookup()",
      "max_score": 8
    },
    {
      "name": "DNS result caching",
      "description": "DNS resolution results are cached (using a Map, LRU cache, or similar) with a TTL or expiry so repeated lookups for the same hostname avoid repeated DNS calls",
      "max_score": 10
    },
    {
      "name": "Thread pool monitoring",
      "description": "Code monitors thread pool usage or event loop delay using async_hooks (tracking FSREQCALLBACK, GETADDRINFOREQWRAP, etc.) or monitorEventLoopDelay from perf_hooks",
      "max_score": 12
    },
    {
      "name": "File streaming used",
      "description": "Large file reading uses createReadStream (streaming) rather than fs.readFile or fs.promises.readFile for the large file processing path",
      "max_score": 10
    },
    {
      "name": "Pool size formula applied",
      "description": "The UV_THREADPOOL_SIZE recommendation is justified using a formula based on os.cpus().length (e.g. cpus * 2 for I/O-heavy, cpus for CPU-heavy, or cpus * 1.5 for mixed)",
      "max_score": 10
    },
    {
      "name": "Worker threads for CPU work",
      "description": "CPU-intensive operations (e.g. password hashing, key derivation, or heavy crypto) are offloaded to worker_threads rather than run on the main thread or via the thread pool's limited slots",
      "max_score": 5
    }
  ]
}

evals

README.md

tile.json