fluttersdk-artisan

fluttersdk-artisan is a skill for Claude Code from fluttersdk/ai. It costs 249 tokens per session (5,621 once invoked), scanned C, original, MIT.

A command-line and MCP server toolkit for Flutter development. It lets an agent start and stop the app, hot-reload it, read logs, evaluate Dart expressions, and discover related tools.

In plain words
What is it for?
Use it to run and inspect a Flutter app, reload changes, query the running Dart program, and connect tools that drive or observe the app.
Why use it?
It keeps common development-loop actions inside the agent conversation instead of requiring separate terminal and debugging steps.

Skill for Claude Code

Written for Claude Code: when-to-use in frontmatter. Also seen: mentions Claude Code.

Needs its repository: it runs a file that does not travel with it, so clone the repository first. The line is ./bin/fsa make:command MyCommand # codegen + auto _index.g.dart refresh.

Part of the fluttersdk plugin — 6 skills, 1 command, 2 agents, 1 MCP server shipped together

Good fit Use it to run and inspect a Flutter app, reload changes, query…

Compare 6 skills from other repositories ↓
Install

Getting it into your agent

It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.

Clone the repo
git clone --depth 1 https://github.com/fluttersdk/ai
agentmods
npx agentmods add skills/fluttersdk/ai/fluttersdk-artisan

Made for: Claude Code.

Or install fluttersdk, the plugin that ships this one along with the rest of its 6 skills, 1 command, 2 agents, 1 MCP server.

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

agentmods badge for fluttersdk-artisan

