Agent skill

Signals for Flutter

by rodydavis in rodydavis/signals.dart

Reference for the signals_flutter package: reactive signals, computed values, effects, async signals and collection signals bound to Flutter widgets.

Apache-2.0Auto-check passedMobile

Install Signals for Flutter

skills CLI
$ npx skills add rodydavis/signals.dart --skill signals-flutter -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install rodydavis/signals.dart signals-flutter --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/rodydavis/signals.dart.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/signals-flutter .claude/skills/signals-flutter && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
signals-flutter
GitHub stars
819
Token cost
~1.9k tokens
SKILL.md length
575 words
Files
35
Skills in repo
15
Repo updated
First seen
Licence
Apache-2.0

At a glance

Reference for the signals_flutter package: reactive signals, computed values, effects, async signals and collection signals bound to Flutter widgets.

  • Works in 5 steps: signal(initialValue) → untracked(fn) → computed(fn) → …
  • Adding reactive state to a Flutter app with signals
  • SKILL.md covers Related Documentation & Items, Core Primitives Quick Start…, 1. Widget Rebuild Optimization and 2. High-Frequency Rendering…, plus 1 more section
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

The skill covers using the signals_flutter package for Flutter UI bindings, with element-level reactive tracking and efficient updates under frequent rendering. Its documentation is split by area: core primitives (signal, computed, effect, readonly, batch), asynchronous signals and reactive collections.

Core pages describe writable state, lazy memoized derived values, synchronous effects with teardown, and batched mutation that avoids recompute churn. Async pages cover future, stream and unified async signals, composable async computations with race-condition protection, and an aggregator that merges several async signals. Collection pages cover list, set, map, iterable and queue signals with element-level reactivity.

When your agent uses it

  • Adding reactive state to a Flutter app with signals
  • Rebuilding only the widgets that read a changed signal
  • Wrapping futures or streams as loading, data and error states
  • Making lists, maps or sets reactive in Flutter

Example prompts

  • “Convert this counter widget from setState to signals_flutter.”
  • “Create a computed signal for the cart total that updates when items change.”
  • “Wrap this stream in a stream signal and show loading and error states in the UI.”

Requirements

  • A Flutter project with the signals_flutter package

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. signal(initialValue)
  2. untracked(fn)
  3. computed(fn)
  4. effect(fn)
  5. batch(fn)

What it can do on your machine

Read from SKILL.md and the folder at commit 81d64e8. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are dart).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Signals for Flutter loads about 1.9k tokens when it runs. Until then it costs about 23 tokens; SKILL.md has 575 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~23
When it runs · the whole SKILL.md, loaded when a task matches
~1.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from rodydavis/signals.dart at commit 81d64e8, republished under its Apache-2.0 licence (© rodydavis). 575 words, ~1,891 tokens.

