tjdrhs90/flutter-flame-harness/flame-harness-plan
Claude Code and agent skill by tjdrhs90/flutter-flame-harness
- community
Checking that the SKILL.md file is still in the repository.
Phase 2 — write the game PRD in the project's default_language (core loop, mechanics, content metrics, win/lose, scope guard), map the lib/ structure, and assign app name, slug, and bundle id.
Install
npx vskill@latest install tjdrhs90/flutter-flame-harness/flame-harness-planSKILL.md
flame-harness-plan
Phase 2 of the flutter-flame-harness pipeline. Reads the research spec and config.md, then produces a comprehensive game PRD in the project's default_language, maps the lib/ directory structure, assigns the app identity (app_name, app_slug, bundle_id), and advances the pipeline state to design.
All file schemas (config.md, state.md, pipeline-log.md) are defined in docs/harness-protocol.md — refer to that document as the single source of truth. Do not redefine schemas here.
Input
1. Read docs/harness/config.md
Extract:
| Key | Use | |
|---|---|---|
app_idea | Refined concept tagline written by the research phase | |
app_name | Display name (may be blank — set it here if so) | |
app_slug | Kebab-case identifier (may be blank — derive it here if so) | |
bundle_id | App bundle ID (may be blank — set it here) | |
default_language | The user's conversation language (set by the orchestrator); the PRD and all copy are written in it |
If config.md does not exist, abort with: flame-harness-plan: docs/harness/config.md not found — run the orchestrator to bootstrap first.
2. Read the latest research spec
Find the most recent file matching docs/harness/specs/*-research.md (sort by filename descending, take the first). If no spec file exists, abort with: flame-harness-plan: no research spec found in docs/harness/specs/ — run flame-harness-research first.
Extract from the spec:
- Chosen concept — title, tagline, core mechanic, differentiator
- Monetisation hook — AdMob integration point (interstitial / rewarded / banner)
- Clone-avoidance verdict — confirm it is SAFE before proceeding
Identity assignment
Derive and assign the app identity before writing the PRD so that the PRD can reference the final values.
app_name
Use the working title from the research spec as the display name. Capitalise each word. Example: "space hop" → "Space Hop".
app_slug
The app_slug is a kebab-case identifier derived from app_name:
- Lowercase the display name.
- Replace all spaces and special characters with hyphens.
- Strip leading/trailing hyphens and collapse consecutive hyphens to one.
- Example:
"Space Hop!"→"space-hop".
The slug is used as the last segment of the bundle ID and as the directory name in CI/CD paths. Do not use underscores — kebab-case only.
bundle_id
The bundle id is part of the app's identity and is decided here, up front (the user sees it in the PRD). Format — reverse-DNS `com.<company>.<appname>`:
<company>=developer.companyfromconfig.md(no built-in default — it comes from the user's
own credentials/store-metadata.md, collected at bootstrap; never a hard-coded company name).
<appname>=app_slugwith all hyphens/underscores removed, lowercase (each segment must be
[a-z0-9]+; hyphens/underscores/uppercase are INVALID and break iOS/Android signing).
So bundle_id = com.<company>.<appname>. Examples: app_slug: space-hop → `com.<company>.spacehop`; app_slug: swing-line → `com.<company>.swingline` (NOT com.<company>.space-hop). State the chosen bundle_id explicitly in the PRD identity section. It must be byte-identical on iOS and Android (docs/harness-protocol.md §1).
orientation
Decide the game's single locked orientation from the concept and record it in the PRD: portrait (default — most casual/one-hand games) or landscape (inherently wide play: side-scroll platformers, twin-stick, landscape racers). The game ships locked to this one orientation (the generator removes the other natively — no rotate-on-launch).
Write to config.md
Use Edit to update config.md with the identity keys + orientation:
Make targeted edits — do not rewrite the entire file.
PRD content
Write the PRD entirely in `default_language` (the language the user is conversing in). Headings and body in that language. The template below shows Korean headings as an example for a Korean project — translate the headings to default_language (e.g. English) when the project language is not Korean. The only exceptions are:
- Code identifiers, file paths, class names, and technical terms that have no local equivalent.
- Section headings may include the English technical term in parentheses after the localized heading.
Use the following structure verbatim. A fresh Claude must be able to fill every section from the research spec alone — no guessing required.
PRD 구조 (required sections)
lib/ structure map
The PRD must include a lib/ directory map section immediately after the scope guard. This map is the authoritative directory structure that the design and generator phases will follow.
Append the following section to the PRD (translated headings are fine; the paths must be exact):
lib/ ├── game/ # FlameGame 서브클래스 및 게임 진입점 │ ├── components/ # Flame Component 클래스 (플레이어, 적, 장애물 등) │ ├── systems/ # 게임 로직 시스템 (충돌, 스폰, 점수 등) │ └── data/ # 레벨 데이터, 적 스탯, 게임 상수 (game_config.dart 포함) ├── screens/ # Flutter 화면 (메인 메뉴, 게임 오버, 설정 등) ├── ui/ # HUD 위젯, 오버레이, 공통 UI 컴포넌트 └── l10n/ # 로컬라이제이션 ARB 파일 (ko.arb, en.arb)
Output
1. Write the PRD
Create docs/harness/plans/<YYYY-MM-DD>-prd.md (use today's UTC date).
If docs/harness/plans/ does not exist, create it before writing.
Write the full PRD in default_language using the structure defined in the PRD content section above, filling every section from the research spec and config.md.
2. Update config.md
Apply the identity keys (app_name, app_slug, bundle_id) via Edit as described in Identity assignment above.
3. Update state.md
Update docs/harness/state.md per the schema in docs/harness-protocol.md §2:
Leave all other keys unchanged. Use Edit for a targeted update.
4. Append to pipeline-log.md
Append one row to docs/harness/pipeline-log.md per the schema in docs/harness-protocol.md §6:
Error handling
- If the research spec is missing or empty, abort with a clear message and set
state.mdto
status: paused, pause_reason: manual_action.
- If
config.mdcannot be read, abort immediately (do not write partial output). - If any required PRD section cannot be filled from the spec, write a clearly marked placeholder
(<!-- TODO: 작성 필요 -->) rather than omitting the section — downstream validators grep for section headings.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/flame-harness-plan/SKILL.md
Popularity
- Repository stars
- 60
- Repository forks
- 5
- 7-day trend score
- 21
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/tjdrhs90/flutter-flame-harness/flame-harness-plan)