README.md
[![agentmods](https://agentmods.dev/badge/skills/fluttersdk/ai/fluttersdk-artisan.svg)](https://agentmods.dev/skills/fluttersdk/ai/fluttersdk-artisan)
Your own site
<a href="https://agentmods.dev/skills/fluttersdk/ai/fluttersdk-artisan"><img src="https://agentmods.dev/badge/skills/fluttersdk/ai/fluttersdk-artisan.svg" alt="Measured on agentmods" height="20"></a>
Per session 249 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 5,621 The whole file, excluding the scripts and references it only reads on demand.
Security scan C 1 finding. A grade says what 26 rules found in the file — not that it is safe.
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.1 $0.00249 $0.05621
Opus 5 $0.00125 $0.02811
Sonnet 5 $0.00050 $0.01124
Haiku 4.5 $0.00025 $0.00562

Measured 2d ago against content hash 002bafbe9ee2, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-06, from the pricing page.

Security

Grade C, and why

fluttersdk-artisan scanned grade C with 1 finding 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 2d 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.

Recursive force deletehighDestructive command

rm -rf with a variable or a broad path is one typo away from removing the wrong tree.

if it does not, `rm -rf .artisan/.fsa.lock` + retry.
skills/fluttersdk-artisan/SKILL.md · 323 lines

How it starts

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

fluttersdk_artisan

CLI framework and stdio MCP server for Flutter dev loops, designed for LLM agents. The running app exposes a process + VM Service surface plus an MCP server; the agent calls artisan_* tools (or ./bin/fsa <cmd> from a shell) to start the app, hot-reload it, read its logs, evaluate Dart expressions against the running isolate, and discover what other plugin tools (dusk_*, telescope_*) are available, all without leaving the conversation.

This skill assumes the host app already has artisan installed (bin/dispatcher.dart present, lib/app/_plugins.g.dart non-empty, .mcp.json wired). If not, run dart pub add fluttersdk_artisan followed by dart run fluttersdk_artisan install once from the app root, then ./bin/fsa mcp:install to write the MCP entry, then reconnect the client.

1. Core Laws

  1. Two MCP boot paths produce two different tool catalogs. The substrate entry dart run fluttersdk_artisan:mcp (via bin/mcp.dart of the artisan package) forces delegateToConsumer: false and surfaces ONLY the 10 substrate tools (artisan_start, artisan_stop, ..., artisan_tinker). The consumer dispatcher entry ./bin/fsa mcp:serve (via bin/dispatcher.dart of the host app) loads lib/app/_plugins.g.dart and surfaces substrate tools PLUS every plugin's mcpTools() (dusk_* from fluttersdk_dusk, telescope_* from fluttersdk_telescope, etc.). Inspect .mcp.json to see which path is wired; ./bin/fsa mcp:serve is the dev default. Diagnose a missing plugin namespace by calling artisan_list: dusk: / telescope: groups appear only when the dispatcher wrapper loaded the provider.

  2. State lives in a PER-PROJECT session directory, and it is the single source of truth for connectedness. artisan_start writes ~/.artisan/sessions/<hash>/state.json atomically (pid + vmServiceUri

    • FIFO path + device + ports), keyed by the project root, with the log and the FIFO beside it. Two projects can be driven at once and neither overwrites the other. ~/.artisan/state.json still exists as a pointer to whichever session started last, read as a fallback and used by the hand-written recovery recipe, but it is NOT where your session lives. Every connected tool reads the session on dispatch. When absent, the soft-fail contract holds: artisan_status returns {"running": false}, artisan_stop no-ops (exit 0), artisan_tinker and any plugin tool that needs the VM Service return isError: true with an actionable "Run artisan start first" message. The MCP server stays online either way; failed calls do not kill the session.

Read the full file on GitHub · 323 lines

Files

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.

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. 2d ago Changed · +7 lines · +11 tokens per session 002bafbe9ee2
  2. 6d ago First seen · 316 lines · 238 tokens per session scan C 1ab1953f2b58

Subscribe to this mod's changes

fluttersdk-artisan is a skill published in the GitHub repository fluttersdk/ai (2 stars, last pushed 3d ago), licensed MIT. It adds 249 tokens to every session and 5,621 once invoked, about $0.0012 per session on Opus 5. A static security scan graded it C with 1 finding (recursive force delete). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

flutter-internationalization

Add, fix, audit, and maintain Flutter internationalization with gen-l10n, ARB files, AppLocalizations, flutterlocalizations, intl formatting, plural/select messages, RTL support, locale-specific number/date formatting, and localization build errors. Use when asked to add l10n or i18n, translate Flutter UI text…

MADTeacher/mad-agents-skills · 98 tokens

flutter-duit-bdui

Integrate, fix, review, migrate, test, or debug Duit / flutterduit backend-driven UI in Flutter applications. Use when a task mentions DUIT, flutterduit, backend-driven UI, BDUI, server-driven UI, XDriver, DuitViewHost, DuitRegistry, HTTP or WebSocket transports, custom Duit widgets, components, capability delegates…

MADTeacher/mad-agents-skills · 94 tokens

flutter-animations

Add, fix, refactor, debug, test, or explain Flutter animations and motion effects. Use when working with implicit animations such as AnimatedContainer, AnimatedOpacity, AnimatedSwitcher, and TweenAnimationBuilder; explicit animations using AnimationController, Tween, CurvedAnimation, AnimatedWidget, AnimatedBuilder…

MADTeacher/mad-agents-skills · 109 tokens

flutter-drift

Implement, fix, review, migrate, test, or debug Drift persistence in Flutter apps using SQLite, driftflutter, type-safe Dart queries, generated tables, StreamBuilder or Riverpod StreamProvider UI, write operations, transactions, schema migrations, web assets, isolate sharing, and local database testing. Use when a…

MADTeacher/mad-agents-skills · 111 tokens

flutter-navigation

Implement, fix, refactor, review, migrate, or validate Flutter navigation and routing. Use when working with Navigator, MaterialPageRoute, Router API, gorouter, route guards, redirects, ShellRoute or StatefulShellRoute, nested Navigators, passing and returning route data, deep links, Android App Links, iOS Universal…

MADTeacher/mad-agents-skills · 95 tokens

flutter-networking

Implement, fix, debug, review, or refactor Flutter networking code for HTTP/REST APIs, WebSocket realtime flows, authentication and token refresh, request headers, timeouts, retries, JSON parsing, caching, background isolates, repositories, services, and adaptation to existing http, Dio, Retrofit, Chopper, or custom…

MADTeacher/mad-agents-skills · 98 tokens