Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Flutter + Firebase Scaffolding Skills

A series of agent skills that scaffold a Flutter + Firebase project end to end — empty directory → tested, emulator-backed app on a strict architecture. Skills are plain SKILL.md + examples; any coding agent that supports the skill format can load them.

  • skills/<name>/ — editable skill source (SKILL.md + examples).
  • dist/<name>.skill — packaged (zipped) skills for install/sharing.
  • AGENTS.md — architecture conventions + pipeline order (read for the contract).

The skills

Skill What it does
create-app-from-prompt Orchestrator. Interviews you → PRD-PRODUCT.md → implements → E2E tests. Entry point for a whole app.
app-architecture-scaffold Layered feature-first lib/ structure (bloc, get_it/injectable, auto_route, domain error enums, fpdart at usecase).
flavors-env-setup dev/staging/prod flavors, per-flavor Firebase projects.
firebase-emulators-setup Local Emulator Suite, flag-guarded wiring.
e2e-test-scaffold Acceptance criteria → integration tests vs emulators.

How to use

Option A — let the agent trigger them

Skills fire from their description. Just describe the goal to the agent:

  • "Build a new Flutter Firebase app for a mood diary" → create-app-from-prompt
  • "Set up clean architecture for this Flutter app" → app-architecture-scaffold
  • "Add dev/staging/prod flavors" → flavors-env-setup
  • "Run Firebase locally / use emulators" → firebase-emulators-setup
  • "Write E2E tests from these acceptance criteria" → e2e-test-scaffold

Or invoke explicitly by name if it doesn't trigger.

Option B — full app in one go

Start with the orchestrator:

"Use create-app-from-prompt to build my app."

It runs, in strict order:

  1. Preflight — checks flutter/dart/firebase CLI, Firebase login + project, loads helper skills.
  2. Interview — asks Description / Features / Acceptance, writes PRD-PRODUCT.md. Sample: skills/create-app-from-prompt/examples/PRD-PRODUCT.md.
  3. Implementationflutter create, architecture, flutterfire configure, packages (examples/pubspec.yaml), per-feature slices.
  4. E2E tests — every acceptance criterion → integration test vs emulator.

Option C — pipeline, one concern at a time

Run the CLI steps, then the skills in order (see AGENTS.md):

flutter create --org com.acme --platforms ios,android my_app   # plain CLI
flutterfire configure --project=<id> --out=lib/firebase_options.dart

then app-architecture-scaffoldflavors-env-setupfirebase-emulators-setupe2e-test-scaffold.

Installing the packaged skills

Install directory for a new project

The SKILL.md format is Anthropic's Agent Skills. Where a folder goes decides its scope. For a new project you're scaffolding, commit them project-scoped so the team shares them via git.

Scope Directory Use when
Project, agent-neutral (recommended) <project-root>/.agents/skills/<name>/ Vendor-neutral; any agent that reads AGENTS.md/.agents/. Committed to git
Project, Claude Code <project-root>/.claude/skills/<name>/ Claude Code specifically; committed to git, shared with the team
Personal ~/.claude/skills/<name>/ Available across all your projects
Plugin bundle <plugin>/skills/<name>/ Distributing as a plugin (namespaced under the plugin)
Other agents the agent's configured skills dir Anything else — check that agent's docs

Project skills load from the skills dir in the start dir and every parent up to the repo root, and take effect within the session (no restart). For a fresh Flutter app, drop the ones you need into <new-app>/.agents/skills/ (agent-neutral) or <new-app>/.claude/skills/ (Claude Code). Paired with the project's AGENTS.md, .agents/skills/ keeps everything under one vendor-neutral tree.

Installing from source or package

Each dist/<name>.skill is a zip of the skill folder (<name>/SKILL.md + examples). Two ways to make an agent see them:

  • Folder (simplest): copy skills/<name>/ into the target skills directory (see table). No packaging needed:
    cp -r skills/create-app-from-prompt <new-app>/.claude/skills/
  • Packaged: import the .skill file via the agent's skill-install flow, or unzip it into the skills directory:
    unzip dist/create-app-from-prompt.skill -d <new-app>/.claude/skills/

Verify: the skill's name appears in the agent's available skills; describe a matching task and confirm it triggers.

Repackaging after edits

Source in skills/ is the truth. After editing a SKILL.md or example, refresh its .skill:

cd skills && zip -rq ../dist/<name>.skill <name> -x '*/.gitkeep'

Conventions (enforced by every skill)

  • Layered: presentation → domain → data. Firebase types only in data; domain framework-free.
  • Repos + datasources: abstract interface class, plain Future, throw on failure. No fpdart.
  • TaskEither<ErrorEnum, T> only at the usecase layer.
  • Domain errors = enums; presentation translates them via localization.
  • Emulators for dev + tests — never hit live Firebase in tests.
  • Every acceptance criterion maps to ≥1 E2E test that verifies real emulator DB state.

About

Production-ready Flutter + Firebase blueprints. Features isolated modules for local emulator setup, automated integration testing, and project scaffolding.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages