agentsclimarketplace

Angular state management

Skill ComeOnOliver/skillshub/skills/HoangNguyen0403/agent-skills-standard/angular-state-management

Signals-based state management and NgRx Signal Store. Use when managing application state with Angular Signals or NgRx Signal Store. (triggers: **/*.store.ts, **/state/**, angular signals, signal store, computed, effect, linkedSignal)From its SKILL.md

Install
npx -y skills add ComeOnOliver/skillshub --skill angular-state-management

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

SKILL.md

2.0 KB, 420 tokens by cl100k_base, as published. Nobody here has run it

State Management

Priority: P1 (HIGH)

Principles

  • Signals First: Use signal() for all local and shared state. Keep internal signals private: private _user = signal<User | null>(null).
  • Computed: Derive state declaratively using computed() for derived state (totals, filtered lists) — it's pure and cached.
  • Services: For simple apps, a service with signal properties is sufficient. Expose publicly asReadonly() (e.g., user = this._user.asReadonly()). This enforces that only the service mutates state while consumers can still react to changes.
  • Signal Store: For complex features, use @ngrx/signals (signalStore) with withState, withComputed, withMethods, and withEntities() for normalized collections.

Modern Signal APIs

  • linkedSignal(() => source()): For dependent writable state that resets when source changes (e.g., reset selected item when list changes).
  • asReadonly(): Expose public readonly signals from private writable signals in services.
  • untracked(): Read a signal inside computed()/effect() without creating a dependency.

Guidelines

  • Immutability: Treat signal values as immutable. Never mutate state directly — update using .set() or .update(v => v + 1).
  • Effects: Use effect() only for side effects (e.g., logging, localStorage sync, manual DOM manipulation). Never update signals inside effect() — this causes circular dependency and is an anti-pattern.

Anti-Patterns

  • No state logic in components: Delegate to a Signal Store or Service instead.
  • No BehaviorSubject for state: Use Signals; keep RxJS only for complex event streams.

References

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.