CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl-labs/frontend-error-handling

Proactive error handling for React and vanilla JS frontends — every data-fetching component gets loading, error, and empty states, error boundaries, fetch error handling, form validation, optimistic rollback

90

1.38x
Quality

84%

Does it follow best practices?

Impact

100%

1.38x

Average score across 5 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

dashboard-data-display.jsonverifiers/

{
  "instruction": "Create a dashboard page that fetches analytics data from /api/analytics and displays it in cards showing total users, revenue, and recent signups",
  "relevant_when": "Agent creates frontend components that fetch or display data from APIs",
  "context": "Proactively verify that agents add loading, error, and empty states to dashboard components that fetch data, even when the user only describes the happy path.",
  "sources": [
    {
      "type": "file",
      "filename": "skills/frontend-error-handling/SKILL.md",
      "tile": "tessl-labs/frontend-error-handling"
    }
  ],
  "checklist": [
    {
      "name": "loading-state-shown",
      "rule": "Agent renders a visible loading indicator (spinner, skeleton, 'Loading...' text, or aria-busy) while the analytics data is being fetched",
      "relevant_when": "Agent builds a dashboard component that fetches data"
    },
    {
      "name": "error-state-with-retry",
      "rule": "Agent renders an error message with a retry button when the analytics fetch fails",
      "relevant_when": "Agent builds a dashboard component that fetches data"
    },
    {
      "name": "error-state-accessible",
      "rule": "The error state container uses role=\"alert\" so screen readers announce the error",
      "relevant_when": "Agent renders an error state in a dashboard component"
    },
    {
      "name": "empty-state-handled",
      "rule": "Agent handles the case where data is loaded successfully but contains empty or zero values, showing a meaningful message rather than blank cards or undefined",
      "relevant_when": "Agent builds a dashboard that displays fetched data"
    },
    {
      "name": "fetch-error-handling",
      "rule": "All fetch calls handle both network errors (try/catch or .catch()) and HTTP errors (res.ok check), not just the happy path",
      "relevant_when": "Agent writes code that calls fetch() or an API client"
    },
    {
      "name": "error-boundary-present",
      "rule": "Agent wraps the dashboard or its parent in a React ErrorBoundary (class component with getDerivedStateFromError), or for vanilla JS, includes a top-level try/catch around render logic",
      "relevant_when": "Agent builds a React dashboard page or a vanilla JS page with multiple data sections"
    }
  ]
}

tile.json