skills/7spade/black-tortoise/capabilities-layer

capabilities-layer

SKILL.md

Capabilities Layer

Intent

Deliver independent capabilities as bounded contexts that interact only via events and the workspace context.

Structure Rules

  • Keep each capability cohesive: UI + application orchestration + domain model (if needed).
  • Do not create cross-capability imports for business logic; communicate via events.

State Management

  • Use @ngrx/signals stores as the source of truth for capability state.
  • Derive view state via computed signals; avoid mutable arrays/objects and avoid .push().
  • Async side effects run through rxMethod + tapResponse with explicit operator choice.

Event-Driven Interactions

  • Publish domain/application events after persistence (append-before-publish).
  • Subscribe to events in application stores/effects, not in presentation components.

UI Rules

  • Standalone, zone-less components.
  • Templates bind to signals only and use Angular control flow (@if, @for, @switch, @defer).
  • Material Design 3 token usage only; no hardcoded colors.

Data Boundaries

  • Infrastructure returns Observables/Promises; convert to signals before templates.
  • Do not leak Firebase/DataConnect DTOs outside integration/infrastructure.

Testing Expectations

  • Cover critical flows with unit tests for store transitions and Playwright for happy paths.
  • Use stable selectors (data-testid, roles/labels).
Weekly Installs
5
First Seen
Feb 5, 2026
Installed on
codex5
opencode4
gemini-cli4
replit4
claude-code4
mcpjam3