Skip to content
alyn
Jeffallan

Angular Architect skill

Generates Angular 17+ standalone components, configures advanced routing with lazy loading and guards, implements NgRx state management, applies RxJS patterns, and optimizes bundle performance. Use when building Angular 17+ applications with standalone components or signals, setting up NgRx stores, establishing RxJS reactive patterns, performance tuning, or writing Angular tests for enterprise apps.

$npx skills add Jeffallan/claude-skills --skill angular-architect
GitHub stars
12,310
Pack installs
457k
Alyn Score
76/99
Updated
11 days ago
License
MIT

Jeffallan

Angular Architect

Install Angular Architect

Pick your agent. Every command is ready to paste.

$npx skills add Jeffallan/claude-skills --skill angular-architect

The open skills CLI detects your agents (Claude Code, Cursor, Codex and 70+ more) and installs to the right folder. Add -g to install globally.

01

Install it

Run the command above, or upload the folder in Claude.

02

Ask naturally

Describe the task. Your agent loads angular-architect when the request matches its description.

03

Name it if needed

If it does not trigger, say “use the angular-architect skill”. In Codex, type $angular-architect.

The skill itself

SKILL.md

GitHub

Angular Architect

Senior Angular architect specializing in Angular 17+ with standalone components, signals, and enterprise-grade application development.

Core Workflow

  1. Analyze requirements - Identify components, state needs, routing architecture
  2. Design architecture - Plan standalone components, signal usage, state flow
  3. Implement features - Build components with OnPush strategy and reactive patterns
  4. Manage state - Setup NgRx store, effects, selectors as needed; verify store hydration and action flow with Redux DevTools before proceeding
  5. Optimize - Apply performance best practices and bundle optimization; run ng build --configuration production to verify bundle size and flag regressions
  6. Test - Write unit and integration tests with TestBed; verify >85% coverage threshold is met

Reference Guide

Load detailed guidance based on context:

Topic Reference Load When
Components references/components.md Standalone components, signals, input/output
RxJS references/rxjs.md Observables, operators, subjects, error handling
NgRx references/ngrx.md Store, effects, selectors, entity adapter
Routing references/routing.md Router config, guards, lazy loading, resolvers
Testing references/testing.md TestBed, component tests, service tests

Key Patterns

Standalone Component with OnPush and Signals

import { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core';
import { CommonModule } from '@angular/common';

@Component({
  selector: 'app-user-card',
  standalone: true,
  imports: [CommonModule],
  changeDetection: ChangeDetectionStrategy.OnPush,
  template: `
    <div class="user-card">
      <h2>{{ fullName() }}</h2>
      <button (click)="onSelect()">Select</button>
    </div>
  `,
})
export class UserCardComponent {
  firstName = input.required<string>();
  lastName = input.required<string>();
  selected = output<string>();

  fullName = computed(() => `${this.firstName()} ${this.lastName()}`);

  onSelect(): void {
    this.selected.emit(this.fullName());
  }
}

RxJS Subscription Management with takeUntilDestroyed

import { Component, OnInit, inject } from '@angular/core';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { UserService } from './user.service';

@Component({ selector: 'app-users', standalone: true, template: `...` })
export class UsersComponent implements OnInit {
  private userService = inject(UserService);
  // DestroyRef is captured at construction time for use in ngOnInit
  private destroyRef = inject(DestroyRef);

  ngOnInit(): void {
    this.userService.getUsers()
      .pipe(takeUntilDestroyed(this.destroyRef))
      .subscribe({
        next: (users) => { /* handle */ },
        error: (err) => console.error('Failed to load users', err),
      });
  }
}

NgRx Action / Reducer / Selector

// actions
export const loadUsers = createAction('[Users] Load Users');
export const loadUsersSuccess = createAction('[Users] Load Users Success', props<{ users: User[] }>());
export const loadUsersFailure = createAction('[Users] Load Users Failure', props<{ error: string }>());

// reducer
export interface UsersState { users: User[]; loading: boolean; error: string | null; }
const initialState: UsersState = { users: [], loading: false, error: null };

export const usersReducer = createReducer(
  initialState,
  on(loadUsers, (state) => ({ ...state, loading: true, error: null })),
  on(loadUsersSuccess, (state, { users }) => ({ ...state, users, loading: false })),
  on(loadUsersFailure, (state, { error }) => ({ ...state, error, loading: false })),
);

// selectors
export const selectUsersState = createFeatureSelector<UsersState>('users');
export const selectAllUsers = createSelector(selectUsersState, (s) => s.users);
export const selectUsersLoading = createSelector(selectUsersState, (s) => s.loading);

Constraints

MUST DO

  • Use standalone components (Angular 17+ default)
  • Use signals for reactive state where appropriate
  • Use OnPush change detection strategy
  • Use strict TypeScript configuration
  • Implement proper error handling in RxJS streams
  • Use trackBy functions in *ngFor loops
  • Write tests with >85% coverage
  • Follow Angular style guide

MUST NOT DO

  • Use NgModule-based components (except when required for compatibility)
  • Forget to unsubscribe from observables (use takeUntilDestroyed or async pipe)
  • Use async operations without proper error handling
  • Skip accessibility attributes
  • Expose sensitive data in client-side code
  • Use any type without justification
  • Mutate state directly in NgRx
  • Skip unit tests for critical logic

Output Templates

When implementing Angular features, provide:

  1. Component file with standalone configuration
  2. Service file if business logic is involved
  3. State management files if using NgRx
  4. Test file with comprehensive test cases
  5. Brief explanation of architectural decisions

Maintained by @jeffallan, Principal Consultant at Synergetic Solutions

Documentation

Tips for Angular Architect

  • • Start a fresh session after installing so your agent picks up the new skill.
  • • It bundles reference files. The agent reads them only when needed, so they cost no context until then.
  • • It is part of a pack with 40 skills. Install only the ones you need with --skill to keep triggers precise.
  • • If two skills overlap, mention the one you want by name.

Questions about Angular Architect

What does the Angular Architect skill do?

Generates Angular 17+ standalone components, configures advanced routing with lazy loading and guards, implements NgRx state management, applies RxJS patterns, and optimizes bundle performance. Use when building Angular 17+ applications with standalone components or signals, setting up NgRx stores, establishing RxJS reactive patterns, performance tuning, or writing Angular tests for enterprise apps.

How do I install Angular Architect?

Run "npx skills add Jeffallan/claude-skills --skill angular-architect" in your project. The skills CLI installs it for Claude Code, Cursor, Codex and 70+ other agents. In Claude on the web, upload the skill folder as a ZIP under Customize > Skills.

Does Angular Architect work in Cursor and Codex?

Yes. Angular Architect uses the open SKILL.md format, so it works in Claude Code, Claude, Cursor, OpenAI Codex, Gemini CLI, GitHub Copilot and other agents that support agent skills.

Is Angular Architect free?

Angular Architect is open source on GitHub under the MIT license. It is free to install; check the license before commercial use.

Who made Angular Architect?

Angular Architect is published by Jeffallan in the Jeffallan/claude-skills repository, together with 39 other skills.

Similar skills. From other creators.