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": "Use standalone components with inject() for DI and providedIn root for services. Never use NgModules or constructor injection.",
"relevant_when": "Agent creates or modifies Angular components, services, or modules",
"context": "Modern Angular uses standalone: true on all components (no NgModules), inject() function for dependency injection (not constructor parameters), and @Injectable({ providedIn: 'root' }) for services.",
"sources": [
{
"type": "file",
"filename": "skills/angular-best-practices/SKILL.md",
"tile": "tessl-labs/angular-best-practices@0.1.4"
}
],
"checklist": [
{
"name": "standalone-components",
"rule": "Agent creates components with standalone: true — no NgModule classes",
"relevant_when": "Agent creates or modifies Angular components"
},
{
"name": "inject-function",
"rule": "Agent uses inject() function for all dependency injection, never constructor parameter injection",
"relevant_when": "Agent injects services, HttpClient, or any dependency in Angular"
},
{
"name": "providedIn-root",
"rule": "Agent decorates services with @Injectable({ providedIn: 'root' })",
"relevant_when": "Agent creates Angular services"
}
]
}