Angular patterns — standalone components, signals, inject(), reactive forms, HTTP interceptors, and new control flow
95
94%
Does it follow best practices?
Impact
99%
2.75xAverage score across 4 eval scenarios
Passed
No known issues
{
"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"
}
]
}