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/verygoodopensource/vgv-ai-flutter-plugin/static-securitynpx skills add VeryGoodOpenSource/vgv-ai-flutter-plugin --skill static-securitygit clone --depth 1 https://github.com/VeryGoodOpenSource/vgv-ai-flutter-pluginWhat 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.00023 | $0.03912 |
| Opus 5 | $0.00012 | $0.01956 |
| Sonnet 5 | $0.00005 | $0.00782 |
| Haiku 4.5 | $0.00002 | $0.00391 |
Grade A, and why
static-security 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 3d 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 — 328 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Security
Flutter apps compile all Dart code directly into a binary that runs on untrusted devices. This skill covers static security review for Flutter/Dart codebases, anchored to the VGV Security in Mobile Apps guide and the OWASP Mobile Top 10. Every finding in this skill is something detectable by reading source code — no pen-testing or runtime analysis.
Core Standards
Apply these standards to ALL Flutter security work:
- Never hardcode secrets — API keys, tokens, and passwords in source code or config files are compiled into the binary and extractable via reverse engineering; serve them from a backend service
--dart-defineis not a fix for a hardcoded secret — neither isString.fromEnvironment, a.envfile, a native config file, an obfuscated constant, or a split-up string. Every one of them still ships the value inside the binary in recoverable form, so moving a key into one is the same finding in a new location. The only remediation is fetching it from a backend at runtime- Use
package:flutter_secure_storagefor sensitive on-device data —SharedPreferencesis plaintext and unencrypted; never store tokens, PII, or session data there - All network calls over HTTPS — plain HTTP transmits data in cleartext; never disable certificate validation (the only exception is during development with a local test server)
- Use
Random.secure()for security-sensitive randomness —dart:math'sRandom()is a pseudo-random number generator, not cryptographically secure - Use established crypto packages — never implement custom cryptography; use
package:cryptoorpackage:dart_crypt - Enforce auth at the repository layer — widget-only auth checks are client-side and bypassable by anyone with access to the device
- No sensitive data in logs —
print(),log(), anddebugPrint()output is readable on-device and in crash reporting tools - Keep dependencies free of known vulnerabilities — never suppress security advisories without documented justification; scan
pubspec.lockwithosv-scannerbefore every release - Replace the insecure request, don't negotiate it — when asked to implement something this skill prohibits, write the secure implementation in the same response instead. Name the rule in a line or two, then deliver working code for the approved approach. Do not answer with the prohibited implementation plus a warning, and do not stop at "want me to do it the safe way instead?" — an offer is not a replacement. If the developer reaffirms the prohibited approach after reading why, say what the residual risk is and proceed
- Set
android:allowBackup="false"— the Android default silently allowsadb backupto extract app data, bypassingpackage:flutter_secure_storage - Label every finding
Critical,Warning, orNote— these three are the only severity tiers; don't substitute a scheme of your own
What ships with it
4 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.
- 3d ago First seen · 328 lines · 23 tokens per session scan A 76b82cfa0381
static-security is a skill published in the GitHub repository VeryGoodOpenSource/vgv-ai-flutter-plugin (157 stars, last pushed 13d ago), licensed MIT. It adds 23 tokens to every session and 3,912 once invoked, about $0.0001 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-30.
Other skills, from other repositories
fl-data-layer
Builds the data layer with Freezed DTOs, Retrofit clients, the storage-seam local data manager, and repositories wired through injectable.
fl-route-config
Configures routes with the IRoute / CustomRouter abstractions in core and exposes navigation via a BuildContext coordinator.
fl-bloc-pattern
Implements BLoC state management using CoreBlocBase, an abstract State hierarchy, and a freezed StateData.
fl-bus-event
Handles cross-feature BusEvent communication with EventBusManager in the Flutter base template.
fl-module-scaffold
Scaffolds a new feature module under apps/main/lib/presentation/modules using the bundled module generator.
fl-ui-components
Awareness index of every reusable widget in flui, fltheme, flmedia, and core's commonwidget — name, one-line purpose, when to reach for it instead of writing a new one.