Flutter Engineering
Baseline Flutter engineering for HeyEddi apps. Detects which stacks apply and adds the correct tooling: Vue projects should use @project-engineering instead.
Subagents (default)
Delegate scaffold/audit/test scripts to Task shell; repo discovery to explore. Main chat picks stack from audit JSON. See reference/subagents.md.
Stacks
| Stack |
When |
Tooling added |
| Flutter |
Mobile / web frontend |
pubspec.yaml, Riverpod, go_router, Material 3, widget tests |
| FastAPI |
REST API backend |
backend/, pytest, openapi.json, uvicorn on 8090 |
| Firebase |
Firestore / Auth |
firebase.json, rules, emulators |
Declare intent in .heyeddi/stack.json:
{
"frontend": "flutter",
"backends": ["fastapi"],
"web_port": 8085,
"api_port": 8090
}
Or "backends": ["firebase"] or ["fastapi", "firebase"].
Workflow
- Prefs gate (always-on hard):
@heyeddi-setup verify_setup --check before git/CI/commit assumptions; incomplete → run setup until pass.
audit_scaffold: per-layer JSON (flutter / fastapi / firebase).
scaffold_stack --stack auto: fills gaps (flutter, fastapi, firebase, or full).
ensure_flutter + ensure_python (via @project-engineering) as needed.
dev_server_info: Flutter web :8085, API :8090, Firebase emulators :4000.
- Plan gate (always-on):
@engineering-excellence check_engineering_plan --check before feature code.
- Implement features (
@design-handoff-flutter, @flutter-patterns, @dart-type-bridger).
run_tests + run_backend_tests + verify_build.
- Change gate (always-on):
audit_engineering --check (errors fail; warns advisory).
Local dev servers
Set FLUTTER_WEB_URL (or DEV_SERVER_URL) for @visual-auditor when auditing Flutter web.
References
reference/dev-server.md: Flutter web + mobile
reference/fastapi-client.md: Dio + OpenAPI types
reference/firebase-client.md: firebase_core + Firestore
reference/heyeddi-handoff.md: chain @design-handoff-flutter
Related skills
@dart-type-bridger: OpenAPI / Firestore → Dart models
@flutter-patterns: repositories, Riverpod providers, auth
@design-handoff-flutter: screenshot → Material widgets
@project-engineering: shared FastAPI/Firebase scaffolds (invoked by scaffold_stack)
When the task is complete: suggest next skills
When you have finished the user's request for this skill (not after every tool call or subagent phase), suggest what to run next:
Run:
python .agents/skills/heyeddi-orchestrator/scripts/suggest_next_skill.py --current-skill flutter-engineering --project-root .
Add --route /path if you worked a specific route.
Include the script's ### Next step block in your final reply. The user copies the Prompt line into chat (e.g. @heyeddi-design craft /settings).
Pass --mode shape (or craft, audit, etc.) when you know which sub-command just finished.
See @heyeddi-orchestrator → reference/next-skill-handoff.md.
1---2name: flutter-engineering3description: Ensures HeyEddi Flutter projects have the right engineering stack: Flutter (Riverpod, go_router, Material 3), FastAPI backend, or Firebase tooling. Audits gaps, scaffolds as needed, runs flutter test/analyze, documents local dev servers. Use when frontend is Flutter or before design/feature work on a HeyEddi mobile/web app.4---56# Flutter Engineering78Baseline **Flutter engineering** for HeyEddi apps. Detects which stacks apply and adds the correct tooling: Vue projects should use `@project-engineering` instead.910## Subagents (default)1112Delegate scaffold/audit/test scripts to **Task** `shell`; repo discovery to `explore`. Main chat picks stack from audit JSON. See `reference/subagents.md`.1314## Stacks1516| Stack | When | Tooling added |17|-------|------|----------------|18| **Flutter** | Mobile / web frontend | `pubspec.yaml`, Riverpod, go_router, Material 3, widget tests |19| **FastAPI** | REST API backend | `backend/`, pytest, `openapi.json`, uvicorn on **8090** |20| **Firebase** | Firestore / Auth | `firebase.json`, rules, emulators |2122Declare intent in `.heyeddi/stack.json`:2324```json25{26 "frontend": "flutter",27 "backends": ["fastapi"],28 "web_port": 8085,29 "api_port": 809030}31```3233Or `"backends": ["firebase"]` or `["fastapi", "firebase"]`.3435## Workflow36371. **Prefs gate (always-on hard):** `@heyeddi-setup` `verify_setup --check` before git/CI/commit assumptions; incomplete → run setup until pass.382. **`audit_scaffold`**: per-layer JSON (flutter / fastapi / firebase).393. **`scaffold_stack --stack auto`**: fills gaps (`flutter`, `fastapi`, `firebase`, or `full`).404. **`ensure_flutter`** + **`ensure_python`** (via `@project-engineering`) as needed.415. **`dev_server_info`**: Flutter web `:8085`, API `:8090`, Firebase emulators `:4000`.426. **Plan gate (always-on):** `@engineering-excellence` `check_engineering_plan --check` before feature code.437. Implement features (`@design-handoff-flutter`, `@flutter-patterns`, `@dart-type-bridger`).448. **`run_tests`** + **`run_backend_tests`** + **`verify_build`**.459. **Change gate (always-on):** `audit_engineering --check` (errors fail; warns advisory).4647## Local dev servers4849| Stack | Command | URL |50|-------|---------|-----|51| Flutter web | `flutter run -d web-server --web-port=8085 --web-hostname=127.0.0.1` | http://127.0.0.1:8085 |52| Flutter mobile | `flutter run` | device / emulator |53| FastAPI | `cd backend && poetry run uvicorn app.main:app --reload --port 8090` | http://127.0.0.1:8090/docs |54| Firebase | `firebase emulators:start` | http://localhost:4000 |5556Set `FLUTTER_WEB_URL` (or `DEV_SERVER_URL`) for `@visual-auditor` when auditing Flutter web.5758## References5960- `reference/dev-server.md`: Flutter web + mobile61- `reference/fastapi-client.md`: Dio + OpenAPI types62- `reference/firebase-client.md`: firebase_core + Firestore63- `reference/heyeddi-handoff.md`: chain `@design-handoff-flutter`6465## Related skills6667- `@dart-type-bridger`: OpenAPI / Firestore → Dart models68- `@flutter-patterns`: repositories, Riverpod providers, auth69- `@design-handoff-flutter`: screenshot → Material widgets70- `@project-engineering`: shared FastAPI/Firebase scaffolds (invoked by `scaffold_stack`)71## When the task is complete: suggest next skills7273When you have **finished the user's request** for this skill (not after every tool call or subagent phase), suggest what to run next:74751. Run:7677 ```bash78 python .agents/skills/heyeddi-orchestrator/scripts/suggest_next_skill.py --current-skill flutter-engineering --project-root .79 ```8081 Add `--route /path` if you worked a specific route.82832. Include the script's **`### Next step`** block in your **final** reply. The user copies the **Prompt** line into chat (e.g. `@heyeddi-design craft /settings`).8485Pass `--mode shape` (or `craft`, `audit`, etc.) when you know which sub-command just finished.8687See `@heyeddi-orchestrator` → `reference/next-skill-handoff.md`.88