Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
alfredoperez avatar

Angular Best Practices

  • 1k installs
  • 37 repo stars
  • Updated March 28, 2026
  • alfredoperez/angular-best-practices

angular-best-practices is a Cursor agent skill that automatically applies 112 modern Angular rules while editing components, templates, services, and routes for Angular 17+ projects.

About

angular-best-practices is a frontend agent skill covering 112 modern Angular rules for building performant, maintainable Angular 17+ applications. Rules span Signals, RxJS, components, templates, styles, SSR, testing, forms, routing, accessibility, and architecture, each with code examples and impact ratings. The skill activates when editing .component.ts, .service.ts, .html templates, .scss/.css styles, .spec.ts tests, .routes.ts files, store files, and general .ts files in Angular projects. Developers reach for angular-best-practices whenever they want consistent Angular 17+ conventions enforced automatically during component, service, template, or route edits.

  • 112-rule checklist with impact ratings for Angular 17+
  • Covers Signals, RxJS, SSR hydration, accessibility, and bundle optimization
  • Triggers on any .ts, .html, .scss, or Angular-specific file
  • Enforces strict TypeScript, component architecture, and testing patterns
  • Hard-gated to Angular 17+ projects only (detects angular.json or @angular/core)

Angular Best Practices by the numbers

  • 1,037 all-time installs (skills.sh)
  • +29 installs in the week ending Aug 5, 2026 (Skillselion tracking)
  • Ranked #364 of 2,245 Frontend Development skills by installs in the Skillselion catalog
  • Security screen: LOW risk (skills.sh audit)
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/alfredoperez/angular-best-practices --skill angular-best-practices

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs1k
repo stars37
Security audit3 / 3 scanners passed
Last updatedMarch 28, 2026
Repositoryalfredoperez/angular-best-practices

What are modern Angular 17+ best practices for components?

Automatically apply 112 modern Angular rules while editing components, templates, services, and routes.

Who is it for?

Frontend developers working on Angular 17+ apps who want enforced conventions across components, services, templates, tests, and routes.

Skip if: Developers building React, Vue, or Svelte frontends with no Angular source files in the project.

When should I use this skill?

The user edits Angular .component.ts, .service.ts, .html, .scss, .spec.ts, or .routes.ts files and needs modern best-practice guidance applied.

What you get

Angular code updated to follow 112 documented rules with Signals, RxJS, SSR, routing, and accessibility patterns applied.

  • refactored Angular components
  • updated templates and routes

By the numbers

  • Covers 112 modern Angular rules
  • Targets Angular 17+ applications

Files

SKILL.mdMarkdownGitHub ↗

Modern Angular Best Practices

A comprehensive set of 112 rules covering TypeScript strictness, signal-based reactivity, component architecture, template optimization, RxJS patterns, SSR hydration, bundle optimization, accessibility, routing, forms, testing, and styling — so every component, service, template, and route you build is fast, accessible, tested, and maintainable.

Below are the key patterns organized by what you're working on. For edge cases or when you need specific code examples beyond what's listed here, consult the AGENTS.md reference file in this skill directory.

Components & Signals

Components are the building blocks. Modern Angular uses signals for reactivity, which changes how you write everything from state to templates.

  • Use standalone components with ChangeDetectionStrategy.OnPush
  • Use input(), output(), model() signal functions instead of decorators
  • Use inject() instead of constructor injection
  • Use signal() for local state, computed() for derived state
  • Use linkedSignal() when state should reset when a source changes
  • Use resource() / httpResource() for async data with built-in loading states
  • Use effect() only for side effects — never for state synchronization
  • Use toSignal() to bridge RxJS observables into signal-based templates
  • Use viewChild() / contentChild() signal queries instead of decorators
  • Use the host property instead of @HostBinding / @HostListener

Templates & Styles

Templates and styles work together — accessibility, layout, and performance cross both concerns.

  • Use @if, @for, @switch control flow instead of structural directives
  • Use @defer for heavy below-fold content
  • Always provide track with @for loops
  • Use NgOptimizedImage with priority for above-fold images
  • Use pure pipes instead of method calls in templates
  • Use CdkVirtualScrollViewport for large lists
  • Use [class.active] bindings instead of [ngClass]
  • Define theme values as CSS custom properties
  • Use prefers-reduced-motion to respect motion preferences

Services & RxJS

