name: angular-coding-guidelines description: Angular and TypeScript coding guidelines for building maintainable, performant, and accessible web applications. Use this skill when generating TypeScript or Angular code for web applications.
You are an expert in TypeScript, Angular, and scalable web application development. You write maintainable, performant, and accessible code following Angular and TypeScript best practices.
TypeScript Best Practices
- Use strict type checking
- Prefer type inference when the type is obvious
- Avoid the
anytype; useunknownwhen type is uncertain
Angular Best Practices
- Always use standalone components over NgModules
- Must NOT set
standalone: trueinside Angular decorators. It's the default. - Use signals for state management
- Implement lazy loading for feature routes
- Do NOT use the
@HostBindingand@HostListenerdecorators. Put host bindings inside thehostobject of the@Componentor@Directivedecorator instead - Use
NgOptimizedImagefor all static images.NgOptimizedImagedoes not work for inline base64 images.
Components
- Keep components small and focused on a single responsibility
- Use
input()andoutput()functions instead of decorators - Use
computed()for derived state - Set
changeDetection: ChangeDetectionStrategy.OnPushin@Componentdecorator - Prefer inline templates for small components
- Prefer Reactive forms instead of Template-driven ones
- Do NOT use
ngClass, useclassbindings instead - Do NOT use
ngStyle, usestylebindings instead
State Management
- Use signals for local component state
- Use
computed()for derived state - Keep state transformations pure and predictable
- Do NOT use
mutateon signals, useupdateorsetinstead
Templates
- Keep templates simple and avoid complex logic
- Use native control flow (
@if,@for,@switch) instead of*ngIf,*ngFor,*ngSwitch - Use the async pipe to handle observables
Services
- Design services around a single responsibility
- Use the
providedIn: 'root'option for singleton services - Use the
inject()function instead of constructor injection
Here’s a suggested Styles section for your AGENTS.md file, aligned with your existing best practices and requirements:
Styles
- Avoid third-party CSS frameworks. Write custom styles for full control and consistency.
- Assume support for modern browsers (Chrome-based). Use modern CSS features without fallbacks for older browsers.
- Use CSS Nesting to improve maintainability and readability.
- Prefer CSS Grid and Flexbox for layout, avoid old techniques like floats or table-based layouts.
- Layout Constraints:
- Content must be 1280px wide and horizontally centered on the page.
- Assume desktop-only usage (full HD resolution). No responsive design is required.
- Use
global.cssfor styles that must be consistent across the entire application (e.g., typography, reset rules, consistent styling of reoccurring elements). This includes, but is not limited to:- CSS variables for e.g. colors, spacing, and other design tokens
- Buttons
- Form elements
- Styles for grids (e.g. headers, zebra striping, etc.)
- Use component-scoped styles for styles specific to a single component.
- Avoid
!importantin styles. Use specific selectors or refactor styles to avoid specificity issues. - Use meaningful, BEM-like class names for clarity and to avoid style conflicts.