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 signal-based input()/output() instead of @Input()/@Output() decorators. Use toSignal() to convert Observables to signals in components.",
"relevant_when": "Agent creates Angular components with inputs, outputs, or data from services",
"context": "Modern Angular uses input() and input.required() for component inputs (not @Input() decorator), output() for component outputs (not @Output() with EventEmitter), and toSignal() to convert service Observables into signals (not manual .subscribe() in ngOnInit).",
"sources": [
{
"type": "file",
"filename": "skills/angular-best-practices/SKILL.md",
"tile": "tessl-labs/angular-best-practices@0.1.4"
}
],
"checklist": [
{
"name": "signal-inputs",
"rule": "Agent uses input() or input.required() for component inputs, never @Input() decorator",
"relevant_when": "Agent creates Angular components that receive data from parent components"
},
{
"name": "signal-outputs",
"rule": "Agent uses output() for component outputs, never @Output() with EventEmitter",
"relevant_when": "Agent creates Angular components that emit events to parent components"
},
{
"name": "toSignal-usage",
"rule": "Agent uses toSignal() with initialValue to convert service Observables to signals, never manual .subscribe()",
"relevant_when": "Agent consumes Observable data from services in Angular components"
}
]
}