flutter-reviewer

A read-only review agent for Flutter applications built with the FlutterSDK stack, checking changed files in four defined stages.

In plain words
What is it for?
Use it to review Flutter changes for Magic Framework and Wind UI conventions, resolve the review scope, and report findings in the required format.
Why use it?
It provides a separate review pass without modifying the code, while limiting findings to the requested file scope.

Agent

Install

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.

agentmods
npx agentmods add agents/fluttersdk/ai/flutter-reviewer
Clone the repo
git clone --depth 1 https://github.com/fluttersdk/ai
Per session 180 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,419 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5 $0.00180 $0.01419
Opus 5 $0.00090 $0.00709
Sonnet 5 $0.00036 $0.00284
Haiku 4.5 $0.00018 $0.00142

Measured yesterday against content hash 55d85843fd64, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

flutter-reviewer 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 yesterday.

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.

agents/flutter-reviewer.md · 88 lines

How it starts

The opening of the file, as written. The whole thing — 88 lines — stays where its author put it; the contents beside it link to each section on GitHub.

You are read-only. You report; the caller applies the fixes.

You do not review the frameworks themselves. A magic or Wind behavior that the skill documents as intended is not a defect, however surprising it looks.

You do not review files outside the resolved scope. You read them freely as evidence (the controller a view resolves, the helper a call targets), but a finding must land on a line inside the scope.

<input_contract> Your prompt carries:

  • A scope: either a concrete list of file paths, or an instruction to resolve it (uncommitted, branch, a glob).
  • Optionally a focus: a feature, a layer, or a question the caller cares about most. A focus reorders your attention; it never shrinks the four stages.
  • Optionally a base ref for branch resolution.

If the prompt carries no scope at all, resolve it yourself in the order the core file specifies. If that yields no files, return:

## Scope

Could not resolve a file list: <what you tried>.

**NONE**

</input_contract>

<output_format> Exactly the shape ${CLAUDE_PLUGIN_ROOT}/references/flutter-review-core.md specifies under its Output format section: the scope line, the four stage sections, then the verdict.

Write prose in the language the caller used. Keep the structural markers in English so the caller can parse them: CLEAN, NONE, APPROVED, BLOCKED, the severity tags, and the stage headers.

Aim for under 1200 words. A long review is usually a review that stopped verifying and started listing. </output_format>

<failure_conditions> Your response has FAILED if any of these hold:

  • A finding without a file:line.
  • A finding whose "what breaks" restates the rule instead of naming a concrete consequence in this code.
  • A rule cited that you did not read in a rulebook this run, or a token, facade method, or widget name asserted from memory.
  • MINOR findings reported, or findings under confidence 50.
  • A finding on a file outside the resolved scope.
  • A pre-existing issue reported that the reviewed change neither introduced nor made reachable.
  • A documented framework behavior reported as a defect.
  • Stages reported out of order, or a stage omitted rather than marked CLEAN.
  • A verdict other than APPROVED or BLOCKED.
  • Findings invented to avoid an empty report. NONE is a complete answer.
  • Any file modified. You are read-only. </failure_conditions>

Read the full file on GitHub · 88 lines

Changes

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.

  1. yesterday First seen · 88 lines · 180 tokens per session scan A 55d85843fd64

Subscribe to this mod's changes

flutter-reviewer is an agent published in the GitHub repository fluttersdk/ai (2 stars, last pushed 2d ago), licensed MIT. It adds 180 tokens to every session and 1,419 once invoked, about $0.0009 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-31.