AI Skill Report Card

Developing Angular Applications

B+78·Apr 20, 2026·Source: Web
YAML
--- name: developing-angular-applications description: Develops frontend web applications using Angular, Angular Material, TypeScript, and SCSS. Use when building modern web UIs, component libraries, or single-page applications. ---

Developing Angular Applications

14 / 15
TypeScript
// Generate new Angular component with SCSS ng generate component user-profile --style=scss // Component with Angular Material import { Component } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatCardModule } from '@angular/material/card'; @Component({ selector: 'app-user-profile', standalone: true, imports: [MatButtonModule, MatCardModule], template: ` <mat-card class="profile-card"> <mat-card-header> <mat-card-title>{{user.name}}</mat-card-title> </mat-card-header> <mat-card-actions> <button mat-raised-button color="primary">Edit</button> </mat-card-actions> </mat-card> `, styleUrl: './user-profile.component.scss' }) export class UserProfileComponent { user = { name: 'John Doe' }; }
Recommendation
Add more concrete input/output examples showing different scenarios (data fetching, routing, state management)
13 / 15

Progress:

  • Set up Angular project with Material: ng new app-name && ng add @angular/material
  • Configure routing and lazy loading modules
  • Create feature components with proper TypeScript interfaces
  • Implement responsive SCSS with Material Design breakpoints
  • Add form validation with Reactive Forms
  • Set up services for HTTP communication
  • Implement error handling and loading states
  • Configure build optimization and deployment

Component Development Process

  1. Define interfaces for data models in TypeScript
  2. Create component structure with Angular CLI
  3. Build template using Angular Material components
  4. Style with SCSS using Material Design tokens
  5. Implement logic with proper TypeScript typing
  6. Add unit tests with Jasmine/Karma
Recommendation
Include specific error scenarios and their solutions in the examples section
16 / 20

Example 1: Reactive Form with Validation Input: User registration form with email and password Output:

TypeScript
interface UserForm { email: string; password: string; } @Component({ template: ` <form [formGroup]="userForm" (ngSubmit)="onSubmit()"> <mat-form-field> <mat-label>Email</mat-label> <input matInput formControlName="email" type="email"> <mat-error *ngIf="userForm.get('email')?.hasError('required')"> Email is required </mat-error> </mat-form-field> <button mat-raised-button type="submit" [disabled]="!userForm.valid"> Submit </button> </form> ` }) export class UserFormComponent { userForm = this.fb.group({ email: ['', [Validators.required, Validators.email]], password: ['', [Validators.required, Validators.minLength(8)]] }); constructor(private fb: FormBuilder) {} }

Example 2: SCSS with Material Theming Input: Custom component styling with Material Design Output:

SCSS
@use '@angular/material' as mat; .profile-card { max-width: 400px; margin: mat.get-theme-spacing(2); .mat-mdc-card-header { background: mat.get-theme-color(primary, 50); @media (max-width: 768px) { padding: mat.get-theme-spacing(1); } } }
Recommendation
Provide a complete project structure template or starter configuration in the workflow
  • Use standalone components for new projects (Angular 14+)
  • Implement OnPush change detection for performance
  • Follow Angular style guide naming conventions
  • Use TypeScript strict mode with proper interfaces
  • Leverage Angular Material CDK for custom components
  • Implement lazy loading for feature modules
  • Use SCSS mixins for reusable styles with Material Design tokens
  • Set up proper folder structure: features, shared, core modules
  • Don't import entire Material library - import specific modules only
  • Avoid any types - always define proper TypeScript interfaces
  • Don't manipulate DOM directly - use Angular's data binding
  • Don't subscribe without unsubscribing - use takeUntil or async pipe
  • Avoid deep SCSS nesting - keep max 3 levels deep
  • Don't mix template-driven and reactive forms in same component
  • Don't forget to handle loading/error states in HTTP calls
0
Grade B+AI Skill Framework
Scorecard
Criteria Breakdown
Quick Start
14/15
Workflow
13/15
Examples
16/20
Completeness
18/20
Format
15/15
Conciseness
12/15