Flutter Riverpod State Management
andrewyng/context-hub
Guides Flutter state management with Riverpod: choosing provider types, wiring ConsumerWidgets, handling async state and lifecycle, and overriding providers in tests.
Generate Dart bean classes from JSON and regenerate serialization helpers using the fjson CLI.
$ npx skills add K3vinb5/unyo-app --skill fjson-dart-bean-generator -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install K3vinb5/unyo-app fjson-dart-bean-generator --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/K3vinb5/unyo-app.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/fjson-dart-bean-generator .claude/skills/fjson-dart-bean-generator && rm -rf skills-srcUse ~/.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/
Install the "fjson-dart-bean-generator" agent skill from https://github.com/K3vinb5/unyo-app/tree/rewrite/.agents/skills/fjson-dart-bean-generator into .claude/skills/fjson-dart-bean-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fjson-dart-bean-generator", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/K3vinb5/unyo-app/tree/rewrite/.agents/skills/fjson-dart-bean-generatorType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add K3vinb5/unyo-app --skill fjson-dart-bean-generator -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install K3vinb5/unyo-app fjson-dart-bean-generator --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/K3vinb5/unyo-app.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/fjson-dart-bean-generator .agents/skills/fjson-dart-bean-generator && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "fjson-dart-bean-generator" agent skill from https://github.com/K3vinb5/unyo-app/tree/rewrite/.agents/skills/fjson-dart-bean-generator into .agents/skills/fjson-dart-bean-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fjson-dart-bean-generator", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add K3vinb5/unyo-app --skill fjson-dart-bean-generator -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install K3vinb5/unyo-app fjson-dart-bean-generator --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/K3vinb5/unyo-app.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/fjson-dart-bean-generator .cursor/skills/fjson-dart-bean-generator && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "fjson-dart-bean-generator" agent skill from https://github.com/K3vinb5/unyo-app/tree/rewrite/.agents/skills/fjson-dart-bean-generator into .cursor/skills/fjson-dart-bean-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fjson-dart-bean-generator", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/K3vinb5/unyo-app.git --path .agents/skills/fjson-dart-bean-generator--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add K3vinb5/unyo-app --skill fjson-dart-bean-generator -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install K3vinb5/unyo-app fjson-dart-bean-generator --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/K3vinb5/unyo-app.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/fjson-dart-bean-generator .gemini/skills/fjson-dart-bean-generator && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "fjson-dart-bean-generator" agent skill from https://github.com/K3vinb5/unyo-app/tree/rewrite/.agents/skills/fjson-dart-bean-generator into .gemini/skills/fjson-dart-bean-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fjson-dart-bean-generator", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install K3vinb5/unyo-app fjson-dart-bean-generatorInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add K3vinb5/unyo-app --skill fjson-dart-bean-generator -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/K3vinb5/unyo-app.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/fjson-dart-bean-generator .github/skills/fjson-dart-bean-generator && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "fjson-dart-bean-generator" agent skill from https://github.com/K3vinb5/unyo-app/tree/rewrite/.agents/skills/fjson-dart-bean-generator into .github/skills/fjson-dart-bean-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fjson-dart-bean-generator", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add K3vinb5/unyo-app --skill fjson-dart-bean-generator -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install K3vinb5/unyo-app fjson-dart-bean-generator --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/K3vinb5/unyo-app.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/fjson-dart-bean-generator .opencode/skills/fjson-dart-bean-generator && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "fjson-dart-bean-generator" agent skill from https://github.com/K3vinb5/unyo-app/tree/rewrite/.agents/skills/fjson-dart-bean-generator into .opencode/skills/fjson-dart-bean-generator/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fjson-dart-bean-generator", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
fjson-dart-bean-generatorGenerate Dart bean classes from JSON and regenerate serialization helpers using the fjson CLI.
Fjson Dart Bean Generator is an agent skill from K3vinb5/unyo-app. Generate Dart bean classes from JSON and regenerate serialization helpers using the fjson CLI. Use this skill whenever the user needs to create Dart models from API JSON responses, generate @JsonSerializable entity classes, or regenerate .g.dart helper files. Also use when the user mentions FlutterJsonBeanFactory, fjson, jsontodart, JSON serialization, @JSONField, @JsonSerializable, or needs to add new API response DTOs to the unyo project.
Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file.
It sits in Mobile, covering Cross-platform mobile apps. It works with Dart. The repository describes itself as: 🐙 Anime streaming and Manga reader desktop app without ads. The licence is BSD-3-Clause.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 0a44722. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
javaflutterFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Fjson Dart Bean Generator loads about 2.2k tokens when it runs. Until then it costs about 118 tokens; SKILL.md has 764 words of instructions outside code blocks.
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.
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.
The full file from K3vinb5/unyo-app at commit 0a44722, republished under its BSD-3-Clause licence (© K3vinb5). 764 words, ~2,153 tokens.
.claude/skills/fjson-dart-bean-generator/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.The fjson CLI generates @JsonSerializable Dart entity classes from JSON responses and regenerates .g.dart serialization helpers, json_field.dart, and json_convert_content.dart. It replaces the FlutterJsonBeanFactory IntelliJ plugin for CLI/agent workflows.
The bundled JAR lives inside this skill directory: fjson-cli.jar. Invoke it as:
java -jar <path-to-skill>/fjson-cli.jar <command> [options]When running from the unyo project root, the skill is at .agents/skills/fjson-dart-bean-generator/:
java -jar .agents/skills/fjson-dart-bean-generator/fjson-cli.jar <command> [options]If you need to rebuild the JAR (rare — only after modifying fjson-cli source):
cd ../fjson-cli && ./gradlew jar
# Then copy the new JAR into the skill:
cp ../fjson-cli/build/libs/fjson-cli.jar .agents/skills/fjson-dart-bean-generator/fjson-cli.jar| Command | Purpose | When to use |
|---|---|---|
fjson bean | Create a new entity .dart file from JSON | User provides a class name + JSON (string or file) |
fjson gen | Regenerate all .g.dart helpers, json_field.dart, json_convert_content.dart | After adding/modifying any @JsonSerializable class |
Important:
fjson beanautomatically runsfjson genwhen invoked inside a Flutter project (one with apubspec.yaml). You do NOT need to rungenseparately afterbean.
fjson bean — Generate a new entity from JSON| Flag | Description | Example |
|---|---|---|
--class <Name> | Root class name (use the API response root name) | --class MediaResponse |
--json <string> | Raw JSON string | --json '{"id":1,"title":"..."}' |
--file <path> | Path to a .json file (alternative to --json) | --file response.json |
| Flag | Description | Default | When to use |
|---|---|---|---|
--output <path> | Directory for the generated .dart file | ./lib | Direct entity to correct DTO subfolder |
--suffix <text> | Suffix appended to generated class names | entity | Leave as default for unyo |
--nullable | Make fields nullable (Type?) | off | Rarely needed in unyo |
--set-default | Assign default values to primitive fields | off | Always use this for unyo DTOs |
--project <path> | Flutter project root | . | Usually not needed from unyo root |
java -jar .agents/skills/fjson-dart-bean-generator/fjson-cli.jar bean \
--class MediaCollectionResponse \
--json '<paste JSON here>' \
--output ./lib/core/services/api/dto/anilist/ \
--set-defaultOr from a file:
java -jar .agents/skills/fjson-dart-bean-generator/fjson-cli.jar bean \
--class AnizipEpisodeInfo \
--file ./response.json \
--output ./lib/core/services/api/dto/anizip/ \
--set-defaultThe command produces a .dart file containing:
@JsonSerializable() class with --suffix appended (e.g., MediaCollectionResponse → MediaCollectionResponseEntity)@JsonSerializable() classes for each nested JSON object (e.g., MediaCollectionResponseDtoPage)@JSONField(name: 'original_key') annotations for keys whose Dart naming differs from JSONlate fields with default values (if --set-default)fromJson() factory and toJson() method stubsimport of json_field.dart and the matching .g.dartexport of the matching .g.dartThe generated entity also auto-triggers fjson gen, so the matching .g.dart, json_field.dart, and json_convert_content.dart are all regenerated immediately.
fjson gen — Regenerate all helpersjava -jar .agents/skills/fjson-dart-bean-generator/fjson-cli.jar gen --project .This scans lib/**/*.dart for every @JsonSerializable class and:
<entity>.g.dart file in lib/generated/json/lib/generated/json/base/json_field.dart (annotation definitions)lib/generated/json/base/json_convert_content.dart (the JsonConvert runtime and JsonConvertClassCollection registry with all entity imports).g.dart files for entities that no longer existRun this after any manual edit to an entity file (adding/removing/renaming fields).
unyo/
├── lib/core/services/api/dto/
│ └── anilist/
│ └── media_response_entity.dart ← fjson bean output
└── lib/generated/json/
├── media_response_entity.g.dart ← auto-generated helpers
├── media_collection_graphql_entity.g.dart ← existing
├── ... ← all other .g.dart
└── base/
├── json_field.dart ← annotations
└── json_convert_content.dart ← registry + runtimemedia_details_graphql_entity.dartMediaDetailsGraphqlEntity--class names to snake_case filenames automaticallylib/core/services/api/dto/<provider>/anilist/, anizip/, aniskip/, extensions/--set-default is always used → all fields get = '', = 0, = false, etc.--suffix entity (default) → class names end with Entityflutter_json.generated_path is generated/json in pubspec.yamlfjson bean with --class, --json/--file, --output, and --set-default:java -jar .agents/skills/fjson-dart-bean-generator/fjson-cli.jar bean \
--class NewApiResponse \
--json '<the JSON>' \
--output ./lib/core/services/api/dto/anilist/ \
--set-default.dart file and check:@JSONField(name: ...) mappings are correct for non-matching keysjson_convert_content.dart — Already done automatically by fjson gen (triggered by fjson bean). Verify the new entity's import is present.flutter analyze to ensure no issuesfjson gen:java -jar .agents/skills/fjson-dart-bean-generator/fjson-cli.jar gen --project .--output path: Entity files must go to the correct provider subfolder (lib/core/services/api/dto/<provider>/) for the import in json_convert_content.dart and .g.dart files to resolve correctly.--set-default: Without it, fields use late without defaults. In unyo, all DTO fields have defaults (except dynamic).pubspec.yaml lives). The --project flag overrides this..g.dart will have duplicate function names, causing compile errors. Check for existing names before running.List. The field will be typed List<dynamic> and must be corrected manually.bean in a non-Flutter directory: fjson gen is skipped. You must manually run it from the project root.unyo-domain-data-layer skillunyo-domain-data-layer skill../fjson-cli/README.md© K3vinb5, BSD-3-Clause. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in .agents/skills/fjson-dart-bean-generator of K3vinb5/unyo-app.
Open the folder on GitHubat commit 0a44722
Fjson Dart Bean Generator 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Fjson Dart Bean Generator this skillK3vinb5/unyo-app | 662 | — | ~2.2k | Automated safety check: Pass | BSD-3-Clause | |
| Flutter Riverpod State Managementandrewyng/context-hub | 14k | — | ~1.1k | Automated safety check: Pass | MIT | |
| BlocVeryGoodOpenSource/vgv-ai-flutter-plugin | 170 | — | ~2k | Automated safety check: Pass | MIT | |
| Dart Best Practiceskevmoo/dash_skills | 147 | — | ~709 | Automated safety check: Pass | Apache-2.0 | |
| Dart Doc Validationkevmoo/dash_skills | 147 | — | ~822 | Automated safety check: Pass | Apache-2.0 | |
| Flutter Dart Code Reviewaffaan-m/ECC | 276k | 2 repos | ~5.8k | Automated safety check: Notes | MIT |
andrewyng/context-hub
Guides Flutter state management with Riverpod: choosing provider types, wiring ConsumerWidgets, handling async state and lifecycle, and overriding providers in tests.
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…
kevmoo/dash_skills
General best practices for Dart development. An agent skill from kevmoo/dash_skills.
kevmoo/dash_skills
Best practices for validating Dart documentation comments. An agent skill from kevmoo/dash_skills.
affaan-m/ECC
Library-agnostic Flutter/Dart code review checklist covering widget best practices, state management patterns (BLoC, Riverpod, Provider, GetX, MobX, Signals), Dart idioms, performance…
kevmoo/dash_skills
Best practices for using expect and package:matcher. An agent skill from kevmoo/dash_skills.
K3vinb5/unyo-app
How to create cubits, define states, use the EffectMixin pattern, and handle side effects in the Unyo Flutter app.
K3vinb5/unyo-app
How to register and resolve dependencies using GetIt in the Unyo Flutter app.
K3vinb5/unyo-app
How to create domain entities, data models, and repositories in the Unyo Flutter app.
K3vinb5/unyo-app
How to create and use RxDart BehaviorSubject notifiers for cross-cubit communication in the Unyo Flutter app.
K3vinb5/unyo-app
How to add routes, configure navigation, and use AutoRoute in the Unyo Flutter app.
K3vinb5/unyo-app
How to build screens, widgets, and handle effects in the Unyo Flutter app's presentation layer.
Works with
Categories
Generate Dart bean classes from JSON and regenerate serialization helpers using the fjson CLI. Fjson Dart Bean Generator is an agent skill from K3vinb5/unyo-app. Generate Dart bean classes from JSON and regenerate serialization helpers using the fjson CLI.
Fjson Dart Bean Generator fits situations like: the user needs to create Dart models from API JSON responses; generate @JsonSerializable entity classes; regenerate .g.dart helper files; the user mentions FlutterJsonBeanFactory.
Run `npx skills add K3vinb5/unyo-app --skill fjson-dart-bean-generator -a claude-code`. Or copy the skill folder (.agents/skills/fjson-dart-bean-generator in K3vinb5/unyo-app) into .claude/skills/fjson-dart-bean-generator in your project. Claude Code loads it when a task matches its description.
Run `npx skills add K3vinb5/unyo-app --skill fjson-dart-bean-generator -a codex`. Or copy the skill folder (.agents/skills/fjson-dart-bean-generator in K3vinb5/unyo-app) into .agents/skills/fjson-dart-bean-generator in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add K3vinb5/unyo-app --skill fjson-dart-bean-generator -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/fjson-dart-bean-generator, .gemini/skills/fjson-dart-bean-generator, .github/skills/fjson-dart-bean-generator and .opencode/skills/fjson-dart-bean-generator in your project.
Going by SKILL.md and its folder, Fjson Dart Bean Generator needs the command-line tools its instructions call (java and flutter).
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.
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.
Fjson Dart Bean Generator is published under the BSD-3-Clause licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.2k tokens (SKILL.md is roughly 8.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Fjson Dart Bean Generator: Flutter Riverpod State Management (andrewyng/context-hub, 14k stars), Bloc (VeryGoodOpenSource/vgv-ai-flutter-plugin, 170 stars), Dart Best Practices (kevmoo/dash_skills, 147 stars) and Dart Doc Validation (kevmoo/dash_skills, 147 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
K3vinb5 (a GitHub user) maintains it in K3vinb5/unyo-app, which has 662 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on June 12, 2026.
Source: K3vinb5/unyo-app on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.