CtrlK
BlogDocsLog inGet started
Tessl Logo

angular-state-management

Master modern Angular state management with Signals, NgRx, and RxJS. Use when setting up global state, managing component stores, choosing between state solutions, or migrating from legacy patterns.

83

1.50x

Quality

77%

Does it follow best practices?

Impact

99%

1.50x

Average score across 3 eval scenarios

SecuritybySnyk

Passed

No known issues

Optimize this skill with Tessl

npx tessl skill review --optimize ./skills/antigravity-angular-state-management/SKILL.md
SKILL.md
Quality
Evals
Security

Evaluation results

100%

58%

Flight Search Feature State

NgRx SignalStore feature store

Criteria
Without context
With context

Uses signalStore()

0%

100%

withState() for initial state

0%

100%

withComputed() for derived values

40%

100%

withMethods() for actions

30%

100%

patchState() for mutations

0%

100%

inject() for dependencies

30%

100%

No direct Observable subscription in component

100%

100%

Scoped providedIn

70%

100%

computed() not stored data

100%

100%

Loading/error state in store

100%

100%

Without context: $0.3627 · 4m 4s · 17 turns · 23 in / 6,920 out tokens

With context: $0.5472 · 4m 17s · 24 turns · 29 in / 6,464 out tokens

99%

25%

In-App Notification Center

NgRx global store setup

Criteria
Without context
With context

createActionGroup()

0%

100%

createReducer() with on()

100%

100%

createFeatureSelector()

75%

100%

createSelector()

100%

100%

createEffect()

100%

100%

ofType() in effects

100%

100%

switchMap + catchError in effects

100%

87%

store.selectSignal() in component

0%

100%

provideStore() in bootstrap

100%

100%

provideEffects() in bootstrap

100%

100%

Without context: $0.4209 · 4m 40s · 19 turns · 26 in / 7,886 out tokens

With context: $0.7711 · 6m 14s · 30 turns · 289 in / 10,029 out tokens

100%

16%

Modernize Legacy User Profile Service

BehaviorSubject to Signals migration

Criteria
Without context
With context

signal() replaces BehaviorSubject

100%

100%

asReadonly() for public exposure

20%

100%

set()/update() for mutations

100%

100%

toSignal() import path

0%

100%

toObservable() for Observable consumers

100%

100%

inject() for HTTP

100%

100%

No chaotic mixing

100%

100%

Optimistic update saves snapshot

100%

100%

Optimistic update applies immediately

100%

100%

Rollback on error

100%

100%

Without context: $0.2832 · 2m 32s · 14 turns · 20 in / 5,622 out tokens

With context: $0.5172 · 3m 45s · 25 turns · 284 in / 5,306 out tokens

Repository
boisenoise/skills-collections
Evaluated
Agent
Claude Code
Model
Claude Sonnet 4.6

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.