Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/zakariaf/flutter-skills/flutter-performancenpx skills add zakariaf/Flutter-Skills --skill flutter-performancegit clone --depth 1 https://github.com/zakariaf/Flutter-SkillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/zakariaf/flutter-skills/flutter-performance)<a href="https://agentmods.dev/skills/zakariaf/flutter-skills/flutter-performance"><img src="https://agentmods.dev/badge/skills/zakariaf/flutter-skills/flutter-performance.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00133 | $0.02345 |
| Opus 5 | $0.00067 | $0.01172 |
| Sonnet 5 | $0.00027 | $0.00469 |
| Haiku 4.5 | $0.00013 | $0.00234 |
Grade A, and why
flutter-performance scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 133 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Flutter Performance
Hold a steady 60 fps (<=16 ms/frame; <=8 ms on 120 Hz) on a floor device (low-end Android / older iPhone). Performance is a property you measure in profile mode, not one you assert. It comes from rebuilding less, painting cheaply, and keeping both the UI thread and the raster thread free.
Non-negotiable rules
consteverything legal. Aconstsubtree is skipped on rebuild — the framework short-circuits it by identity. Keepprefer_const_constructorson as an error; a non-const literal that could be const is a lint failure, not a preference.- Shrink the rebuild scope to the smallest changing widget. Never
ref.watch(provider)for a whole state object when one field changed — watchprovider.select((s) => s.field). A HUD counter tick must never rebuild a heavy sibling. Rebuild scope is the single biggest lever on build-thread cost. - Lazy everything long.
ListView.builder/GridView.builder/ slivers for variable or unbounded content.ListView(children: items.map(...).toList())builds every off-screen row up front — refuse it for anything not tiny and fixed. - No expensive work in
build(). NojsonDecode, sort, regex,DateTimemath, file/network, or large allocation —build()may run every frame. Compute in the Notifier/ViewModel once and cache the result in immutable state. - Heavy CPU off the UI isolate. Parse large payloads, process images, crunch numbers in
compute()or a spawnedIsolate. Blocking the UI thread is guaranteed jank; the raster thread cannot save you. - Size image decode to the display slot.
cacheWidth/cacheHeightorResizeImage, correct asset resolutions,precacheImagefor above-the-fold art. Decoding a 4000 px source into a 100 px box spikes memory and OOMs cheap phones. - Prefer the cheapest widget that does the job.
ColoredBox/DecoratedBoxoverContainer,SizedBoxfor spacing,FadeTransition/AnimatedOpacityover theOpacitywidget in hot paths. AvoidClipPath/saveLayerinside scrolling lists — they force an offscreen buffer on the raster thread. RepaintBoundaryaround costly, independently-repainting subtrees (an animation, a chart, a live indicator) so its repaint does not re-raster its neighbours. Do not sprinkle boundaries everywhere — each is a compositor layer that costs memory.- Pass expensive children through
child:.AnimatedBuilder/ValueListenableBuilder/StreamBuilderrebuild only thebuilder; hand the unchanging subtree in viachild:so it is built once, not per frame. - Dispose to avoid leaks.
AnimationControllers, gesture recognizers, stream subscriptions, timers,TextEditingControllers, caches — released indispose()(widgets) orref.onDispose(providers).autoDisposescoped session state so it does not survive the screen. - Measure in PROFILE mode on a real floor device with DevTools. Debug timings are meaningless (JIT, asserts). Watch the raster thread as well as the UI thread —
saveLayer/blur/clip cost shows there, not in Dart. Never ship a frame-budget number that was asserted, not measured.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 133 lines · 133 tokens per session scan A d45c271c652c
flutter-performance is a skill published in the GitHub repository zakariaf/Flutter-Skills (2 stars, last pushed 6d ago), licensed MIT. It adds 133 tokens to every session and 2,345 once invoked, about $0.0007 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
common-store-changelog
Generate user-facing release notes for the App Store and Google Play from git history (App Store <=4000 chars, Google Play <=500). Use when generating release notes, app store changelog, play store release, or "what's new" text for a mobile app.
android-navigation-3
Install and migrate to Jetpack Navigation 3. Use when implementing Navigation 3 patterns including NavDisplay, NavKey routes, deep links, multiple backstacks, scenes (dialogs, bottom sheets), or migrating from Navigation 2.
flutter-auto-route-navigation
Implement typed routing, nested routes, and auth guards using autoroute in Flutter. Use when the task explicitly uses autoroute or its generated router; defer generic deep-link setup and other routing libraries.
flutter-dependency-injection
Configure service locator setup using injectable and getit in Flutter. Use when wiring dependency injection with getit or injectable.
flutter-getx-state-management
Implement reactive state with GetX controllers, bindings, and observables in Flutter. Use when managing app state with GetxController, Obx, GetBuilder, or dependency lifecycle—not unit tests for existing controllers.
accessibility
Audit or remediate Flutter widgets against WCAG 2.2 accessibility conformance levels A, AA, or AAA across iOS, Android, Web, macOS, Windows, and Linux.