Download SKILL.mdSave it as .claude/skills/signals-flutter/SKILL.md (or your agent's skills folder). This skill also uses 34 other files; get the full folder from GitHub.
name
signals-flutter
description
Highly optimized Flutter UI bindings and GPU rendering for reactive signals.

Flutter Reactive Signals Integration

This skill covers optimizing Flutter UI bindings, element-level reactive tracking, and high-frequency rendering utilizing the signals_flutter package.

Core Primitives
Related FileDescription
signal.mdStandard writeable reactive state primitive containing value accessors, mutation mechanics, and basic custom options.
computed.mdLazy, memoized read-only derived state signal tracking reactive dependencies dynamically.
effect.mdSynchronous observer managing active subscription loops, dynamic dependency updates, and lifecycle teardown.
readonly.mdRead-only signal views ensuring unidirectional data access flows.
batch.mdTransactional state mutation blocks optimizing reactive computations and preventing rendering/recompute churn.
Asynchronous Operations
Related FileDescription
future_signal.mdSingle-evaluation asynchronous future state representation resolving the double-evaluation issue.
stream_signal.mdDynamic, lifecycle-safe, self-disposing stream listener mapping to async loading/data/error states.
async_signal.mdUnifying async state container mapping loading, success data, and failure error states cleanly.
computed_async.mdComposable asynchronous operations built over reactive signals with active race condition protection.
computed_from.mdState aggregator signal merging multiple async signals into a single unified result.
Reactive Collections
Related FileDescription
list_signal.mdOptimized list wrapper proxying standard operations to support element-level reactivity.
set_signal.mdCustom set wrapper ignoring duplicates and notifying on unique mutations.
map_signal.mdGranular map wrapper supporting isolated dictionary element lookup triggers.
iterable_signal.mdIterable wrapper mapping custom lazy traversals to dynamic subscription layers.
queue_signal.mdDouble-ended queue wrapper supporting optimized reactive pipeline structures.
Utility Primitives
Related FileDescription
linked_signal.mdWritable computed signals supporting manual override resets and custom equivalence checks.
tracked_signal.mdState history wrapper enabling clean out-of-the-box undo/redo mechanisms.
timer_signal.mdPeriodically emitting stopwatch signal with built-in pause, resume, and reset.
connect.mdDynamic event connector feeding multiple external data pipelines into single targets.
Flutter Widgets
Related FileDescription
signal_builder.mdLocalized subtree rebuilding widget utilizing the named builder callback signature.
signal_widget.mdComponent-level reactive stateless/stateful widgets resolving SignalsMixin deprecations.
signal_effect.mdLayout-safe side effect orchestrator mapping trigger events (e.g. snackbars, dialogs, routes) cleanly.
signal_custom_paint.mdUltra-high performance GPU render box bypass painting canvas operations at 120 FPS.
Flutter Extensions
Related FileDescription
watch.md[DEPRECATED] Legacy context-level watch extension (prefer SignalBuilder or SignalWidget).

Core Primitives Quick Start Guide

The signals library exposes five core functions which are the building blocks to model any reactive business logic.

Show full SKILL.md (226 more words)Show less
1. signal(initialValue)

Creates a new mutable signal container. You read a signal's value or subscribe to updates by accessing .value.

dart
final counter = signal(0);
print(counter.value); // 0
counter.value = 1; // Mutates value and schedules dependent updates
.peek()

Reads a signal's current value without subscribing to its mutations.

dart
final counter = signal(0);
final logCount = signal(0);

effect(() {
  print(counter.value);
  // Read using peek to avoid subscribing/triggering loop
  logCount.value = logCount.peek() + 1;
});
2. untracked(fn)

Executes a callback that reads signals without subscribing to any of them.

dart
final counter = signal(0);
final count = signal(0);

effect(() {
  print(counter.value);
  count.value = untracked(() => count.value + 1);
});
3. computed(fn)

Combines the values of multiple signals into a lazy, memoized derived signal.

dart
final first = signal('John');
final last = signal('Doe');
final fullName = computed(() => '${first.value} ${last.value}');
print(fullName.value); // John Doe
4. effect(fn)

Orchestrates immediate synchronous side effects by running a callback and subscribing to any signals read within it.

dart
final name = signal('Jane');
final dispose = effect(() => print('Hello $name'));
dispose(); // Clean up subscription
5. batch(fn)

Groups multiple signal writes into a single transaction, executing all dependent computed evaluations and effects exactly once at the end.

dart
final a = signal(0);
final b = signal(0);

batch(() {
  a.value = 1;
  b.value = 2;
});

1. Widget Rebuild Optimization

A. SignalBuilder (Preferred)

Provides localized, context-isolated widget rebuilding. Wrap only the smallest possible widgets in SignalBuilder to keep rendering extremely high-performance.

dart
SignalBuilder(
  builder: (context) => Text('Count: ${counter.value}'),
)
B. Reactive Component Widgets (SignalWidget / SignalStatefulWidget)

In v7, SignalsMixin and BuildContext.watch(context) are deprecated (and will trigger warnings via custom lint rules). Instead of mixins or context extension watches, inherit from SignalWidget or SignalStatefulWidget for automatic, highly optimized reactive tracking inside standard widget trees:

dart
// Reactive Stateless Widget
class MyWidget extends SignalWidget {
  const MyWidget({super.key});

  @override
  Widget build(BuildContext context) {
    return Text('Count: ${counter.value}');
  }
}

2. High-Frequency Rendering (SignalCustomPaint)

For ultra-high-frequency drawing driven by signals, bypass Flutter's heavy widget layout/rebuild lifecycle entirely. SignalCustomPaint and SignalPainterWidget write directly to the GPU via markNeedsPaint() calls inside custom proxy render boxes:

dart
SignalCustomPaint(
  painter: MySignalPainter(progressSignal),
  child: Container(),
)

3. Side Effects in Widget Trees (SignalEffect)

Use SignalEffect / SignalListener to trigger asynchronous side-effects (e.g., showing snackbars, navigation, showing modals) cleanly inside the widget lifecycle.

dart
SignalEffect(
  callback: (context) {
    if (errorMessage.value != null) {
      showDialog(context: context, builder: (_) => Alert(errorMessage.value!));
    }
  },
  child: ChildWidget(),
)

© rodydavis, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 34 other files in skills/signals-flutter of rodydavis/signals.dart.

  • SKILL.md
  • CONTEXT.md
  • async/CONTEXT.md
  • async/async_signal.md
  • async/computed_async.md
  • async/computed_from.md
  • async/future_signal.md
  • async/stream_signal.md
  • collections/CONTEXT.md
  • collections/iterable_signal.md
  • collections/list_signal.md
  • collections/map_signal.md
  • collections/queue_signal.md
  • collections/set_signal.md
  • core/CONTEXT.md
  • core/batch.md
  • core/computed.md
  • core/effect.md
  • … and 17 more

Open the folder on GitHubat commit 81d64e8

Compare with similar skills

Signals for Flutter next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Signals for Flutter compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Signals for Flutter this skillrodydavis/signals.dart819—~1.9kAutomated safety check: PassApache-2.0
Flutter Riverpod State Managementandrewyng/context-hub14k—~1.1kAutomated safety check: PassMIT
BlocVeryGoodOpenSource/vgv-ai-flutter-plugin170—~2kAutomated safety check: PassMIT
Flutter Dart Code Reviewaffaan-m/ECC276k2 repos~5.8kAutomated safety check: NotesMIT
Flutter Bloc and Cubitandrewyng/context-hub14k—~998Automated safety check: PassMIT
Flutter ExpertFNOSP/FlyNarwhal4962 repos~758Automated safety check: PassMIT

Similar skills

  • Guides Flutter state management with Riverpod: choosing provider types, wiring ConsumerWidgets, handling async state and lifecycle, and overriding providers in tests.

    14k GitHub stars~1.1k tokensUpdated 4 mo ago
    MobileAuto-check passed
  • Bloc

    VeryGoodOpenSource/vgv-ai-flutter-plugin

    Best practices for Bloc state management in Flutter/Dart, covering Cubit versus Bloc, event and state naming, sealed classes with Equatable, the Page/View split with BlocProvider, BlocBuilder…

    170 GitHub stars~2k tokensUpdated 3 days ago
    MobileAuto-check passed
  • Library-agnostic Flutter/Dart code review checklist covering widget best practices, state management patterns (BLoC, Riverpod, Provider, GetX, MobX, Signals), Dart idioms, performance…

    276k GitHub starsUsed in 2 repos~5.8k tokens
    MobileAuto-check: notes
  • Flutter Bloc and Cubit

    andrewyng/context-hub

    Helps choose between Bloc and Cubit in Flutter and sets defaults for packages, lifecycle, widget binding and tests.

    14k GitHub stars~998 tokensUpdated 4 mo ago
    MobileAuto-check passed
  • Flutter Expert

    FNOSP/FlyNarwhal

    A skill your agent uses when building cross-platform applications with Flutter 3+ and Dart.

    496 GitHub starsUsed in 2 repos~758 tokens
    MobileAuto-check passed
  • Mobile Development

    rohitg00/awesome-claude-code-toolkit

    Mobile development patterns for React Native and Flutter including navigation, state management, and responsive design

    2.7k GitHub stars~1.5k tokensUpdated 5 mo ago
    MobileAuto-check passed

More from rodydavis/signals.dart

All 15 skills in this repo
  • Jaspr Component Fundamentals

    rodydavis/signals.dart

    Teaches the agent Jaspr's Flutter-like component model and typed HTML elements, with strict rules on build methods and helper syntax.

    819 GitHub stars~1.8k tokensUpdated 25 days ago
    Auto-check passed
  • Jaspr CSS-in-Dart Styling

    rodydavis/signals.dart

    Guides styling of Jaspr web components with the type-safe Styles API in Dart, covering @css annotations, inline styles and global stylesheets.

    819 GitHub stars~1.7k tokensUpdated 25 days ago
    Auto-check passed
  • Jaspr JS Interop

    rodydavis/signals.dart

    Rules for calling JavaScript from Jaspr web apps in Dart: which interop libraries to import in server, static and client modes, and how to wrap functions, objects and libraries.

    819 GitHub stars~823 tokensUpdated 25 days ago
    Auto-check passed
  • Jaspr Pre-Rendering and Hydration

    rodydavis/signals.dart

    Sets the rules for static or server mode Jaspr apps in Dart, covering dual entrypoints, the client annotation and data hydration.

    819 GitHub stars~1.2k tokensUpdated 25 days ago
    Auto-check passed
  • Update Dart Examples Dependencies

    rodydavis/signals.dart

    Upgrades every package under ./examples to the repository's latest signals version, runs pub upgrade on third-party dependencies, and fixes the resulting analysis problems.

    819 GitHub stars~514 tokensUpdated 25 days ago
    Auto-check passed
  • Jaspr HTML Converter

    rodydavis/signals.dart

    Use when you need to convert / rewrite existing HTML (from a file or url) into Jaspr code.

    819 GitHub stars~378 tokensUpdated 25 days ago
    Auto-check passed

Works with

Questions about Signals for Flutter

What does Signals for Flutter do?

Reference for the signals_flutter package: reactive signals, computed values, effects, async signals and collection signals bound to Flutter widgets. The skill covers using the signals_flutter package for Flutter UI bindings, with element-level reactive tracking and efficient updates under frequent rendering. Its documentation is split by area: core primitives (signal, computed, effect, readonly, batch), asynchronous signals and reactive collections.

When should I use Signals for Flutter?

Signals for Flutter fits situations like: adding reactive state to a Flutter app with signals; rebuilding only the widgets that read a changed signal; wrapping futures or streams as loading, data and error states; making lists, maps or sets reactive in Flutter.

How do I install Signals for Flutter in Claude Code?

Run `npx skills add rodydavis/signals.dart --skill signals-flutter -a claude-code`. Or copy the skill folder (skills/signals-flutter in rodydavis/signals.dart) into .claude/skills/signals-flutter in your project. Claude Code loads it when a task matches its description.

How do I install Signals for Flutter in Codex?

Run `npx skills add rodydavis/signals.dart --skill signals-flutter -a codex`. Or copy the skill folder (skills/signals-flutter in rodydavis/signals.dart) into .agents/skills/signals-flutter in your project. Codex loads it when a task matches its description.

Can I use Signals for Flutter in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add rodydavis/signals.dart --skill signals-flutter -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/signals-flutter, .gemini/skills/signals-flutter, .github/skills/signals-flutter and .opencode/skills/signals-flutter in your project.

What does Signals for Flutter need to run?

SKILL.md names no scripts, command-line tools or credentials: Signals for Flutter is instructions for the agent only. Our summary lists: A Flutter project with the signals_flutter package.

Does Signals for Flutter access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Signals for Flutter safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Signals for Flutter use?

Signals for Flutter is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Signals for Flutter use?

About 1.9k tokens (SKILL.md is roughly 7.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Signals for Flutter?

Skills that share tags, products or a category with Signals for Flutter: Flutter Riverpod State Management (andrewyng/context-hub, 14k stars), Bloc (VeryGoodOpenSource/vgv-ai-flutter-plugin, 170 stars), Flutter Dart Code Review (affaan-m/ECC, 276k stars) and Flutter Bloc and Cubit (andrewyng/context-hub, 14k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Signals for Flutter?

rodydavis (a GitHub user) maintains it in rodydavis/signals.dart, which has 819 GitHub stars. The repository holds 15 skills in this directory. The repository was last updated on September 14, 2026.

Source: rodydavis/signals.dart on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.