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 ariaramin/flutter-skills --skill flutter-url-launcher-engineeringgit clone --depth 1 https://github.com/ariaramin/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/ariaramin/flutter-skills/flutter-url-launcher-engineering)<a href="https://agentmods.dev/skills/ariaramin/flutter-skills/flutter-url-launcher-engineering"><img src="https://agentmods.dev/badge/skills/ariaramin/flutter-skills/flutter-url-launcher-engineering/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/ariaramin/flutter-skills/flutter-url-launcher-engineering"><img src="https://agentmods.dev/badge/skills/ariaramin/flutter-skills/flutter-url-launcher-engineering.svg" alt="Reviewed on agentmods" width="80" 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.00124 | $0.03853 |
| Opus 5.5 | $0.00050 | $0.01541 |
| Sonnet 5.5 | $0.00025 | $0.00771 |
| Haiku 4.5 | $0.00012 | $0.00385 |
Grade A, and why
flutter-url-launcher-engineering 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 5d 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 — 446 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Flutter url_launcher Engineering
Mission
Treat url_launcher as a platform handoff API, not a browser framework or proof that an external business action completed.
Use this loop:
identify external action
→ decide whether url_launcher is appropriate
→ classify destination trust
→ construct a safe Uri
→ choose an intentional LaunchMode
→ query capability only if it changes UX
→ launch once
→ handle false/exception with fallback
→ verify downstream business completion separately
→ test platform-specific behavior
Non-negotiable rules
- Use
launchUrl(Uri, ...); do not introduce deprecated string-basedlaunch/canLaunchAPIs. - Use
Uri.parseonly for known complete trusted constants; use structuredUriconstruction for dynamic components. - For dynamic HTTP(S) query values, use
queryParametersrather than string concatenation. - For non-HTTP(S) schemes such as
mailto:, follow the package's documentedquery+Uri.encodeComponentworkaround. - Treat API, CMS, chat, QR, push, deep-link, remote-config, and user-provided destinations as untrusted.
- Allow only intentional schemes and validate exact hosts when the destination is product-controlled.
- Prefer HTTPS for ordinary web navigation when policy requires trusted web transport; reject disallowed HTTP rather than silently rewriting arbitrary URLs.
- Do not put credentials, session secrets, private keys, or server secrets into externally launched URLs unless a reviewed protocol explicitly requires it.
- Do not log complete sensitive URIs, query strings, or fragments.
- Choose
LaunchModefrom required UX semantics. Do not rely on today's observedplatformDefaultbehavior when the surface matters. - Both in-app modes require HTTP(S); do not use them for
tel:,mailto:,sms:, or arbitrary custom schemes. - Prefer attempting
launchUrland handling failure when capability detection is not needed for pre-launch UI. - Treat
canLaunchUrlas a platform-sensitive query that may return false because visibility/querying is restricted. - Use
supportsLaunchModeonly when automatic fallback would violate product requirements. - Add Android
<queries>and iOSLSApplicationQueriesSchemesonly when the app genuinely needs capability querying. - On web, preserve direct user-gesture context for new tab/window launches.
- Never interpret
launchUrl == trueas proof of email delivery, call completion, SMS send, OAuth authentication, payment, purchase, installation, or any other external result. - Custom schemes are routing mechanisms, not verified application identity.
- Use verified HTTPS/App Link/Universal Link mechanisms when target identity matters.
- Keep internal Flutter navigation in the router/Navigator, not
url_launcher. - Use a dedicated WebView/browser integration when the app needs rich embedded browsing controls.
- Keep external navigation as a presentation/platform side effect unless a deliberate application abstraction adds security, fallback, observability, or testing value.
- Prevent harmful duplicate launches when rapid repeated taps could open multiple windows/apps.
- Test Android, iOS, web, and desktop behavior independently where supported.
- Inspect resolved federated platform package versions before making implementation-specific claims.
What ships with it
5 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.
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.
- 5d ago First seen · 446 lines · 124 tokens per session scan A eb066ff5ad33
flutter-url-launcher-engineering is a skill published in the GitHub repository ariaramin/flutter-skills (6 stars, last pushed 6d ago), licensed MIT. It adds 124 tokens to every session and 3,853 once invoked, about $0.0005 per session on Opus 5.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-10-11.
Other skills, from other repositories
ia-verification-before-completion
Enforces fresh verification evidence before any completion claim. Use when about to claim "tests pass", "bug fixed", "done", "ready to merge", handing off work, or before editing when a request has ambiguous scope.
ia-debugging
Systematic root-cause debugging with verification. Use for errors, stack traces, broken tests, flaky tests, regressions, or anything not working as expected. For validating bug reports before fixing, use bug-reproduction-validator agent.
test-failure-explorer
Import and query an existing Vitest 3.2 JSON report to explore test failures, file-level errors and original diagnostic evidence.
code-review
Reviews code for bugs, security issues, and best practices.
adversarial-reviewer
Stress-test a code change for concrete correctness defects, unsafe assumptions, and failure modes. Use when the user explicitly asks for an adversarial review, a deep bug hunt, or to tear a change apart. Do not use for ordinary review, style feedback, or general improvement suggestions.
omh-verification-gate
This is an OMH verification-gate workflow skill, projected for Agent Skills hosts (Claude Code, Codex, Cursor, opencode, OpenClaw, pi).