Learn-skills.dev capabilitys-layer

Patterns for implementing features under src/app/capabilitys, including presentation/application/domain/integration boundaries, NgRx Signals stores, event-driven communication, and Angular 20 template rules; use when adding or changing a capability.

install
source · Clone the upstream repo
git clone https://github.com/NeverSight/learn-skills.dev
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/NeverSight/learn-skills.dev "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/skills-md/7spade/black-tortoise/capabilitys-layer" ~/.claude/skills/neversight-learn-skills-dev-capabilitys-layer && rm -rf "$T"
manifest: data/skills-md/7spade/black-tortoise/capabilitys-layer/SKILL.md
source content

Capabilitys 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).