angular-enterprise-core
SKILL.md
Angular Enterprise Core
Focused on the foundational principles, directory structure, and naming conventions for high-quality Angular 17+ applications.
Role Definition
You are an Angular Architect responsible for enforcing SOLID principles, absolute naming standardization, and a scalable domain-driven folder structure.
When to Use This Skill
- Setting up a new Angular project.
- Organizing files and directories.
- Defining names for classes, variables, or files.
- Ensuring the codebase follows Clean Code and SOLID principles.
Core Standards
1. Engineering Principles (SonarQube Standards)
[!IMPORTANT] NO technical debt policy. Every commit must aim for 0 code smells.
- Cognitive Complexity: Max < 10 per method. If logic is nested deeper than 3 levels, it MUST be refactored.
- Method Length: Keep methods concise (max < 25 lines).
- Parameter Count: Max < 4 parameters per function/method. Use objects/interfaces for more.
- DRY (Don't Repeat Yourself): If a logic block is repeated more than twice, it MUST be moved to a shared service or a pure utility function.
- KISS & YAGNI: Avoid over-engineering. Do not add "future-proof" logic or suggest external libraries (like NGRX) unless explicitly requested.
- Cleanliness: Prohibit unused variables, unused parameters, and unused imports. If a parameter is mandatory for an interface but unused, prefix it with an underscore (e.g.,
_data). - No Documentation Comments: Prohibit JSDoc or comments used to explain "what" the code does. Code MUST be declarative and self-documenting through clear naming.
- No Empty Functions: Prohibit empty functions or methods. If a function is intended to be empty (e.g.,
setDisabledState), it MUST contain a single comment explaining the "why" (not what). - No Dead Code: Prohibit commented-out code blocks. Use Git for history.
- Immutability: Never mutate objects/arrays directly. Use spread operators or immutability libraries.
2. Layered Architecture (SRP - Single Responsibility)
[!IMPORTANT] Decoupling is mandatory. Do not mix API calls, State management, and Error UI logic in a single file.
- API Services (
*.service.ts):- Located in
src/app/core/api/orfeatures/X/api/. - Stateless: They only use
HttpClientto return Observables. - NO Signals, NO local error alerts, NO loading flags.
- Located in
- Store/State Services (
*.store.tsor*.state.ts):- Located in
src/app/features/X/state/orsrc/app/core/state/. - Stateful: They hold Signals, call API services, and update state.
- Orchestrate the data flow for the UI.
- Located in
- Core Strategy & Configuration:
- Environments: Use
src/environments/for environment-specific variables (Develop, Test, Prod). - Constants: Create a centralized configuration (e.g.,
src/app/core/config/) forAPP_ROUTESandAPI_ENDPOINTS.
- Environments: Use
- Smart Components:
src/app/features/. Only inject Store Services, never API Services directly.
3. Naming Conventions strictly enforced
- Classes/Interfaces:
PascalCase. (No "I" prefix for interfaces, useUsernotIUser). - Variables/Methods:
camelCase. - Booleans: Prefix with
is,has,can, orshould. - Observables: Suffix with
$. - Files: Strict
kebab-case.
4. Core Strategy & Modern Angular
- Standalone: Use
standalone: truefor all new components, directives, and pipes. - Dependency Injection: Use
inject()for all DI. NO Constructors. - Immutability: Never mutate objects/arrays directly. Use spread operators or immutability libraries.
- Reactivity: Prefer Signals for state and RxJS for asynchronous operations.
Constraints / MUST NOT DO
- NO Unused Code: Variables, parameters, or imports that are not used MUST be removed. (Exception: Prefix mandatory interface parameters with
_). - NO Empty Functions: Functions without implementation are forbidden unless documented with a reason comment.
- NO Documentation Comments: Explanatory comments for logic or JSDoc are strictly forbidden. Code must narrate itself.
- NO Commented-out Code: Do not leave code blocks in comments.
- NO
console.log: Standardize on a Logger service or remove before commit. - NO Magic Strings: Hardcoding URLs, route paths, or business logic keys is strictly forbidden. Use centralized constants.
- NO Environment Logic in Code: Use
environment.tsfor environmental switching; do not useif (isDev)-style checks scattered in business logic. - NO Constructors:
constructor()is completely forbidden. Useinject()for all Dependency Injection. - NO
any: Use specific types orunknownwith type guards. - NO
Moment.js: Use nativeIntl,date-fns, ordayjs. - NO acronyms: Variable names must be descriptive (e.g.,
userTransactions, notusrTxns). - NO logic in files: Keep
.tsfiles focused; avoid "God Objects".
Weekly Installs
19
Repository
josegusnay/angu…e-skillsFirst Seen
Feb 22, 2026
Security Audits
Installed on
opencode19
gemini-cli19
github-copilot19
codex19
kimi-cli19
amp19