Drives a Dart or Flutter package fully green through a verify-fix-rerun loop across four gates: analyze, format, test, coverage.

MITAuto-check: notesMobile

Install Green Gate

skills CLI
$ npx skills add VeryGoodOpenSource/vgv-ai-flutter-plugin --skill green-gate -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install VeryGoodOpenSource/vgv-ai-flutter-plugin green-gate --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
green-gate
GitHub stars
169
Token cost
~4.7k tokens
SKILL.md length
2,002 words
Files
3 (incl. references)
Skills in repo
15
Repo updated
First seen
Licence
MIT

At a glance

Drives a Dart or Flutter package fully green through a verify-fix-rerun loop across four gates: analyze, format, test, coverage.

  • Works in 7 steps: Discover — resolve the package root (the… → Analyze — run mcpdartanalyze_files with… → Format — run mcpdartdart_format on the… → …
  • Fixing all analyze and test failures
  • SKILL.md covers Core Standards, The Loop, Loop State and Gate Precedence, plus 8 more sections
  • Calls dart and flutter

What it does

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.

When your agent uses it

  • Fixing all analyze and test failures
  • Cleaning a package up before a PR
  • Bringing coverage to 100
  • Looping until everything passes

Example prompts

  • “green gate”
  • “make it green”
  • “get CI green”
  • “/green-gate”

Requirements

  • Pre-approved tools (allowed-tools): Bash, Read, Glob, Grep, Edit, Write, mcp__dart__analyze_files, mcp__dart__dart_format, mcp__very-good-cli__test

Workflow steps

7 steps, taken from the first numbered list in SKILL.md.

  1. Discover — resolve the package root (the directory argument or the
  2. Analyze — run mcpdartanalyze_files with applyFixes: true. If any
  3. Format — run mcpdartdart_format on the package root. It reformats
  4. Test — only if analyze is green this round. Run mcpvery-good-clitest
  5. Coverage — only if tests pass this round. The MCP min_coverage result is
  6. Exit — if all four gates are green in this same iteration, confirm
  7. Re-verify — increment the iteration counter, recompute the failure

What it can do on your machine

Read from SKILL.md and the folder at commit 496a3c6. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash
    • Read
    • Glob
    • Grep
    • Edit
    • Write
    • mcp__dart__analyze_files
    • mcp__dart__dart_format
    • mcp__very-good-cli__test

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • dart
    • flutter

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~220
When it runs · the whole SKILL.md, loaded when a task matches
~4.7k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~5.4k

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.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Bash, Read, Glob, Grep, Edit, Write, mcp__dart__analyze_files, mcp__dart__dart_format, mcp__very-goo

Automated 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.

SKILL.md

The full file from VeryGoodOpenSource/vgv-ai-flutter-plugin at commit 496a3c6, republished under its MIT licence (© VeryGoodOpenSource). 2,002 words, ~4,694 tokens.

Download SKILL.mdSave it as .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.
name
green-gate
description
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 package is green. Use it too when the user wants a gate weakened or skipped: lowering the coverage threshold, coverage ignore comments on untested or generated code, skipping analyze and format because they passed earlier, calling a 94% package done, or retrying while the same failures repeat. Prefer it over the single-gate testing or analysis skills.
allowed-tools
Bash, Read, Glob, Grep, Edit, Write, mcp__dart__analyze_files, mcp__dart__dart_format, mcp__very-good-cli__test
argument-hint
[directory]
effort
medium

Green Gate

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.


Core Standards

Apply these to all green-gate work:

  • MCP tools only, never the Bash equivalent — analyze via 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.
  • A plan-only request is still this skill's job — when the user asks which tools, which arguments, or what order the gates run in and does not want a run yet, answer from this skill: the same tool calls (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.
  • Never cache green — re-evaluate every gate every round. Fixing analyze or test failures and writing new test files shifts both formatting and the coverage denominator, so a previously green gate can regress.
  • Exit only on observed numbers — the loop terminates only after a single final iteration in which analyze is clean, format reports zero changes, all tests pass, and min_coverage is satisfied, all observed in the same round.
  • Pass 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.
  • Defer test-writing to the testing skill — when a fix requires authoring tests, follow that skill for structure, mocking, and naming.
  • Fix root causes, not symptoms — never weaken a gate to pass it (do not delete failing assertions, lower the target to dodge work, or // coverage:ignore reachable code). Escalate genuine product/API decisions instead of guessing.
  • Act autonomously on objective failures — analyzer errors, red tests, and coverage gaps are fixed without re-prompting. Escalate only per the matrix.

The Loop

For each package root (see Recursive / Monorepo), run this algorithm:

  1. Discover — resolve the package root (the directory argument or the workspace root); confirm a pubspec.yaml exists. Initialize loop state (iteration counter 0, empty fingerprints, empty touched-files set).
  2. Analyze — run mcp__dart__analyze_files with applyFixes: true. If any errors remain, this is the active gate. Fix, record the fingerprint, go to step 7.
  3. Format — run 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.
  4. Test — only if analyze is green this round. Run mcp__very-good-cli__test with the coverage parameters from Test Gate. If tests fail, fix, record the fingerprint, go to step 7.
  5. Coverage — only if tests pass this round. The MCP 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.
  6. Exit — if all four gates are green in this same iteration, confirm success with the observed numbers and stop. This is the only exit-green path.
  7. Re-verify — increment the iteration counter, recompute the failure fingerprint, check escalation triggers (no progress, oscillation, cap). If a trigger fires, escalate; otherwise loop back to step 2 and re-evaluate every gate.

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.


Loop State

State carried across iterations — without it, "no progress" is undecidable:

StatePurpose
Iteration counterEnforce the cap (default 5, per package)
Per-gate failure fingerprint (prior round)Detect no-progress and oscillation
Files touched this roundDistinguish a no-op round from a no-progress round; populate escalation reports

Fingerprint keys per gate:

GateFingerprint
AnalyzeSorted set of diagnosticCode @ file:line
FormatSet of files the format gate rewrote (empty = green)
TestSet of failing test IDs / names
CoverageObserved percentage + sorted set of under-covered SF files

Definitions:

  • No progress — the current failure fingerprint is identical to the prior round's, or its failure count did not decrease. Escalate.
  • Oscillation — the same two gates trade green/red across two consecutive rounds (e.g. a format fix re-breaks analyze, whose fix re-breaks format). Escalate.

Gate Precedence

Fixed order: analyze → format → test → coverage. Two rules govern it:

  1. A downstream gate is not assessed until the upstream gate is green this round. A red analyzer can make tests fail to compile; coverage is meaningless when tests do not pass — never parse 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.
  2. Every gate is re-evaluated every round; green is never cached. Exit requires all four green in the same final iteration.

Analyze Gate

  • Run 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.
  • The gate is green when zero errors remain. Treat error-severity diagnostics as blocking; address warnings and infos as well when they are within scope of the fix, but do not let an unrelated pre-existing info block the gate.
  • Hook interplay — the PostToolUse 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.

Format Gate

  • Run 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).
  • Read the changed count, not the status — the tool succeeds whether or not it rewrote anything, so a non-error result proves nothing. Its output ends in 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.
  • Why format is a real gate, not just the hook — the PostToolUse 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.

Show full SKILL.md (751 more words)Show less

Test Gate

  • Run mcp__very-good-cli__test with coverage: true, min_coverage: <target>, check_ignore: true, and the exclude_coverage glob (below).
  • Dart vs Flutter — omit 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 gate is green when every test passes. A failing test is fixed autonomously unless it encodes a genuine product decision (escalate per the matrix).

Coverage Gate

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.

  • Default target is 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.
  • Default 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).
  • Pass coverage: true, min_coverage, and check_ignore: true together — see Core Standards.
  • When 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.

Fixing

  • Fix only failing items — address the diagnostics, tests, or under-covered files surfaced this round. Do not refactor unrelated code (YAGNI).
  • Coverage fixes = author tests — for each ranked under-covered SF file, write tests following the testing skill. Prioritize files by uncovered line count (LF - LH).
  • Bound files per round — fix a coherent batch, then re-verify. Re-running the gates after each batch is what makes "no progress" detectable and prevents fixing one gate while silently breaking another.

Escalation

Stop and surface to the user when:

TriggerDetail
No progress between roundsIdentical or non-decreasing failure fingerprint
OscillationThe same two gates trade green/red across two rounds
Cap reached, gates still redTerminal — report remaining failures per gate with their fingerprints
Real-bug red testA failure that looks like a genuine product decision rather than a coding mistake
Ambiguous fixMultiple 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 gapSuggest // coverage:ignore (requires check_ignore: true, Dart-only) rather than chasing 100%
Denominator hygieneA generated file not matched by the exclude glob — widen exclude_coverage, not // coverage:ignore
Tool / hook failureMCP 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.


Recursive / Monorepo

  • All packages must pass — continue on failure (fix every failing package), then confirm each package's result. One package's red gate does not abort the others.
  • Per-package iteration budget — the cap of 5 is per package, not global, so a 12-package monorepo does not exhaust a global budget on package one.
  • Shared package-root discovery — walk for pubspec.yaml files. The analyze_files roots set must match the package set mcp__very-good-cli__test --recursive (recursive: true) covers.
  • lcov path is <package>/coverage/lcov.info — resolved per discovered root.
  • Single min_coverage applies to all packages — documented limitation: the tool schema has no per-package coverage override. State the shared target when confirming coverage.

Additional Resources

  • references/coverage.md — green-gate's coverage-gate detail (default target, exclude globs, lcov fields, decision tree, check_ignore, stale lcov).
  • The 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

Files

SKILL.md and 2 other files (references) in skills/green-gate of VeryGoodOpenSource/vgv-ai-flutter-plugin.

  • SKILL.md
  • agents/openai.yaml
  • references/coverage.md

Open the folder on GitHubat commit 496a3c6

Compare with similar skills

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.

Green Gate compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Green Gate this skillVeryGoodOpenSource/vgv-ai-flutter-plugin169—~4.7kAutomated safety check: NotesMIT
Test Guidelinesgetsentry/sentry-dart873—~3.1kAutomated safety check: PassMIT
Flutter MCP E2E HarnessArenukvern/mcp_flutter386—~2.2kAutomated safety check: PassMIT
Mock Call Count Retry Fallbackdivinevideo/divine-mobile266—~1.2kAutomated safety check: PassMPL-2.0
Mockito Stale Mock Silent Trycatch Failuredivinevideo/divine-mobile266—~1.4kAutomated safety check: PassMPL-2.0
Analyze GitHub Flakeflutter/flutter179k—~1.1kAutomated safety check: PassBSD-3-Clause

Similar skills

  • Test Guidelines

    getsentry/sentry-dart

    Official

    Enforce Sentry Dart/Flutter SDK test conventions for naming, structure, and fixtures.

    873 GitHub stars~3.1k tokensUpdated today
    Testing & QAAuto-check passed
  • Flutter MCP E2E Harness

    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…

    386 GitHub stars~2.2k tokensUpdated 4 days ago
    MobileAuto-check passed
  • Mock Call Count Retry Fallback

    divinevideo/divine-mobile

    Fix test failures when adding retry/fallback logic causes mock call count mismatches.

    266 GitHub stars~1.2k tokensUpdated today
    MobileAuto-check passed
  • 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…

    266 GitHub stars~1.4k tokensUpdated today
    MobileAuto-check passed
  • Analyze GitHub Flake

    flutter/flutter

    Expertise in analyzing flake github issues in the flutter/flutter repository.

    179k GitHub stars~1.1k tokensUpdated today
    MobileAuto-check passed
  • Aaalice Dev Sessions

    Aaalice233/Aaalice_NAI_Launcher

    管理 Aaalice NAI Launcher 项目专用的 Windows 与 Android Flutter 开发会话。用户提到 PC热重载、安卓热重载、启动/关闭/重建独立命令行窗口、模拟器启动异常或检查双端会话时使用。

    187 GitHub stars~902 tokensUpdated 2 days ago
    MobileAuto-check passed

More from VeryGoodOpenSource/vgv-ai-flutter-plugin

All 15 skills in this repo
  • Accessibility

    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…

    169 GitHub stars~4.2k tokensUpdated yesterday
    Auto-check passed
  • Animations

    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.

    169 GitHub stars~3.5k tokensUpdated yesterday
    Auto-check passed
  • Bloc

    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…

    169 GitHub stars~2k tokensUpdated yesterday
    Auto-check passed
  • Dart Flutter SDK Upgrade

    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.

    169 GitHub stars~2.6k tokensUpdated yesterday
    Auto-check: notes
  • Internationalization

    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.

    169 GitHub stars~1.6k tokensUpdated yesterday
    Auto-check passed
  • Layered Architecture

    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.

    169 GitHub stars~4.6k tokensUpdated yesterday
    Auto-check passed

Questions about Green Gate

What does Green Gate do?

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.

When should I use Green Gate?

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.

How do I install Green Gate in Claude Code?

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.

How do I install Green Gate in Codex?

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.

Can I use Green Gate in Cursor, Gemini CLI or GitHub Copilot?

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.

What does Green Gate need to run?

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.

Does Green Gate access the network?

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.

Is Green Gate safe to install?

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.

What licence does Green Gate use?

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.

How many tokens does Green Gate use?

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.

What are the alternatives to Green Gate?

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.

Who maintains Green Gate?

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.