Skip to content
Development
Skill

/dart-language

Dart 3.x language feature standards: null safety, records, sealed classes, switch pattern matching, extensions, and async/await. Use when using !, ?., ??, late, sealed classes, record types, switch expressions, or async patterns — and before introducing any new Dart 3.x

From plugin
agent-skills-standard
583200 skills21 agents33 commands1 MCP

Claude Code

$ npx -y skills add hoangnguyen0403/agent-skills-standard --skill dart-language --agent claude-code

SKILL.md

dart-language.SKILL.md
name: dart-language
description: "Dart 3.x language feature standards: null safety, records, sealed classes, switch pattern matching, extensions, and async/await. Use when using !, ?., ??, late, sealed classes, record types, switch expressions, or async patterns — and before introducing any new Dart 3.x construct to confirm the modern idiomatic approach."
metadata:
  triggers:
    files:
      - "**/*.dart"
    keywords:
      - sealed
      - record
      - switch
      - pattern
      - "!"
      - late
      - async
      - extension

Dart Language Patterns

**Priority: P0 (CRITICAL)**

Implementation Guidelines

  • **Null Safety**: Avoid `!`. Use `?.`, `??`, or short-circuiting. Use `late` only if necessary.
  • **Immutability**: Use `final` for all variables. Use `@freezed` for data classes.
  • **Pattern Matching (3.x)**: Use `switch (value)` with patterns and destructuring.
  • **Records**: Use a Record (e.g., `(String, int)`) for multiple values; use named fields when meaning matters. Destructure at call sites: `final (error, data) = fetchUser();`.
  • **Sealed Classes**: Use `sealed class` for exhaustive state handling in domain logic.
  • **Extensions**: Use `extension` to add utility methods to third-party types.
  • **Wildcards (3.7+)**: Use `_` for unused variables in declarations and patterns.
  • **Tear-offs**: Prefer using tear-offs (e.g., `list.forEach(print)`) over anonymous lambdas (e.g., `list.forEach((e) => print(e))`).
  • **Asynchrony**: Prefer `async/await` over raw `Future.then`. Use `unawaited` for fire-and-forget logic if necessary.
  • **Encapsulation**: Use `_` prefix for library-private members. Prefer `final` properties.
  • **Collections**: Use `collection-if`, `collection-for`, and spread operators `...`.
  • **Safe List Access**: Prefer `.firstOrNull`, `.lastOrNull`, or `.elementAtOrNull(i)`.
  • **No dynamic**: Use `Object` or generics instead of `dynamic`.
  • **Type Aliases**: Use `typedef` for complex IDs or callbacks.

Anti-Patterns

  • **No ! Operator**: not use bang operator `!` unless you can prove value non-null via `if` or `assert`.
  • **No var for members**: not use `var` for class members; use `final` or explicit types.
  • **No logic in constructors**: not perform complex calculations or async work inside constructors.
  • **No zero-arg methods for pure computations**: Use a getter. `int get invoiceType =>` not `int toInvoiceType()`.
  • **No generic conversion names**: Name value-object converters for their target context: `get apiFilterType` not `get invoiceType`.

Code

// Sealed class and Switch expression
sealed class Result {}
class Success extends Result { final String data; Success(this.data); }
class Failure extends Result {}

String message(Result r) => switch (r) {
  Success(data: var d) => "Got $d",
  Failure() => "Error",
};

References

  • feature-based-clean-architecture | tooling

Null-safety checklist

  • Replace `!` with `?`-aware access, explicit narrowing, or a guard clause; do not silence nullability with a force unwrap.

Canonical response anchors

When this skill applies, preserve the following domain terminology or equivalent concrete examples in the answer when relevant:

  • Replace ! with ?
  • destructure,destructuring,final (error,result.error
Read more
@hoangnguyen0403
Ships withagent-skills-standard

The portable standards layer for AI coding agents. Sync once, then work in your own runtime.

583200 skills21 agents1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
583
Star history of hoangnguyen0403/agent-skills-standard on GitHub, a chart by star-history.com

Other skills on agent-skills-standard.

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills10d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc12d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about dart-language.

Which coding agents can use dart-language?
dart-language installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.