<Devsly/>
NotebookLM Watermark Remover
Remove the NotebookLM watermark from PDF slide exports — free, unlimited, and 100% in your browser.
View
NotebookLM Video Watermark Remover
Remove the NotebookLM watermark from every frame of your MP4 and auto-trim the end card — free and unlimited.
View
Gemini Watermark Remover
Remove the Gemini (Veo) sparkle watermark from every frame of your AI-generated MP4 — free and unlimited.
View
MCP https://devsly.io/mcp MCP Tools Best Skills API Docs

Keyboard Shortcuts

Navigation

Quick Search
⌘ / Ctrl + K
Toggle Dark Mode
⌘ / Ctrl + D
Close Dialogs
Esc

Tool Actions

Execute / Process
⌘ / Ctrl + Enter
Clear Input
⌘ / Ctrl + Shift + C
Copy Output
⌘ / Ctrl + Shift + X

Editor

Select All
⌘ / Ctrl + A
Undo
⌘ / Ctrl + Z
Redo
⌘ / Ctrl + Shift + Z

Updated 3w ago

by zakariaf

Flutter-Skills

General, reusable Flutter engineering skills for AI coding agents — architecture, Riverpod 3.x, testing, persistence, i18n/RTL, accessibility, navigation & more. Agent Skills open standard; works with Claude Code, Cursor, Codex & 70+ agents.

  • Multi-agent — Targets three or more agents
Works with
  • Claude
  • Codex
  • Cursor
  • Copilot

56 GitHub stars (56)

+11 in 16 days

Stars gained per day · daily snapshots since Sep 30
Stars gained per day, Sep 30 to Oct 16: +11 in total; the busiest day was Oct 3 with +4 stars.Oct 1: 0 starsOct 2: +2 starsOct 3: +4 starsOct 4: +1 starsOct 5: 0 starsOct 6: 0 starsOct 7: 0 starsOct 8: 0 starsOct 9: 0 starsOct 10: +1 starsOct 11: 0 starsOct 12: 0 starsOct 13: +1 starsOct 14: +1 starsOct 15: +1 starsOct 16: 0 stars
Stars gained between daily snapshots
PeriodNew stars
Oct 10
Oct 2+2
Oct 3+4
Oct 4+1
Oct 50
Oct 60
Oct 70
Oct 80
Oct 90
Oct 10+1
Oct 110
Oct 120
Oct 13+1
Oct 14+1
Oct 15+1
Oct 160
  • 30 skills (30 skills found in its SKILL.md files)
  • 14 forks (14 forks)
  • 3w ago last update (Last updated 3w ago)

Install

Skills CLI

npx skills add zakariaf/Flutter-Skills

Asks which skills and agents to install. Just one: npx skills add zakariaf/Flutter-Skills --skill accessibility-as-code — add -g for every project.

Claude Code

git clone https://github.com/zakariaf/Flutter-Skillscp -r "Flutter-Skills/skills/accessibility-as-code" ~/.claude/skills/

Copies the accessibility-as-code skill into ~/.claude/skills/ for every project (use .claude/skills/ for one project). Repeat for the other skills listed below.

Plugin

/plugin marketplace add zakariaf/Flutter-Skills

Run inside Claude Code if the repository ships a plugin marketplace, then pick plugins from /plugin.

Skills can run code on your machine — read the SKILL.md first.

What it does

