[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71BKRG9W37XG3FN33N4FNM2":3,"skill-same:01M71BKRG9W37XG3FN33N4FNM2":120},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":28,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":72,"commitSha":73,"skillDirectory":74,"forksCount":75,"repositoryHtmlUrl":76,"repositoryHomepageUrl":77,"ownerHtmlUrl":78,"ownerBlogUrl":6,"ownerDescription":79,"updatedAt":80,"install":81,"resources":93},"01M71BKRG9W37XG3FN33N4FNM2","unikit-gd-spec",null,"Create and own the master game design document (GAME.md — the authored one-pager plus the generated [gen] system\u002Fflow maps) and the GD-IDS.yaml facts registry — the top-level, big-picture layer of the GDD and the machine interface the code side reads. Use it to write the master spec from a concept or dialogue, import an existing GDD (a file path or URL), edit GAME.md content (\"change a pillar\", \"rework the monetization stance\", \"tweak the loop stack\"), pitch the game (\"pitch\" → PITCH.md), re-decompose the systems (\"remap\"), and — importantly — to add a new system to the design map (\"let's add a new system\", \"add a crafting system to the game design\", \"add this to the GDD\"). This is the structural, map-level layer plus GAME.md content edits. To write or fill in the detailed parameters of one existing system, use \u002Funikit-gd-system; to apply one edit spanning several zones at once use \u002Funikit-gd-apply; to invent a brand-new game concept use \u002Funikit-gd-brainstorm.","NintendaDev\u002Funikit-ai","NintendaDev","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F181320258?v=4","01M71BFH8JJ6EBGRXBWRZK894Y","Dmitrii Vasilev","01M71BFH9T4K66TTBFNV1ZWFN5",22,"MIT","https:\u002F\u002Fgithub.com\u002FNintendaDev\u002Funikit-ai\u002Fblob\u002Fmain\u002Fskills\u002Funikit-gd-spec\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"spec","unikit gd spec","master","registry","edit","write","read","at","change","stack","create","URL","free","pitch","loop","interface","design","mode","re","ids","2026-11-10 10:12:30",false,"---\nname: unikit-gd-spec\ndescription: >-\n  Create and own the master game design document (GAME.md — the authored one-pager plus the\n  generated [gen] system\u002Fflow maps) and the GD-IDS.yaml facts registry — the top-level,\n  big-picture layer of the GDD and the machine interface the code side reads. Use it to write\n  the master spec from a concept or dialogue, import an existing GDD (a file path or URL), edit\n  GAME.md content (\"change a pillar\", \"rework the monetization stance\", \"tweak the loop stack\"),\n  pitch the game (\"pitch\" → PITCH.md), re-decompose the systems (\"remap\"), and — importantly — to\n  add a new system to the design map (\"let's add a new system\", \"add a crafting system to the\n  game design\", \"add this to the GDD\"). This is the structural, map-level layer plus GAME.md\n  content edits. To write or fill in the detailed parameters of one existing system, use\n  \u002Funikit-gd-system; to apply one edit spanning several zones at once use \u002Funikit-gd-apply;\n  to invent a brand-new game concept use \u002Funikit-gd-brainstorm.\nargument-hint: \"[path-to-existing-GDD | URL | free-form description]  (mode inferred; no flags)\"\nallowed-tools:\n  - Read\n  - Write\n  - Edit\n  - Glob\n  - Grep\n  - Bash(ls *)\n  - Bash(find *)\n  - Bash(wc *)\n  - Bash(date *)\n  - WebFetch\n  - AskUserQuestion\ndisable-model-invocation: false\nuser-invocable: true\nmetadata:\n  author: unikit\n  version: \"1.0\"\n  category: game-design\n---\n\n# Game Design — Master Spec & System Map\n\nAuthor the **whole-game truth** and the **map of every system**. This skill owns the\n**spec \u002F map zone** in `.unikit\u002Fgamedesign\u002F` (`gd-principles` → Zone Ownership):\n\n- **`GAME.md`** — the one-page master GDD. This skill owns **both halves**: the\n  **authored one-pager** (premise, pillars, loop stack, win\u002Flose intent, monetization\n  stance, non-goals) and the **generated `[gen]` maps** at the bottom (`## System Map\n  [gen]` \u002F `## Flow Map [gen]` \u002F `## Funnel [gen]`), which are mechanical read-only\n  re-renders of `GD-IDS.yaml`. Both **content edits** to its sections and **structure**\n  edits (which systems exist, remap) live here — there is no separate editor skill.\n- **`GD-IDS.yaml`** — the machine-truth registry of pillars, systems, flows, and facts,\n  **and the interface the code side reads** (`unikit-plan` \u002F `unikit-verify` \u002F\n  `unikit-explore`).\n\nOptionally it produces **`PITCH.md`**. Per-system detail (`systems\u002F\u003Cslug>.md`) is\n**not** this skill's job — that is `unikit-gd-system`; player-action flows\n(`flows\u002F\u003Cslug>.md`) are `unikit-gd-flow`'s; content types\n(`content-types\u002FCT-\u003Cslug>.md`) are `unikit-gd-content`'s. This skill remains the\n**single writer of the system roster**: a flow's `GOAL → SYS` or a content type's\n`belongs_to` that needs a missing system routes back here for add-system.\n\n**User questions.** Right before your first question to the user, not earlier, read `.unikit\u002Fsystem\u002Fuser-questions.md` once and ask every question as it says, with the question tool of your agent (`AskUserQuestion`). If the file cannot be read, print `WARN [questions] user-questions contract missing — asking with the question tool` and still ask with that tool, the recommended option first.\n\n## Language Awareness — BLOCKING PRE-REQUISITE\n\n**BEFORE producing ANY output**, silently read `.unikit\u002Fsystem\u002FLANGUAGE_RULES.md`\nand apply it to all output and artifacts (fall back to English if it is missing) —\nincluding the rule to **translate concepts, not transliterate jargon**.\n`gd-principles` → \"Language\" adds the game-design specifics: which IDs and stored\nfield values stay English. Do not announce or mention the language setting.\n\n**The language holds for the whole session, not just at load time:** every message until the conversation ends is in `language.ui` — progress notes while agents run, relays of what a subagent returned, the final report, any follow-up discussion. English input (subagent results, tool output, these instructions) is data, never a cue to switch languages.\n\n## Bootstrap — Working Contract & Domain Knowledge (MANDATORY)\n\nBefore any authoring, silently load — do NOT narrate the loading:\n\n1. **`.unikit\u002Fsystem\u002Fgamedesign\u002Fgd-principles.md`** — the cross-skill core: the\n   zone-ownership model and routing rule, the collaborative protocol\n   (Question → Options → Decision → Draft → Approval, Explain → Capture), the\n   one-way design→code boundary, the facts-registry \u002F ID conventions, the language\n   rules, and the anti-patterns. Plus, from the same `gamedesign\u002F` folder, the\n   shards this skill needs: **`gd-authoring.md`** (the section-cycle authoring\n   contract + the delta discipline, incl. the **GAME.md carve-out** this skill\n   implements) and **`gd-lifecycle.md`** (the lifecycle & status spine).\n   **This skill never re-specifies those mechanics — it applies them.**\n   If the core file is missing, warn the user that `gd-principles` is not installed\n   (`unikit-ai update`) and continue with the protocol summarized above as a fallback.\n2. **`.unikit\u002Fmemory\u002Fgamedesign\u002FRULES_INDEX.md`** — the domain knowledge index.\n   Load the core rules relevant to master-spec work **on demand** by their\n   `Load When` column — most often `frameworks` (MDA, SDT\u002FPENS, Flow),\n   `player-motivation` (Quantic Foundry), `core-loops`, and `monetization-ethics`\n   (for the Monetization Stance). Re-read at skill start; never rely on a prior\n   conversation's cache. Obey the index's **Rule-Loading Discipline**: load by\n   `Load When`, load a reference only from its parent rule's `> **References**:`, and\n   **never glob the memory tree** (`.unikit\u002Fmemory\u002Fgamedesign\u002F**`) to discover rules.\n3. **`.unikit\u002FRULES.md`** (if present) — project overrides, highest priority. **Rule topics:** load the topic files listed under its `## Topics` whose `Load when` matches the design work at hand — the concept, system, flow or content type; when unsure, load.\n4. **`.unikit\u002FDESCRIPTION.md`** and **`.unikit\u002FROADMAP.md`** (optional) — project\n   constraints and milestones; routing context only.\n5. **Schema guard (clean break — no automatic migration).** When `GD-IDS.yaml`\n   already exists it MUST be `version: 2`. If it is still `version: 1`, **STOP** and\n   report: the design workspace is on the pre-v2 layout — v2 dropped the standalone\n   markdown system-index that v1 kept beside the registry and now renders the maps\n   read-only into `GAME.md` (`## System Map [gen]` \u002F `## Flow Map [gen]` \u002F `## Funnel\n   [gen]`); there is no automatic migration. Tell the user to bump `GD-IDS.yaml` to\n   `version: 2`, fold any rows from the legacy system-index into GAME.md's\n   `## System Map [gen]`, and delete that legacy index file before re-running. Create\n   mode (no `GD-IDS.yaml` yet) skips this check.\n\n**One-way boundary:** this skill never reads `.unikit\u002Fcode\u002F`, project source, or\nbuild artifacts. Importing a GDD reads only the document the user points at.\n\n\u003C!-- unikit:extension-point:bootstrap -->\n\n## Input\n\n`$ARGUMENTS` — a single positional value, free-form, in any language. It may be a\n**file path** or **URL** to an existing GDD, or a **description \u002F intent**. There\nare **no flags**: the mode is inferred (see Step 0). Ambiguity is always resolved\nby asking — never by guessing.\n\n## Workflow\n\n### Step 0: Resolve Mode (no flags)\n\nMode is a function of the **artifact state on disk** and the **intent in the\nprompt** (`gd-principles` \"never guess\" rule). Resolve in this order:\n\n1. **The argument is a file path or URL** (contains `\u002F`, ends in `.md`\u002F`.markdown`,\n   exists on disk, or starts with `http`) → **Import** mode. Confirm the target\n   with the user if the path is uncertain.\n2. The prompt asks for a **pitch** (\"pitch\", \"питч\", \"one-pager to sell it\") →\n   **Pitch** mode.\n3. The prompt asks to **rebuild \u002F re-derive the system map** (\"remap\", \"rebuild\n   the map\", \"пересобери карту\", \"re-decompose systems\") **and `GAME.md` exists**\n   → **Remap** mode.\n4. The prompt asks to **add one system** (\"add a\u002Fnew system\", \"let's add a crafting\n   system\", \"add this to the GDD\", \"добавь систему\", or it names a system **absent\n   from the roster**) **and `GAME.md` exists** → **Add-System** mode. This is\n   distinct from Remap: Remap re-derives the **whole** map, Add-System grafts **one**\n   named system onto the existing map and **never touches the authored one-pager**.\n   (It is the route the internal design lens hands a new mechanic to — see\n   `references\u002Fmode-add-system.md`.)\n5. The prompt asks to **change GAME.md content** (\"change\u002Frework\u002Ftune a pillar, the\n   fantasy, a loop, the monetization stance, an anti-pillar, win\u002Flose intent…\") **and\n   `GAME.md` exists** → **Edit** mode. This is the content-edit zone the spec owns\n   (absorbed under zone-ownership: there is no separate `improve` skill). Editing\n   GAME.md's *authored* sections is Edit; re-deriving the *roster* is Remap\u002FAdd-System.\n6. **`GAME.md` does not exist** (check `.unikit\u002Fgamedesign\u002FGAME.md`) and no import\n   path → **Create** mode.\n7. **`GAME.md` exists** and the intent is none of the above → **ambiguous**. Ask:\n\n   ```\n   The question tool of your agent (`AskUserQuestion`): GAME.md already exists. What do you want to do?\n\n   Options:\n   1. Edit GAME.md content — change a pillar \u002F fantasy \u002F loop \u002F stance (Recommended)\n   2. Rebuild the system map — re-derive the roster from GAME.md\n   3. Add one system to the map\n   4. Create a pitch (PITCH.md)\n   ```\n\n   Importing a different GDD is not an option here: an argument that is a path or a URL already selects Import (Step 0 item 1), and anything else the user wants goes in the free-text answer.\n\nAnnounce the resolved mode in one line, then proceed to Step 2 (load the matching mode body).\n\n### Step 1: Ensure the Workspace\n\nCreate `.unikit\u002Fgamedesign\u002F` (and `systems\u002F`, `flows\u002F`, `concepts\u002F`, `researches\u002F`,\n`reviews\u002F` as needed) if missing. Get today's date in `YYYY-MM-DD` (`date +%F`).\nIf `GD-IDS.yaml` does not yet exist, you will create it from the canonical structure\ndescribed below (the `version: 2` registry); never overwrite an existing registry\nvalue silently.\n\n### Step 2: Load the Mode Body\n\nWith the mode resolved (Step 0) and the workspace ensured (Step 1), load the matching\nmode body on demand and follow it — do **not** keep all six mode bodies in context:\n\n| Mode | Reference body |\n|------|----------------|\n| **Create** | `{{skills_dir}}\u002F{{self_name}}\u002Freferences\u002Fmode-create.md` (also holds Phase A + Phase B, reused below) |\n| **Import** | `{{skills_dir}}\u002F{{self_name}}\u002Freferences\u002Fmode-import.md` |\n| **Edit** | `{{skills_dir}}\u002F{{self_name}}\u002Freferences\u002Fmode-edit.md` |\n| **Remap** | `{{skills_dir}}\u002F{{self_name}}\u002Freferences\u002Fmode-remap.md` |\n| **Add-System** | `{{skills_dir}}\u002F{{self_name}}\u002Freferences\u002Fmode-add-system.md` |\n| **Pitch** | `{{skills_dir}}\u002F{{self_name}}\u002Freferences\u002Fmode-pitch.md` |\n\nImport \u002F Remap \u002F Add-System reuse **Phase A \u002F Phase B** from `mode-create.md` — load\nthat reference too when a body points to it. The shared **Regen-on-Write** contract\n(below) and the **Final report** (below) stay here; every mode body returns to them.\n\n---\n\n## Genre Profile — Create Seed\n\nIn **Create** mode (and only Create — a fresh `GAME.md` from a concept\u002Fdialogue),\nthis skill **resolves and seeds a genre profile**. The user never types a `genres`\ncommand — the spec drives the CLI (the skill-runs-CLI precedent: `\u002Funikit` Step 9.2\n`rules install`). Full mechanics live in `references\u002Fmode-create.md` → **Resolve the\ngenre profile (seed)**; in brief:\n\n1. **Resolve (best-fit).** Read the descriptive `genre:` hint from the seed\n   `CONCEPT.md` (a human intent, not a catalog id). Open the catalog with\n   `unikit-ai genres list` (its output is authoritative — there is NO genre→id map\n   in this skill), and **semantically best-fit** the hint to a profile by\n   `name` \u002F `aliases` \u002F `summary` (e.g. «симулятор ломбарда» → `tycoon`). The hint\n   may deliberately not equal any id.\n2. **Install + record.** Run `unikit-ai genres install \u003Cid>` (idempotent — driven by\n   this skill, not the user), then write the resolved id into the GAME.md header\n   `> **genre_profile**: \u003Cid>` (distinct from the descriptive `genre:` intent in\n   CONCEPT). Read the installed profile JSON\n   (`.unikit\u002Fsystem\u002Fgamedesign\u002Fgenres\u002F\u003Cid>.json`).\n3. **Seed interview.** Seeds (`seed_systems` \u002F `seed_content_types` \u002F\n   `seed_entities` \u002F `seed_resources`) are **proposals**, never auto-written — run a\n   subtractive multi-select + add questions, with per-CT `scale`. `confidence` is the\n   pre-fill knob (high → pre-check more, low → ask more). Kept seeds apply through the\n   existing owner paths: systems → Phase B \u002F spec Add-System; content → **route to\n   `\u002Funikit-gd-content` add-CT**; RES\u002FTRACK\u002FKNOB → their zone-owner.\n4. **Universal baseline.** No `genre:` hint, no concept, or **no profile fits\n   closely** → author WITHOUT a profile (treat as `confidence: low` — ask more,\n   assume less), leave `genre_profile:` empty, install nothing.\n\n**The profile is read-only.** Every divergence (a dropped seed, an added field, a\ncustom CT) lands in **GD-IDS** — the project's custom configuration is GD-IDS (import\nfrom the profile + augment at spec), NEVER an edit to the profile JSON. The genre\nlayer dissolves into the registry, so **verify stays genre-blind** and only\n`unikit-gd-review` reads the profile (its completeness lens).\n\n---\n\n## Regen-on-Write — `## System Map [gen]`\n\n`GAME.md`'s `## System Map [gen]` block is a **mechanical re-render** of `GD-IDS.yaml`\n`systems` (the `RULES_INDEX` model) — never hand-authored. `unikit-gd-spec` is its\nprimary writer: after **any** write that changes the roster or a system's registry\nmetadata (Create Phase B, Add-System, Remap, and a roster-affecting Edit), re-render\nthe block as the **last step**:\n\n1. Read `GD-IDS.yaml` `systems`.\n2. Group by `category` (omit empty categories); within a group sort by `tier`\n   (MVP → Vertical Slice → Alpha → Full Vision) then design order.\n3. One row per system: `ID | System | Tier | Status | Ver | Depends | Doc`.\n   - `Status` mirrors `doc_status`, **overridden** by `deprecated` (from the\n     `status` field) and by the code-set `implemented` (display-only — design never\n     authors it; `gd-lifecycle` → Lifecycle & Status). Append the **`· partial (n\u002Fm)`\n     suffix** when the system's `SYSTEM.md` carries ≥1 `\u003C!-- deferred -->` (the\n     canonical render format from `gd-lifecycle` — the **same** suffix\n     `unikit-gd-verify` emits, so spec's regen-on-write never drops `· partial` before\n     the next verify).\n   - `Ver` is `—` until `skeleton`.\n   - `Doc` is `systems\u002FSYS-\u003Cslug>.md`.\n4. Replace **only** the content between `\u003C!-- gen:system-map -->` and\n   `\u003C!-- \u002Fgen:system-map -->`; never touch the authored one-pager above it. Full\n   map (one row per system); collapse to a single grouped table only as an escape\n   hatch for very large rosters (150+).\n\nThe `## Flow Map [gen]` \u002F `## Funnel [gen]` blocks (rendered by `unikit-gd-flow`, the\nFlow axis) and the `## Content Map [gen]` block (rendered by `unikit-gd-content`, the\nContent axis) are **out of this skill's scope** — leave their template scaffold\nuntouched; this skill renders only `## System Map [gen]`. `unikit-gd-verify`\nindependently re-renders a stale `[gen]` block when its freshness check trips\n(`gd-lifecycle` → Lifecycle & Status) — the render is deterministic, so all writers\nalways agree.\n\n---\n\n## Final: Compact Report & Next Steps\n\nAfter artifacts are written, show a compact report (TIER A — `gd-principles` →\nLanguage: names lead, ids are parenthetical copy-paste tags, status is a plain phrase;\nno summary document, no report file):\n\n```\nMode: \u003Ccreate | import | edit | remap | add-system | pitch>\nWorkspace: .unikit\u002Fgamedesign\u002F\nWritten:\n- GAME.md (vN — \u003Cstill a draft | approved>) — incl. ## System Map [gen] re-rendered\n- GD-IDS.yaml (\u003CP> pillars, \u003CN> systems)\n- [SOURCE.md \u002F PITCH.md when applicable]\n\nSystem map: \u003CN> systems — \u003CM> MVP, … ; design order: \u003Cname> (SYS-\u003Cslug>), \u003Cname> (SYS-\u003Cslug>), …\n```\n\nThen recommend the next step (do not auto-invoke):\n\n- 🧩 Detail the first MVP system — \u002Funikit-gd-system \u003CSYS-slug>\n- 🔍 Review the master spec (fresh session) — \u002Funikit-gd-review\n\n## Ownership Boundaries\n\n- **Owns:** all of `GAME.md` — the **authored one-pager** (its **content edits** under\n  the GAME.md carve-out **and** its **structure**: which systems exist, remap) **and**\n  its generated `## System Map [gen]` block (the primary regenerator). Owns the system\n  roster (Create + Import Phase B, Add-System, Remap) and `GD-IDS.yaml`\n  pillars + systems; optional `PITCH.md`; import `SOURCE.md`. Owns the `GD-IDS`\n  `research:` pointer (written in Add-System when seeded from an explore brief) —\n  `unikit-gd-explore` never writes it. Owns the **genre-profile resolve** (Create\n  seed): best-fit the CONCEPT `genre:` hint to a profile, drive `unikit-ai genres\n  install \u003Cid>`, and write the resolved `> **genre_profile**:` id into GAME.md (the\n  user never types a `genres` command; the profile is read-only — divergence → GD-IDS).\n- **Not this skill:** per-system GDDs (`systems\u002F\u003Cslug>.md`) → `unikit-gd-system`;\n  player-action flows (`flows\u002F\u003Cslug>.md`) and the `## Flow Map [gen]` \u002F `## Funnel\n  [gen]` renders → `unikit-gd-flow`; content types (`content-types\u002FCT-\u003Cslug>.md`) and\n  the `## Content Map [gen]` render → `unikit-gd-content` (a content type registers\n  itself — there is no add-content here); ideation \u002F concepts →\n  `unikit-gd-brainstorm`; research briefs → `unikit-gd-explore`.\n- **Never:** write without explicit approval; change a `GD-IDS.yaml` value\n  silently; delete or renumber an ID; read the code workspace or project source.\n\n## Quick Reference\n\n```\n\u002Funikit-gd-spec \u003Cdescription>            → create GAME.md (one-pager + maps) + GD-IDS.yaml\n\u002Funikit-gd-spec .\u002Fpath\u002Fto\u002FGDD.md         → import an existing GDD (extract, keep SOURCE.md)\n\u002Funikit-gd-spec https:\u002F\u002F…                → import from a URL\n\u002Funikit-gd-spec change PIL-2's design test → edit GAME.md content (GAME.md carve-out)\n\u002Funikit-gd-spec remap the systems        → re-derive the map (GAME.md must exist)\n\u002Funikit-gd-spec add a crafting system    → add-system: graft one system onto the map → seam to detail\n\u002Funikit-gd-spec pitch this game          → produce PITCH.md\n```\n","# Game Design — Master Spec & System Map\n\nAuthor the **whole-game truth** and the **map of every system**. This skill owns the\n**spec \u002F map zone** in `.unikit\u002Fgamedesign\u002F` (`gd-principles` → Zone Ownership):\n\n- **`GAME.md`** — the one-page master GDD. This skill owns **both halves**: the\n  **authored one-pager** (premise, pillars, loop stack, win\u002Flose intent, monetization\n  stance, non-goals) and the **generated `[gen]` maps** at the bottom (`## System Map\n  [gen]` \u002F `## Flow Map [gen]` \u002F `## Funnel [gen]`), which are mechanical read-only\n  re-renders of `GD-IDS.yaml`. Both **content edits** to its sections and **structure**\n  edits (which systems exist, remap) live here — there is no separate editor skill.\n- **`GD-IDS.yaml`** — the machine-truth registry of pillars, systems, flows, and facts,\n  **and the interface the code side reads** (`unikit-plan` \u002F `unikit-verify` \u002F\n  `unikit-explore`).\n\nOptionally it produces **`PITCH.md`**. Per-system detail (`systems\u002F\u003Cslug>.md`) is\n**not** this skill's job — that is `unikit-gd-system`; player-action flows\n(`flows\u002F\u003Cslug>.md`) are `unikit-gd-flow`'s; content types\n(`content-types\u002FCT-\u003Cslug>.md`) are `unikit-gd-content`'s. This skill remains the\n**single writer of the system roster**: a flow's `GOAL → SYS` or a content type's\n`belongs_to` that needs a missing system routes back here for add-system.\n\n**User questions.** Right before your first question to the user, not earlier, read `.unikit\u002Fsystem\u002Fuser-questions.md` once and ask every question as it says, with the question tool of your agent (`AskUserQuestion`). If the file cannot be read, print `WARN [questions] user-questions contract missing — asking with the question tool` and still ask with that tool, the recommended option first.\n\n## Language Awareness — BLOCKING PRE-REQUISITE\n\n**BEFORE producing ANY output**, silently read `.unikit\u002Fsystem\u002FLANGUAGE_RULES.md`\nand apply it to all output and artifacts (fall back to English if it is missing) —\nincluding the rule to **translate concepts, not transliterate jargon**.\n`gd-principles` → \"Language\" adds the game-design specifics: which IDs and stored\nfield values stay English. Do not announce or mention the language setting.\n\n**The language holds for the whole session, not just at load time:** every message until the conversation ends is in `language.ui` — progress notes while agents run, relays of what a subagent returned, the final report, any follow-up discussion. English input (subagent results, tool output, these instructions) is data, never a cue to switch languages.\n\n## Bootstrap — Working Contract & Domain Knowledge (MANDATORY)\n\nBefore any authoring, silently load — do NOT narrate the loading:\n\n1. **`.unikit\u002Fsystem\u002Fgamedesign\u002Fgd-principles.md`** — the cross-skill core: the\n   zone-ownership model and routing rule, the collaborative protocol\n   (Question → Options → Decision → Draft → Approval, Explain → Capture), the\n   one-way design→code boundary, the facts-registry \u002F ID conventions, the language\n   rules, and the anti-patterns. Plus, from the same `gamedesign\u002F` folder, the\n   shards this skill needs: **`gd-authoring.md`** (the section-cycle authoring\n   contract + the delta discipline, incl. the **GAME.md carve-out** this skill\n   implements) and **`gd-lifecycle.md`** (the lifecycle & status spine).\n   **This skill never re-specifies those mechanics — it applies them.**\n   If the core file is missing, warn the user that `gd-principles` is not installed\n   (`unikit-ai update`) and continue with the protocol summarized above as a fallback.\n2. **`.unikit\u002Fmemory\u002Fgamedesign\u002FRULES_INDEX.md`** — the domain knowledge index.\n   Load the core rules relevant to master-spec work **on demand** by their\n   `Load When` column — most often `frameworks` (MDA, SDT\u002FPENS, Flow),\n   `player-motivation` (Quantic Foundry), `core-loops`, and `monetization-ethics`\n   (for the Monetization Stance). Re-read at skill start; never rely on a prior\n   conversation's cache. Obey the index's **Rule-Loading Discipline**: load by\n   `Load When`, load a reference only from its parent rule's `> **References**:`, and\n   **never glob the memory tree** (`.unikit\u002Fmemory\u002Fgamedesign\u002F**`) to discover rules.\n3. **`.unikit\u002FRULES.md`** (if present) — project overrides, highest priority. **Rule topics:** load the topic files listed under its `## Topics` whose `Load when` matches the design work at hand — the concept, system, flow or content type; when unsure, load.\n4. **`.unikit\u002FDESCRIPTION.md`** and **`.unikit\u002FROADMAP.md`** (optional) — project\n   constraints and milestones; routing context only.\n5. **Schema guard (clean break — no automatic migration).** When `GD-IDS.yaml`\n   already exists it MUST be `version: 2`. If it is still `version: 1`, **STOP** and\n   report: the design workspace is on the pre-v2 layout — v2 dropped the standalone\n   markdown system-index that v1 kept beside the registry and now renders the maps\n   read-only into `GAME.md` (`## System Map [gen]` \u002F `## Flow Map [gen]` \u002F `## Funnel\n   [gen]`); there is no automatic migration. Tell the user to bump `GD-IDS.yaml` to\n   `version: 2`, fold any rows from the legacy system-index into GAME.md's\n   `## System Map [gen]`, and delete that legacy index file before re-running. Create\n   mode (no `GD-IDS.yaml` yet) skips this check.\n\n**One-way boundary:** this skill never reads `.unikit\u002Fcode\u002F`, project source, or\nbuild artifacts. Importing a GDD reads only the document the user points at.\n\n\u003C!-- unikit:extension-point:bootstrap -->\n\n## Input\n\n`$ARGUMENTS` — a single positional value, free-form, in any language. It may be a\n**file path** or **URL** to an existing GDD, or a **description \u002F intent**. There\nare **no flags**: the mode is inferred (see Step 0). Ambiguity is always resolved\nby asking — never by guessing.\n\n## Workflow\n\n### Step 0: Resolve Mode (no flags)\n\nMode is a function of the **artifact state on disk** and the **intent in the\nprompt** (`gd-principles` \"never guess\" rule). Resolve in this order:\n\n1. **The argument is a file path or URL** (contains `\u002F`, ends in `.md`\u002F`.markdown`,\n   exists on disk, or starts with `http`) → **Import** mode. Confirm the target\n   with the user if the path is uncertain.\n2. The prompt asks for a **pitch** (\"pitch\", \"питч\", \"one-pager to sell it\") →\n   **Pitch** mode.\n3. The prompt asks to **rebuild \u002F re-derive the system map** (\"remap\", \"rebuild\n   the map\", \"пересобери карту\", \"re-decompose systems\") **and `GAME.md` exists**\n   → **Remap** mode.\n4. The prompt asks to **add one system** (\"add a\u002Fnew system\", \"let's add a crafting\n   system\", \"add this to the GDD\", \"добавь систему\", or it names a system **absent\n   from the roster**) **and `GAME.md` exists** → **Add-System** mode. This is\n   distinct from Remap: Remap re-derives the **whole** map, Add-System grafts **one**\n   named system onto the existing map and **never touches the authored one-pager**.\n   (It is the route the internal design lens hands a new mechanic to — see\n   `references\u002Fmode-add-system.md`.)\n5. The prompt asks to **change GAME.md content** (\"change\u002Frework\u002Ftune a pillar, the\n   fantasy, a loop, the monetization stance, an anti-pillar, win\u002Flose intent…\") **and\n   `GAME.md` exists** → **Edit** mode. This is the content-edit zone the spec owns\n   (absorbed under zone-ownership: there is no separate `improve` skill). Editing\n   GAME.md's *authored* sections is Edit; re-deriving the *roster* is Remap\u002FAdd-System.\n6. **`GAME.md` does not exist** (check `.unikit\u002Fgamedesign\u002FGAME.md`) and no import\n   path → **Create** mode.\n7. **`GAME.md` exists** and the intent is none of the above → **ambiguous**. Ask:\n\n   ```\n   The question tool of your agent (`AskUserQuestion`): GAME.md already exists. What do you want to do?\n\n   Options:\n   1. Edit GAME.md content — change a pillar \u002F fantasy \u002F loop \u002F stance (Recommended)\n   2. Rebuild the system map — re-derive the roster from GAME.md\n   3. Add one system to the map\n   4. Create a pitch (PITCH.md)\n   ```\n\n   Importing a different GDD is not an option here: an argument that is a path or a URL already selects Import (Step 0 item 1), and anything else the user wants goes in the free-text answer.\n\nAnnounce the resolved mode in one line, then proceed to Step 2 (load the matching mode body).\n\n### Step 1: Ensure the Workspace\n\nCreate `.unikit\u002Fgamedesign\u002F` (and `systems\u002F`, `flows\u002F`, `concepts\u002F`, `researches\u002F`,\n`reviews\u002F` as needed) if missing. Get today's date in `YYYY-MM-DD` (`date +%F`).\nIf `GD-IDS.yaml` does not yet exist, you will create it from the canonical structure\ndescribed below (the `version: 2` registry); never overwrite an existing registry\nvalue silently.\n\n### Step 2: Load the Mode Body\n\nWith the mode resolved (Step 0) and the workspace ensured (Step 1), load the matching\nmode body on demand and follow it — do **not** keep all six mode bodies in context:\n\n| Mode | Reference body |\n|------|----------------|\n| **Create** | `{{skills_dir}}\u002F{{self_name}}\u002Freferences\u002Fmode-create.md` (also holds Phase A + Phase B, reused below) |\n| **Import** | `{{skills_dir}}\u002F{{self_name}}\u002Freferences\u002Fmode-import.md` |\n| **Edit** | `{{skills_dir}}\u002F{{self_name}}\u002Freferences\u002Fmode-edit.md` |\n| **Remap** | `{{skills_dir}}\u002F{{self_name}}\u002Freferences\u002Fmode-remap.md` |\n| **Add-System** | `{{skills_dir}}\u002F{{self_name}}\u002Freferences\u002Fmode-add-system.md` |\n| **Pitch** | `{{skills_dir}}\u002F{{self_name}}\u002Freferences\u002Fmode-pitch.md` |\n\nImport \u002F Remap \u002F Add-System reuse **Phase A \u002F Phase B** from `mode-create.md` — load\nthat reference too when a body points to it. The shared **Regen-on-Write** contract\n(below) and the **Final report** (below) stay here; every mode body returns to them.\n\n---\n\n## Genre Profile — Create Seed\n\nIn **Create** mode (and only Create — a fresh `GAME.md` from a concept\u002Fdialogue),\nthis skill **resolves and seeds a genre profile**. The user never types a `genres`\ncommand — the spec drives the CLI (the skill-runs-CLI precedent: `\u002Funikit` Step 9.2\n`rules install`). Full mechanics live in `references\u002Fmode-create.md` → **Resolve the\ngenre profile (seed)**; in brief:\n\n1. **Resolve (best-fit).** Read the descriptive `genre:` hint from the seed\n   `CONCEPT.md` (a human intent, not a catalog id). Open the catalog with\n   `unikit-ai genres list` (its output is authoritative — there is NO genre→id map\n   in this skill), and **semantically best-fit** the hint to a profile by\n   `name` \u002F `aliases` \u002F `summary` (e.g. «симулятор ломбарда» → `tycoon`). The hint\n   may deliberately not equal any id.\n2. **Install + record.** Run `unikit-ai genres install \u003Cid>` (idempotent — driven by\n   this skill, not the user), then write the resolved id into the GAME.md header\n   `> **genre_profile**: \u003Cid>` (distinct from the descriptive `genre:` intent in\n   CONCEPT). Read the installed profile JSON\n   (`.unikit\u002Fsystem\u002Fgamedesign\u002Fgenres\u002F\u003Cid>.json`).\n3. **Seed interview.** Seeds (`seed_systems` \u002F `seed_content_types` \u002F\n   `seed_entities` \u002F `seed_resources`) are **proposals**, never auto-written — run a\n   subtractive multi-select + add questions, with per-CT `scale`. `confidence` is the\n   pre-fill knob (high → pre-check more, low → ask more). Kept seeds apply through the\n   existing owner paths: systems → Phase B \u002F spec Add-System; content → **route to\n   `\u002Funikit-gd-content` add-CT**; RES\u002FTRACK\u002FKNOB → their zone-owner.\n4. **Universal baseline.** No `genre:` hint, no concept, or **no profile fits\n   closely** → author WITHOUT a profile (treat as `confidence: low` — ask more,\n   assume less), leave `genre_profile:` empty, install nothing.\n\n**The profile is read-only.** Every divergence (a dropped seed, an added field, a\ncustom CT) lands in **GD-IDS** — the project's custom configuration is GD-IDS (import\nfrom the profile + augment at spec), NEVER an edit to the profile JSON. The genre\nlayer dissolves into the registry, so **verify stays genre-blind** and only\n`unikit-gd-review` reads the profile (its completeness lens).\n\n---\n\n## Regen-on-Write — `## System Map [gen]`\n\n`GAME.md`'s `## System Map [gen]` block is a **mechanical re-render** of `GD-IDS.yaml`\n`systems` (the `RULES_INDEX` model) — never hand-authored. `unikit-gd-spec` is its\nprimary writer: after **any** write that changes the roster or a system's registry\nmetadata (Create Phase B, Add-System, Remap, and a roster-affecting Edit), re-render\nthe block as the **last step**:\n\n1. Read `GD-IDS.yaml` `systems`.\n2. Group by `category` (omit empty categories); within a group sort by `tier`\n   (MVP → Vertical Slice → Alpha → Full Vision) then design order.\n3. One row per system: `ID | System | Tier | Status | Ver | Depends | Doc`.\n   - `Status` mirrors `doc_status`, **overridden** by `deprecated` (from the\n     `status` field) and by the code-set `implemented` (display-only — design never\n     authors it; `gd-lifecycle` → Lifecycle & Status). Append the **`· partial (n\u002Fm)`\n     suffix** when the system's `SYSTEM.md` carries ≥1 `\u003C!-- deferred -->` (the\n     canonical render format from `gd-lifecycle` — the **same** suffix\n     `unikit-gd-verify` emits, so spec's regen-on-write never drops `· partial` before\n     the next verify).\n   - `Ver` is `—` until `skeleton`.\n   - `Doc` is `systems\u002FSYS-\u003Cslug>.md`.\n4. Replace **only** the content between `\u003C!-- gen:system-map -->` and\n   `\u003C!-- \u002Fgen:system-map -->`; never touch the authored one-pager above it. Full\n   map (one row per system); collapse to a single grouped table only as an escape\n   hatch for very large rosters (150+).\n\nThe `## Flow Map [gen]` \u002F `## Funnel [gen]` blocks (rendered by `unikit-gd-flow`, the\nFlow axis) and the `## Content Map [gen]` block (rendered by `unikit-gd-content`, the\nContent axis) are **out of this skill's scope** — leave their template scaffold\nuntouched; this skill renders only `## System Map [gen]`. `unikit-gd-verify`\nindependently re-renders a stale `[gen]` block when its freshness check trips\n(`gd-lifecycle` → Lifecycle & Status) — the render is deterministic, so all writers\nalways agree.\n\n---\n\n## Final: Compact Report & Next Steps\n\nAfter artifacts are written, show a compact report (TIER A — `gd-principles` →\nLanguage: names lead, ids are parenthetical copy-paste tags, status is a plain phrase;\nno summary document, no report file):\n\n```\nMode: \u003Ccreate | import | edit | remap | add-system | pitch>\nWorkspace: .unikit\u002Fgamedesign\u002F\nWritten:\n- GAME.md (vN — \u003Cstill a draft | approved>) — incl. ## System Map [gen] re-rendered\n- GD-IDS.yaml (\u003CP> pillars, \u003CN> systems)\n- [SOURCE.md \u002F PITCH.md when applicable]\n\nSystem map: \u003CN> systems — \u003CM> MVP, … ; design order: \u003Cname> (SYS-\u003Cslug>), \u003Cname> (SYS-\u003Cslug>), …\n```\n\nThen recommend the next step (do not auto-invoke):\n\n- 🧩 Detail the first MVP system — \u002Funikit-gd-system \u003CSYS-slug>\n- 🔍 Review the master spec (fresh session) — \u002Funikit-gd-review\n\n## Ownership Boundaries\n\n- **Owns:** all of `GAME.md` — the **authored one-pager** (its **content edits** under\n  the GAME.md carve-out **and** its **structure**: which systems exist, remap) **and**\n  its generated `## System Map [gen]` block (the primary regenerator). Owns the system\n  roster (Create + Import Phase B, Add-System, Remap) and `GD-IDS.yaml`\n  pillars + systems; optional `PITCH.md`; import `SOURCE.md`. Owns the `GD-IDS`\n  `research:` pointer (written in Add-System when seeded from an explore brief) —\n  `unikit-gd-explore` never writes it. Owns the **genre-profile resolve** (Create\n  seed): best-fit the CONCEPT `genre:` hint to a profile, drive `unikit-ai genres\n  install \u003Cid>`, and write the resolved `> **genre_profile**:` id into GAME.md (the\n  user never types a `genres` command; the profile is read-only — divergence → GD-IDS).\n- **Not this skill:** per-system GDDs (`systems\u002F\u003Cslug>.md`) → `unikit-gd-system`;\n  player-action flows (`flows\u002F\u003Cslug>.md`) and the `## Flow Map [gen]` \u002F `## Funnel\n  [gen]` renders → `unikit-gd-flow`; content types (`content-types\u002FCT-\u003Cslug>.md`) and\n  the `## Content Map [gen]` render → `unikit-gd-content` (a content type registers\n  itself — there is no add-content here); ideation \u002F concepts →\n  `unikit-gd-brainstorm`; research briefs → `unikit-gd-explore`.\n- **Never:** write without explicit approval; change a `GD-IDS.yaml` value\n  silently; delete or renumber an ID; read the code workspace or project source.\n\n## Quick Reference\n\n```\n\u002Funikit-gd-spec \u003Cdescription>            → create GAME.md (one-pager + maps) + GD-IDS.yaml\n\u002Funikit-gd-spec .\u002Fpath\u002Fto\u002FGDD.md         → import an existing GDD (extract, keep SOURCE.md)\n\u002Funikit-gd-spec https:\u002F\u002F…                → import from a URL\n\u002Funikit-gd-spec change PIL-2's design test → edit GAME.md content (GAME.md carve-out)\n\u002Funikit-gd-spec remap the systems        → re-derive the map (GAME.md must exist)\n\u002Funikit-gd-spec add a crafting system    → add-system: graft one system onto the map → seam to detail\n\u002Funikit-gd-spec pitch this game          → produce PITCH.md\n```\n",{"name":5,"metadata":54,"description":7,"allowed-tools":58,"argument-hint":70,"user-invocable":71,"disable-model-invocation":50},{"author":55,"version":56,"category":57},"unikit","1.0","game-design",[59,60,61,62,63,64,65,66,67,68,69],"Read","Write","Edit","Glob","Grep","Bash(ls *)","Bash(find *)","Bash(wc *)","Bash(date *)","WebFetch","AskUserQuestion","[path-to-existing-GDD | URL | free-form description]  (mode inferred; no flags)",true,"main","ae3c6dfffd26d9b45b9d96d71ba2c122c50b67ae","skills\u002Funikit-gd-spec",1,"https:\u002F\u002Fgithub.com\u002FNintendaDev\u002Funikit-ai","https:\u002F\u002Funikit.nintenda.dev","https:\u002F\u002Fgithub.com\u002FNintendaDev","Unity Developer. Building games and UniKit AI","2026-11-08 15:05:51",{"source":8,"skillName":5,"commands":82,"prompt":92,"zipAvailable":71},[83,86,89],{"tool":84,"command":85},"npx","npx skills add NintendaDev\u002Funikit-ai --skill unikit-gd-spec",{"tool":87,"command":88},"bunx","bunx skills add NintendaDev\u002Funikit-ai --skill unikit-gd-spec",{"tool":90,"command":91},"pnpm","pnpm dlx skills add NintendaDev\u002Funikit-ai --skill unikit-gd-spec","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FNintendaDev\u002Funikit-ai\u002Fblob\u002Fmain\u002Fskills\u002Funikit-gd-spec\u002FSKILL.md",[94,100,104,108,112,116],{"path":95,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":98,"sourceHtmlUrl":99},"references\u002Fmode-add-system.md","REFERENCE","参考文档",4609,"https:\u002F\u002Fgithub.com\u002FNintendaDev\u002Funikit-ai\u002Fblob\u002Fmain\u002Fskills\u002Funikit-gd-spec\u002Freferences\u002Fmode-add-system.md",{"path":101,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":102,"sourceHtmlUrl":103},"references\u002Fmode-create.md",12680,"https:\u002F\u002Fgithub.com\u002FNintendaDev\u002Funikit-ai\u002Fblob\u002Fmain\u002Fskills\u002Funikit-gd-spec\u002Freferences\u002Fmode-create.md",{"path":105,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":106,"sourceHtmlUrl":107},"references\u002Fmode-edit.md",2426,"https:\u002F\u002Fgithub.com\u002FNintendaDev\u002Funikit-ai\u002Fblob\u002Fmain\u002Fskills\u002Funikit-gd-spec\u002Freferences\u002Fmode-edit.md",{"path":109,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":110,"sourceHtmlUrl":111},"references\u002Fmode-import.md",2850,"https:\u002F\u002Fgithub.com\u002FNintendaDev\u002Funikit-ai\u002Fblob\u002Fmain\u002Fskills\u002Funikit-gd-spec\u002Freferences\u002Fmode-import.md",{"path":113,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":114,"sourceHtmlUrl":115},"references\u002Fmode-pitch.md",854,"https:\u002F\u002Fgithub.com\u002FNintendaDev\u002Funikit-ai\u002Fblob\u002Fmain\u002Fskills\u002Funikit-gd-spec\u002Freferences\u002Fmode-pitch.md",{"path":117,"resourceType":96,"resourceTypeDesc":97,"sizeBytes":118,"sourceHtmlUrl":119},"references\u002Fmode-remap.md",1785,"https:\u002F\u002Fgithub.com\u002FNintendaDev\u002Funikit-ai\u002Fblob\u002Fmain\u002Fskills\u002Funikit-gd-spec\u002Freferences\u002Fmode-remap.md",[121,145,170,192,211,236],{"skillNo":122,"name":55,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":129,"publishedAt":49},"01M71BQ00EXGX51PPCDY7VG334","Initialize the UniKit framework in a project. Scans the current project to detect the engine and real tech stack, then generates the base framework documents that give AI agents context about the project — the resolved project description, the architecture doc, AGENTS.md, and the user-editable .unikit\u002Fconfig.yaml. This is the one-time, whole-project setup run before any other unikit skill. Use whenever the user wants to initialize, set up, or onboard the framework, e.g. \"initialize unikit\", \"init the framework\", \"set up unikit\", \"set up the project\", \"configure AI context\", \"scan my project and set it up\", \"bootstrap the project\". It also actualizes the config of a project already set up — say \"update the config\", \"add missing settings\", \"actualize configuration\", \"fix my config\". On a set-up project it offers the actions to choose from.","https:\u002F\u002Fgithub.com\u002FNintendaDev\u002Funikit-ai\u002Fblob\u002Fmain\u002Fskills\u002Funikit\u002FSKILL.md",[126],{"categoryNo":127,"categoryName":128,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[55,130,131,132,133,134,135,38,136,137,35,34,138,33,139,140,141,142,143,144],"project","time","actions","fix","documents","architecture","run","update","config","git","context","initialize","tech","scan","use",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":155,"publishedAt":49},"01M71BPRTMKW7FRAZZBN44NW5Q","unikit-verify","Verify a completed implementation against the plan in .unikit\u002Fcode\u002Fplans\u002F. Checks that every task was implemented, nothing was forgotten, the code compiles, the recorded test run still matches the code, and {{engine_name}} conventions are followed. Use after \u002Funikit-implement completes, or when the user says \"verify\", \"check the work\", \"did we miss anything\". For code review use \u002Funikit-review instead.","https:\u002F\u002Fgithub.com\u002FNintendaDev\u002Funikit-ai\u002Fblob\u002Fmain\u002Fskills\u002Funikit-verify\u002FSKILL.md",[151,154],{"categoryNo":152,"categoryName":153,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":127,"categoryName":128,"taxonomyType":21,"taxonomyTypeDesc":22},[156,157,158,159,160,161,136,35,34,33,139,162,163,144,164,165,166,167,168,169],"unikit verify","verify","powershell","code review","phase","plan","for","system","implement","check","engine","research","name","quality",{"skillNo":171,"name":172,"nameZh":6,"description":173,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":174,"categories":175,"keywords":176,"publishedAt":49},"01M71BPM35M5ETPA4E7EKQYRWD","unikit-todo","Manage the project's TODO list in .unikit\u002FTODO.md — capture work to remember for later, not to do right now. Use it to add a deferred item, mark a todo complete, or show the list. The point is to park tasks you don't want to act on in the moment but don't want to forget. Trigger on \"add a todo\", \"add this to the todo list\", \"put X on the todo list\", \"remind me to...\", \"don't forget to...\", \"note this for later\", \"we should do this later\", \"mark this todo done\", \"what's on the todo list\", \"what's left to do\". This is only for parking reminders — to actually plan or do the work now, use \u002Funikit-plan, \u002Funikit-implement, or \u002Funikit-execute.","https:\u002F\u002Fgithub.com\u002FNintendaDev\u002Funikit-ai\u002Fblob\u002Fmain\u002Fskills\u002Funikit-todo\u002FSKILL.md",[],[177,178,179,180,130,181,182,183,184,185,186,187,161,188,189,190,35,34,33,191],"unikit todo","todo","remind","show","todo list","only","now","you","done","tasks","work","me","reminders","later","act",{"skillNo":193,"name":194,"nameZh":6,"description":195,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":196,"categories":197,"keywords":199,"publishedAt":49},"01M71BPEQDVD7DTGFQBQJQ7JKY","unikit-skills-context","Customize how a built-in unikit skill behaves in this specific project by writing workflow overrides into its skill-context file. These are per-skill workflow rules (e.g. \"\u002Funikit-review should also flag TODO comments\", \"\u002Funikit-implement should run tests after each task\"), not coding conventions. Use when the user wants to change, customize, or override how a particular unikit skill works in this project — \"customize the review skill\", \"make \u002Funikit-fix always add logging here\", \"the implement skill should do X differently\", \"add a skill rule for \u002Funikit-commit\". Use \"validate\" to find stale overrides against updated base skills. For a general coding convention (not tied to one skill) use \u002Funikit-rules; to derive rules from past mistakes use \u002Funikit-evolve.","https:\u002F\u002Fgithub.com\u002FNintendaDev\u002Funikit-ai\u002Fblob\u002Fmain\u002Fskills\u002Funikit-skills-context\u002FSKILL.md",[198],{"categoryNo":127,"categoryName":128,"taxonomyType":21,"taxonomyTypeDesc":22},[200,140,130,133,201,202,203,204,205,206,207,208,178,37,209,136,210,35,34,33],"unikit skills context","coding conventions","writing","when","workflow","commit","review","general coding","text","how","past",{"skillNo":212,"name":213,"nameZh":6,"description":214,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":215,"categories":216,"keywords":224,"publishedAt":49},"01M71BP7K5KEGJV4ASRKPG1DM8","unikit-rules","Add a short, project-specific rule, convention, or override to .unikit\u002FRULES.md — the quick-capture inbox for this project's rules (common rules always load; topic files in .unikit\u002Frules\u002F load when the work matches), automatically loaded by \u002Funikit-implement (later promotable via \u002Funikit-memory migrate-rules). Works only with a rule typed as a prompt — it does NOT read files, folders, URLs, or PDFs. Cross-checks the knowledge base (RULES_INDEX.md) to avoid duplicating core\u002Fstack entries. Use for one-line conventions and corrections: \"add a rule\", \"remember this\", \"convention\", \"always do X\", \"never use Y\", \"from now on do Z\", or when the user corrects agent behavior and wants it remembered; also \"split the rules into topics\" (optimise), \"clean up the rules\" (prune), \"shorten RULES.md\" (compact), by keyword or in plain words. If the user points to a source (file, folder, URL, PDF, article, book) or wants to research\u002Fdocument framework usage, use \u002Funikit-memory; for architecture decisions use ARCHITECTURE.md.","https:\u002F\u002Fgithub.com\u002FNintendaDev\u002Funikit-ai\u002Fblob\u002Fmain\u002Fskills\u002Funikit-rules\u002FSKILL.md",[217,220,223],{"categoryNo":218,"categoryName":219,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理",{"categoryNo":221,"categoryName":222,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",{"categoryNo":127,"categoryName":128,"taxonomyType":21,"taxonomyTypeDesc":22},[225,226,227,228,130,229,230,231,40,232,135,233,208,234,38,190,35,34,33,235],"Rules","unikit rules","quick","PDF","clean","knowledge","files","migrate","batch","knowledge base","prune",{"skillNo":237,"name":238,"nameZh":6,"description":239,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":240,"categories":241,"keywords":242,"publishedAt":49},"01M71BP02S49HHD4R5X6N12C9Q","unikit-rules-registry","Orchestrate the remote rules registry — the shared registry (often connected as a local folder or git repo) that the project's rules are published to and pulled from. Three modes, picked from the user's wording: create scaffolds a new local rules registry (\"create a local rules registry\", \"init a rules registry\"); update migrates\u002Fpromotes local knowledge-base rules from .unikit\u002Fmemory\u002F into the remote registry with automatic semver bumps (\"migrate local rules to the remote registry\", \"promote my rules to the registry\", \"push local rules\", \"publish local rules\", \"update the rules registry\"); sync pulls registry updates back into memory (\"sync the rules registry\", \"pull registry updates\"). Pass \"--module \u003Cid>\" to scope to one knowledge-base module. This skill ONLY orchestrates the CLI (`unikit-ai rules *`) — it never edits .unikit.json or .unikit\u002Fmemory\u002F sources directly.","https:\u002F\u002Fgithub.com\u002FNintendaDev\u002Funikit-ai\u002Fblob\u002Fmain\u002Fskills\u002Funikit-rules-registry\u002FSKILL.md",[],[32,225,243,244,130,245,230,246,232,39,137,35,34,139,247,248,249,250,251,252],"unikit rules registry","shared","local","remote","ai rules","automatic","semver","knowledge-base","as","three"]