vowdemon/jolt/use-jolt

Claude Code and agent skill by vowdemon/jolt

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Use when modeling reactive state in Dart with Jolt — owning mutable state with signals, deriving values from other reactive reads, reacting to changes with effects or watchers, or bridging reactive state with Future / Stream / async loading.

Install

npx vskill@latest install vowdemon/jolt/use-jolt

SKILL.md

Use Jolt

Jolt state models are ordinary Dart objects built from a small reactive core: own state with Signal, derive values with Computed, react with Effect or Watcher, and bind related lifetimes with EffectScope.

When to Use

  • The user wants reactive signals with automatic dependency tracking.
  • The user wants to derive values from signals with Computed or derived.
  • The user wants side effects, transition callbacks, cleanup, or lifecycle with

Effect, Watcher, or EffectScope.

  • The user wants to extend signal behavior with collection signals, readonly

views, read/write helpers, conversion wrappers, or storage-backed state.

  • The user wants signals to interact with Future, Stream, async loading

state, or imperative waits.

  • The user wants compact state management without code generation, global

containers, or manual subscription wiring.

  • The task mentions Signal, Computed, Effect, Watcher, EffectScope,

Readable, Writable, Readonly, WritableComputed, AsyncSignal, ListSignal, MapSignal, SetSignal, IterableSignal, PersistSignal, ConvertComputed, batch, untracked, triggerTracked, peek, stream, or until.

Quick Start

Start with the smallest model that expresses the state and derivations. Use Signal for source state, Computed for values that follow from other reads, and ordinary methods for writes.

dart
import 'package:jolt/jolt.dart';
class CounterModel {
final _count = Signal(0);
late final isEven = Computed(() => _count.value.isEven);
int get count => _count.value;
void increment() {
_count.value++;
}
}

Core Choice Table

NeedUse
Owned mutable stateSignal<T>
Lazy mutable stateSignal.lazy<T>()
Read interfaceReadable<T>
Read/write interfaceWritable<T>
Read-only wrapper or constant valueReadonly<T>
Derived read-only valueComputed<T> or readable.derived(...)
Derived value with write-backWritableComputed<T>
Reversible conversion over writable stateConvertComputed<T, U>
Reactive mutable collectionListSignal, MapSignal, SetSignal
Derived iterable viewIterableSignal<T>
Run work after reactive values changeEffect
Compare previous and next valuesWatcher<T>
Dispose related reactions togetherEffectScope
Update multiple signals as one settled changebatch(...)
Read without subscribingpeek or untracked(...)
Touch tracked values without keeping the caller subscribedtriggerTracked(...)
Async source and loading/success/error stateAsyncSignal<T>, AsyncState<T>, FutureSource, StreamSource
Stream-style output from a readablereadable.stream or readable.listen(...)
Await a reactive conditionUntil<T>, readable.until(...), untilWhen(...), untilChanged(...)
Storage-backed signalPersistSignal<T>
Debug metadata and hooksJoltDebugOption, JoltDebug

Reference Files

Read the focused reference that matches the user's task:

FileUse when
references/signal.mdModeling owned state, read surfaces, lazy signals, notifications, and collection signals.
references/computed.mdDeriving values, equality, previous values, advanced computed variants, and pure getter rules.
references/effect.mdRunning reactive work, lazy effects, cleanup, detach, and disposal.
references/watcher.mdPrevious/next transitions, when, immediate/once watchers, pause/resume, and ignored updates.
references/effect-scope.mdGrouped lifecycle, scope cleanup, detached scopes, and ownership boundaries.
references/async.mdAsync loading state, futures, streams, source replacement, and AsyncState mapping.
references/until.mdAwaiting reactive conditions with Until, cancellation, and scope attachment.
references/tricks.mdPersistence helpers, readonly views, conversion wrappers, and storage patterns.
references/advanced.mdbatch, untracked, stream/listen utilities, debugging, and low-level extension points.

Automatic Tracking

Tracked reads happen through .value inside an active reactive context:

FormBehavior
source.valueReads and subscribes the active reactive context.
source.peekReads without subscribing.
untracked(() => source.value)Runs a block without recording dependencies.

Use batch when one command mutates several signals and observers should see one final state:

dart
batch(() {
firstName.value = 'Ada';
lastName.value = 'Lovelace';
});

Derive And React

Use Computed when a value follows from reactive reads. Keep computed getters pure: no timers, requests, logging, persistence, controller mutations, or signal writes.

Use Effect when something should happen because current reactive values changed. Use cleanup for resources owned by one run, and dispose manually created effects.

Use Watcher when the callback needs the previous and next values, custom transition filtering, pause/resume, or once semantics.

Use EffectScope when a screen, request, route, test, or temporary workflow owns several reactions and cleanup callbacks together.

Integration Points

  • Use collection signals when in-place List, Map, or Set mutation is the

normal API and should notify dependents.

  • Use AsyncSignal when loading, success, and error are part of the state.
  • Use readable stream/listen utilities when an external API expects Stream or

callback-style updates; cancel subscriptions when the bridge ends.

  • Use until utilities when imperative code must wait for a reactive condition.
  • Use persistence helpers when storage belongs to the signal model.
  • Use Readonly<T> when an API needs a Jolt object that cannot write through

the exposed surface.

Common Mistakes

  • Creating a signal for state that should be derived with Computed.
  • Putting side effects inside Computed.
  • Reading .value when the read is incidental; use peek or untracked.
  • Forgetting to dispose effects, watchers, scopes, waits, or stream

subscriptions.

  • Using Watcher when an Effect only needs current values.
  • Mutating ordinary List, Map, or Set in place inside a Signal without

calling notify or using collection signals.

Source Navigation

Read the current source before answering API-sensitive questions.

AreaFiles
Public exportspackages/jolt/lib/jolt.dart, packages/jolt/lib/core.dart
Read/write interfacespackages/jolt/lib/src/core/interface.dart, packages/jolt/lib/src/utils/readable.dart, packages/jolt/lib/src/utils/writable.dart
Signal statepackages/jolt/lib/src/jolt/signal.dart, packages/jolt/lib/src/jolt/readonly.dart
Derived statepackages/jolt/lib/src/jolt/computed.dart
Effects and lifecyclepackages/jolt/lib/src/jolt/effect.dart, packages/jolt/lib/src/jolt/watcher.dart, packages/jolt/lib/src/jolt/effect_scope.dart
Tracking and batchingpackages/jolt/lib/src/jolt/track.dart, packages/jolt/lib/src/jolt/batch.dart
Collectionspackages/jolt/lib/src/jolt/collection/
Async, stream, wait, persistencepackages/jolt/lib/src/jolt/async.dart, packages/jolt/lib/src/utils/, packages/jolt/lib/src/tricks/persist_signal.dart
Tutorialspackages/jolt/doc/en/
Core testspackages/jolt/test/

For public examples, import package:jolt/jolt.dart. Use src/ imports only when maintaining package internals.

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
101
Repository forks
2
7-day trend score
23

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/vowdemon/jolt/use-jolt/badge)](https://verified-skill.com/skills/vowdemon/jolt/use-jolt)

Something wrong with this skill or its page? Tell us.