Test Guidelines
getsentry/sentry-dart
Enforce Sentry Dart/Flutter SDK test conventions for naming, structure, and fixtures.
Drives a Dart or Flutter package fully green through a verify-fix-rerun loop across four gates: analyze, format, test, coverage.
$ npx skills add VeryGoodOpenSource/vgv-ai-flutter-plugin --skill green-gate -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install VeryGoodOpenSource/vgv-ai-flutter-plugin green-gate --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/VeryGoodOpenSource/vgv-ai-flutter-plugin.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/green-gate .claude/skills/green-gate && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "green-gate" agent skill from https://github.com/VeryGoodOpenSource/vgv-ai-flutter-plugin/tree/main/skills/green-gate into .claude/skills/green-gate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "green-gate", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/VeryGoodOpenSource/vgv-ai-flutter-plugin/tree/main/skills/green-gateType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add VeryGoodOpenSource/vgv-ai-flutter-plugin --skill green-gate -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install VeryGoodOpenSource/vgv-ai-flutter-plugin green-gate --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/VeryGoodOpenSource/vgv-ai-flutter-plugin.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/green-gate .agents/skills/green-gate && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "green-gate" agent skill from https://github.com/VeryGoodOpenSource/vgv-ai-flutter-plugin/tree/main/skills/green-gate into .agents/skills/green-gate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "green-gate", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add VeryGoodOpenSource/vgv-ai-flutter-plugin --skill green-gate -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install VeryGoodOpenSource/vgv-ai-flutter-plugin green-gate --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/VeryGoodOpenSource/vgv-ai-flutter-plugin.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/green-gate .cursor/skills/green-gate && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "green-gate" agent skill from https://github.com/VeryGoodOpenSource/vgv-ai-flutter-plugin/tree/main/skills/green-gate into .cursor/skills/green-gate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "green-gate", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/VeryGoodOpenSource/vgv-ai-flutter-plugin.git --path skills/green-gate--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add VeryGoodOpenSource/vgv-ai-flutter-plugin --skill green-gate -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install VeryGoodOpenSource/vgv-ai-flutter-plugin green-gate --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/VeryGoodOpenSource/vgv-ai-flutter-plugin.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/green-gate .gemini/skills/green-gate && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "green-gate" agent skill from https://github.com/VeryGoodOpenSource/vgv-ai-flutter-plugin/tree/main/skills/green-gate into .gemini/skills/green-gate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "green-gate", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install VeryGoodOpenSource/vgv-ai-flutter-plugin green-gateInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add VeryGoodOpenSource/vgv-ai-flutter-plugin --skill green-gate -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/VeryGoodOpenSource/vgv-ai-flutter-plugin.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/green-gate .github/skills/green-gate && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "green-gate" agent skill from https://github.com/VeryGoodOpenSource/vgv-ai-flutter-plugin/tree/main/skills/green-gate into .github/skills/green-gate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "green-gate", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add VeryGoodOpenSource/vgv-ai-flutter-plugin --skill green-gate -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install VeryGoodOpenSource/vgv-ai-flutter-plugin green-gate --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/VeryGoodOpenSource/vgv-ai-flutter-plugin.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/green-gate .opencode/skills/green-gate && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "green-gate" agent skill from https://github.com/VeryGoodOpenSource/vgv-ai-flutter-plugin/tree/main/skills/green-gate into .opencode/skills/green-gate/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "green-gate", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
green-gateDrives a Dart or Flutter package fully green through a verify-fix-rerun loop across four gates: analyze, format, test, coverage.
Green Gate is an agent skill from VeryGoodOpenSource/vgv-ai-flutter-plugin. Drives a Dart or Flutter package fully green through a verify-fix-rerun loop across four gates: analyze, format, test, coverage. It owns gate configuration, so plan-only questions belong here: which tool and arguments run each gate, in what order, the coverage target, and what leaves the coverage denominator. Use it for "green gate", "make it green", "get CI green", fixing all analyze and test failures, cleaning a package up before a PR, bringing coverage to 100, looping until everything passes, or confirming a…
Its SKILL.md is about 4.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 4 other files, including reference files (for example `agents/openai.yaml` and `references/coverage.md`).
It sits in Mobile, covering Cross-platform mobile apps, Test coverage and Failing and flaky tests. It works with Dart, Flutter, Model Context Protocol and Bash. The repository describes itself as: AI plugin to enhance and accelerate Flutter & Dart development, built by Very Good Ventures. The licence is MIT.
7 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 496a3c6. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashReadGlobGrepEditWritemcp__dart__analyze_filesmcp__dart__dart_formatmcp__very-good-cli__testFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
dartflutterFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Green Gate loads about 4.7k tokens when it runs, and up to ~5.4k if it reads all its reference files. Until then it costs about 220 tokens; SKILL.md has 2,002 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash, Read, Glob, Grep, Edit, Write, mcp__dart__analyze_files, mcp__dart__dart_format, mcp__very-gooAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from VeryGoodOpenSource/vgv-ai-flutter-plugin at commit 496a3c6, republished under its MIT licence (© VeryGoodOpenSource). 2,002 words, ~4,694 tokens.
.claude/skills/green-gate/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Autonomous quality-gate loop for Dart and Flutter packages. Runs four gates — analyze, format, test, coverage — reads real tool output, edits code and tests to fix failures, and loops until one final iteration proves all four pass simultaneously with observed numbers. Acts autonomously on objective failures; escalates only on stalls, genuine ambiguity, or infrastructure failure.
This skill orchestrates tools and edits files. It defers the how of writing
tests to the testing skill — it never duplicates mocking, structure, or
coverage-pattern guidance.
Apply these to all green-gate work:
mcp__dart__analyze_files, format via mcp__dart__dart_format, test and coverage
via mcp__very-good-cli__test. Every gate has an MCP tool; none of them runs
through a shell command. The Bash test path (very_good test, flutter test,
dart test) is hook-blocked by block-cli-workarounds.sh and will be denied, and
dart analyze / dart format via Bash are redundant with the MCP tools.
Bash is reserved for parsing coverage/lcov.info — nothing else. This MCP-only
rule is a Claude Code constraint enforced by that hook; the hook does not run on
other hosts. Cross-harness fallback: on a host without the hook and without the
MCP servers connected, run the equivalent dart analyze, dart format, and
very_good test CLI commands instead — never block on a missing MCP server.mcp__dart__analyze_files
with applyFixes: true, mcp__dart__dart_format, mcp__very-good-cli__test
with the coverage triple), in gate order, with the precedence rule that makes
the order matter. Never substitute an improvised shell plan of flutter analyze / flutter test --coverage for the tools the loop actually runs.min_coverage is satisfied, all observed in the same round.coverage: true, min_coverage, and check_ignore: true together —
omitting coverage: true silently produces no lcov.info (mimics a
misconfiguration); omitting check_ignore: true makes the // coverage:ignore
remedy a no-op.testing skill — when a fix requires authoring
tests, follow that skill for structure, mocking, and naming.// coverage:ignore
reachable code). Escalate genuine product/API decisions instead of guessing.For each package root (see Recursive / Monorepo), run this algorithm:
directory argument or the
workspace root); confirm a pubspec.yaml exists. Initialize loop state
(iteration counter 0, empty fingerprints, empty touched-files set).mcp__dart__analyze_files with applyFixes: true. If any
errors remain, this is the active gate. Fix, record the fingerprint, go to
step 7.mcp__dart__dart_format on the package root. It reformats
the whole package in place. If it reports changed files, the gate is now
green for the next round.mcp__very-good-cli__test
with the coverage parameters from Test Gate. If tests fail, fix, record
the fingerprint, go to step 7.min_coverage result is
authoritative pass/fail. Parse coverage/lcov.info for the displayed
percentage and per-file fix targets (advisory). If below target, author tests
for the ranked under-covered files (via the testing skill), go to step 7.One-pass no-op path — invoked on an already-green package, iteration 1 finds analyze clean, format reporting zero changes, all tests passing, and coverage at or above target. The loop confirms green and exits without editing a single file. A green package costs exactly one verify iteration.
State carried across iterations — without it, "no progress" is undecidable:
| State | Purpose |
|---|---|
| Iteration counter | Enforce the cap (default 5, per package) |
| Per-gate failure fingerprint (prior round) | Detect no-progress and oscillation |
| Files touched this round | Distinguish a no-op round from a no-progress round; populate escalation reports |
Fingerprint keys per gate:
| Gate | Fingerprint |
|---|---|
| Analyze | Sorted set of diagnosticCode @ file:line |
| Format | Set of files the format gate rewrote (empty = green) |
| Test | Set of failing test IDs / names |
| Coverage | Observed percentage + sorted set of under-covered SF files |
Definitions:
Fixed order: analyze → format → test → coverage. Two rules govern it:
lcov.info after a compile
failure. Format runs after analyze so its reformatting does not churn over
code that analyze's applyFixes is about to rewrite.mcp__dart__analyze_files with applyFixes: true so quick fixes are
applied before diagnostics return. roots takes [{ root: "file:///abs/path" }]
— a file: URI of the package root. There is no recursive flag; the skill
enumerates package roots itself and passes each.analyze.sh hook fires on every
Edit/Write and exits 2 (blocking) when a fix introduces a new analyze error.
Treat that rejection as analyze-gate feedback in the same round, not a separate
failure mode: the edit did not land, so revise it.mcp__dart__dart_format each round. roots takes the same
[{ root: "file:///abs/path" }] shape as analyze_files; omit the optional
paths so it formats the whole package in place. That makes the gate
observation-based (it catches manual edits and pre-existing drift, not just
files the loop edited) and self-fixing (one call leaves the package green; a
second call reports zero changes).Formatted N files (M changed); the gate is green only when M is 0. On a
round where M is non-zero the files are already fixed, so re-run the gate next
round to observe the 0 rather than declaring it green from the fix.format.sh
hook fires only on files the loop edits via Edit/Write. A hand-edited or
pre-existing unformatted file the loop never touches would otherwise pass
green-gate and then fail CI. The whole-package format closes that gap.mcp__very-good-cli__test with coverage: true, min_coverage: <target>,
check_ignore: true, and the exclude_coverage glob (below).dart to let the tool auto-detect (Flutter is run
when a Flutter project is detected). Pass dart: true only for a pure Dart
package the tool would otherwise misclassify.directory — pass it when the package is not at the workspace root
(monorepo sub-packages); omit it only when pubspec.yaml is at the root.timeout_seconds — always set a cap (e.g. 120). Flutter tests hang
indefinitely when pumpAndSettle() runs without a timeout; the cap kills the
run instead of stalling the loop. A timeout kill is a tool failure, not a test
failure — escalate it per the matrix.The MCP min_coverage result is authoritative for pass/fail. The
coverage/lcov.info parse is advisory — it supplies the displayed
percentage and per-file fix targets.
100 (VGV's house standard), overridable per
invocation (e.g. 80) for legacy or non-template packages. Generated files
leave the denominator via exclude_coverage and check_ignore: true honors
// coverage:ignore, so 100% means 100% of testable, hand-written code.exclude_coverage — **/*.{g,freezed,gen}.dart plus generated and
l10n directories. One glob string (brace expansion; fall back to **/*.g.dart
if a CLI build does not honor it).coverage: true, min_coverage, and check_ignore: true together —
see Core Standards.coverage/lcov.info is missing or below target, follow the decision
tree and parsing rules in references/coverage.md —
it covers the three absence causes, stale-lcov handling, the lcov record fields
(SF/LF/LH/DA), the advisory-mirrors-the-gate rule, and the
check_ignore Dart-only limitation.SF file,
write tests following the testing skill. Prioritize files by uncovered
line count (LF - LH).Stop and surface to the user when:
| Trigger | Detail |
|---|---|
| No progress between rounds | Identical or non-decreasing failure fingerprint |
| Oscillation | The same two gates trade green/red across two rounds |
| Cap reached, gates still red | Terminal — report remaining failures per gate with their fingerprints |
| Real-bug red test | A failure that looks like a genuine product decision rather than a coding mistake |
| Ambiguous fix | Multiple valid resolutions (e.g. change the API vs suppress the lint) — prefer root-cause; escalate when it is a product/API decision |
| Unreachable-code coverage gap | Suggest // coverage:ignore (requires check_ignore: true, Dart-only) rather than chasing 100% |
| Denominator hygiene | A generated file not matched by the exclude glob — widen exclude_coverage, not // coverage:ignore |
| Tool / hook failure | MCP test timeout (timeout_seconds kill), analyzer crash, CLI-missing hook denial (escalate with the install hint dart pub global activate very_good_cli), or a repeated analyze.sh rejection that still blocks a needed edit after revision — a single rejection is in-loop analyze-gate feedback (see Analyze Gate), not an escalation |
When escalating, name the gate that is red — analyze, format, test, or coverage —
then give its fingerprint entries verbatim (diagnosticCode @ file:line for
analyze, failing test names for test, under-covered SF paths for coverage),
the files touched, the iteration count, and the one decision the user must make.
A summary count ("4 errors remain") is not a report; the user cannot act on it.
A standing instruction to keep going does not override a trigger. "Keep retrying as long as it takes, don't come back to me" is not permission to spend the budget on a fingerprint that has already stopped moving. Stop at the trigger, report, and wait.
pubspec.yaml files. The
analyze_files roots set must match the package set
mcp__very-good-cli__test --recursive (recursive: true) covers.<package>/coverage/lcov.info — resolved per discovered root.min_coverage applies to all packages — documented limitation: the
tool schema has no per-package coverage override. State the shared target when
confirming coverage.references/coverage.md — green-gate's coverage-gate
detail (default target, exclude globs, lcov fields, decision tree,
check_ignore, stale lcov).testing skill — test conventions, plus its coverage reference for closing
per-file gaps.© VeryGoodOpenSource, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 2 other files (references) in skills/green-gate of VeryGoodOpenSource/vgv-ai-flutter-plugin.
Open the folder on GitHubat commit 496a3c6
Green Gate next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Green Gate this skillVeryGoodOpenSource/vgv-ai-flutter-plugin | 169 | — | ~4.7k | Automated safety check: Notes | MIT | |
| Test Guidelinesgetsentry/sentry-dart | 873 | — | ~3.1k | Automated safety check: Pass | MIT | |
| Flutter MCP E2E HarnessArenukvern/mcp_flutter | 386 | — | ~2.2k | Automated safety check: Pass | MIT | |
| Mock Call Count Retry Fallbackdivinevideo/divine-mobile | 266 | — | ~1.2k | Automated safety check: Pass | MPL-2.0 | |
| Mockito Stale Mock Silent Trycatch Failuredivinevideo/divine-mobile | 266 | — | ~1.4k | Automated safety check: Pass | MPL-2.0 | |
| Analyze GitHub Flakeflutter/flutter | 179k | — | ~1.1k | Automated safety check: Pass | BSD-3-Clause |
getsentry/sentry-dart
Enforce Sentry Dart/Flutter SDK test conventions for naming, structure, and fixtures.
Arenukvern/mcp_flutter
A skill your agent uses when writing or running repeatable E2E scenarios for Flutter apps as checked-in Dart with the fluttermcpharness package (packages/harness) — build/launch the app, attach to…
divinevideo/divine-mobile
Fix test failures when adding retry/fallback logic causes mock call count mismatches.
divinevideo/divine-mobile
Fix misleading Flutter/Dart test failures where expected data is empty ([]) or default values instead of the mocked response, caused by stale Mockito generated mocks or missing stubs being silently…
flutter/flutter
Expertise in analyzing flake github issues in the flutter/flutter repository.
Aaalice233/Aaalice_NAI_Launcher
管理 Aaalice NAI Launcher 项目专用的 Windows 与 Android Flutter 开发会话。用户提到 PC热重载、安卓热重载、启动/关闭/重建独立命令行窗口、模拟器启动异常或检查双端会话时使用。
VeryGoodOpenSource/vgv-ai-flutter-plugin
Audits or remediates Flutter widgets against WCAG 2.2 conformance levels A, AA, or AAA across iOS, Android, Web, macOS, Windows, and Linux, covering Semantics labels and screen reader output under…
VeryGoodOpenSource/vgv-ai-flutter-plugin
Best practices for Flutter animations using the built-in animation framework, covering implicit animations, explicit AnimationController animations, page transitions, and Material 3 motion tokens.
VeryGoodOpenSource/vgv-ai-flutter-plugin
Best practices for Bloc state management in Flutter/Dart, covering Cubit versus Bloc, event and state naming, sealed classes with Equatable, the Page/View split with BlocProvider, BlocBuilder…
VeryGoodOpenSource/vgv-ai-flutter-plugin
VGV-specific reference for bumping Dart and Flutter SDK constraints across packages, covering pubspec.yaml environment constraints, CI workflow Flutter versions, and SDK upgrade PR preparation.
VeryGoodOpenSource/vgv-ai-flutter-plugin
Best practices for internationalization (i18n) and localization (l10n) in Flutter, using the built-in flutterlocalizations and intl setup with ARB files as the single source of truth.
VeryGoodOpenSource/vgv-ai-flutter-plugin
VGV layered monorepo architecture in Flutter: four layers Data, Repository, Business Logic, and Presentation, unidirectional dependency rules, and model transformation across layers.
Works with
Categories
Drives a Dart or Flutter package fully green through a verify-fix-rerun loop across four gates: analyze, format, test, coverage. Green Gate is an agent skill from VeryGoodOpenSource/vgv-ai-flutter-plugin. Drives a Dart or Flutter package fully green through a verify-fix-rerun loop across four gates: analyze, format, test, coverage.
Green Gate fits situations like: fixing all analyze and test failures; cleaning a package up before a PR; bringing coverage to 100; looping until everything passes.
Run `npx skills add VeryGoodOpenSource/vgv-ai-flutter-plugin --skill green-gate -a claude-code`. Or copy the skill folder (skills/green-gate in VeryGoodOpenSource/vgv-ai-flutter-plugin) into .claude/skills/green-gate in your project. Claude Code loads it when a task matches its description.
Run `npx skills add VeryGoodOpenSource/vgv-ai-flutter-plugin --skill green-gate -a codex`. Or copy the skill folder (skills/green-gate in VeryGoodOpenSource/vgv-ai-flutter-plugin) into .agents/skills/green-gate in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add VeryGoodOpenSource/vgv-ai-flutter-plugin --skill green-gate -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/green-gate, .gemini/skills/green-gate, .github/skills/green-gate and .opencode/skills/green-gate in your project.
Going by SKILL.md and its folder, Green Gate needs the command-line tools its instructions call (dart and flutter). Its frontmatter pre-approves these tools: Bash, Read, Glob, Grep, Edit, Write, mcp__dart__analyze_files, mcp__dart__dart_format, mcp__very-good-cli__test.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Green Gate is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.7k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 750 tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Green Gate: Test Guidelines (getsentry/sentry-dart, 873 stars), Flutter MCP E2E Harness (Arenukvern/mcp_flutter, 386 stars), Mock Call Count Retry Fallback (divinevideo/divine-mobile, 266 stars) and Mockito Stale Mock Silent Trycatch Failure (divinevideo/divine-mobile, 266 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
VeryGoodOpenSource (a GitHub organization) maintains it in VeryGoodOpenSource/vgv-ai-flutter-plugin, which has 169 GitHub stars. The repository holds 15 skills in this directory. The repository was last updated on October 6, 2026.
Source: VeryGoodOpenSource/vgv-ai-flutter-plugin on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.