writing-client-code
Installation
SKILL.md
Repository Orientation
The clients mono-repo contains:
apps/web,apps/browser,apps/desktop,apps/cli— client applicationslibs/common— shared code for ALL clients including CLI (no Angular dependencies — CLI uses Node, not Angular DI)libs/angular— Angular-specific code for visual clients onlylibs/components— Angular Component Library (CL)
Why libs/common cannot import Angular
CLI is a first-class client. Any code in libs/common must work without Angular's dependency injection, decorators, or lifecycle hooks. This is why cross-client services use abstract classes as interfaces — the concrete implementations (Default*, Web*, Browser*, Desktop*, Cli*) live in their respective apps.
Architectural Rationale
Thin components
Components contain only view logic. Business logic belongs in services. This keeps components testable, reusable, and prevents Angular lifecycle coupling from leaking into domain logic.