--- name: msw-planning description: "MSW (MapleStory Worlds) game-planning mode — for BOTH starting a brand-new game from scratch AND continuing/resuming an in-progress prototype. Narrow the idea with guided questions, ground it in the MSW genre catalog (3 map types, ~180 core mechanic tags, build-effort hints), and produce or advance an implementation-ready GDD / roadmap (markdown). Trigger proactively (even without the word 'planning') whenever the user wants to decide WHAT to build, scope an MVP, or continue/resume a phased build — INCLUDING when a Docs/*-GDD.md or *-Phase*.md already exists and the user says to continue: do NOT treat that as plain implementation and jump straight into the phase doc; a continue/resume runs through this skill's resume flow first. Match triggers by intent, not exact wording — variants like 'what now?', 'where were we?', and their equivalents in ANY language fire it too. A comprehensive build request spanning multiple implementation pieces, made while no GDD exists, is ALSO a planning trigger — not a plain implementation request, with NO 'small/simple game' exception; implementing that without a plan is the exact failure mode this skill prevents. Triggers: 'plan a new game', 'GDD', 'what game should I make', 'scope an MVP', 'planning mode', 'continue my game', 'resume my game', 'what should I work on next', 'next task'. (Plans & manages the game's build across its milestones — GDD · standing milestone roadmap · phase plans · progress · revisions; does NOT write code — implementation (.mlua/.model etc.) uses msw-general/msw-scripting.)" --- # MSW New-Game Planning Mode (msw-planning) ## Purpose When the user is at the "I want to make a game like this" stage, turn it into **what to build + how to build it in MSW**: a guided session produces a **GDD/roadmap**, then the skill **guides the phased build** — detailed Phase plans, progress tracking, and plan revisions — **until each milestone's build is ready to enter full implementation**. Someone who doesn't know game design can just follow the questions; for those who do, it documents decisions fast. ## Core principles (why it works this way) - **Catalog grounding**: MSW is 2D · mLua (a Lua-extension scripting language) · cross-platform, so the space of "what you can build" is bounded. Map a vague idea onto the real genres/map-types/mechanics in [`references/genre-catalog.md`](references/genre-catalog.md) to get a *feasible* plan. Planning from generic game knowledge alone leads to designs MSW can't realize. - **Right-size the build**: the catalog gives a **build-effort hint** (Low / Medium / High) per genre — a signal, not a verdict (baseline 1–5 maps · 10–20 units/items · basic-to-intermediate mLua; **tower defense sits at the top of comfortably-solo**). Use it to set expectations, not to refuse a genre. Size the first build by **build-effort + scope (maps/content), never by a calendar/development-time estimate** — the skill can't know the user's skill level or available hours, so it doesn't promise 'this takes N days/weeks.' **When the user's ambition is large** (a High-effort genre, or many systems/maps, or "I want everything"), don't plan it all at once — **scope the *first build* down to a small playable core (MVP)** and push the rest to later Phases. This applies to any genre. - **Single pass (no ping-pong) + one direction check**: limit user touchpoints to **STEP 1 (batched questions)** and **STEP 3 (direction check)** — don't keep asking back in between. But **never skip STEP 3 (direction check) before writing the GDD**: don't just flash the grounding result and jump straight to the GDD. Once the direction is confirmed, produce the deliverable immediately. - **Standardized deliverable**: drop the result into the fixed GDD structure ([`references/gdd-template.md`](references/gdd-template.md)) as markdown, so the implementation skills can pick it up and carry it to an MVP. - **Single home for "later"**: a GDD covers ONLY its own milestone. Anything beyond it — cut features, later-milestone ideas, a "let's do that someday" request mid-discussion — is recorded **the moment it surfaces** in the standing **milestone roadmap** (`Docs/-Roadmap.md`: a future-milestone slot, or its Backlog when the timing is unknown), and **never parked in the GDD**. One home, no duplication: the roadmap owns everything beyond the current milestone; the GDD owns everything inside it. - **Carry the project forward**: after each deliverable, **propose the next step first** (e.g., "Shall I write the Phase 1 detailed plan next?"). Proceed if the user wants it, stop if they say stop — it's a suggestion, not a push. (This differs from endless mid-document ping-pong — it connects the flow *between* deliverables.) - **Decision gates = selectable choices, not free text**: at each user decision gate — **STEP 3 direction check**, the **Phase handoff** (implement now vs write the next-Phase plan), and the **soft Phase gate** — present the options as a **structured selectable choice** via the agent's multiple-choice UI when available (e.g., Claude Code's `AskUserQuestion`), so the user clicks an option instead of typing a free-text reply. Mark the recommended option but don't force it; if the agent has no such UI, fall back to a clearly enumerated prose choice. ## On startup — check for an existing GDD (resume / new / blocked) A build spans multiple sessions and **milestones — each milestone is one GDD**. Where things live (all project-root, outside RootDesk, to survive `refresh_workspace`): - **Active** GDD + Phase plan → `Docs/`. - **`Docs/-Roadmap.md`** → the game's **standing milestone roadmap** (vision · release criteria · one slot per milestone · Backlog): the cross-milestone direction, created with the M1 GDD, permanent (never archived). It is **not** a GDD — the active milestone's contract stays in its `-M-GDD.md`. - **Completed** GDD → `Archive/` (on milestone completion). - **`Archive/As-built.md`** → the world's running implementation record: a curated current-state map kept by the skill, an **AI / handoff reference, not a user-facing planning doc** (maintained by the [`references/build-management.md`](references/build-management.md) cleanups; seeded via *Brownfield* below). **Before running the flow below, detect the plan files** — check **both** `Docs/` and `Archive/` for a `-M-GDD.md`: - **List the full contents** of those directories (capital `Docs/` / `Archive/`) — a directory-level listing that returns *everything* in them (e.g. the agent's file-lister / `Glob` with `Docs/*`) — then match names ending in `-GDD.md` / `-Phase.md` **yourself, from that listing**. Do **not** detect via a narrowed pattern or content search (a `*-GDD.md` glob or grep is case-sensitive + scope-fragile: `*.md` is top-level only, `docs/` ≠ `Docs/` — a miss silently reads as "no GDD"), and not from memory. - Conclude **"no GDD anywhere" only from genuinely empty `Docs/` + `Archive/` listings.** - If **`Archive/As-built.md`** exists, **read it first** for the current-state map; if **`Docs/-Roadmap.md`** exists, read it alongside for the cross-milestone direction (never mistake it for the active GDD). - Normally there's at most one active GDD; **if several exist, ask which game this is about first**, then apply the rules below. **Gating rule — a "continue" / "next task" / resume request only acts when a plan exists in `Docs/` or `Archive/`** (a `-M-GDD.md` / `-M-Phase.md`, or a prior milestone + `Archive/As-built.md`). If **nothing exists in either**, the request must **not** be treated as a resume and must **not** auto-start the STEP 1 questionnaire — instead: if the request is a **continue / "what next" intent, or the user says they're building on their own existing work** (not a fresh template start), go to *Brownfield* below; otherwise (a new-game or unclear intent) tell the user there's no saved plan and ask whether to start a new game (then STEP 1). **Don't infer brownfield from workspace files** — templates ship samples, so a non-empty workspace is not evidence of prior work. **If a GDD exists, judge how much is actually done from the GDD / Phase-doc task states (`⬜/🟡/✅`) — NOT from workspace files** (templates ship with `.mlua`/`.model`/`.ui`, so file presence is not a reliable progress signal). Then branch: - **The user explicitly asked to continue/resume** → **resume** (steps below), regardless of state. - **Every roadmap & Phase item is `⬜`** (a plan with zero progress) **AND it is the game's first milestone** — no same-`` GDD in `Archive/` **and** the GDD's number is `M1`. (Check this before offering: an archived prior milestone, or an `M2+` number on the current GDD, is by itself proof that this world already contains built work — the zero-progress plan merely sits *on top of* it → that is the `🟡/✅` case below, **not** this one.) → offer a **selectable choice** (see Core principles): **① continue this plan (*[game]*)** / **② discard it and plan a new game**. If they choose discard, **first state exactly which files will be removed** — `Docs/-M-GDD.md`, that game's `Docs/-M-Phase.md`, **and that game's `Docs/-Roadmap.md`** (it was created with the M1 GDD, so it is discarded with it — leaving it behind would feed the discarded game's direction into the next planning session) — only those — delete them, then start fresh from STEP 1. - **Any item is `🟡` or `✅` — or the GDD is all-`⬜` but a prior milestone of this game exists** (same-`` GDD in `Archive/`, or an `M2+` number) — i.e., there is in-progress or already-built implementation in *this* world → do **NOT** discard and do **NOT** plan a new game here. **Inform** the user that this world already has a prototype underway, and that a genuinely new game must be built in a **new world** — this skill **cannot create a world**, so the user creates one and runs the skill there — then **stop**. (If they actually meant to continue this one, resume instead. Reworking a zero-progress next-milestone *plan* is a plan revision on top of `Archive/As-built.md` — still this game, never a new one.) - **When the state is unclear** (missing or inconsistent Phase doc, ambiguous progress) → treat it as the `🟡/✅` case (don't discard, don't build over). **To resume** an existing plan: 1. **Read the existing docs FIRST** — `Docs/-M-GDD.md` (+ **every** `Docs/-M-Phase.md` present — several can coexist while earlier Phases await user tests, and their checklists may hold states §6 doesn't have yet; + `Docs/-Roadmap.md` for the cross-milestone context). Do **not** re-run STEP 1–4; the plan already exists. 2. **Reconstruct state**: the GDD's `Stage` line + roadmap `⬜/🟡/✅`, any `🟡 Implemented (untested)` items (flag these for re-test / user confirmation), and recent `§9 Plan changes`. 3. **If the resumed work will touch implementation or any checklist state, Read [`references/build-management.md`](references/build-management.md) in full now** (see the hard gate under STEP 6) — resuming is the read-chain's weakest point, because the docs were written by past sessions. While reading the docs, also **modernize stale AI notes**: if a `Docs/` GDD/Phase doc's header AI-note predates the current templates (e.g. it lacks the build-management pointer that [`references/gdd-template.md`](references/gdd-template.md) now embeds), update that note line to the current template text as part of reconciling — old docs must not keep steering future sessions down an outdated read-chain. 4. **Briefly restate where things stand** — done so far / current Phase / what's still untested / next step — then continue from there. - If `Docs/` has **no GDD** but `Archive/` has a completed one (+ `Archive/As-built.md`), the previous milestone finished. **Confirm** whether to start a **next milestone** — a new GDD in `Docs/` (`-M-GDD.md`, next number per STEP 5), planned **on top of the milestone roadmap's next slot (+ its Backlog) and `Archive/As-built.md`** — rather than assuming a brand-new game. (Before writing it, **reconcile the record against the workspace — see *Reconcile before a next milestone* below**. Writing the new GDD **promotes** that roadmap slot: its one-line theme expands into the GDD; the roadmap keeps only the one-liner.) - **Phase-doc lifetime**: a Phase doc is deleted only when that Phase is **all-`✅`** (its stage cleanup) — the GDD roadmap is then its record. So the docs still in `Docs/` are the **current** Phase plus any earlier Phase parked at a **`⏳ user-test boundary`** (items still `🟡`, awaiting the user's test), and several can legitimately coexist. A leftover doc whose items are all `✅` is the one case that signals a missed cleanup. - The `Docs/` files are the **source of truth across sessions**: the previous session's chat context does not carry over, so anything not written into the GDD/Phase docs is lost (which is why decisions and states are recorded there). **No GDD in `Docs/` nor `Archive/` → before anything else, *classify the workspace, then decide* — mandatory, including for an explicit "new game" request: never jump straight to STEP 1 without first checking what's already built here.** (*Brownfield* = continuing the user's *own* already-built world; it is **user-driven, never inferred from raw file presence** — but the classification itself is **not** optional.) When real work exists, surface it; how prominently to offer brownfield is then decided by the user's *intent* (below), not the workspace. A non-empty workspace is **not** a brownfield signal — a fresh template already ships scaffolding. **Treat known starter items as *zero progress*** (a known set, **not exhaustive** — template versions change and other templates differ; this is "things known to be scaffolding," not a complete manifest): tile dataset `RectTileData_Henesys`; `@Logic` `UIPopup`, `UIToast`; `@Component` `Monster`, `MonsterAttack`, `PlayerAttack`, `PlayerHit`; the **template monster-AI FSM sample** — `StateComponent` scripts `StateChaseMonster` / `StateMoveMonster` / `StateTypeChase` / `StateTypeWander`, condition scripts `ConditionHasTarget` / `ConditionIsAlive` / `ConditionIsDead` / `ConditionNoTarget`, the `.stateset`s `StateSetChaseMonsterAI` / `StateSetMoveMonsterAI`, and the `Global/` monster models `ChaseMonster` / `MoveMonster` (all shipped by the template into `RootDesk/MyDesk/` + `Global/` and wired into the `*Template` maps — their presence is **not** user-built monster AI); plus the always-present `Global/` defaults — DefaultPlayer, WorldConfig, the starter map. - **Workspace ≈ only starter items (or less)** → fresh project → **proceed to STEP 1, no brownfield prompt.** - **Work clearly *beyond* the starter items** (custom-named systems / maps / datasets / scripts suggesting real implementation) → a real game may be in progress. **How prominently to offer brownfield is decided by the user's *intent*, not the workspace:** - **Continue / "what next" intent** ("what should I do next?", "continue", "where were we?") → continuing the existing work *is* the natural reading → offer **brownfield as the recommended option** (alongside: start a separate new game; or just re-check / improve one specific system). - **Explicit new-game intent** ("I want to make a new game") → **honor it: the new game is the default / recommended choice.** Offer brownfield only as the **last, non-recommended** option (*"…or are you actually continuing a world you've already built?"*) — a safety-net, never recommended, never a mandatory fork that overrides what the user asked. - An explicit "build on my existing work" request → straight to the survey. Brownfield runs only if the user actually picks it. When brownfield is chosen, don't plan in a vacuum — **light structural survey** (`map/` + `RootDesk/MyDesk/` — systems · models · datasets · UI; *structure only, not a line-by-line code read*; deep inspection is msw-general's job), present *"here's what I see already built — correct?"* with `⚠️confirm`, then **seed `Archive/As-built.md`** and plan the first milestone **on top of** the existing world (the milestone roadmap is created with that milestone's GDD as usual — STEP 5). **Reconcile before a next milestone** — when planning a new milestone on top of `Archive/` records (arrived from startup, or just after completing one): `Archive/As-built.md` (or a legacy handoff note) is a **starting hint, not ground truth** — work may have happened in other sessions / manual edits without updating it. **Before writing the new GDD**, run the same light structural survey as *Brownfield* above, but to **verify** the record (not discover from scratch): check the **area the new milestone will touch** — plus a quick scan for obviously-untracked major systems — against what the record claims. If it has **drifted**, **surface it and reconcile with the user first**, **update `Archive/As-built.md`** to match reality, *then* plan on top. This stops a whole GDD being written on a stale premise and the drift only surfacing mid-implementation. ## Flow ### STEP 1 — Guided questions (batched) Don't re-ask what the user already gave; batch only the gaps: 1. **Genre / reference** — what's the feel? Any similar game? (If unsure, start from "what kind of fun do you want?") 2. **Core fun / core loop** — what do you repeat in one session? (e.g., kill enemies → grow → stronger enemies) 3. **Target · platform** — PC/mobile? Solo/multi? 4. **Scope (first build)** — a quick prototype or something bigger? Roughly how many maps / how much content? 5. **Must-haves / cuttable** Batch into ~5 questions. If the user says "you decide," proceed with reasonable defaults but **state the assumptions**. ### STEP 2 — Catalog grounding + feasibility check Read [`references/genre-catalog.md`](references/genre-catalog.md) and: - Find the **closest genre(s)** to the user's idea. - Pull that genre's **recommended map type** and **core mechanic tags**. - Pull the genre's **`MVP:` slice hint** (the smallest playable slice — seed for the scoped-down first build and STEP 4's Phase 1) and **`Growth:` axes** (what a finished core typically adds next — feeds later Phases and future milestones). Adapt them to the user's idea; they are hints, not fixed specs. - **Read the `build-effort` hint** (Low/Medium/High) and gauge the user's ambition. If it's High-effort or the user is asking for a lot at once, say so plainly and **propose a scoped-down first build** (one map · core loop only — start from the genre's `MVP:` hint) that keeps the same fun, with the rest going to later Phases or the milestone roadmap — regardless of genre. - If needed, pick and combine mechanic tags into a one-line concept. ### STEP 3 — Direction check (user confirmation gate) ⚑ Do not skip **Always get the direction confirmed by the user before writing the GDD.** Briefly show the grounding result and **don't jump straight to the GDD** — genre and map type decide the whole stack, so if you write the entire GDD on a wrong choice you have to redo all of it. **Present briefly and ask** the user: - **Recommended direction**: the matched *sub-genre(s)* (1–2 candidates) + **recommended map type ↔ Body** (e.g., RectTile + `KinematicbodyComponent`) + **build-effort hint (Low/Medium/High)** + **one-line concept**. - If it's High-effort or the user is over-scoping, present a **scoped-down first-build (MVP) option** alongside — the same fun in a smaller first slice, with the rest routed to later Phases / the milestone roadmap. - Then ask, presenting the options **as a selectable choice** (see Core principles): **"Shall I build the GDD in this direction? Or are there other candidates / changes?"** - **Only after the user confirms (or chooses)** move to STEP 4. (If they explicitly say "you decide," lock in the recommendation but state in one line what you chose.) - Map type ↔ Body is nailed down here ([`references/msw-mapping.md`](references/msw-mapping.md)). Getting it wrong causes "doesn't move" / `[LEA-3004]` silent failures in implementation. It is *applied* at setup by **building in a map that already has this type if one exists** (e.g., a per-type template); otherwise the user sets it in Maker. The AI never switches a map's type itself (see STEP 5). ### STEP 4 — Produce the GDD/roadmap **In the direction the user confirmed in STEP 3**, write markdown in the [`references/gdd-template.md`](references/gdd-template.md) structure: **one-line concept / key-decisions table / core loop / core systems / system↔MSW mapping / Phase roadmap checklist / milestone-scoped decisions.** - For the system↔MSW mapping, use [`references/msw-mapping.md`](references/msw-mapping.md) to connect each system to `@Logic`/`@Component`/`.model`/`.ui`/dataset (UserDataSet). - Split the roadmap into stages **starting from the smallest playable build (Phase 1)**, like "move, hit, and it breaks." The matched genre's `MVP:` hint (STEP 2) is the natural Phase 1 seed; its `Growth:` axes suggest the later Phases. Track each roadmap item with three states — `⬜ Not started` / `🟡 Implemented (untested)` / `✅ Tested` (all start ⬜; state rules → [`references/build-management.md`](references/build-management.md)). - **The roadmap checklist holds only items *required* for a handoff-ready prototype — and all of them must reach `✅`.** Polish / nice-to-have / later work goes to the **milestone roadmap** (`Docs/-Roadmap.md` — a future-milestone slot, or its Backlog) **at planning time**, never as a checklist item and never parked anywhere in the GDD (see *Single home for "later"*). Discriminator: *would dropping it leave the full-implementation team a more incomplete base?* → required (checklist); *does production polish it anyway?* → milestone roadmap. - For data-heavy games, state "data-driven (UserDataSet/CSV is the source of truth)" in the roadmap. Early Phases may hardcode values for speed, but once the value-set grows or stabilizes, **plan the hardcoded→dataset (UserDataSet/CSV) migration by horizon**: within this milestone → a later-Phase task in GDD §6; beyond it → a **milestone-roadmap entry** (slot or Backlog; §7 keeps only a pointer — an intent written only in GDD prose is buried when the GDD archives) — so balancing/content no longer needs code edits. Include this **only when warranted** (many tunable values · balance iteration expected · content scaling), not for a handful of constants. The dataset itself is authored via `msw-general` (see its `references/dataset.md`). - **Coverage check before saving the GDD**: the §6 Phases must *collectively deliver* the §1 one-line concept (and, for M2+, the promoted roadmap-slot line) — trace each capability those lines claim to the checklist item(s) that will implement it. A claim with no item is a planning hole that no later rule can catch (unplanned tasks leave no `⬜` behind). **Verification limits don't shrink scope**: a flow the AI can't verify alone (real-multiplayer matches, on-device feel, commerce) is still planned as tasks — they will simply end `🟡 needs-user-test` — never silently left out because it can't be auto-verified. If the user agrees to exclude a claimed capability instead, reword §1 / the roadmap slot so the docs stop promising it. - **If the project ships placeholder/sample entities**: include a task to **remove them before the prototype hands off to full implementation** so they don't carry into the real build. **Scope = the WHOLE project, not just the chosen build map** — **any** map in the project may carry its own samples (template-derived maps often do; some ship none), so the task's done-criteria is "**every map inspected and clean**": first **enumerate ALL maps** (a full `map/` listing), then inspect each; one map scanning clean is NOT evidence for the others. **Don't assume fixed names — identify each map's samples by inspection** (often `*Template`-named idle/move/chase monster samples, but names vary by template). They're useful early as AI-pattern references; actual deletion happens during implementation, via MapBuilder removing them from the `.map`. **Unused template maps are handoff residue too**: at handoff, **ask the user whether to delete or keep** each template map the game doesn't use (never delete unconfirmed) — and decide that **before** sample-cleaning them (don't clean a map about to be deleted); "every map clean" then applies to the maps that remain. ### STEP 5 — Save + next step - Save the produced markdown **under the project-root `Docs/`** as **`Docs/-M-GDD.md`** — **``** is a short ASCII (English/romanized) slug (**never the raw non-English title**; CJK/non-ASCII filenames break globbing and cross-platform paths — e.g. `MapleIdle-M1-GDD.md`, not the raw CJK title) and **`` is the milestone number**. **Milestone number**: the first milestone is **M1**; a later milestone takes **(the numerically highest existing `-M-GDD.md` across `Docs/` + `Archive/`) + 1** — *parse the number, don't sort lexically* (so M9 → M10, not M2). The doc's **content stays in the user's language**; only the *filename* is ASCII. Phase docs inherit the same **`-M-` prefix** (STEP 6). Collect all planning deliverables (GDD · phase detail plans) here. Create the folder if missing. Kept as a file, the implementation skills can pick it up and carry it to an MVP. - ⚠️ **Do NOT save under `RootDesk/`.** Maker's `refresh_workspace` cleans up (deletes) non-MSW files (.md etc.) under `RootDesk/`, so files there **vanish** when a refresh runs during implementation/playtesting. Always keep them outside RootDesk (project-root `Docs/`). - **Create the milestone roadmap alongside the M1 GDD** — `Docs/-Roadmap.md` (no `M` in the name; one per game; permanent, never archived). Follow the **'Milestone roadmap template'** in [`references/gdd-template.md`](references/gdd-template.md): one-line **vision** + **release criteria** (what must be true to call the game releasable — criteria, not a feature dump), **one slot per milestone** (M1 = pointer to the active GDD; future M's = one-line theme + assigned features), and a **Backlog** for wanted-but-unslotted items. **Sort everything STEP 2–3 cut from the first build** (Growth axes · trimmed features · the user's "later" wishes) into a future slot or the Backlog. **Scale it to the game**: a single-milestone game's roadmap is a few lines (M1 = release). For a later milestone (M2+), don't create anew — **update** the existing roadmap (promote that slot). - **When the base GDD is done, propose naturally first**: "Shall I write the **Phase 1 detailed plan** next?" → if the user agrees, go straight to STEP 6. - Other branches to offer: if numbers/data-heavy, go to dataset design; if screen-heavy, author UI with `msw-ui-system`; to build right away, start implementation with `msw-general`·`msw-scripting`. The default recommended flow is 'detail Phase 1 → implement.' - **Apply the map type — build in a matching map if one exists, otherwise the user sets it**: the prototype must be built in a map whose `TileMapMode` already equals the decided type. At setup, check existing maps with `MapBuilder.read().getTileMapMode()`, then: - **If a map already matches** — e.g., the project keeps **per-map-type template maps** (one TileMap / RectTile / SideView each) — **build the prototype in that map**, no switch needed (the destructive switch is avoided). *This shortcut applies only when such a matching map/template exists.* - **If no map matches** — no per-type template, or starting from scratch — fall back to the standard policy: **the user switches a map's type in Maker** (msw-general `tile.md`; the AI verifies with `getTileMapMode()` afterward). - **Either way, the AI never switches a map's `TileMapMode` itself.** (If built in a template, its sample `*Template` entities are removed later per the cleanup rule.) - **Rename the build map EARLY when it's a template**: if the prototype will live in a `*Template`-named map, plan a **Phase 1 task to rename it to a game-appropriate ASCII name** *before* real building starts — map references (sector registration · portals · `GetEntityByPath` paths · active-map) accumulate as Phases progress, so the rename is nearly free at Phase 1 and costly at handoff; and a game living in a `*Template`-named map pollutes the template-vs-game classification this skill itself relies on. Done-criteria: file renamed + every reference updated + refresh + entry verified. Mechanics belong to the implementation skills; **if a reference lives in read-only config (`Global/`), that part is the user's Maker action** — same policy as the `TileMapMode` switch. - **Switch the active map to the target map before building** (once it's fixed by either case above): move Maker's **active (open) map** to it with `maker_move_map` (AI-doable) so entity/tile edits and screenshots land on the right map. (This is **not** the forbidden `TileMapMode` switch.) Don't skip silently — otherwise the work targets the wrong map. ### STEP 6 — (Optional) Per-phase detailed plan The base output (STEP 4) goes up to *the full roadmap + per-Phase checklist*. If the user wants the detailed plan for a specific Phase (e.g., "write the Phase 1 detailed plan," "break down stage 1"), generate an additional **detailed-plan markdown** that expands that Phase's checklist items in more depth. - For each task, write: **goal · required systems/components** (`references/msw-mapping.md`) **· data (UserDataSet) · UI · done (verification) criteria · dependencies · skills to reference (predicted — skill + its reference doc, `references/msw-mapping.md` §4)**. Also record, near the top of the Phase doc, a **"Skills to reference (this Phase)"** summary — the implementing session reads it first. - **Generate a status checklist** alongside the tasks — every item starts **Not started** and moves through three states as work proceeds: - `⬜ Not started` — not implemented yet. - `🟡 Implemented (untested)` — implementation done, not yet verified. - `✅ Tested` — implementation AND verification both done. - Follow the **'Per-phase detailed plan template'** in [`references/gdd-template.md`](references/gdd-template.md). - Save: `Docs/-M-Phase.md` (same **`-M-` prefix** as the milestone's GDD — see STEP 5; `` = phase number; project-root `Docs/`, **outside RootDesk** — avoids refresh deletion). - This too goes only up to *detailed planning* — writing actual code (.mlua/.model etc.) is still the job of the implementation skills (msw-general/msw-scripting etc.); those skills update the checklist states as they implement and verify. #### Build management (implementation-time rules) → [`references/build-management.md`](references/build-management.md) The full rules for executing the plan — task-state handling, Phase/milestone completion procedures, and mid-development plan revisions — live in **[`references/build-management.md`](references/build-management.md)**. Read it **in full BEFORE implementing planned tasks, updating any checklist state, completing a Phase or milestone, or applying a plan revision** (pure planning sessions don't need it). **Hard gate: if you are about to edit any `⬜/🟡/✅` marker, run a Phase/milestone completion, or archive/delete a plan doc, and have NOT Read [`references/build-management.md`](references/build-management.md) in full THIS session — STOP and read it first.** Having loaded this SKILL.md (or having read the reference in an earlier session) is not a substitute. Non-negotiable invariants, restated here because breaking them corrupts the record: - States are **`⬜` / `🟡` / `✅` ONLY**, updated in the Phase doc **immediately per task** — never batched to the end, never only in an ephemeral tool, never with invented markers. - **Phase completion and milestone completion each have a MANDATORY cleanup procedure** ([Completed-stage](references/build-management.md#completed-stage-cleanup-mandatory) · [Milestone-complete](references/build-management.md#milestone-complete-cleanup-mandatory): mirror states into GDD §6 → As-built → roadmap → delete/archive). Never delete a Phase doc or archive a GDD without running it. **Completion is measured against the milestone's stated vision, not just the checklist** — the milestone-complete procedure starts with a vision-coverage check, and a milestone whose remaining items all await user tests is **`⏳ user-test pending`**, never "complete" and never a self-invented label. - **Plan-change requests route through the revision flow there**; work beyond the current milestone goes straight to the milestone roadmap — and an intentionally stubbed/blocked code path must gain a tracked item the moment it's written. ## Boundaries (what this skill does NOT do) - It does not write the actual code (.mlua/.model/.map/.ui) — that's the implementation skills' job. This skill **plans and manages the game's build across its milestones** (GDD · milestone roadmap · detailed Phase plans · progress tracking · plan revisions) and hands the code work off to msw-general/msw-scripting etc. - A major improvement/expansion of an already-built, shipped world is out of scope (this skill plans the game's build — a new game and its successive milestones — up to readiness for full implementation). - Reflect MSW platform rules (map-type↔Body, 1 unit = 100px, SpriteRUID, etc.) in the plan, but follow msw-general's platform references for the exact implementation rules. ## References - [`references/genre-catalog.md`](references/genre-catalog.md) — 3 map types · build-effort baseline · 71 genres (build-effort hint · recommended map type · core mechanics · per-genre `MVP:`/`Growth:` hint line) · ~180 mechanic tags. **The heart of grounding — always read it in STEP 2.** - [`references/gdd-template.md`](references/gdd-template.md) — the GDD output structure + milestone-roadmap template (STEP 5) + per-phase detailed-plan template (STEP 6) + As-built log template. - [`references/build-management.md`](references/build-management.md) — implementation-time rules: task-state handling · Phase/milestone completion cleanups · plan-revision flow. **Read in full before implementing tasks or touching checklist states** (not needed for pure planning). - [`references/msw-mapping.md`](references/msw-mapping.md) — map-type↔Body table + game-system → MSW component/skill mapping cheat sheet.