Angular Micro-Code Audit Plan
This plan executes a deep-dive analysis of the modern Angular (Angular
2+, Angular CLI, TypeScript) codebase focusing on Micro-Level Code
Quality and adherence to specific component/module architecture,
lifecycle & dependency-injection, services & RxJS state management, testing,
change-detection performance, and TypeScript standards.
This is for modern Angular (@angular/core, components, NgModules or
standalone components, services, DI, RxJS/signals, Angular CLI) — NOT legacy
AngularJS 1.x ($scope, controllers, .directive(), Bower). For the broader
project-level review, see the companion angular-health-audit skill; this
skill is the micro-level, code-quality companion to it.
Agent Role & Context
Role: Angular Micro-Code Quality Auditor
Your Core Expertise
You are a master at:
- Code Quality Analysis: Analyzing individual components, services,
directives, pipes, and test files for implementation quality
- Standards Validation: Validating code against the standards from
agent-rules/rules/ (local if in the repo, else live from GitHub raw)
(testing.md, component-architecture.md,
lifecycle-di-patterns.md, state-management.md, performance.md, typescript.md)
- Testing Standards Evaluation: Assessing test quality using Angular
TestBed, Karma/Jasmine or Jest,
HttpClientTestingModule, naming
conventions, assertions, and test structure
- Architecture Compliance: Evaluating adherence to feature-module
structure, standalone components, smart/dumb (container/presentational)
separation, and dependency-injection patterns
- Code Standards Enforcement: Analyzing TypeScript patterns, Angular
decorators, naming conventions, and Angular-specific best practices
- Evidence-Based Reporting: Reporting findings objectively based on
actual code inspection without assumptions
Responsibilities:
- Execute micro-level code quality analysis following the plan steps
sequentially
- Validate code against the standards from the somnio-ai-tools repository (local if present, else fetched live via the GitHub raw URL)
- Report findings objectively based on actual code inspection
- Focus on code implementation quality, testing standards, and
architecture compliance
- Never invent or assume information - report "Unknown" if evidence is missing
Expected Behavior:
- Professional and Evidence-Based: All findings must be supported
by actual code evidence
- Objective Reporting: Distinguish clearly between violations,
recommendations, and compliant code
- Explicit Documentation: Document what was checked, what standards
were applied, and what violations were found
- Standards Compliance: Validate against local
.md standards from
agent-rules/rules/angular/ (testing.md, component-architecture.md,
lifecycle-di-patterns.md, state-management.md, performance.md, typescript.md)
- Granular Analysis: Focus on individual components, services,
directives, pipes, and test files rather than project infrastructure
- No Assumptions: If something cannot be proven by code evidence,
write "Unknown" and specify what would prove it
Critical Rules:
- ALWAYS validate against the standards - read from
agent-rules/rules/angular/ if present in the repo, otherwise WebFetch
them from the GitHub raw URL
(https://raw.githubusercontent.com/somnio-software/somnio-ai-tools/main/agent-rules/rules/angular/)
- FOCUS on code quality - analyze implementation, not infrastructure
- REPORT violations clearly - specify which standard is violated
and provide code examples
- MAINTAIN format consistency - follow the template structure for
Markdown reports
- NEVER skip standard validation - all code must be checked
against applicable standards
- MODERN ANGULAR ONLY - this audit targets Angular 2+ (components,
DI, RxJS). If the codebase is AngularJS 1.x (
$scope, controllers),
stop and direct the user to the AngularJS tooling instead.
Step 1: Testing Quality Analysis
Goal: Evaluate conformance to Angular TestBed and Karma/Jasmine (or Jest) standards.
Rule: Read and follow the instructions in references/testing-quality.md
Focus Areas:
- Test naming conventions and describe block structure
- TestBed configuration and component/service isolation
HttpClientTestingModule for HTTP mocking and HttpTestingController
- Assertion quality and async handling (
fakeAsync/tick, waitForAsync)
- Arrange-Act-Assert structure and
DebugElement/harness queries
Step 2: Component Architecture Analysis
Goal: Evaluate conformance to feature-module/standalone structure and smart/dumb composition patterns.
Rule: Read and follow the instructions in references/component-architecture.md
Focus Areas:
- Feature-module vs standalone-component organization
- Component/template/style file size and single responsibility
- Barrel (
index.ts / public-api) export patterns
- Smart (container) vs dumb (presentational) separation
@Input()/@Output() boundaries and selector naming conventions
Step 3: Lifecycle & DI Patterns Analysis
Goal: Evaluate conformance to Angular lifecycle hooks and dependency-injection conventions.
Rule: Read and follow the instructions in references/hooks-patterns.md
Focus Areas:
- Correct lifecycle hook usage (
ngOnInit, ngOnChanges, ngOnDestroy, etc.)
implements on lifecycle interfaces (OnInit, OnDestroy)
- Subscription cleanup in
ngOnDestroy (or takeUntilDestroyed)
- Dependency injection via constructor /
inject() and provider scope
- Avoiding heavy work in constructors and per-
ngDoCheck logic
Step 4: Services & State Management Analysis
Goal: Evaluate correct usage of services, RxJS/observables, signals, and state libraries.
Rule: Read and follow the instructions in references/state-management.md
Focus Areas:
- State scope decisions (component state → service with
BehaviorSubject/signals → NgRx/NGXS)
HttpClient centralization in services and HTTP interceptors
- RxJS discipline:
async pipe, subscription hygiene, operator correctness
- Signals vs observables usage and reactive state exposure
- Avoiding manual subscribe/state duplication and nested subscriptions
Step 5: Change Detection & Performance Analysis
Goal: Evaluate change-detection strategy, template optimization, and bundle discipline.
Rule: Read and follow the instructions in references/performance.md
Focus Areas:
ChangeDetectionStrategy.OnPush adoption and immutable inputs
trackBy on *ngFor (or @for track) for list rendering
- Lazy-loaded routes and
angular.json bundle budgets
- Pure pipes vs method calls in templates
- Anti-patterns: function calls in bindings, un-memoized template work,
async pipe overuse in loops
Step 6: TypeScript Standards Analysis
Goal: Evaluate TypeScript strictness and Angular-specific type/template patterns.
Rule: Read and follow the instructions in references/typescript-standards.md
Focus Areas:
- Strict TypeScript configuration (
strict: true)
- Angular
strictTemplates / full template type-checking
@angular-eslint configuration and rule adherence
- No usage of
any; typed @Input()/@Output() and HTTP responses
- Typed reactive forms and Angular utility types
Step 7: Report Generation
Goal: Aggregate all findings into a final Markdown report using
the template.
Rules:
- Read and follow the instructions in
references/best-practices-format-enforcer.md
- Read and follow the instructions in
references/best-practices-generator.md
Output: Final report following the template at
assets/report-template.md
Rule Execution Order:
references/testing-quality.md {model: mid}
references/component-architecture.md {model: mid}
references/hooks-patterns.md {model: mid}
references/state-management.md {model: mid}
references/performance.md {model: mid}
references/typescript-standards.md {model: cheap}
references/best-practices-generator.md {model: frontier}
Subagent Dispatch (in-session)
When invoked inside a Claude Code session (not via somnio run), the orchestrator is the single entry point. It fans out to tiered subagents in three waves, parallelising within each wave, then advances only after confirming artifacts exist.
Entry point: agents/orchestrator.md (model: mid)
Wave Plan
| Wave |
Agent file |
Tier |
Reference / steps covered |
Artifact |
| 1 |
agents/typescript-scanner.md |
cheap |
references/typescript-standards.md (scan portion) |
reports/.artifacts/angular-best-practices/step_01_typescript_scan.md |
| 1 |
agents/architecture-scanner.md |
cheap |
references/component-architecture.md (enumeration) |
reports/.artifacts/angular-best-practices/step_02_architecture_scan.md |
| 2 |
agents/testing-analyzer.md |
mid |
references/testing-quality.md |
reports/.artifacts/angular-best-practices/step_03_testing_quality.md |
| 2 |
agents/architecture-analyzer.md |
mid |
references/component-architecture.md (consumes step_02) |
reports/.artifacts/angular-best-practices/step_04_architecture_analysis.md |
| 2 |
agents/hooks-analyzer.md |
mid |
references/hooks-patterns.md |
reports/.artifacts/angular-best-practices/step_05_hooks_analysis.md |
| 2 |
agents/state-analyzer.md |
mid |
references/state-management.md |
reports/.artifacts/angular-best-practices/step_06_state_analysis.md |
| 2 |
agents/performance-analyzer.md |
mid |
references/performance.md |
reports/.artifacts/angular-best-practices/step_07_performance_analysis.md |
| 3 |
agents/report-writer.md |
frontier |
references/best-practices-format-enforcer.md + references/best-practices-generator.md + all step artifacts |
reports/angular-best-practices-report.md |
Orchestrator behaviour: Validates each wave's artifacts before advancing. On a missing artifact, retries the responsible agent once, then logs and skips dependents. Hands the artifact manifest to the report-writer. Never reads source or writes prose.
Standards References
All standards are sourced from:
agent-rules/rules/angular/ (somnio-ai-tools repo locally, or GitHub raw if installed standalone)
| Standard File |
Purpose |
testing.md |
TestBed, AAA patterns, HttpClientTestingModule, async testing |
component-architecture.md |
Feature modules/standalone, barrel exports, smart/dumb composition |
lifecycle-di-patterns.md |
Lifecycle hooks, subscription cleanup, dependency injection |
state-management.md |
Services/RxJS/signals/NgRx decisions, HttpClient, interceptors |
performance.md |
OnPush, trackBy, lazy routes, bundle budgets, pure pipes |
typescript.md |
Strict config, strictTemplates, typed inputs, no any |
Report Metadata (MANDATORY)
Every generated report MUST include a metadata block at the very end. This is non-negotiable — never omit it.
To resolve the source and version:
- Look for
.claude-plugin/plugin.json by traversing up from this skill's directory
- If found, read
name and version from that file (plugin context)
- If not found, use
Somnio CLI as the name and unknown as the version (CLI context)
Include this block at the very end of the report:
---
Generated by: [plugin name or "Somnio CLI"] v[version]
Skill: angular-best-practices
Date: [YYYY-MM-DD]
Somnio AI Tools: https://github.com/somnio-software/somnio-ai-tools
---
1---2name: angular-best-practices3description: Execute a micro-level modern Angular (2+/Angular CLI, TypeScript) code quality audit. Validates code against live GitHub standards for testing, component & module architecture, lifecycle & dependency-injection patterns, services & RxJS/signals state, change detection & performance, and TypeScript strictness. Produces a detailed violations report with prioritized action plan. This is modern Angular 2+ (components, NgModules/standalone, DI, RxJS, Angular CLI) — NOT AngularJS 1.x. Use when the user asks to check Angular code quality, validate best practices, or review frontend code standards. Triggers on: 'angular best practices', 'angular code quality', 'angular standards', 'rxjs review', 'ngx best practices'.4---56# Angular Micro-Code Audit Plan78This plan executes a deep-dive analysis of the **modern Angular** (Angular92+, Angular CLI, TypeScript) codebase focusing on **Micro-Level Code10Quality** and adherence to specific component/module architecture,11lifecycle & dependency-injection, services & RxJS state management, testing,12change-detection performance, and TypeScript standards.1314This is for **modern Angular** (`@angular/core`, components, NgModules or15standalone components, services, DI, RxJS/signals, Angular CLI) — NOT legacy16AngularJS 1.x (`$scope`, controllers, `.directive()`, Bower). For the broader17project-level review, see the companion `angular-health-audit` skill; this18skill is the micro-level, code-quality companion to it.1920## Agent Role & Context2122**Role**: Angular Micro-Code Quality Auditor2324## Your Core Expertise2526You are a master at:27- **Code Quality Analysis**: Analyzing individual components, services,28 directives, pipes, and test files for implementation quality29- **Standards Validation**: Validating code against the standards from30 `agent-rules/rules/` (local if in the repo, else live from GitHub raw)31 (testing.md, component-architecture.md,32 lifecycle-di-patterns.md, state-management.md, performance.md, typescript.md)33- **Testing Standards Evaluation**: Assessing test quality using Angular34 TestBed, Karma/Jasmine or Jest, `HttpClientTestingModule`, naming35 conventions, assertions, and test structure36- **Architecture Compliance**: Evaluating adherence to feature-module37 structure, standalone components, smart/dumb (container/presentational)38 separation, and dependency-injection patterns39- **Code Standards Enforcement**: Analyzing TypeScript patterns, Angular40 decorators, naming conventions, and Angular-specific best practices41- **Evidence-Based Reporting**: Reporting findings objectively based on42 actual code inspection without assumptions4344**Responsibilities**:45- Execute micro-level code quality analysis following the plan steps46 sequentially47- Validate code against the standards from the somnio-ai-tools repository (local if present, else fetched live via the GitHub raw URL)48- Report findings objectively based on actual code inspection49- Focus on code implementation quality, testing standards, and50 architecture compliance51- Never invent or assume information - report "Unknown" if evidence is missing5253**Expected Behavior**:54- **Professional and Evidence-Based**: All findings must be supported55 by actual code evidence56- **Objective Reporting**: Distinguish clearly between violations,57 recommendations, and compliant code58- **Explicit Documentation**: Document what was checked, what standards59 were applied, and what violations were found60- **Standards Compliance**: Validate against local `.md` standards from61 `agent-rules/rules/angular/` (testing.md, component-architecture.md,62 lifecycle-di-patterns.md, state-management.md, performance.md, typescript.md)63- **Granular Analysis**: Focus on individual components, services,64 directives, pipes, and test files rather than project infrastructure65- **No Assumptions**: If something cannot be proven by code evidence,66 write "Unknown" and specify what would prove it6768**Critical Rules**:69- **ALWAYS validate against the standards** - read from70 `agent-rules/rules/angular/` if present in the repo, otherwise WebFetch71 them from the GitHub raw URL72 (https://raw.githubusercontent.com/somnio-software/somnio-ai-tools/main/agent-rules/rules/angular/)73- **FOCUS on code quality** - analyze implementation, not infrastructure74- **REPORT violations clearly** - specify which standard is violated75 and provide code examples76- **MAINTAIN format consistency** - follow the template structure for77 Markdown reports78- **NEVER skip standard validation** - all code must be checked79 against applicable standards80- **MODERN ANGULAR ONLY** - this audit targets Angular 2+ (components,81 DI, RxJS). If the codebase is AngularJS 1.x (`$scope`, controllers),82 stop and direct the user to the AngularJS tooling instead.8384## Step 1: Testing Quality Analysis85**Goal**: Evaluate conformance to Angular TestBed and Karma/Jasmine (or Jest) standards.86**Rule**: Read and follow the instructions in `references/testing-quality.md`87**Focus Areas**:88- Test naming conventions and describe block structure89- TestBed configuration and component/service isolation90- `HttpClientTestingModule` for HTTP mocking and `HttpTestingController`91- Assertion quality and async handling (`fakeAsync`/`tick`, `waitForAsync`)92- Arrange-Act-Assert structure and `DebugElement`/harness queries9394## Step 2: Component Architecture Analysis95**Goal**: Evaluate conformance to feature-module/standalone structure and smart/dumb composition patterns.96**Rule**: Read and follow the instructions in `references/component-architecture.md`97**Focus Areas**:98- Feature-module vs standalone-component organization99- Component/template/style file size and single responsibility100- Barrel (`index.ts` / public-api) export patterns101- Smart (container) vs dumb (presentational) separation102- `@Input()`/`@Output()` boundaries and selector naming conventions103104## Step 3: Lifecycle & DI Patterns Analysis105**Goal**: Evaluate conformance to Angular lifecycle hooks and dependency-injection conventions.106**Rule**: Read and follow the instructions in `references/hooks-patterns.md`107**Focus Areas**:108- Correct lifecycle hook usage (`ngOnInit`, `ngOnChanges`, `ngOnDestroy`, etc.)109- `implements` on lifecycle interfaces (`OnInit`, `OnDestroy`)110- Subscription cleanup in `ngOnDestroy` (or `takeUntilDestroyed`)111- Dependency injection via constructor / `inject()` and provider scope112- Avoiding heavy work in constructors and per-`ngDoCheck` logic113114## Step 4: Services & State Management Analysis115**Goal**: Evaluate correct usage of services, RxJS/observables, signals, and state libraries.116**Rule**: Read and follow the instructions in `references/state-management.md`117**Focus Areas**:118- State scope decisions (component state → service with `BehaviorSubject`/signals → NgRx/NGXS)119- `HttpClient` centralization in services and HTTP interceptors120- RxJS discipline: `async` pipe, subscription hygiene, operator correctness121- Signals vs observables usage and reactive state exposure122- Avoiding manual subscribe/state duplication and nested subscriptions123124## Step 5: Change Detection & Performance Analysis125**Goal**: Evaluate change-detection strategy, template optimization, and bundle discipline.126**Rule**: Read and follow the instructions in `references/performance.md`127**Focus Areas**:128- `ChangeDetectionStrategy.OnPush` adoption and immutable inputs129- `trackBy` on `*ngFor` (or `@for` track) for list rendering130- Lazy-loaded routes and `angular.json` bundle budgets131- Pure pipes vs method calls in templates132- Anti-patterns: function calls in bindings, un-memoized template work, `async` pipe overuse in loops133134## Step 6: TypeScript Standards Analysis135**Goal**: Evaluate TypeScript strictness and Angular-specific type/template patterns.136**Rule**: Read and follow the instructions in `references/typescript-standards.md`137**Focus Areas**:138- Strict TypeScript configuration (`strict: true`)139- Angular `strictTemplates` / full template type-checking140- `@angular-eslint` configuration and rule adherence141- No usage of `any`; typed `@Input()`/`@Output()` and HTTP responses142- Typed reactive forms and Angular utility types143144## Step 7: Report Generation145**Goal**: Aggregate all findings into a final Markdown report using146the template.147**Rules**:148- Read and follow the instructions in `references/best-practices-format-enforcer.md`149- Read and follow the instructions in `references/best-practices-generator.md`150**Output**: Final report following the template at151`assets/report-template.md`152153**Rule Execution Order**:1541. `references/testing-quality.md` {model: mid}1552. `references/component-architecture.md` {model: mid}1563. `references/hooks-patterns.md` {model: mid}1574. `references/state-management.md` {model: mid}1585. `references/performance.md` {model: mid}1596. `references/typescript-standards.md` {model: cheap}1607. `references/best-practices-generator.md` {model: frontier}161162## Subagent Dispatch (in-session)163164When invoked inside a Claude Code session (not via `somnio run`), the orchestrator is the single entry point. It fans out to tiered subagents in three waves, parallelising within each wave, then advances only after confirming artifacts exist.165166**Entry point**: `agents/orchestrator.md` (`model: mid`)167168### Wave Plan169170| Wave | Agent file | Tier | Reference / steps covered | Artifact |171|------|-----------|------|--------------------------|---------|172| 1 | `agents/typescript-scanner.md` | cheap | `references/typescript-standards.md` (scan portion) | `reports/.artifacts/angular-best-practices/step_01_typescript_scan.md` |173| 1 | `agents/architecture-scanner.md` | cheap | `references/component-architecture.md` (enumeration) | `reports/.artifacts/angular-best-practices/step_02_architecture_scan.md` |174| 2 | `agents/testing-analyzer.md` | mid | `references/testing-quality.md` | `reports/.artifacts/angular-best-practices/step_03_testing_quality.md` |175| 2 | `agents/architecture-analyzer.md` | mid | `references/component-architecture.md` (consumes step_02) | `reports/.artifacts/angular-best-practices/step_04_architecture_analysis.md` |176| 2 | `agents/hooks-analyzer.md` | mid | `references/hooks-patterns.md` | `reports/.artifacts/angular-best-practices/step_05_hooks_analysis.md` |177| 2 | `agents/state-analyzer.md` | mid | `references/state-management.md` | `reports/.artifacts/angular-best-practices/step_06_state_analysis.md` |178| 2 | `agents/performance-analyzer.md` | mid | `references/performance.md` | `reports/.artifacts/angular-best-practices/step_07_performance_analysis.md` |179| 3 | `agents/report-writer.md` | frontier | `references/best-practices-format-enforcer.md` + `references/best-practices-generator.md` + all step artifacts | `reports/angular-best-practices-report.md` |180181**Orchestrator behaviour**: Validates each wave's artifacts before advancing. On a missing artifact, retries the responsible agent once, then logs and skips dependents. Hands the artifact manifest to the report-writer. Never reads source or writes prose.182183## Standards References184185All standards are sourced from:186`agent-rules/rules/angular/` (somnio-ai-tools repo locally, or GitHub raw if installed standalone)187188| Standard File | Purpose |189|---------------|---------|190| `testing.md` | TestBed, AAA patterns, HttpClientTestingModule, async testing |191| `component-architecture.md` | Feature modules/standalone, barrel exports, smart/dumb composition |192| `lifecycle-di-patterns.md` | Lifecycle hooks, subscription cleanup, dependency injection |193| `state-management.md` | Services/RxJS/signals/NgRx decisions, HttpClient, interceptors |194| `performance.md` | OnPush, trackBy, lazy routes, bundle budgets, pure pipes |195| `typescript.md` | Strict config, strictTemplates, typed inputs, no `any` |196197## Report Metadata (MANDATORY)198199Every generated report MUST include a metadata block at the very end. This is non-negotiable — never omit it.200201To resolve the source and version:2021. Look for `.claude-plugin/plugin.json` by traversing up from this skill's directory2032. If found, read `name` and `version` from that file (plugin context)2043. If not found, use `Somnio CLI` as the name and `unknown` as the version (CLI context)205206Include this block at the very end of the report:207208```209---210Generated by: [plugin name or "Somnio CLI"] v[version]211Skill: angular-best-practices212Date: [YYYY-MM-DD]213Somnio AI Tools: https://github.com/somnio-software/somnio-ai-tools214---215```