Build with an AI agent

A Flutter boilerplate your AI coding agent can actually follow

Template369 comes with the files AI coding agents read before they write code. Your agent learns how this app works, then follows those patterns: GetX controllers, the existing navigation, the Firestore conventions and the billing flow, instead of inventing new ones.

Updated

What's in the box

FileWhat it doesRead by
AGENTS.mdThe project brief: folder map, conventions, commands, generated files, a "never do" list, a definition of done and known issues.Codex, Cursor, Claude Code (through CLAUDE.md) and most other agents
CLAUDE.mdOne line, @AGENTS.md, so Claude Code reads the same brief.Claude Code
.claude/skills/ (also at .agents/skills/)Six step-by-step playbooks, listed below.Claude Code, Codex; other agents can be pointed at them
.claude/settings.jsonA format check after each Dart edit, and Claude asks before deploy, FlutterFire and push commands.Claude Code

The six skills

SkillAsk your agent…
rebrand-app"Rebrand this app to Acme Notes, bundle ID com.acme.notes."
connect-firebase"Connect my Firebase project acme-notes-prod." It edits the files and gives you the console commands to run yourself.
add-screen"Add a Reports section to the side menu and bottom bar."
add-firestore-collection"Add a projects collection with a model, a controller stream and security rules."
add-subscription-plan"Add a Team plan at $29/month on Stripe and RevenueCat."
add-cloud-function"Call a new getIntercomUserHash callable from the support screen."

Each skill names the real files to touch and ends with the commands that check the work: dart format, flutter analyze and flutter test.

Why agents need a brief

An agent dropped into an unfamiliar Flutter codebase does what it has seen most often elsewhere. In a GetX app that can mean a Riverpod provider in one file, a go_router route in another, and Firestore field names typed as string literals. Each change compiles, and the codebase slowly turns into three codebases.

AGENTS.md is an open format that coding agents read at the start of a session. Template369's brief states the rules that matter here: GetX only, no named routes, every Firestore key in Constants, timestamps as integer milliseconds, no server secrets in the app, and no deploys or pushes without asking.

Your first session

  1. Set up. Install Flutter 3.47.2 (or use FVM: the version is pinned), then:
    cp .env.example .env
    flutter pub get
    flutter test        # 6 smoke tests, no Firebase needed
  2. Check the agent has the context. Open Claude Code, Codex or Cursor in the folder and ask:
    Read AGENTS.md. In 10 bullets, explain how navigation, state and Firestore data work in this app, and list anything in "Known issues" that affects me.
  3. Make it yours. Run rebrand-app, then connect-firebase. You run flutterfire configure and firebase login yourself, because agents don't act on your Google account.
  4. Build your first feature. For anything bigger than a screen, ask for a plan first: "Plan this, list the files you'll touch, and wait for my OK."

What agents won't do

By design, they don't deploy, push or publish. AGENTS.md tells every agent not to, and Claude Code is set up to ask first. You run firebase deploy, store uploads and git push.

Keep it working

When you change a convention (say you add localization), update AGENTS.md in the same commit. Every future session, yours or your agent's, starts from that file. The full guide with troubleshooting is docs/ai-agents.md in your copy of the repo.

Writing one for a different Flutter app? The AGENTS.md for Flutter guide explains each section and links a free template you can fill in.