Decompose a concept into individual systems, map dependencies, prioritize design order, create the systems index.
复制下面这句话,粘贴给 Claude Code、Codex、Cursor 等 AI 编程工具,它会读取安装说明并在你确认后完成安装。
请阅读 https://ai.atlankj.com/install/asset/gh-map-systems-b9b8dbecc604 ,按照其中的说明把「map-systems」安装到你(当前 AI 工具)中。执行前先告诉我将运行的命令和写入的位置,等我确认。
查看 AI 将读取的安装说明正在读取 GitHub 原文…
内容来自 GitHub 原始文件,由原作者维护。在 GitHub 查看
!bash "${CLAUDE_SKILL_DIR}/../../hooks/yaml-helper.sh" resolve_config --keys review_mode,automation,workflow,docs.density
Resolved above — use as-is; --review overrides review_mode. No block →
defaults in .claude/docs/config-resolution.md.
When this skill is invoked:
Two modes:
/map-systems — Run the full decomposition workflow (Phases 1-5)
to create or update the systems index.next: /map-systems next — Pick the highest-priority undesigned system
from the index and hand off to /design-system (Phase 6).See .claude/docs/director-gates.md for the full check pattern. Individual gate definitions live in .claude/docs/director-gates/[gate-id].md — the spawned agent reads its own gate file; do not read it in the parent session.
Every AskUserQuestion call follows .claude/docs/automation-modes.md
(collaborative asks always · guided major-only · autonomous logs and proceeds;
automation_always_ask categories always prompt).
docs.density — it controls per-section depth, where workflow
controls which sections exist. modes.rigor sets both together; set
docs.density explicitly to vary depth alone: terse = one-line system descriptions;
balanced = a brief paragraph per system + dependency notes (default);
thorough = full system-by-system rationale + relationship analysis. Apply it to
every section you author.
Where the per-system prose goes.
templates/systems-index.md's Systems Enumeration is a fixed-column table with no description column, so atbalancedandthoroughthe prose belongs in## Overview— one short paragraph per system atbalanced, plus relationship analysis atthorough— and in the## Dependency Maplayer notes. Do not add a column to the enumeration table — it is a fixed contract in.claude/docs/templates/systems-index.md, and its consumers (/design-system§6 and §7,/create-epics) are written against the columns it defines. Widening it is a schema change, not a formatting choice.How the consumers actually read it. Nothing parses this table positionally. The two scripts that mention
systems-index.md(gdd-structure-check.sh:51,review-scope.sh:40) match it by filename in acasestatement and parse no columns at all; the two skills key on theCategorycolumn by name (design-system:229,:780). SoCategoryis the column that must never be renamed or dropped, and the table stays a fixed contract because every consumer is written against the set of columns the template defines. Atterse, the table plus a one-paragraph## Overviewis the whole output.
workflow (see .claude/docs/workflow-modes.md):
full / standard — required before /design-system (systems must be mapped
before per-system GDDs are authored).minimal — not required (the game brief replaces the systems index). Can
still be run voluntarily.Read the game concept and any existing design work. This provides the raw material for systems decomposition.
Required:
design/gdd/game-concept.md (at minimal, read design/game-brief.md
instead) — fail with a clear message if neither is found:
"No game concept found. Run
/brainstormfirst to create one, then come back to decompose it into systems."
Optional (read if they exist):
design/gdd/game-pillars.md — pillars constrain priority and scopedesign/gdd/systems-index.md — if exists, resume from where it left off
(update, don't recreate from scratch)design/gdd/*.md — check which system GDDs already existIf the systems index already exists:
AskUserQuestion to ask:
"The systems index already exists with [N] systems ([M] designed, [K] not started).
What would you like to do?"
Extract and identify all systems the game needs. This is the creative core of the skill — it requires human judgment because concept docs rarely enumerate every system explicitly.
Scan the game concept for directly mentioned systems and mechanics:
For each explicit system, identify the hidden systems it implies. Games always need more systems than the concept doc mentions. Use this inference pattern:
Explain in conversation text why each implicit system is needed (with examples).
Present the enumeration organized by category. For each system, show:
Then use AskUserQuestion to capture feedback:
At collaborative — iterate until the user approves the enumeration.
At guided — ask once, apply the answer, and proceed; do not loop.
At autonomous — do not ask. Record the enumeration and its inferred systems
via log_decision and proceed.
The loop needed an exit that does not depend on being asked.
automation-modes.md:56definesautonomousas "NoAskUserQuestion", so a loop terminating on "the user approves" has no termination path there at all. Same class as Step 5b, one level up: that was an unconditional write gate, this is an unconditional control-flow loop around the question.
For each system, determine what it depends on. A system "depends on" another if it cannot function without that other system existing first.
For each system, list its dependencies. Use these dependency heuristics:
Arrange systems into layers:
Check for cycles in the dependency graph. If found:
Show the dependency map as a layered list. Highlight:
Use AskUserQuestion to ask: "Does this dependency ordering look right? Any
dependencies I'm missing or that should be removed?"
Review mode check — apply before spawning TD-SYSTEM-BOUNDARY:
solo → skip. Note: "TD-SYSTEM-BOUNDARY skipped — Solo mode." Proceed to priority assignment.lean → skip (not a PHASE-GATE). Note: "TD-SYSTEM-BOUNDARY skipped — Lean mode." Proceed to priority assignment.full → spawn as normal.After dependency mapping is approved, spawn technical-director via Agent using gate TD-SYSTEM-BOUNDARY (.claude/docs/director-gates/td-system-boundary.md) before proceeding to priority assignment.
Pass: the dependency map summary, layer assignments, bottleneck systems list, any circular dependency resolutions.
Present the assessment. If REJECT, revise the system boundaries with the user before moving to priority assignment. If CONCERNS, note them inline in the systems index and continue.
Assign each system to a priority tier based on what milestone it's needed for.
Use these heuristics for initial assignment:
Present the priority assignments in a table. For each tier, explain why systems were placed there.
Use AskUserQuestion to ask: "Do these priority assignments match your vision?
Which systems should be higher or lower priority?"
Explain reasoning in conversation: "I placed [system] in MVP because the core loop requires it — without [system], the 30-second loop can't function."
How to phrase the reasoning — this governs what you say, not a column you
write. Neither table has a Why column: Systems Enumeration is
# / Name / Category / Priority / Status / Design Doc / Depends On, and
Recommended Design Order is Order / System / Priority / Layer / Agent(s) / Est. Effort. The rationale lives in the conversation above and, for anything
the user should still see after the session, in the index's ## Overview
paragraph. Do not invent a column for it.
Mix technical necessity with player-experience reasoning. A purely technical justification — "the damage system needs damage math" — is insufficient on its own when the system directly shapes what the player feels. Good reasoning names both, and cites the pillar it serves:
Fill the brackets from this project. The bracketed slots are not decoration. Worked examples from another genre (a tower-defense "Ballista's punch-through identity… what makes it feel different from Archer", "Pillar 2: Placement is the Puzzle") get reproduced verbatim by a run against a different game, which then carries that game's vocabulary instead of its own.
Review mode check — apply before spawning PR-SCOPE:
solo → skip. Note: "PR-SCOPE skipped — Solo mode." Proceed to writing the systems index.lean → skip (not a PHASE-GATE). Note: "PR-SCOPE skipped — Lean mode." Proceed to writing the systems index.full → spawn as normal.After priorities are approved, spawn producer via Agent using gate PR-SCOPE (.claude/docs/director-gates/pr-scope.md) before writing the index.
Pass: total system count per milestone tier, estimated implementation volume per tier (system count × average complexity), team size, stated project timeline.
Present the assessment. If UNREALISTIC, offer to revise priority tier assignments before writing the index. If CONCERNS, note them and continue.
Combine dependency sort + priority tier to produce the final design order:
This is the order the team should write GDDs in.
Using the template at .claude/docs/templates/systems-index.md, populate the
systems index with all data from Phases 2-4:
Present a summary of the document:
At automation: collaborative — ask: "May I write the systems index to
design/gdd/systems-index.md?" Wait for approval. Write the file only after
"yes."
At automation: guided — present the summary above, name the destination
(design/gdd/systems-index.md), and write it without waiting for an explicit
"yes", per .claude/docs/automation-modes.md. Say what you wrote afterwards.
Keep this line scoped to its mode.
automation-modes.mdsaysguided"proceeds after a short summary, does not wait for explicit yes", and this skill's own Collaborative Protocol section is scoped tocollaborative. An unconditional "wait for approval" here collides with both.
Review mode check — apply before spawning CD-SYSTEMS:
solo → skip. Note: "CD-SYSTEMS skipped — Solo mode." Proceed to Phase 7 next steps.lean → skip (not a PHASE-GATE). Note: "CD-SYSTEMS skipped — Lean mode." Proceed to Phase 7 next steps.full → spawn as normal.After the systems index is written, spawn creative-director via Agent using gate CD-SYSTEMS (.claude/docs/director-gates/cd-systems.md).
Pass: systems index path, game pillars and core fantasy (from design/gdd/game-concept.md), MVP priority tier system list.
Present the assessment. If REJECT, revise the system set with the user before GDD authoring begins. If CONCERNS, record them in the systems index as a > **Creative Director Note**
placed directly beneath the ## Priority Tiers table, naming the tier each
concern applies to — e.g. > **Creative Director Note** (MVP): ….
templates/systems-index.md has a Priority Tiers definition table, not a
section per tier, so there is no "top of the tier section" to write to — do not
direct the writer to one.
After writing, create production/session-state/active.md if it does not exist, then update it with:
Verdict: COMPLETE — systems index written to design/gdd/systems-index.md.
If the user declined: Verdict: BLOCKED — user did not approve the write.
This phase is entered when:
/map-systems [system-name]/map-systems nextnext was used, pick the highest-priority undesigned system (by design order)Use AskUserQuestion for: "Start designing [system-name] now, pick a different
system, or stop here?"
Once a system is selected, invoke the /design-system [system-name] skill.
The /design-system skill handles the full GDD authoring process:
/design-review when completeDo not duplicate the /design-system workflow here. This skill owns the systems
index; /design-system owns individual system GDDs.
After /design-system completes, use AskUserQuestion:
If continuing, return to Step 6a.
After the systems index is created (or after designing some systems), present next actions using AskUserQuestion:
/design-system [first-system-in-order]/gate-check systems-design — triggers the CD-SYSTEMS and TD-SYSTEM-BOUNDARY gates automatically for a formal director sign-off on the system setThe gate-check option ([B]) is worth highlighting: running /gate-check systems-design triggers both the CD-SYSTEMS and TD-SYSTEM-BOUNDARY gates, catching scope issues, missing systems, and boundary problems before they're locked in across many documents. It is optional but recommended for new projects.
After any individual GDD is completed:
/design-review design/gdd/[system].md in a fresh session to validate quality"/gate-check systems-design when all MVP GDDs are complete"Applies in collaborative mode (the default). For guided and
autonomous modes, see .claude/docs/automation-modes.md — the rules below
describe what collaborative mode requires, not universal behavior.
This skill follows the collaborative design principle at every phase:
/design-system/design-system, which handles
incremental section writing, cross-referencing, design review, and index updatesproduction/session-state/active.md after
each milestone (index created, system designed, priorities changed)Never auto-generate the full systems list and write it without review. Never start designing a system without user confirmation. Always show the enumeration, dependencies, and priorities for user validation.
If context reaches or exceeds 70% at any point, append this notice:
Context is approaching the limit (≥70%). The systems index is saved to
design/gdd/systems-index.md. Open a fresh Claude Code session to continue designing individual GDDs — run/map-systems nextto pick up where you left off.
/design-system [first-system-in-order] to author the first GDD (use design order from the index)/map-systems next to always pick the highest-priority undesigned system automatically/design-review design/gdd/[system].md in a fresh session after each GDD is authored/gate-check pre-production when all MVP GDDs are authored and reviewed