Skip to content
Development
Skill

/flutter-error-handling

Implement functional repository error recovery with Either/Failure patterns in Flutter. Use when handling exceptions or dartz Either types in data flows; defer UI-only retry buttons.

From plugin
agent-skills-standard
538200 skills1 MCP
Install
$ npx -y skills add hoangnguyen0403/agent-skills-standard --skill flutter-error-handling --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/flutter-error-handling

Context preview

The summary Claude sees to decide when to auto-load this skill.

Implement functional repository error recovery with Either/Failure patterns in Flutter. Use when handling exceptions or dartz Either types in data flows; defer UI-only retry buttons.

SKILL.md

flutter-error-handling.SKILL.md
name: flutter-error-handling
description: Implement functional repository error recovery with Either/Failure patterns in Flutter. Use when handling exceptions or dartz Either types in data flows; defer UI-only retry buttons.
metadata:
  triggers:
    files:
    - 'lib/domain/**'
    - 'lib/infrastructure/**'
    keywords:
    - Either
    - fold
    - Left
    - Right
    - Failure
    - dartz

Error Handling

**Priority: P1 (HIGH)**

Implementation Workflow

1. **Define failures** — Create domain-specific failures using `@freezed` unions (e.g., `UnauthorizedFailure`, `OutOfStockFailure`). 2. **Return Either** — Repositories return `Either<Failure, T>`. No exceptions in UI/BLoC. 3. **Catch in Infrastructure only** — Infrastructure catches exceptions (e.g., `DioException`) and returns `Left(Failure)`. Never rethrow to UI. 4. **Fold in BLoC** — Use `.fold(failure, success)` in BLoC to emit corresponding states. Remove try/catch from BLoC. 5. **Localize messages** — Use `failure.failureMessage` (returns `TRObject` or localized string) for UI-safe text. 6. **Log with stable templates** — Use low-cardinality message templates; pass variable data via metadata/context. 7. **No Silent Catch**: Never swallow errors without logging or documented retry. 8. **Crashlytics Routing**: All UI/BLoC `catch` blocks MUST route errors via `AppLogger.error(AppException.fromException(e).message, error: e, stackTrace: st)` for observability and type-safe UI messages.

Repository & BLoC Examples

See [implementation examples](references/implementation.md) for repository error mapping and BLoC consumption patterns.

Reference & Examples

For Failure definitions and API error mapping: See [references/REFERENCE.md](references/REFERENCE.md).

Anti-Patterns

  • **No Try-Catch in BLoC**: BLoC receives `Either` and `folds`; try/catch belongs in Infrastructure
  • **No Plain String Failures**: Define typed `@freezed` Failure subclasses instead of `Left('Something went wrong')`
  • **No Empty Catch Blocks**: Always log and propagate; never swallow errors silently
  • **No Repositories Throwing Status**: Return `Left(Failure)` instead of throwing `Exception`
  • **No Missing Log Registration**: Use `AppLogger.error` in BLoC/UI `catch` to ensure Crashlytics tracking and type-safe UI messages

Related Topics

layer-based-clean-architecture | bloc-state-management

Canonical response anchors

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

  • TRObject
Read more
Ships withagent-skills-standard

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

Get the whole plugin

Other skills on agent-skills-standard.