Design, refactor, and review Effector state management using modern v23+ patterns. Use when tasks involve createStore/createEvent/createEffect modeling, dataflow with sample/attach/split, scope-safe SSR with fork/allSettled/serialize/hydrate, React integration with useUnit, Solid/Vue integration patterns, fixing scope loss, or replacing anti-patterns such as business logic in watch, imperative calls in effects, and direct getState business reads.
72
87%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
—
The risk profile of this skill
Use this skill to produce deterministic, scope-safe Effector solutions for new features, refactors, and code reviews.
modeling: create or extend stores/events/effects.refactor: replace anti-patterns with declarative flows.ssr: implement or debug scope-safe SSR.review: assess risks, regressions, and missing tests.legacy-migration: move old patterns to modern v23+ safely.references/core-patterns.md.references/lint-derived-best-practices.md after core patterns to enforce plugin-backed best practices.references/explicit-start.md when task touches app bootstrap, startup logic, initialization order, tests, scope, or SSR.references/computation-priority.md when task touches ordering, watch, sequencing, race-like behavior, or side effects placement.references/react-ssr-scope.md when React/SSR/scope appears.references/solid-scope.md when Solid integration appears.references/vue-scope.md when Vue integration appears.references/anti-patterns-and-fixes.md when fixing or reviewing existing logic.references/legacy-migration-map.md when deprecated APIs/imports are present.references/checklists.md for acceptance criteria.appStarted) and keep startup wiring declarative.sample first; use attach for effect composition.fork, allSettled) for tests, SPA bootstrap boundaries, and SSR.useUnit and correct provider wiring.sample, attach, split if needed).eslint-plugin-effector as baseline constraints.Unit: include Store, Event, Effect, Domain, Scope.Common unit: only Store, Event, Effect (reactive update sources for many APIs).Derived store: read-only store built from other stores (map, combine, effect-derived stores like .pending).Derived store constraints: do not mutate directly and do not use as target in sample.Reducer: store.on(...) handlers must return next state; undefined or same reference (===) means no store update.Watcher: side effects/debug observability only; watcher return value is ignored.Subscription: treat unsubscribe handlers as infrastructure concern; avoid manual subscription management in business logic.Purity: pure functions (map, .on, transform callbacks) must not imperatively call events/effects.Domain: namespace for units; onCreate* hooks are acceptable for infra-level cross-cutting concerns (logging/instrumentation), not business orchestration.watch.sample over forward/guard for orchestration.map/.on pure and avoid side effects in pure computation stages.$store.getState() for business dataflow; pass state through sample source.target in sample; target writable units/events/effects only.sample/guard options in semantic order: clock -> source -> filter -> fn -> target.target usage (no simultaneous result assignment and explicit target).clock/source arrays and duplicate .on handlers for one store-event pair.sample/guard without runtime effect (must have target or captured result).$store, eventHappened, someFx).useUnit; avoid raw event/effect usage in JSX handlers.If legacy code is present:
9a7e508
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.