# Flowr Usage

> Use FlowR correctly in pure Dart or Flutter projects. Resolve the target package first, then use FlowR/FlowB core APIs or Flutter FrViewModel, FrProvider, and FrView APIs without loading Flutter rules for flowr_dart-only packages.

- Skill: `hu-wentao/flowr-usage` (Agent Skill, multi-file: 29 files)
- Install (CLI): `npx skillmds@latest add hu-wentao/flowr-usage`
- Raw SKILL.md: https://api.skillmd.com/api/skills/hu-wentao/flowr-usage/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: Hu-Wentao (https://skillmd.com/u/hu-wentao)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/hu-wentao/flowr-usage

---


# FlowR Usage

Before FlowR work, resolve the target package:

```bash
uv run --script .agents/skills/flowr-usage/scripts/resolve.py --task auto
```

Read the resolved instructions once per `instructions_id`.

Run every bundled Python entrypoint with `uv run --script <path>`. Add or
update its PEP 723 dependencies with `uv add --script <path> <dependency>`;
never invoke a bundled script with `python`, `python3`, or `uv run python`.

## Route Selection

- `auto` is the normal entry. It reads the nearest `pubspec.yaml`.
- A package that directly depends only on `flowr_dart` and has no Flutter SDK
  dependency resolves to `core`. It loads no Flutter or `flowr` material.
- A package that directly depends on `flowr` and declares a Flutter SDK
  dependency resolves to `flutter`. It loads core rules first, then Flutter
  rules and the optional project profile.
- `flowr` without a Flutter SDK dependency is invalid. Fix the target package;
  do not silently downgrade it to the core route.
- `--task core` and `--task flutter` are explicit routes. The resolver rejects
  `flutter` for a Dart-only package.

## Common Rules

- Follow the repository `AGENTS.md` and preserve its existing architecture.
- Read core instructions for every resolved route. Flutter instructions extend
  rather than replace the core rules.
- Import only public package entry points. Do not import `flowr/src/...` or
  `flowr_dart/src/...` from application code.
- Keep package API usage here. File layout, component ownership, and contract
  decisions remain the responsibility of the calling architecture skill.

## References

Load only the reference relevant to the task:

- `references/core.md`: FlowR/FlowB, logging, state, streams, scheduling, and
  disposal rules.
- `references/flutter.md`: `FrViewModel`, `FrBlocViewModel`, `FrProvider`,
  `FrView`, listeners, and Flutter ownership rules.
- `references/flowr-dart-install.md`: add `flowr_dart` to a pure Dart package.
- `references/flowr-install.md`: add `flowr` and first Flutter provider/view.
- `references/flowr-logging.md`, `flowr-run-catching.md`, `flowr-slowly.md`,
  `flowr-disposal.md`, `flowr-update.md`: the named core concern.
- `references/flutter-error-boundaries.md`: install complementary
  `FlutterError`, `PlatformDispatcher`, and zone boundaries at a Flutter app
  entry point while retaining local `logE` recovery logging.
- `references/bloc-concurrency.md`: evaluate and configure per-handler event
  concurrency for asynchronous `FlowB` or `FrBlocViewModel` handlers. Load it
  when overlapping events could race, duplicate work, emit stale results, or
  require ordered processing; do not add `bloc_concurrency` by default.
- `references/freezed-install.md`: add immutable Freezed state generation.
- `references/slang-install.md`: install and generate type-safe slang
  translations; the project convention uses `S.`.
- `references/fr-mvvm-locale-slang.md`: integrate slang translation catalogs
  with `fr_mvvm_locale` as the application locale owner.
- `references/fr-provider-di.md`, `fr-vm-communication.md`, `fr-union.md`:
  Flutter advanced provider, VM coordination, and `FrUnion` use.
- `references/fr-mvvm-*.md`: the corresponding optional Flutter extension.

## Validation

- Format changed Dart files with the package's configured Dart/Flutter tool.
- Run focused tests for the target package.
- Run the repository analyzer command when shared APIs or package surfaces
  change.

