> angular-architecture
Standards for Angular project structure, feature modules, and lazy loading. Use when structuring Angular apps, defining feature modules, or configuring lazy loading. (triggers: angular.json, angular components, standalone, feature module, lazy loading, loadComponent, loadChildren)
curl "https://skillshub.wtf/HoangNguyen0403/agent-skills-standard/angular-architecture?format=md"Angular Architecture
Priority: P0 (CRITICAL)
Principles
- Feature-Based: Organize by feature folder (e.g.,
features/dashboard/) containing components, services, and models. Apply LIFT: Locate, Identify, Flat structure, Try DRY. - Standalone First: Use standalone components, Pipes, and Directives. Eliminate NgModule for new code; use standalone: true (or default in Angular 20+).
- Core vs Shared:
core/: Global singletons (AuthService, Interceptors). Never put singletons in shared/.shared/: Reusable UI components, pipes, utils (Buttons, Formatters).
- Smart vs Dumb:
- Smart (Container): Talks to services, manages state.
- Dumb (Presentational): Inputs/Outputs only. No logic. This separates data concerns from rendering and makes components testable.
Guidelines
- Lazy Loading: All feature routes MUST be lazy loaded using loadComponent or loadChildren.
- Example:
{ path: 'dashboard', loadComponent: () => import('./features/dashboard/dashboard.component').then(m => m.DashboardComponent) }
- Example:
- Flat Modules: Avoid deep nesting of modules.
- Barrel Files: Use carefully. Prefer direct imports for better tree-shaking in some build tools (though modern bundlers handle barrels well).
Verification Checklist (Mandatory)
- Lazy Loading: Are all feature routes using
loadComponentorloadChildren? - Standalone: Are components, pipes, and directives standalone?
- Core/Shared: Are global services in
core/and reusable UI inshared/? - Smart/Dumb: Are presentational components logic-free with only @Input/@Output?
- Signals: Are you using Signals for local state where applicable (Angular 16+)?
Anti-Patterns
- No NgModule: Eliminate NgModule for new code; use standalone components.
- No eager feature imports: Lazy load all features with
loadComponentorloadChildren. - No type-based folders: Organize by feature, not by
/components,/servicestop-level dirs.
References
> related_skills --same-repo
> common-store-changelog
Generate user-facing release notes for the Apple App Store and Google Play Store by collecting git history, triaging user-impacting changes, and drafting store-compliant changelogs. Enforces character limits (App Store ≤4000, Google Play ≤500), tone, and bullet format. Use when generating release notes, app store changelog, play store release, what's new, or version release notes for any mobile app. (triggers: generate changelog, app store notes, play store release, what's new, release notes, ve
> golang-tooling
Go developer toolchain — gopls LSP diagnostics, linting, formatting, and vet. Use when setting up Go tooling, running linters, or integrating gopls with Claude Code. (triggers: gopls, golangci-lint, golangci.yml, go vet, goimports, staticcheck, go tooling, go lint)
> common-ui-design
Design distinctive, production-grade frontend UI with bold aesthetic choices. Use when building web components, pages, interfaces, dashboards, or applications in any framework (React, Next.js, Angular, Vue, HTML/CSS). (triggers: build a page, create a component, design a dashboard, landing page, UI for, build a layout, make it look good, improve the design, build UI, create interface, design screen)
> common-owasp
OWASP Top 10 audit checklist for Web Applications (2021) and APIs (2023). Load during any security review, PR review, or codebase audit touching web, mobile backend, or API code. (triggers: security review, OWASP, broken access control, IDOR, BOLA, injection, broken auth, API review, authorization, access control)