In the author's own words, from each skill's SKILL.md — showing the first 30 of 40 files.

  • accessibility-as-code

    Enforces accessibility as a correctness property authored into each widget — Semantics(button/label) or ExcludeSemantics on every node, a11y state read from MediaQuery not app state, never MediaQuery.withClampedTextScaling / textScaleFactor / FittedBox / TextOverflow.ellipsis to fit a label, non-color redundant channels (icon+label+shape+text) for every state, contrast against composited backgrou…

    skills/accessibility-as-code/SKILL.md on GitHub (opens in a new tab)
  • adaptive-layout

    Enforces adapting layout by available CONSTRAINTS/size, never device or platform checks — LayoutBuilder + MediaQuery.sizeOf/paddingOf/viewInsetsOf (not .of) for narrow rebuilds, Material 3 window size classes (compact <600, medium 600-840, expanded 840-1200, large >1200) as the breakpoint vocabulary, navigation affordance chosen by width (NavigationBar → NavigationRail → NavigationDrawer), list-d…

    skills/adaptive-layout/SKILL.md on GitHub (opens in a new tab)
  • ads-and-iap-monetization

    Enforces opt-in, rewarded-first monetization over the service seam — a rewarded view grants exactly one benefit and only on a genuine reward outcome (a sealed Rewarded/Dismissed/NoFill), earn loops capped per day against an injected Clock, the earn control preloaded and hidden unless an ad is loaded so a fresh account never dead-ends on "no ads available" (a Guideline 2.1 risk), interstitials onl…

    skills/ads-and-iap-monetization/SKILL.md on GitHub (opens in a new tab)
  • app-startup-and-bootstrap

    Enforces a fixed main() cold-launch order — crash-log sink + FlutterError.onError + PlatformDispatcher.onError installed BEFORE any code that can throw, settings/theme read before runApp so the first frame paints correct, real infra constructed in a composition-root bootstrap() and injected via ProviderScope overrideWithValue over throwing placeholder providers, non-blocking warm-up deferred to a…

    skills/app-startup-and-bootstrap/SKILL.md on GitHub (opens in a new tab)
  • async-safety

    Enforces no-silent-failure async discipline in Flutter/Dart — the arrow-callback Future-drop hole no lint catches (`onTap: () => vm.save(x)`), void-returning event handlers, a mounted/ref.mounted guard after EVERY await before touching BuildContext, capturing Navigator/ScaffoldMessenger before the gap, honest `unawaited()` that always ends in catchError, no empty/bare catches, `rethrow` over `thr…

    skills/async-safety/SKILL.md on GitHub (opens in a new tab)
  • ci-pipeline-and-gates

    Enforces a lean GitHub Actions Flutter CI where every gate maps to one named release-blocking contract — pinned runner + subosito/flutter-action@v2 toolchain, dart format --set-exit-if-changed, flutter analyze --fatal-infos, build_runner and drift schema freshness (git diff --exit-code), flutter test --test-randomize-ordering-seed random, static import/banned-string greps that catch what runtime…

    skills/ci-pipeline-and-gates/SKILL.md on GitHub (opens in a new tab)
  • codegen-and-toolchain

    Enforces a deterministic build_runner codegen discipline: run one pinned `dart run build_runner build --delete-conflicting-outputs` pass BEFORE `flutter analyze` (never after), fence every builder with `generate_for:` globs in a per-package `build.yaml`, make one deliberate commit-vs-gitignore decision for `*.g.dart`/`*.freezed.dart`/`*.drift.dart` and back it with the matching CI gate (freshness…

    skills/codegen-and-toolchain/SKILL.md on GitHub (opens in a new tab)
  • custom-canvas-and-gestures

    Enforces CustomPainter/Canvas discipline — the View/Painter/Scene split with a dumb painter fed one immutable Scene value type, shouldRepaint as a single value compare kept strictly separate from the AnimationController-as-repaint animation path, one shared affine transform read by BOTH painter and hit-tester (toCanvas/toLogical exact inverses, never re-derive scale), geometry hit-testing (intege…

    skills/custom-canvas-and-gestures/SKILL.md on GitHub (opens in a new tab)
  • dart3-idioms-and-coding-standards

    Enforces which Dart 3 construct each declaration earns — sealed class + exhaustive switch with no `default:`/`case _:`, the three class modifiers (`sealed`/`final`/`abstract interface class`) and skip the rest, records as intra-layer tuples only, immutable value types (`final` fields, `const` ctor, value equality) hand-rolled when trivial and `freezed` when boilerplate dominates, explicit stable…

    skills/dart3-idioms-and-coding-standards/SKILL.md on GitHub (opens in a new tab)
  • dartdoc-conventions

    Enforces Effective-Dart documentation on the public surface — a `///` doc on every public class/method/getter/field/typedef, a one-sentence standalone summary that says WHY plus units/ranges/nullability/throws/side-effects (never a restatement of the name), verb-phrase method docs, "Whether…" boolean getters, `[bracket]` cross-links, one `library;` doc per exported barrel, in-body `//` that expla…

    skills/dartdoc-conventions/SKILL.md on GitHub (opens in a new tab)
  • data-export-and-restore

    Enforces user-facing data portability in an offline-first app — backup/restore (exact, machine round-trippable) kept strictly separate from export/report (human, lossy, never a restore source); a versioned envelope carrying formatVersion, schemaVersion, appVersion, exportedAtUtc and a payload checksum so a restore refuses a file from a newer app instead of corrupting the database; restore as an a…

    skills/data-export-and-restore/SKILL.md on GitHub (opens in a new tab)
  • dependency-hygiene

    Enforces pubspec/lock discipline — caret ranges in pubspec.yaml with a committed pubspec.lock as the only pin, a separately-recorded SDK version string, a version-pinned very_good_analysis include (whose missing file fails default analyze, or silently drops the ruleset where warnings are non-fatal), transitive-tree auditing before adding a package, a dependency gate that refuses network/telemetry…

    skills/dependency-hygiene/SKILL.md on GitHub (opens in a new tab)
  • design-review-workflow

    Enforces one structured end-of-build design/QA pass — never per-task — on the release build: a screenshot sweep matrix (every screen × light/dark × LTR+RTL × largest text scale × reduce-motion) plus an on-device pass on real cheap target hardware, findings graded BLOCKER/FIX/NOTE with every accessibility-floor violation a mandatory BLOCKER, exactly one scoped fix round, and a dated sign-off artif…

    skills/design-review-workflow/SKILL.md on GitHub (opens in a new tab)
  • design-system-structure

    Structures a Flutter design system as tokens→theme→modifiers→shapes with two-tier tokens (primitives named by measured value, semantic slots named by role) exposed through a ThemeExtension read via an asserting of(context); hand-authors both light and dark ColorScheme instead of ColorScheme.fromSeed, keeps every raw color/hex/Colors./Curves./Duration/BorderRadius/fontSize inside lib/theme/ behind…

    skills/design-system-structure/SKILL.md on GitHub (opens in a new tab)
  • error-handling-typed-results

    Enforces a typed-error spine — a hand-rolled sealed Result<T,F> plus one per-boundary sealed Failure carrying a stable code and typed params (never a localized string), returned instead of thrown; recoverable failures are values, only bugs throw. Convert-at-boundary catches narrowly with an on-clause and logs the original error+stack BEFORE returning a typed Failure; call sites switch exhaustivel…

    skills/error-handling-typed-results/SKILL.md on GitHub (opens in a new tab)
  • flutter-architecture

    Enforces a right-sized feature-first layered MVVM Flutter architecture — features are folders and cross-cutting foundations become packages only when a compile wall earns it, a strict downward-only dependency DAG, dumb Views over one Notifier/AsyncNotifier ViewModel per feature, repositories as the single source of truth and single write path returning immutable domain values, abstractions only w…

    skills/flutter-architecture/SKILL.md on GitHub (opens in a new tab)
  • flutter-conventions-index

    The repo front-door for a Flutter/Dart app — the cross-cutting house rules (feature-first layered MVVM, immutable state with a single write path, Riverpod 3.x for state + DI, typed Result/Failure errors, dumb widgets, injected side effects, complexity limits) plus a routing table that sends each task to its deep-dive skill and a recommended feature build order. Use at the start of any Flutter/Dar…

    skills/flutter-conventions-index/SKILL.md on GitHub (opens in a new tab)
  • flutter-performance

    Enforces Flutter runtime performance — const subtrees, minimal rebuild scope via ref.watch(select), lazy ListView/GridView builders and slivers, sized image decode (cacheWidth/ResizeImage), heavy work off the UI isolate via compute/Isolate, surgical RepaintBoundary, dispose everything, and measurement in profile mode on a floor device. Use when optimizing UI, diagnosing jank or dropped frames, tu…

    skills/flutter-performance/SKILL.md on GitHub (opens in a new tab)
  • forms-and-input

    Enforces Form + GlobalKey<FormState> with TextFormField whose sync validator returns a localized String? (never a hardcoded literal), AutovalidateMode.onUserInteraction, async availability checks moved OUT of the sync validator into a debounced Riverpod Notifier that surfaces errors through state, FocusNode/TextInputAction/onFieldSubmitted traversal, keyboardType/textCapitalization/autofillHints/…

    skills/forms-and-input/SKILL.md on GitHub (opens in a new tab)
  • i18n-rtl-l10n

    Enforces the gen-l10n/ARB localization contract: every string through AppLocalizations from a template app_en.arb, key + placeholder parity, nullable-getter:false so a missing key is a compile error, ICU plural/select over concatenation, Directional-only geometry (EdgeInsetsDirectional, AlignmentDirectional, TextAlign.start, Icons.adaptive), FSI/PDI isolation for mixed-script runs, per-locale Num…

    skills/i18n-rtl-l10n/SKILL.md on GitHub (opens in a new tab)
  • lint-and-style-config

    Enforces a strict analysis_options.yaml built on very_good_analysis with strict-casts/strict-raw-types, a fixed set of silence-producing bug classes promoted to error (unawaited_futures, discarded_futures, empty_catches, use_build_context_synchronously, cancel_subscriptions, close_sinks, avoid_dynamic_calls, exhaustive_cases, avoid_print), dart format as the sole whitespace authority, generated-f…

    skills/lint-and-style-config/SKILL.md on GitHub (opens in a new tab)
  • local-notifications-scheduler

    Enforces an on-device reminder engine where the local database is the only source of truth and the OS pending-notification set is a disposable cache reconciled through one idempotent syncNotifications() entrypoint; keeps flutter_local_notifications behind a single NotificationGateway port, all scheduling math pure and Clock-injected, recurring schedules stored as wall-clock + recurrence rule (nev…

    skills/local-notifications-scheduler/SKILL.md on GitHub (opens in a new tab)
  • motion-and-haptics

    Enforces designed interaction feedback instead of the framework default — every committing interaction acknowledged in the same frame, motion that decorates state but never IS the state (the end state is identical with animations off), a named catalog of moments each declaring its trigger, duration role, haptic slot and reduced-motion fallback at design time, haptics as a HapticTheme event-to-int…

    skills/motion-and-haptics/SKILL.md on GitHub (opens in a new tab)
  • naming-conventions

    Enforces Effective-Dart casing (UpperCamelCase types, lowerCamelCase members/constants, lowercase_with_underscores files) plus architectural role suffixes so a name or grep reveals the layer — Screen/Notifier/Repository/Dao/Service/Gateway/Failure, file=primary-declaration, units-and-semantics in identifiers, booleans as is/has/can/should assertions, no get-prefix, no Hungarian, no SCREAMING_CAPS…

    skills/naming-conventions/SKILL.md on GitHub (opens in a new tab)
  • navigation-and-routing

    Enforces one app-wide GoRouter in lib/routing/ wired via MaterialApp.router, deep-linkable identity in path params never state.extra, context.go-vs-context.push discipline, redirect guards as pure functions driven by a Riverpod refreshListenable, StatefulShellRoute.indexedStack for branch-state-preserving BottomNavigationBar/NavigationRail shells, CustomTransitionPage transitions that respect red…

    skills/navigation-and-routing/SKILL.md on GitHub (opens in a new tab)
  • persistence-drift

    Governs the on-device Drift/SQLite data layer: package:drift and package:sqlite3 confined to lib/data/ behind DAOs that map rows to immutable value objects (no Drift symbol leaks past the repository), invariants pushed into the schema (STRICT tables, CHECK/FK/partial-UNIQUE indexes), foreign_keys/WAL pragmas re-asserted idempotently in beforeOpen, one db.transaction per mutation, persist-before-p…

    skills/persistence-drift/SKILL.md on GitHub (opens in a new tab)
  • project-structure-and-packages

    Enforces Flutter/Dart project scaffolding where the layout makes defects greppable — a single-package app by default (feature-first under lib/features/, shared foundation split by role in core/ data/ services/ routing/ theme/ l10n/, a thin main.dart that calls bootstrap(), no lib/src in the app), extracting a generically-named pure-Dart package only when a body of logic earns it (public barrel ov…

    skills/project-structure-and-packages/SKILL.md on GitHub (opens in a new tab)
  • release-and-store-shipping

    Enforces the path from a green CI run to a shipped build — pubspec `version: x.y.z+N` as the single source of versionName/versionCode (monotonic, never reused), the release artifact verified on real hardware, signing and store API keys that never enter the repo, `--obfuscate --split-debug-info` with symbols archived per build or that release's crash reports are permanently unreadable, a permissio…

    skills/release-and-store-shipping/SKILL.md on GitHub (opens in a new tab)
  • run-codegen

    Runs the deterministic build_runner codegen pass (drift_dev, freezed, json_serializable, riverpod_generator) as one pinned command with --delete-conflicting-outputs, always before flutter analyze, never hand-editing or force-committing generated *.g.dart / *.freezed.dart / *.drift.dart output, watch only in local dev. Use when regenerating codegen, fixing "missing part file" / "conflicting output…

    skills/run-codegen/SKILL.md on GitHub (opens in a new tab)
  • run-goldens-rebaseline

    Runs the golden re-baselining ritual — the one sanctioned way committed reference images are overwritten. Enforces the order: land and green the non-golden geometry, contrast and a11y tests FIRST, re-baseline only in the pinned blessing environment that produced the committed images, with loadAppFonts() so nothing renders in Ahem, via `flutter test --update-goldens --tags golden` (never in CI, ne…

    skills/run-goldens-rebaseline/SKILL.md on GitHub (opens in a new tab)

Review before you install

A skill is a set of instructions and scripts your agent will follow, and it can run code on your machine. Read the SKILL.md and any scripts first — this listing is not a security review.