Fjson Dart Bean Generator
K3vinb5/unyo-app
Generate Dart bean classes from JSON and regenerate serialization helpers using the fjson CLI.
Identify closed type hierarchies that are not declared sealed, and seal them so the compiler can enforce switch exhaustiveness.
$ npx skills add kevmoo/dash_skills --skill dart-seal-type-hierarchies -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install kevmoo/dash_skills dart-seal-type-hierarchies --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/kevmoo/dash_skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/dart-seal-type-hierarchies .claude/skills/dart-seal-type-hierarchies && 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 "dart-seal-type-hierarchies" agent skill from https://github.com/kevmoo/dash_skills/tree/main/skills/dart-seal-type-hierarchies into .claude/skills/dart-seal-type-hierarchies/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dart-seal-type-hierarchies", 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/kevmoo/dash_skills/tree/main/skills/dart-seal-type-hierarchiesType 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 kevmoo/dash_skills --skill dart-seal-type-hierarchies -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install kevmoo/dash_skills dart-seal-type-hierarchies --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kevmoo/dash_skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/dart-seal-type-hierarchies .agents/skills/dart-seal-type-hierarchies && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "dart-seal-type-hierarchies" agent skill from https://github.com/kevmoo/dash_skills/tree/main/skills/dart-seal-type-hierarchies into .agents/skills/dart-seal-type-hierarchies/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dart-seal-type-hierarchies", 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 kevmoo/dash_skills --skill dart-seal-type-hierarchies -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install kevmoo/dash_skills dart-seal-type-hierarchies --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kevmoo/dash_skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/dart-seal-type-hierarchies .cursor/skills/dart-seal-type-hierarchies && 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 "dart-seal-type-hierarchies" agent skill from https://github.com/kevmoo/dash_skills/tree/main/skills/dart-seal-type-hierarchies into .cursor/skills/dart-seal-type-hierarchies/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dart-seal-type-hierarchies", 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/kevmoo/dash_skills.git --path skills/dart-seal-type-hierarchies--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 kevmoo/dash_skills --skill dart-seal-type-hierarchies -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install kevmoo/dash_skills dart-seal-type-hierarchies --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kevmoo/dash_skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/dart-seal-type-hierarchies .gemini/skills/dart-seal-type-hierarchies && 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 "dart-seal-type-hierarchies" agent skill from https://github.com/kevmoo/dash_skills/tree/main/skills/dart-seal-type-hierarchies into .gemini/skills/dart-seal-type-hierarchies/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dart-seal-type-hierarchies", 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 kevmoo/dash_skills dart-seal-type-hierarchiesInstalls 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 kevmoo/dash_skills --skill dart-seal-type-hierarchies -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/kevmoo/dash_skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/dart-seal-type-hierarchies .github/skills/dart-seal-type-hierarchies && 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 "dart-seal-type-hierarchies" agent skill from https://github.com/kevmoo/dash_skills/tree/main/skills/dart-seal-type-hierarchies into .github/skills/dart-seal-type-hierarchies/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dart-seal-type-hierarchies", 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 kevmoo/dash_skills --skill dart-seal-type-hierarchies -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install kevmoo/dash_skills dart-seal-type-hierarchies --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kevmoo/dash_skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/dart-seal-type-hierarchies .opencode/skills/dart-seal-type-hierarchies && 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 "dart-seal-type-hierarchies" agent skill from https://github.com/kevmoo/dash_skills/tree/main/skills/dart-seal-type-hierarchies into .opencode/skills/dart-seal-type-hierarchies/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dart-seal-type-hierarchies", 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.
dart-seal-type-hierarchiesIdentify closed type hierarchies that are not declared sealed, and seal them so the compiler can enforce switch exhaustiveness.
Dart Seal Type Hierarchies is an agent skill from kevmoo/dash_skills. Identify closed type hierarchies that are not declared sealed, and seal them so the compiler can enforce switch exhaustiveness. Covers the same-library requirement, the public-API breaking-change tradeoff, and the migration from is cascades to exhaustive switches.
Its SKILL.md is about 1.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Mobile, covering Cross-platform mobile apps. It works with Dart. The repository describes itself as: Agent Skills for Dart and Flutter ecosytem. The licence is Apache-2.0.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 397a703. 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:
dartFrom 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.
Dart Seal Type Hierarchies loads about 1.4k tokens when it runs. Until then it costs about 74 tokens; SKILL.md has 653 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 kevmoo/dash_skills at commit 397a703, republished under its Apache-2.0 licence (© kevmoo). 653 words, ~1,401 tokens.
.claude/skills/dart-seal-type-hierarchies/SKILL.md (or your agent's skills folder).Use this skill when:
sealed.is checks or a
non-exhaustive switch, so adding a subtype later fails silently at runtime
instead of loudly at compile time.Do NOT seal a type when:
sealed requires every direct subtype
to be declared in the same library as the base type. If subtypes live in other
files (and are not part of the same library), the code will not compile.
Either move them or leave the hierarchy open.sealed implies abstract.
If callers construct the base type directly, sealing it breaks them, and the
fix is a larger refactor than this skill covers.environment.sdk in pubspec.yaml first.The value is not switch syntax. It is that the compiler starts rejecting incomplete branching:
seal the hierarchy -> exhaustiveness checking -> adding a subtype becomes
a compile error at every switch, instead of a silent fallthroughAn unsealed hierarchy with is cascades is not wrong today. It becomes wrong
the moment someone adds a subtype, and nothing tells them which call sites they
missed. Sealing is prophylactic: it converts a future runtime bug into a
present-day compile error.
This is a different concern from preferring pattern matching for readability. Pattern matching over an unsealed hierarchy is a style choice. Sealing the hierarchy is a correctness guarantee, and the ergonomic payoff is a consequence, not the goal.
A type is a candidate when all of the following hold:
abstract and is not already sealed.lib/src/, or is already
marked final, or the package is an application rather than a published
library.Conditions 1 through 3 are decidable from the syntax tree. Condition 4 requires knowing the author's intent about the public API and is the part a human or an LLM must confirm.
This detection is not expressible as a single-file regular expression. It is
a question about the package-wide type graph: you must collect every type
declaration and every extends/implements/with edge before you can tell
whether a hierarchy is closed.
abstract class Shape {}
class Circle extends Shape {
final double radius;
Circle(this.radius);
}
class Square extends Shape {
final double side;
Square(this.side);
}
double area(Shape shape) {
if (shape is Circle) {
return 3.14159 * shape.radius * shape.radius;
} else if (shape is Square) {
return shape.side * shape.side;
}
// Silently reached when a new subtype is added.
throw ArgumentError('Unknown shape: $shape');
}sealed class Shape {}
final class Circle extends Shape {
final double radius;
Circle(this.radius);
}
final class Square extends Shape {
final double side;
Square(this.side);
}
double area(Shape shape) => switch (shape) {
Circle(:final radius) => 3.14159 * radius * radius,
Square(:final side) => side * side,
};Adding class Triangle extends Shape now produces a compile error at area,
naming the missing case. The throw and its unreachable-by-construction error
message are gone.
sealed to the base type declaration.dart analyze. Every non-exhaustive switch over the hierarchy now
reports an error; every subtype declared outside the library reports one too.is cascades to switch expressions, removing the trailing
throw/default that existed only to satisfy the return type.final to prevent further extension.dart-use-pattern-matching / dart-modern-features: apply after
sealing. Rewriting an is cascade as a switch over an unsealed type is a
readability change only; the same rewrite over a sealed type is checked by the
compiler.© kevmoo, 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
Just SKILL.md in skills/dart-seal-type-hierarchies of kevmoo/dash_skills.
Open the folder on GitHubat commit 397a703
Dart Seal Type Hierarchies 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 |
|---|---|---|---|---|---|---|
| Dart Seal Type Hierarchies this skillkevmoo/dash_skills | 147 | — | ~1.4k | Automated safety check: Pass | Apache-2.0 | |
| Fjson Dart Bean GeneratorK3vinb5/unyo-app | 664 | — | ~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 | |
| Flutter Dart Code Reviewaffaan-m/ECC | 277k | 2 repos | ~5.8k | Automated safety check: Notes | MIT | |
| Signals for Flutterrodydavis/signals.dart | 819 | — | ~1.9k | Automated safety check: Pass | Apache-2.0 |
K3vinb5/unyo-app
Generate Dart bean classes from JSON and regenerate serialization helpers using the fjson CLI.
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…
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…
rodydavis/signals.dart
Reference for the signals_flutter package: reactive signals, computed values, effects, async signals and collection signals bound to Flutter widgets.
MelbourneDeveloper/dart_node
Build and run the full TaskFlow demo stack (Express backend + React frontend + mobile)
kevmoo/dash_skills
Understand and improve test coverage in a Dart package. An agent skill from kevmoo/dash_skills.
kevmoo/dash_skills
Profile Dart command-line applications using the VM Service protocol to capture CPU samples and identify performance bottlenecks.
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.
kevmoo/dash_skills
Guidelines for handling long lines in Dart code to adhere to the 80-column rule.
kevmoo/dash_skills
Best practices for using expect and package:matcher. An agent skill from kevmoo/dash_skills.
Works with
Categories
Identify closed type hierarchies that are not declared sealed, and seal them so the compiler can enforce switch exhaustiveness. Dart Seal Type Hierarchies is an agent skill from kevmoo/dash_skills. Identify closed type hierarchies that are not declared sealed, and seal them so the compiler can enforce switch exhaustiveness.
Dart Seal Type Hierarchies fits situations like: tasks that involve Cross-platform mobile apps.
Run `npx skills add kevmoo/dash_skills --skill dart-seal-type-hierarchies -a claude-code`. Or copy the skill folder (skills/dart-seal-type-hierarchies in kevmoo/dash_skills) into .claude/skills/dart-seal-type-hierarchies in your project. Claude Code loads it when a task matches its description.
Run `npx skills add kevmoo/dash_skills --skill dart-seal-type-hierarchies -a codex`. Or copy the skill folder (skills/dart-seal-type-hierarchies in kevmoo/dash_skills) into .agents/skills/dart-seal-type-hierarchies 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 kevmoo/dash_skills --skill dart-seal-type-hierarchies -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dart-seal-type-hierarchies, .gemini/skills/dart-seal-type-hierarchies, .github/skills/dart-seal-type-hierarchies and .opencode/skills/dart-seal-type-hierarchies in your project.
Going by SKILL.md and its folder, Dart Seal Type Hierarchies needs the command-line tools its instructions call (dart).
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.
Dart Seal Type Hierarchies 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.
About 1.4k tokens (SKILL.md is roughly 5.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 Dart Seal Type Hierarchies: Fjson Dart Bean Generator (K3vinb5/unyo-app, 664 stars), Flutter Riverpod State Management (andrewyng/context-hub, 14k stars), Bloc (VeryGoodOpenSource/vgv-ai-flutter-plugin, 170 stars) and Flutter Dart Code Review (affaan-m/ECC, 277k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
kevmoo (a GitHub user) maintains it in kevmoo/dash_skills, which has 147 GitHub stars. The repository holds 12 skills in this directory. The repository was last updated on October 8, 2026.
Source: kevmoo/dash_skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.