zakariaf

44 mods across 2 repositories, 7 stars between them.

zakariaf/Flutter-Skills

Skill Claude CodeCodex

Enforces a strict analysisoptions.yaml built on verygoodanalysis with strict-casts/strict-raw-types, a fixed set of silence-producing bug classes promoted to error (unawaitedfutures, discardedfutures, emptycatches, usebuildcontextsynchronously, cancelsubscriptions, closesinks, avoiddynamiccalls, exhaustivecases…

2 3d ago A 209 tokens original MIT

zakariaf/Flutter-Skills

Skill Claude CodeCodex

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 flutterlocalnotifications behind a single NotificationGateway port, all scheduling math pure and…

2 3d ago A 189 tokens original MIT

motion-and-haptics

27

zakariaf/Flutter-Skills

Skill Claude CodeCodex

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…

2 3d ago A 203 tokens original MIT

naming-conventions

28

zakariaf/Flutter-Skills

Skill Claude CodeCodex

Enforces Effective-Dart casing (UpperCamelCase types, lowerCamelCase members/constants, lowercasewithunderscores 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…

2 3d ago A 150 tokens original MIT

zakariaf/Flutter-Skills

Skill Claude CodeCodex

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…

2 3d ago A 175 tokens original MIT

persistence-drift

30

zakariaf/Flutter-Skills

Skill Claude CodeCodex

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), foreignkeys/WAL pragmas…

2 3d ago A 218 tokens original MIT

zakariaf/Flutter-Skills

Skill Claude CodeCodex

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…

2 3d ago A 203 tokens original MIT

zakariaf/Flutter-Skills

Skill Claude CodeCodex

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…

2 3d ago A 224 tokens original MIT

run-codegen

33

zakariaf/Flutter-Skills

Skill Claude CodeCodex

Runs the deterministic buildrunner codegen pass (driftdev, freezed, jsonserializable, riverpodgenerator) 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…

2 3d ago A 142 tokens original MIT

zakariaf/Flutter-Skills

Skill Claude CodeCodex

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…

2 3d ago A 182 tokens original MIT

run-migration

35

zakariaf/Flutter-Skills

Skill Claude CodeCodex

Runs the forward-only Drift/SQLite schema-migration ritual — the most dangerous deterministic operation in an offline-first app: a bad migration silently destroys on-device rows that exist nowhere else. Enforces the exact ordered sequence: take a pre-migration file snapshot before the database is opened, bump…

2 3d ago A 197 tokens original MIT

zakariaf/Flutter-Skills

Skill Claude CodeCodex

Stands up one navigable feature the same way every time — a fixed lib/features/ /presentation/ folder (dumb View + one 1:1 Notifier/AsyncNotifier ViewModel + widgets/ + scoped providers.dart), downward-only dependencies with no cross-feature imports, reactive reads as scoped StreamProviders over a repository .watch()…

2 3d ago A 181 tokens original MIT

zakariaf/Flutter-Skills

Skill Claude CodeCodex

Enforces reproducible derived content — output every device must compute identically from a key, with no server. The key is injected, never read from a clock; a calendar-day key is a civil date, not an instant, and one day definition serves every comparison; the seed is a specified hash plus a mix step feeding a PRNG…

2 3d ago B 222 tokens original MIT

zakariaf/Flutter-Skills

Skill Claude CodeCodex

Wires every side effect and native channel as an injectable interface behind a Provider that throws UnimplementedError until the composition root overrides it, with one live impl per flavor, value-typed signatures returning typed results, hand-written contract-honouring fakes over mocks, MethodChannel quarantined to…

2 3d ago A 188 tokens original MIT

zakariaf/Flutter-Skills

Skill Claude CodeCodex

Enforces feature state as one Notifier/AsyncNotifier/StreamNotifier ViewModel over an immutable state value with value equality, private mutable state mutated only through intent methods, derive-don't-store, a single write path through a repository, and unidirectional data flow; Riverpod 3.x is DI…

2 3d ago A 192 tokens original MIT

testing-strategy

40

zakariaf/Flutter-Skills

Skill Claude CodeCodex

Enforces test doctrine where shape follows code not the pyramid: pushes logic into Flutter-free packages tested with pure package:test and an injected Clock; asserts invariants with seeded fuzz tests against an independent oracle plus round-trip and rounding goldens; prefers bare-implements fakes over mocktail for…

2 3d ago A 176 tokens original MIT

zakariaf/Flutter-Skills

Skill Claude CodeCodex

Enforces the non-happy paths every screen owes the user — loading/empty/error/content resolved in ONE switch over an AsyncValue or sealed view state, never an isLoading+error+data bool triple; a delayed skeleton shaped like the result instead of a spinner that flashes; a refresh that keeps stale content on screen…

2 3d ago A 212 tokens original MIT

zakariaf/Flutter-Skills

Skill Claude CodeCodex

Enforces a pure-Dart value-object core that stores every quantity canonically — money as integer minor units keyed to each currency's real ISO-4217 exponent (never 100), physical amounts as SI whole units, timestamps as UTC — and converts only at the presentation edge; forbids double/num money, cross-currency…

2 3d ago A 209 tokens original MIT

widget-composition

43

zakariaf/Flutter-Skills

Skill Claude CodeCodex

Enforces Flutter widget composition — extract named const Widget classes never Widget buildX() methods, lean build() (no I/O/formatting/domain math, precompute in the ViewModel), dumb Views that watch one Notifier and route intents via ref.read, StatelessWidget by default with every controller disposed, lazy .builder…

2 3d ago A 211 tokens original MIT

zakariaf/Flutter-Skills

Skill Claude CodeCodex

Enforces a disciplined widget/layout/golden/a11y test surface — one pumpApp harness that pins tester.view.physicalSize x devicePixelRatio and layers MediaQuery (textScaler/boldText/accessibleNavigation) above MaterialApp, an overflow net that never suppresses (one testWidgets per device x scale x bold tuple because…

2 3d ago A 223 tokens original MIT