CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl-labs/angular-best-practices

Angular patterns — standalone components, signals, inject(), reactive forms, HTTP interceptors, and new control flow

95

2.75x
Quality

94%

Does it follow best practices?

Impact

99%

2.75x

Average score across 4 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

angular-http-patterns.jsonverifiers/

{
  "instruction": "Services must use catchError with fallback values and map() to transform responses. HTTP interceptors must be functional HttpInterceptorFn, registered via provideHttpClient(withInterceptors([...])).",
  "relevant_when": "Agent implements HTTP calls, API integration, error handling, or interceptors in Angular",
  "context": "Angular services must use catchError() in HTTP pipes to handle errors gracefully and return fallback values, and map() to transform API responses. Interceptors must be HttpInterceptorFn (functional), distinguish network errors (status===0) from API errors, re-throw with throwError(() => error), and be registered via provideHttpClient(withInterceptors([...])) in app.config.ts — never using the legacy HTTP_INTERCEPTORS token.",
  "sources": [
    {
      "type": "file",
      "filename": "skills/angular-best-practices/SKILL.md",
      "tile": "tessl-labs/angular-best-practices@0.1.4"
    }
  ],
  "checklist": [
    {
      "name": "catchError-in-services",
      "rule": "Agent uses catchError in HTTP pipes in services to handle errors and return a safe fallback value",
      "relevant_when": "Agent creates Angular services that make HTTP calls"
    },
    {
      "name": "map-in-services",
      "rule": "Agent uses map() in HTTP pipes to transform API responses to the expected shape",
      "relevant_when": "Agent creates Angular services that fetch data from APIs"
    },
    {
      "name": "functional-interceptors",
      "rule": "Agent defines interceptors as HttpInterceptorFn (functional form), never as classes implementing HttpInterceptor",
      "relevant_when": "Agent creates HTTP interceptors in Angular"
    },
    {
      "name": "interceptor-error-types",
      "rule": "Agent distinguishes network errors (status === 0) from API errors (non-zero status) in interceptor catchError",
      "relevant_when": "Agent implements error handling in Angular HTTP interceptors"
    },
    {
      "name": "provideHttpClient-registration",
      "rule": "Agent registers interceptors via provideHttpClient(withInterceptors([...])) in app.config.ts, never using HTTP_INTERCEPTORS token",
      "relevant_when": "Agent configures HTTP interceptors in Angular application config"
    }
  ]
}

tile.json