Services handle data flow, dependency injection, and RxJS patterns. HTTP, caching, and observable lifecycle are interconnected concerns.

  • Unsubscribe via takeUntilDestroyed() or async pipe
  • Place catchError inside switchMap to keep the outer stream alive
  • Use switchMap for latest-only, exhaustMap for ignore-while-busy
  • Use shareReplay({ bufferSize: 1, refCount: true }) for shared streams
  • Use inject() with InjectionToken for configuration
  • Use HTTP interceptors for cross-cutting concerns (auth, retry, logging)
  • Map DTOs at the API boundary — don't leak backend shapes into components

Performance & SSR

Performance rules span components, templates, and infrastructure. SSR affects routing, data fetching, and hydration strategy.

  • Preload critical data with route resolvers to eliminate waterfalls
  • Lazy-load routes and @defer heavy views
  • Tree-shake imports via standalone component imports, not modules
  • Batch DOM reads/writes to avoid layout thrashing
  • Use Map/Set over plain objects/arrays for frequent lookups
  • Use incremental hydration (@defer (hydrate on ...)) for large pages
  • Use provideClientHydration(withEventReplay()) for SSR
  • Set render modes per-route: SSR for SEO, CSR for dashboards

Testing

Testing patterns apply to components, services, and templates together — isolation is important but integration context matters.

  • Use component harnesses over direct DOM queries
  • Create test object factories for consistent test data
  • Test signal state changes and template output, not implementation
  • Mock services with jasmine.createSpyObj or jest.fn()
  • Test accessibility with axe-core or jest-axe

Architecture & Routing

Architecture decisions affect every file type — routing, module boundaries, and dependency injection are structural.

  • One feature per lazy-loaded route
  • Use guards for auth, resolvers for data, canDeactivate for unsaved changes
  • Use preload strategies (QuickLinkStrategy) for likely-next routes
  • Bind route params via input() with withComponentInputBinding()
  • Avoid barrel file re-exports — import directly from source
  • Use environment-based configuration — no hardcoded URLs or API keys

TypeScript Foundations

These apply everywhere — components, services, tests, all .ts files.

  • Use strict type checking with strict: true in tsconfig
  • Avoid any; use unknown when type is uncertain, generics to narrow
  • Use import type for type-only imports
  • Add explicit return types to exported functions
  • Prefer readonly for data that should not be mutated
  • Use discriminated unions for state variants
  • Use the Result pattern for operations that can fail

Accessibility

Accessibility spans templates, styles, and components — it's not just an HTML concern.

  • Use semantic HTML elements first (<nav>, <main>, <button>)
  • Use ARIA roles and aria-live regions for dynamic content
  • Ensure all interactive elements are keyboard-accessible
  • Use cdkTrapFocus for dialogs and overlays
  • Test with screen readers and axe-core

Quick Reference

PatternUseAvoid
Signal inputsinput<T>()@Input()
Signal outputsoutput<T>()@Output()
Two-way bindingmodel<T>()input + output pair
Dependency injectioninject()Constructor injection
Control flow@if, @for, @switch*ngIf, *ngFor
Class binding[class.active][ngClass]
Change detectionOnPushDefault
Derived statecomputed()Getters
View queriesviewChild()@ViewChild()

Key Code Patterns

Signal inputs and outputs (replaces decorators):

name = input<string>();           // @Input() replacement
save = output<Data>();            // @Output() replacement
value = model<string>();          // two-way binding

Control flow (replaces structural directives):

@if (user()) { <profile [user]="user()" /> }
@for (item of items(); track item.id) { <card [item]="item" /> }
@defer (on viewport) { <heavy-chart /> }

httpResource and resource (signal-based async):

users = httpResource<User[]>(() => `/api/users?role=${this.role()}`);
data = resource({ request: () => this.id(), loader: ({request}) => fetch(request) });

Optional Library Skills

Install library-specific rules alongside this core skill:

LibrarySkill Page
NgRxangular-best-practices-ngrx
SignalStoreangular-best-practices-signalstore
TanStack Queryangular-best-practices-tanstack
Angular Materialangular-best-practices-material
PrimeNGangular-best-practices-primeng
Spartan UIangular-best-practices-spartan
Translocoangular-best-practices-transloco

Links

License

MIT

Related skills

FAQ

How many rules does angular-best-practices include?

angular-best-practices includes 112 modern Angular rules for Angular 17+ applications. Each rule covers areas like Signals, RxJS, components, templates, SSR, testing, forms, routing, and accessibility with code examples and impact ratings.

Which Angular files trigger angular-best-practices?

angular-best-practices activates when editing .component.ts, .service.ts, .html templates, .scss/.css styles, .spec.ts tests, .routes.ts files, store files, and general .ts files inside an Angular project.

Is Angular Best Practices safe to install?

skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.