flame-harness-admob
Phase 7 — analyze the game, decide a rewarded-ad strategy, guide manual AdMob ad-unit creation, and inject google_mobile_ads + ATT/UMP consent code.
Orchestrator — bootstrap a Flutter/Flame game pipeline (idea→playable game) and dispatch each phase skill. Use when starting or continuing a flame-harness run.
$ npx -y skills add tjdrhs90/flutter-flame-harness --skill flame-harness --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/flame-harnessContext preview
The summary Claude sees to decide when to auto-load this skill.
Orchestrator — bootstrap a Flutter/Flame game pipeline (idea→playable game) and dispatch each phase skill. Use when starting or continuing a flame-harness run.
name: flame-harness description: Orchestrator — bootstrap a Flutter/Flame game pipeline (idea→playable game) and dispatch each phase skill. Use when starting or continuing a flame-harness run. argument-hint: "[game idea] [--strict] [--rounds N] [--skip-research] [--skip-admob] [--auto-idea] [--auto-deploy] [--resume]" allowed-tools: [Agent, Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion, Skill]
This skill bootstraps and drives the full Flutter/Flame game pipeline from idea to playable game. All file schemas (`config.md`, `state.md`, `contract.md`, log tables) and the phase transition table are defined in `docs/harness-protocol.md` — refer to that document as the single source of truth. Do not redefine schemas here.
---
Parse the invocation arguments before doing anything else.
| Argument | Config key (in `config.md`) | Default | |---|---|---| | `[game idea]` | `app_idea` | optional — if omitted, research generates & recommends ideas from scratch | | `--strict` | `strict_mode: true` | `false` | | `--rounds N` | `max_rounds: N` | `3` | | `--skip-research` | `skip_research: true` | `false` | | `--skip-admob` | `skip_admob: true` | `false` | | `--auto-idea` | `auto_idea: true` | `false` | | `--auto-deploy` | `auto_deploy: true` | `false` | | `--resume` | (delegates to resume handler; see Resume section) | — |
**Guard:** if `--skip-research` is set AND no idea is given, abort immediately with: `flame-harness: --skip-research needs a game idea (nothing to build without research or an idea).`
Key-to-file mapping follows the `config.md` schema in `docs/harness-protocol.md` Section 1.
`research` (NOT `plan`): the research skill honors `skip_research` by skipping market discovery and idea generation, but it still runs the App Store 4.3 clone-avoidance check on the provided idea and writes the research spec — so the clone check is never silently skipped.
generated concepts and selects the best WITHOUT asking the user. No effect with `--skip-research` (which already takes the idea verbatim — nothing to select).
on QA PASS the pipeline continues straight to deploy (admob→build→screenshot→submit) without stopping for the user to play/approve the game. Default `false` — by default the harness PAUSES after QA so the user can check the built game before deploy. (`--auto-idea --auto-deploy` together = fully hands-off idea→deploy.)
---
Bootstrap runs only when `docs/harness/state.md` does not yet exist.
docs/harness/ docs/harness/handoff/ docs/harness/feedback/ docs/harness/specs/ docs/harness/plans/
Determine `credentials_dir`: use the `--credentials-dir <path>` flag if given, else a `credentials/` directory beside the harness, else `~/AndroidStudioProjects/credentials`. **Never hard-code a company, developer name, contact, or signing identity into the schema or skills** — every such value is the *user's own* and must be sourced at runtime.
Look for `<credentials_dir>/store-metadata.md` and read the `developer`, `ios`, and `android` blocks from it. **If that file does not exist** (e.g. a new user who just installed the plugin), do NOT fall back to any placeholder/sample identity — instead **ask the user** for their own values (company, first/last name, support email, contact phone, privacy-policy URL, support/marketing URL, copyright; and — only when a deploy is intended — Apple `team_id`/`asc_key_id`/`asc_issuer_id`/key path and the Android keystore path/alias). Offer to save them to `<credentials_dir>/store-metadata.md` for reuse. The signing/store-credential answers may be deferred (left blank) until the build/submit phase if the user only wants to generate and play the game now. Then write `docs/harness/config.md` with the full schema from `docs/harness-protocol.md` Section 1.
Populate the game-specific keys from the parsed arguments:
A Claude Code plugin that takes a Flutter/Flame game from raw idea all the way to the app stores.
Phase 7 — analyze the game, decide a rewarded-ad strategy, guide manual AdMob ad-unit creation, and inject google_mobile_ads + ATT/UMP consent code.
Phase 8 — bootstrap signing credentials, generate fastlane config from templates, and build + upload signed IPA (TestFlight) and AAB (internal track).
Phase 4 — propose verifiable completion criteria and mandatory hard gates; reach AGREED (1-pass default, multi-round negotiation in --strict).
Phase 3 — define the Flutter design_tokens.dart spec (palette, typography, spacing), the game's art/visual concept, and the asset/audio sourcing plan.
Phase 6 — skeptical QA. Run the game, watch it, then judge against the contract. Default = functional check; --strict adds quality and edge-case passes.
Phase 5 — build the Flame game in 3 gated sub-phases (core loop → systems+components → UI+content), then self-evaluate against the contract.