angular-architect-skill/SKILL.md
Enterprise Angular development expert specializing in Angular 16+ features, Signals, Standalone Components, and RxJS/NgRx at scale.
npx skillsauth add 404kidwiz/claude-supercode-skills angular-architectInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Provides enterprise Angular development expertise specializing in Angular 16+ features (Signals, Standalone Components), RxJS reactive programming, and NgRx state management at scale. Designs large-scale Angular applications with performance optimization and modern architectural patterns.
What is the complexity level?
│
├─ **Local State (Component)**
│ ├─ Simple? → **Signals (`signal`, `computed`)**
│ └─ Complex streams? → **RxJS (`BehaviorSubject`)**
│
├─ **Global Shared State**
│ ├─ Lightweight? → **NgRx Signal Store** (Modern, functional)
│ ├─ Enterprise/Complex? → **NgRx Store (Redux)** (Strict actions/reducers)
│ └─ Entity Collections? → **NgRx Entity**
│
└─ **Server State**
└─ Caching/Deduplication? → **TanStack Query (Angular)** or **RxJS + Cache Operator**
| Pattern | Use Case | Pros | Cons | |---------|----------|------|------| | Standalone | Default for 15+ | Less boilerplate, tree-shakable | Learning curve for legacy devs | | Nx Monorepo | Multi-app enterprise | Shared libs, affected builds | Tooling complexity | | Micro-Frontends | Different teams/stacks | Independent deployment | Runtime complexity, shared deps hell | | Zoneless | High performance | No Zone.js overhead | Requires explicit Change Detection |
Red Flags → Escalate to performance-engineer:
takeUntilDestroyed)Goal: Manage feature state with less boilerplate than Redux.
Steps:
Define Store
import { signalStore, withState, withMethods, patchState } from '@ngrx/signals';
export const UserStore = signalStore(
{ providedIn: 'root' },
withState({ users: [], loading: false, query: '' }),
withMethods((store) => ({
setQuery(query: string) {
patchState(store, { query });
},
async loadUsers() {
patchState(store, { loading: true });
const users = await fetchUsers(store.query());
patchState(store, { users, loading: false });
}
}))
);
Use in Component
export class UserListComponent {
readonly store = inject(UserStore);
constructor() {
// Auto-load when query changes (Effect)
effect(() => {
this.store.loadUsers();
});
}
}
Goal: Remove Zone.js for smaller bundles and better debugging.
Steps:
Bootstrap Config
// main.ts
bootstrapApplication(AppComponent, {
providers: [
provideExperimentalZonelessChangeDetection()
]
});
State Management (Signals Only)
ApplicationRef.tick() manually.signal() for all state.Integrations
AsyncPipe (still works) or toSignal.setInterval does NOT trigger CD automatically. Use signal updates inside the timer.What it looks like:
this.route.params.subscribe(params => {
this.service.getData(params.id).subscribe(data => {
this.data = data; // Manual assignment
});
});
Why it fails:
Correct approach:
this.data$ = this.route.params.pipe(
switchMap(params => this.service.getData(params.id))
);
AsyncPipe or toSignal in template.What it looks like:
<div *ngIf="user.roles.includes('ADMIN') && user.active && !isLoading">
Why it fails:
Correct approach:
isAdmin = computed(() => this.user().roles.includes('ADMIN'));
<div *ngIf="isAdmin()">
What it looks like:
SharedModule importing everything (Material, Utils, Components).Why it fails:
Correct approach:
imports: [] array.Architecture:
NgModules for new features.loadComponent).Performance:
OnPush enabled everywhere.@defer used for heavy components below the fold.Code Quality:
strict: true in tsconfig.AsyncPipe or toSignal used instead of .subscribe().innerHTML without sanitization.Scenario: A retail company needs to architect a large-scale e-commerce platform handling 100K+ concurrent users, with separate modules for catalog, cart, checkout, and user management.
Architecture Decisions:
Key Implementation Details:
Scenario: A financial services company has a 5-year-old Angular application using NgModules and wants to modernize to Angular 18 with Standalone Components.
Migration Strategy:
ng-dompurify to find all module dependenciesMigration Results:
Scenario: A SaaS company needs a monitoring dashboard showing real-time metrics with 1-second updates, requiring fine-grained reactivity without Zone.js overhead.
Implementation Approach:
Performance Results:
development
Expert in automating Excel workflows using Node.js (ExcelJS, SheetJS) and Python (pandas, openpyxl).
content-media
Expert in designing durable, scalable workflow systems using Temporal, Camunda, and Event-Driven Architectures.
tools
Use when user needs WordPress development, theme or plugin creation, site optimization, security hardening, multisite management, or scaling WordPress from small sites to enterprise platforms.
tools
Expert in Windows Server, Active Directory (AD DS), Hybrid Identity (Entra ID), and PowerShell automation.