Agent-skills-standard angular-state-management
Implement application state with Angular Signals, computed derivations, and NgRx Signal Store. Use when implementing reactive state with signal(), computed(), effect(), or @ngrx/signals in Angular. (triggers: **/*.store.ts, **/state/**, angular signals, signal store, computed, effect, linkedSignal)
install
source · Clone the upstream repo
git clone https://github.com/HoangNguyen0403/agent-skills-standard
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/HoangNguyen0403/agent-skills-standard "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/angular/angular-state-management" ~/.claude/skills/hoangnguyen0403-agent-skills-standard-angular-state-management && rm -rf "$T"
manifest:
skills/angular/angular-state-management/SKILL.mdsource content
State Management
Priority: P1 (HIGH)
1. Use Signals for All State
- Keep internal signals private; expose publicly via
.asReadonly()
See signal store pattern for signal-based service and store examples.
2. Derive State with computed()
- Use
for totals, filtered lists, derived values — pure and cached.computed() - Use
for dependent writable state that resets when source changes.linkedSignal(() => source()) - Use
to read signal insideuntracked()
/computed()
without creating dependency.effect()
3. Scale with Signal Store
- For complex features, use
(@ngrx/signals
) withsignalStore
,withState
,withComputed
, andwithMethods
.withEntities()
4. Handle Side Effects
- Use
only for side effects (logging, localStorage sync, DOM manipulation).effect() - Never update signals inside effect() — causes circular dependencies.
- Treat signal values as immutable — update with
or.set()
..update(v => ...)
Anti-Patterns
- No state logic in components: Delegate to Signal Store or Service.
- No
for state: Use Signals; keep RxJS only for complex event streams.BehaviorSubject