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 skills add sgaabdu4/hard-eng --skill building-flutter-appsgit clone --depth 1 https://github.com/sgaabdu4/hard-engWrote 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/sgaabdu4/hard-eng/building-flutter-apps)<a href="https://agentmods.dev/skills/sgaabdu4/hard-eng/building-flutter-apps"><img src="https://agentmods.dev/badge/skills/sgaabdu4/hard-eng/building-flutter-apps.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.1 | $0.00045 | $0.04762 |
| Opus 5 | $0.00023 | $0.02381 |
| Sonnet 5 | $0.00009 | $0.00952 |
| Haiku 4.5 | $0.00005 | $0.00476 |
Grade A, and why
building-flutter-apps 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 8d 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.
This is a copy
100% identical to building-flutter-apps — 0 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 147 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Read first
- This skill overrides generic Flutter/Dart advice; Critical Rules override examples, public docs, and older project code.
- Before code, read Trigger Map refs for touched areas. Each ref's
Read firstsection is canonical. - Dart Decimate invocation = global
deterministic-checksdart_decimate_gate.py; raw scanner calls + project-local adapters/dependencies/binaries + package-roottool/bundles forbidden. - Coordinator runtime =
npx --yes dart-decimate@latest; one scan per affected Git root + exact--workspacescope for nested packages. - After each
.dart/pubspec.yaml/build.yaml/analysis_options.yamlwrite batch, run package-rootdart analyze+ Dart Decimate, then emit Pre-Flight. - Block on analyzer or Decimate findings, and read setup.md first if
flutter_skill_lintsis not wired.
Progressive Disclosure Gate
Read only the narrowest matching Trigger Map row(s); scenario/subsystem rows own incidental stack/file words. Do not bulk-read references/ or parent refs. Cite exact refs in Pre-Flight.
Critical Rules
| ID | Rule | Detail refs |
|---|---|---|
| R1 | Run package-root dart analyze + Git-root Dart Decimate through deterministic-checks; wire flutter_skill_lints + riverpod_lint. |
analysis-options.md, dart-decimate.md, setup.md |
| R2 | Every provider uses @riverpod / @Riverpod codegen; no manual provider classes or legacy provider families. |
riverpod-codegen.md |
| R3 | Guard async gaps with ref.mounted / context.mounted; finally uses if (ref.mounted) { ... }. |
async-mutations.md |
| R4 | Widgets are public classes; no _buildXxx(), widget top-level helpers, or private widget classes except State. |
atomic-design.md, performance.md |
| R5 | Nullability is semantic; no empty/null/bool sentinel fallbacks, value!, nullable collections, or raw required domain strings. |
value-objects.md, freezed-sealed.md |
| R6 | All user-facing strings, tooltips, semantics, and visible accessibility copy use AppLocalizations. |
localization.md, accessibility.md |
| R7 | Immutable state/entities use sealed Freezed, one declaration per file, native switch, and VO map/when disabled. |
freezed-sealed.md, value-objects.md |
| R8 | presentation/widgets/ renders immutable inputs + emits typed callbacks; screens/routes/notifiers own navigation, workflow, domain state, and infrastructure. |
presentation-widgets.md |
| R9 | Duplicate behavior in 2+ classes becomes a small stateless *Mixin with an on clause. |
mixins.md |
| R10 | Storage SDK calls live in local datasources behind repositories; production Hive imports use hive_ce_flutter. |
hive-persistence.md, architecture.md |
| R11 | Primitive/context/collection operations live in core/extensions/; domain never imports those extensions. |
context-ui.md, primitive-formatting.md, collections-helpers.md |
| R12 | Domain primitives with meaning become validated Freezed Value Objects; Hive models keep primitives and mappers bridge. | value-objects.md, hive-persistence.md |
| R13 | Typed GoRouter routes are navigation SSOT; redirects are pure resolver logic with nullable by-id fallback UI. | deep-linking.md, routing-app-shell.md |
| R14 | Dialogs/sheets render immutable snapshots, pop results, and leave mutations/teardown to notifiers. | modals-navigation.md, state-management-lifecycle.md |
| R15 | Debounce, gate, and batch high-frequency UI, sync, persistence, remote-function, reset, and lookup boundaries. | debounce-gate-batch.md |
| R16 | App shell stays declarative; bootstrap listeners live in a sibling root ConsumerWidget. |
routing-app-shell.md |
| R17 | Keep control flow flat after exits; remove unnecessary else after return / throw / break / continue. |
Lint: avoid_unnecessary_else_after_control_flow |
| R18 | Use onReorderItem post-removal indexes directly; never add legacy onReorder adapter math. |
Lint: use_on_reorder_item_index_semantics |
| R19 | Android exact alarms use flutter_local_notifications permission APIs, not manual settings intents. |
Lint: use_local_notifications_exact_alarm_permission_api |
| R20 | Resolve nullable platform-specific plugin implementations before calling platform members. | Lint: resolve_platform_specific_implementation_before_use |
| R21 | Widget previews are preview-only with deterministic fakes; no real HTTP/Firebase/Hive/native plugins. | widget-previews.md |
| R22 | Runtime E2E proves behavior with stable selectors, failure-sensitive scenarios/logs, subject-matched evidence, source-of-truth verification, cleanup, and multi-actor proof when needed. | dart-mcp-e2e-testing.md |
| R23 | Accessibility is UI correctness: localized tooltips/semantic labels, 48x48 targets, contrast, text scale, Text.rich. |
accessibility.md, flutter-optimizations.md |
| R24 | If remote error reporting is accepted or already present, use one app-owned Crash boundary and one reporting owner per operation; otherwise add no provider/facade. Scrub sensitive data + reconcile ambiguous remote outcomes before telemetry. |
error-reporting.md, networking.md |
| R25 | Windows installer delivery = one semantic engine + typed app config/capabilities + minimal-step exact-SHA diagnostic → one publisher; keep cheap guards before one build, isolate synthetic preservation proof, and activate only verified immutable bytes. | windows-installer-pipeline.md, workflow scaffold, inno_bundle pubspec scaffold, Inno settlement sentinel, Defender scanner |
| R26 | Pause-sensitive Riverpod state starts only after its durable owner/listener exists; projections watch base state directly; switching auth/form modes clears transient errors. | notifier-structure.md, state-management-lifecycle.md, testing.md |
| R27 | Native/custom links use one URI contract across producer, platform registration, Flutter delivery, and typed router; prove cold/warm + signed-state delivery on the target device. | deep-linking.md, dart-mcp-e2e-testing.md |
What ships with it
48 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- agents/openai.yaml 272 B
- assets/defender-installer-scan.ps1 11 KB runs code
- assets/inno-bundle-pubspec.yaml 645 B
- assets/inno-uninstall-settlement-sentinel.ps1 9.7 KB runs code
- assets/windows-installer-workflow.yml 16 KB
- references/analysis_options.yaml 1.4 KB
- references/analysis-options.md 4.9 KB
- references/architecture.md 18 KB
- references/atomic-design.md 14 KB
- references/atomic-design/accessibility.md 1.7 KB
- references/build-reproducibility.md 3.5 KB
- references/common-patterns.md 6.6 KB
- references/common-patterns/debounce-gate-batch.md 8.9 KB
- references/common-patterns/delta-sync.md 3.6 KB
- references/common-patterns/lists-forms-workflows.md 7.8 KB
- references/common-patterns/modals-navigation.md 5.9 KB
- references/common-patterns/navigation-flow.md 1.4 KB
- references/common-patterns/routing-app-shell.md 12 KB
- references/core-stack.md 5.6 KB
- references/dart-decimate.md 1.5 KB
- references/dart-mcp-e2e-testing.md 16 KB
- references/dart-patterns-records.md 4.0 KB
- references/deep-linking.md 6.7 KB
- references/error-reporting.md 6.5 KB
- references/extensions/collections-helpers.md 2.5 KB
- references/extensions/context-ui.md 1.9 KB
- references/extensions/primitive-formatting.md 2.0 KB
- references/flutter-optimizations.md 11 KB
- references/freezed-sealed.md 11 KB
- references/hive-persistence.md 16 KB
- references/layout-diagnostics.md 5.3 KB
- references/localization.md 5.7 KB
- references/mixins.md 6.3 KB
- references/networking.md 8.0 KB
- references/performance.md 15 KB
- references/presentation-widgets.md 2.3 KB
- references/riverpod-codegen.md 15 KB
- references/services-and-singletons.md 8.6 KB
- references/setup.md 1.8 KB
- references/state-management-lifecycle.md 6.7 KB
- references/state-management/async-mutations.md 3.0 KB
- references/state-management/notifier-structure.md 3.6 KB
- references/testing.md 16 KB
- references/value-objects.md 12 KB
- references/widget-previews.md 4.4 KB
- references/windows-installer-pipeline.md 40 KB
- templates/flutter/lib/core/extensions/context_extensions.dart 310 B
- templates/flutter/lib/core/extensions/extensions.dart 34 B
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.
- 8d ago First seen · 147 lines · 45 tokens per session scan A 65b29e87883c
building-flutter-apps is a skill published in the GitHub repository sgaabdu4/hard-eng (5 stars, last pushed today), licensed MIT. It adds 45 tokens to every session and 4,762 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. It is 100% identical to building-flutter-apps, differing in 0 lines, and is treated as a copy.
Other skills, from other repositories
platform-specialist
Doc-driven platform integration expert. Converts a web app to LINE MINI App (LIFF SDK), PWA (Next.js 16), and Capacitor (iOS/Android). Expo & Tauri are secondary/legacy. ปรัชญาหลัก: ดึง docs จริงล่าสุดก่อนเขียนโค้ดเสมอ — ไม่ freeze snippet ที่จะ rot. Triggers: "LINE MINI App", "LIFF", "LINE OA", "convert to app"…
wire-sdk
An SDK integration guide for 앱인토스, a platform for building apps inside Toss. It covers permissions, persistent storage, sharing links, screen controls, safe-area spacing, and secure WebSocket connections.
make-store-assets
A workflow for creating app-store graphics such as a logo, thumbnail, and in-app-purchase icon according to required sizes and available brand evidence. It uses the app specification, brand color, existing supplied assets, and source records to guide the work.
rn-feature-development
This skill should be used when building any new feature in a React Native or Expo app, or when the /rn-dev-agent:rn-feature-dev command runs. Triggers on "build a feature", "add X to the app", "implement Y", "create a new screen", "rn-feature-dev", "feature development", "build me X", "add a screen", "wire up this…
run-preflight
A release pre-check workflow that builds the mini-app, runs automated checks, explains errors, and lists review items that require a person to test the app on a real device. A preflight check is a final inspection before submission.
rn-testing
This skill should be used when the user asks to "write a Maestro test", "create E2E flows", "add testIDs", "run UI tests", "run E2E tests", "verify a feature works", "test my screen", "set up maestro-runner", "mock network requests", "inspect store state", "write test assertions", or needs guidance on test timing…