Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
git clone --depth 1 https://github.com/BetterTyped/hype-stackWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/rules/bettertyped/hype-stack/backend-error-handling)<a href="https://agentmods.dev/rules/bettertyped/hype-stack/backend-error-handling"><img src="https://agentmods.dev/badge/rules/bettertyped/hype-stack/backend-error-handling/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/rules/bettertyped/hype-stack/backend-error-handling"><img src="https://agentmods.dev/badge/rules/bettertyped/hype-stack/backend-error-handling.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00000 | $0.00893 |
| Opus 5.5 | $0.00000 | $0.00357 |
| Sonnet 5.5 | $0.00000 | $0.00179 |
| Haiku 4.5 | $0.00000 | $0.00089 |
Grade A, and why
backend-error-handling scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 107 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Backend Error Handling - No try/catch
Backend errors are handled centrally by apps/backend/src/middleware/error/error-middleware.ts.
NEVER wrap logic in try/catch blocks. This is the single most important backend rule. The centralized error middleware handles all error formatting, logging, HTTP responses, and Sentry reporting. Local try/catch blocks hide bugs, create inconsistent error responses, and — most critically — bypass Sentry, destroying error visibility. Every swallowed error is an error we never see in production.
Why this matters
The error middleware decides:
- What gets logged locally (all errors).
- What gets reported to Sentry (unexpected/infrastructure errors).
- What gets returned to the client (typed error responses with correct status codes).
When you catch and swallow an error, none of that happens. The error is invisible.
Rules
- Do NOT use
try/catchin routes, features, modules, queries, mutations, or any backend logic. - Throw typed errors from
@backend/middleware/errorand leterrorMiddlewareformat the response. - Prefer
ApplicationError,AuthError,AuthorizationError, orValidationErrorwith the matching error code enum. - Let Zod, Hono validator, database, Resend, and unexpected errors bubble up.
- Do not duplicate centralized behavior with
catch (error) { return c.json(...) }orcatch (error) { logger.error(...) }. - Do not swallow errors with empty catch blocks or catch-and-log patterns.
Exceptions (must justify)
Only these patterns are acceptable:
-
Cleanup with rethrow —
catchblock does local cleanup (delete temp file, remove cookie) then rethrows. The catch block must rethrow. -
Third-party business logic — When a third-party SDK error IS the expected business logic (e.g., auth
email_verification_requiredduring signup, session auth returning failure for WebSocket upgrades). In these cases the error is a data signal, not a failure. Use.catch(() => null)or check error codes and rethrow for anything unexpected.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 107 lines · 0 tokens per session scan A 43412785e500
backend-error-handling is a cursor rule published in the GitHub repository BetterTyped/hype-stack (12 stars, last pushed 15d ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 893 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other cursor rules, from other repositories
django-python
Rules for writing Python services at PostHog (Python servers powered by the Django framework).
react-query-cursorrules-prompt-file
Cursor rules for React development with React Query integration.
backend-architecture
The backend is built on Supabase, providing PostgreSQL database, authentication, and Edge Functions for serverless API endpoints.
backend
Backend development rules for TT Studio - AI model management backend.
server-actions
Server Action, service and tenancy contract.
next-js-app-routing-guidelines
A set of rules for building pages and components in the app directory of a Next.js application. Next.js is a framework for building web applications with React.