AngularJS Micro-Code Audit Plan
This plan executes a deep-dive analysis of the AngularJS (Angular 1.x)
codebase focusing on Micro-Level Code Quality and adherence to specific
module/component architecture, scope & binding, services & data flow, testing,
digest-cycle performance, and minification-safe JavaScript standards.
Agent Role & Context
Role: AngularJS (Angular 1.x) Micro-Code Quality Auditor
Your Core Expertise
You are a master at:
- Code Quality Analysis: Analyzing individual controllers, directives,
.component() units, services, and spec 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,
scope-binding-patterns.md, state-management.md, performance.md,
javascript-standards.md)
- Testing Standards Evaluation: Assessing test quality using Karma/Jasmine
and
angular-mocks (module()/inject()/$httpBackend), naming
conventions, assertions, and spec structure
- Architecture Compliance: Evaluating adherence to feature-based module
organization and controller/directive/component composition patterns
- Code Standards Enforcement: Analyzing minification-safe DI,
'use strict'
/ IIFE module hygiene, naming conventions, and AngularJS-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/angularjs/ (testing.md, component-architecture.md,
scope-binding-patterns.md, state-management.md, performance.md,
javascript-standards.md)
- Judge AngularJS on its own terms: Angular 1.x is EOL/legacy by design
here — reward good structure WITHIN the Angular 1.x paradigm
(
.component()/controllerAs, thin controllers, one-way bindings) and
penalize the known 1.x rot patterns ($scope-soup, fat controllers, unsafe
DI); do not simply penalize "it's not a modern framework"
- Granular Analysis: Focus on individual controllers, directives,
components, services, and spec 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/angularjs/ 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/angularjs/)
- 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
Step 1: Testing Quality Analysis
Goal: Evaluate conformance to Karma/Jasmine and angular-mocks standards.
Rule: Read and follow the instructions in references/testing-quality.md
Focus Areas:
- Spec naming conventions and
describe/it block structure
module() / inject() bootstrap and $httpBackend mocking
- Assertion quality (Jasmine matchers) and async handling (
$digest/$apply, $httpBackend.flush())
- Arrange-Act-Assert structure
- Controller/service/directive isolation via
$controller, $compile, and injected services
Step 2: Component Architecture Analysis
Goal: Evaluate conformance to feature-based module structure and composition patterns.
Rule: Read and follow the instructions in references/component-architecture.md
Focus Areas:
- Feature-based module organization (
angular.module per feature)
- Controller/directive/component file size and single responsibility
.component() + controllerAs over $scope-heavy controllers
- Directive vs
.component() selection and isolate scope
- One definition per file and consistent registration patterns
Step 3: Scope & Binding Patterns Analysis
Goal: Evaluate conformance to $scope/binding rules and component lifecycle conventions.
Rule: Read and follow the instructions in references/hooks-patterns.md
Focus Areas:
controllerAs + bindToController over raw $scope assignment
- Isolate scope binding types (
< one-way, @ text, & expression) vs = two-way
- Component lifecycle hooks (
$onInit, $onChanges, $onDestroy, $postLink)
$watch usage, deep watches, and $destroy cleanup of watches/listeners
- Extracting shared stateful logic into services/factories instead of duplicating in controllers
Step 4: State Management Analysis
Goal: Evaluate correct usage of services, $http, interceptors, and $rootScope.
Rule: Read and follow the instructions in references/state-management.md
Focus Areas:
- State scope decisions (controller-local → service/factory →
$rootScope events)
- Service/factory layering for business logic and server access
$http/$resource centralization and $httpProvider.interceptors
- Avoiding
$rootScope as a global data bus
- Avoiding server data cached on
$scope/$rootScope instead of a service
Step 5: Performance Analysis
Goal: Evaluate digest-cycle hygiene, binding cost, and list rendering.
Rule: Read and follow the instructions in references/performance.md
Focus Areas:
$watch / $watchCollection count and deep-watch cost
- One-time bindings (
::) and one-way (<) bindings to reduce digest load
ng-repeat track by for stable, efficient list rendering
$sce / ng-bind-html sanitization and avoiding heavy filters in templates
- Anti-patterns: manual
$scope.$apply()/$timeout to force digests, DOM work in controllers
Step 6: JavaScript Standards Analysis
Goal: Evaluate minification-safe DI and JavaScript module hygiene.
Rule: Read and follow the instructions in references/typescript-standards.md
Focus Areas:
- Minification-safe DI (
$inject, inline array annotation, or ng-annotate)
- IIFE wrapping +
'use strict'; module hygiene
- JSHint/ESLint (Angular-aware) configuration and coverage of the source tree
- No stray
console.log; minimal eslint-disable/jshint ignore
- No direct DOM/jQuery manipulation inside controllers/services
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/angularjs-best-practices/step_01_javascript_scan.md |
| 1 |
agents/architecture-scanner.md |
cheap |
references/component-architecture.md (enumeration) |
reports/.artifacts/angularjs-best-practices/step_02_architecture_scan.md |
| 2 |
agents/testing-analyzer.md |
mid |
references/testing-quality.md |
reports/.artifacts/angularjs-best-practices/step_03_testing_quality.md |
| 2 |
agents/architecture-analyzer.md |
mid |
references/component-architecture.md (consumes step_02) |
reports/.artifacts/angularjs-best-practices/step_04_architecture_analysis.md |
| 2 |
agents/hooks-analyzer.md |
mid |
references/hooks-patterns.md |
reports/.artifacts/angularjs-best-practices/step_05_scope_binding_analysis.md |
| 2 |
agents/state-analyzer.md |
mid |
references/state-management.md |
reports/.artifacts/angularjs-best-practices/step_06_state_analysis.md |
| 2 |
agents/performance-analyzer.md |
mid |
references/performance.md |
reports/.artifacts/angularjs-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/angularjs-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/angularjs/ (somnio-ai-tools repo locally, or GitHub raw if installed standalone)
| Standard File |
Purpose |
testing.md |
Karma/Jasmine, angular-mocks, $httpBackend, AAA patterns |
component-architecture.md |
Feature modules, .component()/controllerAs, directive design |
scope-binding-patterns.md |
bindToController, isolate bindings, lifecycle hooks, $watch |
state-management.md |
services/factories, $http/interceptors, $rootScope discipline |
performance.md |
digest hygiene, one-way/one-time bindings, ng-repeat track by |
javascript-standards.md |
minification-safe DI, IIFE + 'use strict', JSHint/ESLint |
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: angularjs-best-practices
Date: [YYYY-MM-DD]
Somnio AI Tools: https://github.com/somnio-software/somnio-ai-tools
---
1---2name: angularjs-best-practices3description: Execute a micro-level AngularJS (Angular 1.x) code quality audit. Validates code against live GitHub standards for testing, module/component architecture, scope & binding patterns, services & data flow, digest performance, and minification-safe JavaScript standards. Produces a detailed violations report with prioritized action plan. Use when the user asks to check AngularJS 1.x code quality, validate best practices, or review legacy frontend code standards. Triggers on: 'angularjs best practices', 'angular 1 code quality', 'angularjs standards', 'minification-safe DI review'.4---56# AngularJS Micro-Code Audit Plan78This plan executes a deep-dive analysis of the AngularJS (Angular 1.x)9codebase focusing on **Micro-Level Code Quality** and adherence to specific10module/component architecture, scope & binding, services & data flow, testing,11digest-cycle performance, and minification-safe JavaScript standards.1213## Agent Role & Context1415**Role**: AngularJS (Angular 1.x) Micro-Code Quality Auditor1617## Your Core Expertise1819You are a master at:20- **Code Quality Analysis**: Analyzing individual controllers, directives,21 `.component()` units, services, and spec files for implementation quality22- **Standards Validation**: Validating code against the standards from23 `agent-rules/rules/` (local if in the repo, else live from GitHub raw)24 (testing.md, component-architecture.md,25 scope-binding-patterns.md, state-management.md, performance.md,26 javascript-standards.md)27- **Testing Standards Evaluation**: Assessing test quality using Karma/Jasmine28 and `angular-mocks` (`module()`/`inject()`/`$httpBackend`), naming29 conventions, assertions, and spec structure30- **Architecture Compliance**: Evaluating adherence to feature-based module31 organization and controller/directive/component composition patterns32- **Code Standards Enforcement**: Analyzing minification-safe DI, `'use strict'`33 / IIFE module hygiene, naming conventions, and AngularJS-specific best34 practices35- **Evidence-Based Reporting**: Reporting findings objectively based on36 actual code inspection without assumptions3738**Responsibilities**:39- Execute micro-level code quality analysis following the plan steps40 sequentially41- Validate code against the standards from the somnio-ai-tools repository (local if present, else fetched live via the GitHub raw URL)42- Report findings objectively based on actual code inspection43- Focus on code implementation quality, testing standards, and44 architecture compliance45- Never invent or assume information - report "Unknown" if evidence is missing4647**Expected Behavior**:48- **Professional and Evidence-Based**: All findings must be supported49 by actual code evidence50- **Objective Reporting**: Distinguish clearly between violations,51 recommendations, and compliant code52- **Explicit Documentation**: Document what was checked, what standards53 were applied, and what violations were found54- **Standards Compliance**: Validate against local `.md` standards from55 `agent-rules/rules/angularjs/` (testing.md, component-architecture.md,56 scope-binding-patterns.md, state-management.md, performance.md,57 javascript-standards.md)58- **Judge AngularJS on its own terms**: Angular 1.x is EOL/legacy by design59 here — reward good structure WITHIN the Angular 1.x paradigm60 (`.component()`/`controllerAs`, thin controllers, one-way bindings) and61 penalize the known 1.x rot patterns ($scope-soup, fat controllers, unsafe62 DI); do not simply penalize "it's not a modern framework"63- **Granular Analysis**: Focus on individual controllers, directives,64 components, services, and spec 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/angularjs/` 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/angularjs/)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 standards8081## Step 1: Testing Quality Analysis82**Goal**: Evaluate conformance to Karma/Jasmine and `angular-mocks` standards.83**Rule**: Read and follow the instructions in `references/testing-quality.md`84**Focus Areas**:85- Spec naming conventions and `describe`/`it` block structure86- `module()` / `inject()` bootstrap and `$httpBackend` mocking87- Assertion quality (Jasmine matchers) and async handling (`$digest`/`$apply`, `$httpBackend.flush()`)88- Arrange-Act-Assert structure89- Controller/service/directive isolation via `$controller`, `$compile`, and injected services9091## Step 2: Component Architecture Analysis92**Goal**: Evaluate conformance to feature-based module structure and composition patterns.93**Rule**: Read and follow the instructions in `references/component-architecture.md`94**Focus Areas**:95- Feature-based module organization (`angular.module` per feature)96- Controller/directive/component file size and single responsibility97- `.component()` + `controllerAs` over `$scope`-heavy controllers98- Directive vs `.component()` selection and isolate scope99- One definition per file and consistent registration patterns100101## Step 3: Scope & Binding Patterns Analysis102**Goal**: Evaluate conformance to `$scope`/binding rules and component lifecycle conventions.103**Rule**: Read and follow the instructions in `references/hooks-patterns.md`104**Focus Areas**:105- `controllerAs` + `bindToController` over raw `$scope` assignment106- Isolate scope binding types (`<` one-way, `@` text, `&` expression) vs `=` two-way107- Component lifecycle hooks (`$onInit`, `$onChanges`, `$onDestroy`, `$postLink`)108- `$watch` usage, deep watches, and `$destroy` cleanup of watches/listeners109- Extracting shared stateful logic into services/factories instead of duplicating in controllers110111## Step 4: State Management Analysis112**Goal**: Evaluate correct usage of services, `$http`, interceptors, and `$rootScope`.113**Rule**: Read and follow the instructions in `references/state-management.md`114**Focus Areas**:115- State scope decisions (controller-local → service/factory → `$rootScope` events)116- Service/factory layering for business logic and server access117- `$http`/`$resource` centralization and `$httpProvider.interceptors`118- Avoiding `$rootScope` as a global data bus119- Avoiding server data cached on `$scope`/`$rootScope` instead of a service120121## Step 5: Performance Analysis122**Goal**: Evaluate digest-cycle hygiene, binding cost, and list rendering.123**Rule**: Read and follow the instructions in `references/performance.md`124**Focus Areas**:125- `$watch` / `$watchCollection` count and deep-watch cost126- One-time bindings (`::`) and one-way (`<`) bindings to reduce digest load127- `ng-repeat track by` for stable, efficient list rendering128- `$sce` / `ng-bind-html` sanitization and avoiding heavy filters in templates129- Anti-patterns: manual `$scope.$apply()`/`$timeout` to force digests, DOM work in controllers130131## Step 6: JavaScript Standards Analysis132**Goal**: Evaluate minification-safe DI and JavaScript module hygiene.133**Rule**: Read and follow the instructions in `references/typescript-standards.md`134**Focus Areas**:135- Minification-safe DI (`$inject`, inline array annotation, or `ng-annotate`)136- IIFE wrapping + `'use strict';` module hygiene137- JSHint/ESLint (Angular-aware) configuration and coverage of the source tree138- No stray `console.log`; minimal `eslint-disable`/`jshint ignore`139- No direct DOM/jQuery manipulation inside controllers/services140141## Step 7: Report Generation142**Goal**: Aggregate all findings into a final Markdown report using143the template.144**Rules**:145- Read and follow the instructions in `references/best-practices-format-enforcer.md`146- Read and follow the instructions in `references/best-practices-generator.md`147**Output**: Final report following the template at148`assets/report-template.md`149150**Rule Execution Order**:1511. `references/testing-quality.md` {model: mid}1522. `references/component-architecture.md` {model: mid}1533. `references/hooks-patterns.md` {model: mid}1544. `references/state-management.md` {model: mid}1555. `references/performance.md` {model: mid}1566. `references/typescript-standards.md` {model: cheap}1577. `references/best-practices-generator.md` {model: frontier}158159## Subagent Dispatch (in-session)160161When 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.162163**Entry point**: `agents/orchestrator.md` (`model: mid`)164165### Wave Plan166167| Wave | Agent file | Tier | Reference / steps covered | Artifact |168|------|-----------|------|--------------------------|---------|169| 1 | `agents/typescript-scanner.md` | cheap | `references/typescript-standards.md` (scan portion) | `reports/.artifacts/angularjs-best-practices/step_01_javascript_scan.md` |170| 1 | `agents/architecture-scanner.md` | cheap | `references/component-architecture.md` (enumeration) | `reports/.artifacts/angularjs-best-practices/step_02_architecture_scan.md` |171| 2 | `agents/testing-analyzer.md` | mid | `references/testing-quality.md` | `reports/.artifacts/angularjs-best-practices/step_03_testing_quality.md` |172| 2 | `agents/architecture-analyzer.md` | mid | `references/component-architecture.md` (consumes step_02) | `reports/.artifacts/angularjs-best-practices/step_04_architecture_analysis.md` |173| 2 | `agents/hooks-analyzer.md` | mid | `references/hooks-patterns.md` | `reports/.artifacts/angularjs-best-practices/step_05_scope_binding_analysis.md` |174| 2 | `agents/state-analyzer.md` | mid | `references/state-management.md` | `reports/.artifacts/angularjs-best-practices/step_06_state_analysis.md` |175| 2 | `agents/performance-analyzer.md` | mid | `references/performance.md` | `reports/.artifacts/angularjs-best-practices/step_07_performance_analysis.md` |176| 3 | `agents/report-writer.md` | frontier | `references/best-practices-format-enforcer.md` + `references/best-practices-generator.md` + all step artifacts | `reports/angularjs-best-practices-report.md` |177178**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.179180## Standards References181182All standards are sourced from:183`agent-rules/rules/angularjs/` (somnio-ai-tools repo locally, or GitHub raw if installed standalone)184185| Standard File | Purpose |186|---------------|---------|187| `testing.md` | Karma/Jasmine, `angular-mocks`, `$httpBackend`, AAA patterns |188| `component-architecture.md` | Feature modules, `.component()`/`controllerAs`, directive design |189| `scope-binding-patterns.md` | `bindToController`, isolate bindings, lifecycle hooks, `$watch` |190| `state-management.md` | services/factories, `$http`/interceptors, `$rootScope` discipline |191| `performance.md` | digest hygiene, one-way/one-time bindings, `ng-repeat track by` |192| `javascript-standards.md` | minification-safe DI, IIFE + `'use strict'`, JSHint/ESLint |193194## Report Metadata (MANDATORY)195196Every generated report MUST include a metadata block at the very end. This is non-negotiable — never omit it.197198To resolve the source and version:1991. Look for `.claude-plugin/plugin.json` by traversing up from this skill's directory2002. If found, read `name` and `version` from that file (plugin context)2013. If not found, use `Somnio CLI` as the name and `unknown` as the version (CLI context)202203Include this block at the very end of the report:204205```206---207Generated by: [plugin name or "Somnio CLI"] v[version]208Skill: angularjs-best-practices209Date: [YYYY-MM-DD]210Somnio AI Tools: https://github.com/somnio-software/somnio-ai-tools211---212```