@playcraft/cli 0.0.40 → 0.0.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/README.md +66 -3
  2. package/dist/atom-plan/validate-atom-plan.js +298 -0
  3. package/dist/cli-root-help.js +1 -1
  4. package/dist/commands/3d.js +363 -0
  5. package/dist/commands/create.js +337 -0
  6. package/dist/commands/image.js +1337 -43
  7. package/dist/commands/recommend.js +1 -1
  8. package/dist/commands/remix.js +213 -0
  9. package/dist/commands/skills.js +1379 -0
  10. package/dist/commands/tools-3d.js +473 -0
  11. package/dist/commands/tools-generation.js +452 -0
  12. package/dist/commands/tools-project.js +400 -0
  13. package/dist/commands/tools-research.js +37 -0
  14. package/dist/commands/tools-research.test.js +216 -0
  15. package/dist/commands/tools-utils.js +183 -0
  16. package/dist/commands/tools.js +7 -616
  17. package/dist/config.js +2 -0
  18. package/dist/index.js +19 -1
  19. package/dist/utils/version-checker.js +8 -11
  20. package/package.json +9 -3
  21. package/project-template/.claude/agents/designer.md +120 -0
  22. package/project-template/.claude/agents/developer.md +124 -0
  23. package/project-template/.claude/agents/pm.md +164 -0
  24. package/project-template/.claude/agents/refs/README.md +73 -0
  25. package/project-template/.claude/agents/refs/designer-art-style-catalog.md +533 -0
  26. package/project-template/.claude/agents/refs/designer-color-audio-recipes.md +153 -0
  27. package/project-template/.claude/agents/refs/designer-deliverable-spec.md +191 -0
  28. package/project-template/.claude/agents/refs/designer-dimension-axis.md +27 -0
  29. package/project-template/.claude/agents/refs/designer-handoff-v2-checklist.md +68 -0
  30. package/project-template/.claude/agents/refs/designer-master-composite-recipes.md +208 -0
  31. package/project-template/.claude/agents/refs/designer-style-exploration-flow.md +37 -0
  32. package/project-template/.claude/agents/refs/developer-dev-handoff.md +109 -0
  33. package/project-template/.claude/agents/refs/developer-impl-cookbook.md +134 -0
  34. package/project-template/.claude/agents/refs/developer-phase1-flow.md +136 -0
  35. package/project-template/.claude/agents/refs/pm-workflow-detail.md +551 -0
  36. package/project-template/.claude/agents/refs/reviewer-convergence-eval.md +130 -0
  37. package/project-template/.claude/agents/refs/reviewer-six-dimension-eval.md +6 -0
  38. package/project-template/.claude/agents/refs/ta-3d-flip-recipe.md +85 -0
  39. package/project-template/.claude/agents/refs/ta-atlas-deliverable-standard.md +67 -0
  40. package/project-template/.claude/agents/refs/ta-batch-pipeline-recipes.md +120 -0
  41. package/project-template/.claude/agents/refs/ta-image-generation-detail.md +356 -0
  42. package/project-template/.claude/agents/refs/ta-image-ops-reference.md +495 -0
  43. package/project-template/.claude/agents/refs/ta-pipeline-cookbook.md +1108 -0
  44. package/project-template/.claude/agents/refs/ta-tools-reference.md +111 -0
  45. package/project-template/.claude/agents/refs/ta-vfx-preset-catalog.md +365 -0
  46. package/project-template/.claude/agents/reviewer.md +127 -0
  47. package/project-template/.claude/agents/technical-artist.md +122 -0
  48. package/project-template/.claude/hooks/README.md +44 -0
  49. package/project-template/.claude/hooks/validate-atom-plan.mjs +224 -0
  50. package/project-template/.claude/hooks/validate-workflow-stop.mjs +343 -0
  51. package/project-template/.claude/settings.json +36 -0
  52. package/project-template/.claude/settings.local.json +4 -0
  53. package/project-template/.claude/skills/playcraft-ad-psychology/SKILL.md +182 -0
  54. package/project-template/.claude/skills/playcraft-art-style-guide/SKILL.md +123 -0
  55. package/project-template/.claude/skills/playcraft-asset-state-sheet/SKILL.md +141 -0
  56. package/project-template/.claude/skills/playcraft-audio-generation/SKILL.md +280 -0
  57. package/project-template/.claude/skills/playcraft-batch-pipeline/SKILL.md +184 -0
  58. package/project-template/.claude/skills/playcraft-build-optimizer/SKILL.md +306 -0
  59. package/project-template/.claude/skills/playcraft-image-generation/SKILL.md +279 -0
  60. package/project-template/.claude/skills/playcraft-image-generation/reference/build-sprite-sheet.template.mjs +123 -0
  61. package/project-template/.claude/skills/playcraft-image-generation/reference/compare-style.template.mjs +254 -0
  62. package/project-template/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +235 -0
  63. package/project-template/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +97 -0
  64. package/project-template/.claude/skills/playcraft-image-generation/reference/gen-edit-variants.template.mjs +118 -0
  65. package/project-template/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +137 -0
  66. package/project-template/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +397 -0
  67. package/project-template/.claude/skills/playcraft-image-generation/reference/validate-sprite-sheet.template.mjs +296 -0
  68. package/project-template/.claude/skills/playcraft-image-ops/SKILL.md +122 -0
  69. package/project-template/.claude/skills/playcraft-masking/SKILL.md +373 -0
  70. package/project-template/.claude/skills/playcraft-research/SKILL.md +212 -0
  71. package/project-template/.claude/skills/playcraft-sprite-generation/SKILL.md +423 -0
  72. package/project-template/.claude/skills/playcraft-storyboard/SKILL.md +167 -0
  73. package/project-template/.claude/skills/playcraft-style-qa/SKILL.md +270 -0
  74. package/project-template/.claude/skills/playcraft-text-rendering/SKILL.md +236 -0
  75. package/project-template/.claude/skills/playcraft-vfx-animation/SKILL.md +130 -0
  76. package/project-template/.claude/skills/playcraft-workflow/SKILL.md +485 -0
  77. package/project-template/.claude/skills/playwright-cli/SKILL.md +390 -0
  78. package/project-template/.claude/skills/playwright-cli/references/element-attributes.md +23 -0
  79. package/project-template/.claude/skills/playwright-cli/references/playwright-tests.md +39 -0
  80. package/project-template/.claude/skills/playwright-cli/references/request-mocking.md +87 -0
  81. package/project-template/.claude/skills/playwright-cli/references/running-code.md +240 -0
  82. package/project-template/.claude/skills/playwright-cli/references/session-management.md +226 -0
  83. package/project-template/.claude/skills/playwright-cli/references/spec-driven-testing.md +312 -0
  84. package/project-template/.claude/skills/playwright-cli/references/storage-state.md +275 -0
  85. package/project-template/.claude/skills/playwright-cli/references/test-generation.md +138 -0
  86. package/project-template/.claude/skills/playwright-cli/references/tracing.md +142 -0
  87. package/project-template/.claude/skills/playwright-cli/references/video-recording.md +157 -0
  88. package/project-template/.cursor/hooks.json +17 -0
  89. package/project-template/.cursor/rules/playcraft-orchestrator.mdc +137 -0
  90. package/project-template/.cursor/rules/playcraft-subagent-boundary.mdc +18 -0
  91. package/project-template/CLAUDE.md +280 -0
  92. package/project-template/assets/audio/bgm/.gitkeep +0 -0
  93. package/project-template/assets/audio/sfx/.gitkeep +0 -0
  94. package/project-template/assets/bundles/.gitkeep +0 -0
  95. package/project-template/assets/images/bg/.gitkeep +0 -0
  96. package/project-template/assets/images/reference/.gitkeep +0 -0
  97. package/project-template/assets/images/storyboard/.gitkeep +0 -0
  98. package/project-template/assets/images/tiles/.gitkeep +0 -0
  99. package/project-template/assets/images/ui/.gitkeep +0 -0
  100. package/project-template/assets/images/vfx/.gitkeep +0 -0
  101. package/project-template/assets/models/.gitkeep +0 -0
  102. package/project-template/docs/team/agent-conduct.md +121 -0
  103. package/project-template/docs/team/agent-runtime-matrix.md +62 -0
  104. package/project-template/docs/team/atom-plan-format.md +105 -0
  105. package/project-template/docs/team/collaboration.md +297 -0
  106. package/project-template/docs/team/core-model.md +50 -0
  107. package/project-template/docs/team/platform-capabilities.md +15 -0
  108. package/project-template/docs/team/workflow-changelog.md +65 -0
  109. package/project-template/docs/team/workflow-consistency-checklist.md +140 -0
  110. package/project-template/game/config/.gitkeep +0 -0
  111. package/project-template/game/gameplay/.gitkeep +0 -0
  112. package/project-template/game/scenes/.gitkeep +0 -0
  113. package/project-template/logs/.gitkeep +0 -0
  114. package/project-template/ta-workspace/logs/.gitkeep +0 -0
  115. package/project-template/ta-workspace/scripts/.gitkeep +0 -0
  116. package/project-template/ta-workspace/tmp/.gitkeep +0 -0
  117. package/project-template/templates/atom-plan.template.json +26 -0
  118. package/project-template/templates/atom-plan.template.md +108 -0
  119. package/project-template/templates/design-brief.template.md +195 -0
  120. package/project-template/templates/design-lens-checklist.reference.md +117 -0
  121. package/project-template/templates/design-methodology.md +99 -0
  122. package/project-template/templates/designer-log.template.md +114 -0
  123. package/project-template/templates/developer-log.template.md +134 -0
  124. package/project-template/templates/five-axis-framework.md +186 -0
  125. package/project-template/templates/intent-clarifications.template.md +58 -0
  126. package/project-template/templates/layout-spec.template.md +146 -0
  127. package/project-template/templates/project-state.template.md +237 -0
  128. package/project-template/templates/review-report.template.md +91 -0
  129. package/project-template/templates/style-exploration.template.md +93 -0
  130. package/project-template/templates/ta-log.template.md +343 -0
@@ -0,0 +1,297 @@
1
+ # Agent Collaboration Reference
2
+
3
+ ## Glossary
4
+
5
+ Canonical terms used across `CLAUDE.md`, agent L1 files, and `refs/`. Prefer the **Canonical** column in new edits.
6
+
7
+ | Canonical | Also called | Meaning |
8
+ | ------------------------------ | ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
9
+ | **Gate #1 package** (四件套) | four design docs, PM four docs | PM deliverables before Gate #1 STOP: `docs/project-state.md` + `docs/design-brief.md` + `docs/layout-spec.md` + **`docs/atom-plan.json`**(主)+ `docs/atom-plan.md`(Context 辅) |
10
+ | **Asset Contract** | Asset Path Contract, assetMapping contract | Locked `layout-spec.md` `assetMapping` paths (+ atlas groups, `frameId`) after Gate #1 — no unilateral path changes |
11
+ | **devUrl** | Dev URL, preview link | Local Dev server URL from `npm run dev`; orchestrator shares at Gate #3; user never runs dev themselves |
12
+ | **Designer Phase 1 / Phase 2** | — | Ph.1 = MC + ASR + Handoff Pack; Ph.2 = audio + digit + VisualAtom status (v2) |
13
+ | **ASR Coverage Matrix** | — | `designer-log` table: every contract id → ASR slot; Gate #2b mandatory |
14
+ | **Palette Locked** | — | MC-sampled hex in `designer-log`; delta vs `layout-spec` |
15
+ | **production-serial-v1** | workflow spec version (superseded) | See `workflow-changelog.md`; serial production waves within `production` stage |
16
+ | **convergence-v1** | workflow spec version (current) | Three convergence loops: design_check → ui_diff → load_check + Gate #3 user |
17
+ | **design_check** | Reviewer mode | Soft checklist before Gate #1 / #2b — completeness only, not subjective quality |
18
+ | **ui_diff** | Reviewer mode | Browser screenshots vs MC panels; routes ui_rework (max 5 rounds) |
19
+ | **load_check** | Reviewer mode | Page loads + no console errors before Gate #3; no gameplay walkthrough |
20
+ | **ui_ready** | devStatus value | UI shell complete; gameplay rules not yet implemented |
21
+ | **designer-handoff-v2** | visual handoff spec | MC + ASR + Handoff Pack; bundled in convergence-v1 |
22
+ | **Production Pipeline** | serial waves in `project-state` | Wave 1 Designer Ph.2 → Wave 2 TA; Developer in `ui_pass` |
23
+ | **Developer ui_pass** | — | UI shell + scene switch + simple states; no core gameplay rules |
24
+ | **Developer gameplay_pass** | — | Core gameplay on verified UI; PGS + first level success |
25
+ | **Four-doc discipline** | 四件套写作纪律 | PM/Designer: contracts only in four docs; narrative in style-exploration + designer-log; TA/Dev intake: agent-conduct + log templates |
26
+ | **TA Step 0 / 1 / 2** | (not "Phase") | **TA cookbook only**: Step 0 = Skill Discovery; Step 1 = Asset Completion; Step 2 = Technical Pipeline — TA runs all three in one `production` invoke |
27
+ | **reworkRound** | `handoff.rework_round` (legacy) | Superseded by **`uiReworkRound`** for UI convergence (0–5) |
28
+ | **uiReworkRound** | `handoff.ui_rework_round` | Counts **ui_diff failures** (0 → 5 max); at 5 → orchestrator decision |
29
+ | **ICP** | Intent Clarification Protocol | Async agent Q&A in `docs/intent-clarifications.md`; orchestrator does not interrupt user |
30
+ | **MC** | Master Composite | Five 9:16 panels in one image: concept panel + Hook / Onboarding / End Card / CTA storyboards |
31
+ | **ASR** | Asset State Reference Sheet | 资产状态参考精灵图板:UI 组件状态板 + 元素状态板;Gate #2a 后产出;供 TA crop 量产(非 runtime atlas) |
32
+
33
+ ## Mission vs Goals vs Workflow
34
+
35
+ | Layer | Location | Purpose |
36
+ | ---------------- | ---------------------------------- | ----------------------------------------------------------------------------- |
37
+ | **Team Mission** | `CLAUDE.md` § Mission | Shared vision — why we build playable ads |
38
+ | **Role Goals** | `.claude/agents/<role>.md` § Goals | **What this role must achieve**, in priority order (Top 3 + success criteria) |
39
+ | **Workflow** | Same agent file + `refs/` | How to execute; exit criteria point back to Goals |
40
+
41
+ When instructions conflict: **Goals § Core responsibilities** wins over workflow shortcuts (e.g. Developer must not set `devStatus: ready` with open upstream blockers). Enforceable MUST/NEVER: [agent-conduct.md](agent-conduct.md).
42
+
43
+ ## Gate Protocol (Orchestrator-Only)
44
+
45
+ Only the **Orchestrator** (main session) may use `AskUserQuestion` toward the user. Sub-agents prepare materials, update `project-state`, then **STOP**.
46
+
47
+ | Gate | Sub-agent deliverable | STOP signal (`project-state`) | Orchestrator action |
48
+ | ------- | ---------------------------------------------------------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
49
+ | **#1** | PM: four design docs ready for review | `gates.#1 = pending` | Invoke `@reviewer design_check` → pass → `AskUserQuestion` → on pass: `gates.#1 = passed`, `stage: style_exploration`, invoke `@designer` |
50
+ | **#2a** | Designer: MC options A/B[/C] + partial `style-exploration.md` | `gates.#2a = pending` | `AskUserQuestion` pick option → set `selectedMcOption` → resume `@designer` (no Reviewer pre-check) |
51
+ | **#2b** | Designer: ASR 双板 + complete `style-exploration` + designer-log | `gates.#2b = pending` | Invoke `@reviewer design_check` → pass → `AskUserQuestion` confirm MC+ASR → `gates.#2b = passed`, `stage: production`, invoke `@designer` Ph.2 only |
52
+ | **#3** | Reviewer `load_check` pass + `devStatus: ready` | `gates.#3 = pending` | Show **devUrl** → user accept → `stage: done` (gameplay judged by user) |
53
+
54
+ Sub-agent pattern: **write artifacts → update `## Agent handoff` + gates → STOP (no user questions).**
55
+
56
+ ## Agent Handoff
57
+
58
+ Machine-readable runtime block in `docs/project-state.md` (YAML fence under `## Agent handoff`). Sub-agents and orchestrator use it as the **single source** for STOP / resume / next step.
59
+
60
+ | Field | Writer | Meaning |
61
+ | -------------------------- | --------------------------------------- | ------------------------------------------------------------------------------------------------ |
62
+ | `subagent` | Sub-agent on STOP | Role that just finished (`pm`, `designer`, `technical-artist`, `developer`, `reviewer`, `none`) |
63
+ | `subagent_stop` | Sub-agent on STOP | `true` = do not continue work until orchestrator acts |
64
+ | `waiting_for` | Both | `user_gate` = orchestrator must run Gate; `orchestrator` = wait for invoke; `none` = active work |
65
+ | `gate_pending` | Sub-agent when gate pending | `"1"` \| `"2a"` \| `"2b"` \| `"3"` \| `null` — sync with Gates table |
66
+ | `next_orchestrator_action` | Sub-agent on STOP (**required**) | One sentence: the **only** legal next step for orchestrator |
67
+ | `last_completed_by` | Sub-agent on STOP | Same as `subagent` or action label |
68
+ | `rework_round` | Reviewer on ui_diff fail / orchestrator | Keep in sync with `uiReworkRound` in Gate resume fields (legacy alias) |
69
+ | `block_reason` | Optional | Why pipeline cannot advance |
70
+
71
+ **Orchestrator loop:** read handoff → if `gate_pending` + `user_gate` → Gate only → else if `subagent_stop` → execute `next_orchestrator_action` → reset handoff before invoke.
72
+
73
+ **Sub-agent loop:** read handoff → if already stopped for this role → refuse duplicate work → else branch per agent `## Runtime` → update handoff → append `--- PLAYCRAFT_STOP ---` footer.
74
+
75
+ ## STOP sync checklist
76
+
77
+ On every sub-agent STOP, update **in order** (see [agent-conduct.md § Invoke protocol](agent-conduct.md#invoke-protocol-all-sub-agents)):
78
+
79
+ 1. **Gates table** — set `#N = pending` when gate materials ready (if applicable).
80
+ 2. **`## Agent handoff`** — all fields; `subagent_stop: true`; `next_orchestrator_action` required.
81
+ 3. **Progress Checkpoint** — one row (stage, agent, action, outcome).
82
+ 4. **Production Pipeline** — when `stage: production`, set this role's wave row to `done` + notes when wave complete.
83
+ 5. **Plan convergence (TA / Developer only)** — before STOP, ensure `logs/ta-log.md` § **Production Plan** or `logs/developer-log.md` § **UI Pass Plan** / **Gameplay Pass Plan** is complete (Risk Checklist all `[x]`, no `{{placeholders}}`). Hook `validate-workflow-stop.mjs` enforces on subagent stop.
84
+
85
+ Example (update only your row when track complete):
86
+
87
+ | Wave | Agent | Status | Notes |
88
+ | ---- | ---------------- | ------ | --------------------------------------------------- |
89
+ | 1 | Designer | done | Ph.2: BGM + SFX + digit strip; VisualAtoms ASR-done |
90
+ | 2 | Technical Artist | done | All TA atoms + Compliance green |
91
+
92
+ Checkpoint is a **human log** for context — **not** the routing source (handoff is).
93
+
94
+ ## Stage field ownership
95
+
96
+ | Field / transition | Writer |
97
+ | ------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- |
98
+ | `gates.#N = pending` | Sub-agent before STOP |
99
+ | `gates.#N = passed` | **Orchestrator** after user confirms Gate |
100
+ | Mainline `stage` (`pm` → `style_exploration` → `production` → `ui_pass` → `ui_review` → `ui_rework` → `gameplay_pass` → `done`) | **Orchestrator only** |
101
+ | `selectedMcOption` | Orchestrator after Gate #2a |
102
+ | `devStatus`, `devUrl`, `devBlockers` | Developer |
103
+ | `uiReviewStatus`, `uiReworkRound`, `loadCheck` | Reviewer |
104
+
105
+ Sub-agents **MUST NOT** set mainline `stage`. They request orchestrator via `next_orchestrator_action` (e.g. `Invoke @reviewer`).
106
+
107
+ ## UI rework sequence (orchestrator-owned)
108
+
109
+ 1. **Reviewer** (`ui_diff`) — screenshots vs MC panels → fail: UI Diff Report in `review-report.md`, `uiReworkRound` +1, handoff `next_orchestrator_action: "Set stage=ui_rework, invoke routed agents per review-report"` → STOP (**no** `stage: ui_rework` in reviewer write).
110
+ 2. **Orchestrator** — Set `stage: ui_rework`, invoke `@developer` / `@technical-artist` / `@designer` per Action Items (`routeTo`).
111
+ 3. **Developer** (primary) — Fix UI issues → `devStatus: ui_ready` → handoff `Invoke @reviewer ui_diff` → STOP.
112
+ 4. **Orchestrator** — Invoke `@reviewer ui_diff` again; on pass (or `uiReworkRound == 5`) → `stage: gameplay_pass`.
113
+
114
+ Max **5** UI rework rounds. Gameplay has no AI rework loop — only `load_check` before Gate #3.
115
+
116
+ ## Master Composite — five panels
117
+
118
+ | Name | Panel | `playcraft-storyboard` label | Role |
119
+ | --------------------- | ----- | ------------------------------------------------- | ------------------------------------------------------------------------ |
120
+ | **Concept panel** | 1 | Main Gameplay | All key element types + static text + full UI; TA primary extract source |
121
+ | **Storyboard panels** | 2–5 | Hook / Onboarding / End Card / CTA Always Visible | Per-stage visual intent; Developer scene reference |
122
+
123
+ ## User interaction model (three phases)
124
+
125
+ | Phase | User | Agents |
126
+ | -------------------- | --------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
127
+ | **A — Choose** | **Orchestrator only** — `AskUserQuestion` for Gate #1, #2a, #2b | Sub-agents STOP when gate materials ready; no mass production until Gate #2b passed |
128
+ | **B — Produce** | Not interrupted for terminal commands | Serial: Designer Ph.2 → TA → Developer (`ui_pass` → `gameplay_pass`) |
129
+ | **C — Dev delivery** | **Gate #3 only**: open **devUrl** from orchestrator | Developer UI+gameplay → Reviewer `load_check` → user accepts gameplay in browser |
130
+
131
+ **User never runs `npm run dev`.** Delivery endpoint = Dev URL acceptance (`done`), not `playcraft build`.
132
+
133
+ ## Agent responsibility matrix (priority order)
134
+
135
+ | # | PM | Designer | Technical Artist | Developer | Reviewer |
136
+ | -------- | --------------------------------------------------------- | ----------------------------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------- | ------------------------------------------------ |
137
+ | **1** | Define experience + gameplay (`design-brief`, flow) | Lock visual + narrative — **MC = UI spec for Developer** | Style-faithful mass production from MC/ASR | **UI shell** (`ui_pass`: layout + scene switch) | `design_check` before Gates; `ui_diff` vs MC |
138
+ | **2** | Zero-ambiguity contracts (`layout-spec`, `atom-plan`) | Handoff Pack: ASR Coverage Matrix, Palette Locked, Motion Notes | 100% `assetMapping` at spec (path check only) | **Gameplay** (`gameplay_pass`: PGS, first level success) | `load_check` before Gate #3 |
139
+ | **3** | Gates + ICP; **spec-gap** vs **asset rework** arbitration | Audio + digit strip; **respond to Developer visual/audio rework** | Production-grade assets; **respond on `routeTo: ta` in ui_diff** | **Dev preview owner** (`npm run dev`, devUrl, upstream blockers) | Route UI issues in ui_diff; no gameplay AI audit |
140
+ | **Last** | — | — | — | `playcraft build` = **future**, not `done` | — |
141
+
142
+ Full detail: `.claude/agents/<role>.md` § Goals.
143
+
144
+ ## Project Directory — What Exists vs What Agents Create
145
+
146
+ ```
147
+ <project-root>/ ← playcraft create <name> 初始化后
148
+
149
+ ├── CLAUDE.md ✅ 已存在(协作总纲)
150
+ ├── .claude/agents/ ✅ 已存在(5 个 Agent 指令 + refs/ 详细参考)
151
+ │ ├── pm.md PM(项目管理)
152
+ │ ├── designer.md Designer(设计)
153
+ │ ├── technical-artist.md Technical Artist(技术美术)
154
+ │ ├── developer.md Developer(开发)
155
+ │ ├── reviewer.md Reviewer(审核)
156
+ │ └── refs/ L2 按需细则
157
+ ├── .claude/skills/ ✅ 已存在(平台工具 Skill)
158
+ ├── .claude/settings.local.json ✅ 模板(权限白名单,见文件内说明)
159
+ ├── .cursor/rules/ ✅ 编排与边界规则(Cursor 主会话)
160
+ ├── .cursor/hooks.json ✅ Cursor subagentStop → validate-workflow-stop
161
+ ├── .claude/settings.json ✅ Claude Code SubagentStop hooks(可提交)
162
+ ├── .claude/hooks/ ✅ 共享校验脚本(见 README)
163
+ ├── docs/team/agent-conduct.md ✅ 已存在(MUST/NEVER 行为契约)
164
+ ├── templates/ ✅ 已存在(只读,Agent 创建文档时参考)
165
+ ├── .gitignore ✅ 已存在
166
+
167
+ ├── ta-workspace/scripts/ ✅ 已存在(TA 写 Node.js 批量脚本,入库)
168
+ ├── ta-workspace/logs/ ✅ 已存在(gitkeep,脚本日志不入库)
169
+ ├── ta-workspace/tmp/ ✅ 已存在(gitkeep,临时产物不入库)
170
+
171
+ ├── assets/images/{bg,tiles,ui,vfx,reference}/ ✅ 已存在(gitkeep 占位;reference = ASR 双板)
172
+ ├── assets/audio/{bgm,sfx}/ ✅ 已存在(gitkeep 占位)
173
+ ├── assets/models/ ✅ 已存在(gitkeep 占位,3D GLB 资产)
174
+ ├── assets/bundles/ ✅ 已存在(gitkeep 占位)
175
+
176
+ │ 以下目录/文件在 playcraft create 时为空,由 Agent 运行时填充:
177
+
178
+ ├── docs/project-state.md ⏳ PM 创建
179
+ ├── docs/design-brief.md ⏳ PM 创建
180
+ ├── docs/layout-spec.md ⏳ PM 创建
181
+ ├── docs/atom-plan.json ⏳ PM 创建(skillsMatch + atoms[] DAG)
182
+ ├── docs/atom-plan.md ⏳ PM 创建(验收标准 + Context 富集区)
183
+ ├── docs/style-exploration.md ⏳ Designer Phase 1 创建
184
+
185
+ ├── assets/images/** ⏳ Designer (样本) + TA (补全)
186
+ ├── assets/audio/** ⏳ Designer (生成) + TA (后处理)
187
+ ├── assets/models/** ⏳ TA (3D 管线)
188
+ ├── assets/bundles/** ⏳ Designer + TA (atom 封包)
189
+
190
+ ├── game/gameplay/ ⏳ Developer Phase 1
191
+ ├── game/config/ ⏳ Developer Phase 1
192
+ ├── game/scenes/ ⏳ Developer Phase 1
193
+ ├── game/index.html ⏳ Developer Phase 1 + 2
194
+
195
+ ├── logs/designer-log.md ⏳ Designer
196
+ ├── logs/ta-log.md ⏳ Technical Artist
197
+ ├── logs/developer-log.md ⏳ Developer
198
+ └── logs/review-report.md ⏳ Reviewer
199
+ ```
200
+
201
+ ## Directory Conventions
202
+
203
+ **All agents MUST follow this structure.**
204
+
205
+ ```
206
+ <project-root>/
207
+ ├── docs/ Design documents (PM creates, all agents reference)
208
+ ├── assets/
209
+ │ ├── images/{bg,tiles,ui,vfx,reference} Visual assets (ASR in reference/; samples + TA completions)
210
+ │ ├── audio/{bgm,sfx} Audio assets (Designer generates, TA post-processes)
211
+ │ ├── models/ 3D GLB assets (TA production)
212
+ │ └── bundles/ Atom bundles (Designer + TA create)
213
+ ├── game/
214
+ │ ├── gameplay/ PGS + state machine (Developer)
215
+ │ ├── config/ Level configs (Developer)
216
+ │ ├── scenes/ Scene definitions (Developer)
217
+ │ └── index.html Entry point (Developer)
218
+ ├── logs/ Work logs + review report
219
+ ├── ta-workspace/ TA batch scripts + temp files
220
+ └── templates/ Read-only reference templates
221
+ ```
222
+
223
+ ## File Read/Write Matrix
224
+
225
+ | File/Directory | PM | Designer | **TA** | Developer | Reviewer |
226
+ | --------------------------- | ------ | ----------------------- | ------------------------------------- | ----------------------- | -------- |
227
+ | `docs/project-state.md` | Create | Update stage | **Update stage** | Update stage | Read |
228
+ | `docs/design-brief.md` | Create | Read | **Read** | Read | Read |
229
+ | `docs/layout-spec.md` | Create | **Read (contract)** | **Read (contract)** | **Read (contract)** | Read |
230
+ | `docs/atom-plan.json` | Create | Update `atoms[].status` | Update `atoms[].status` | Update `atoms[].status` | Read |
231
+ | `docs/atom-plan.md` | Create | Asset Skill Context | TA Skill Context | Impl Skill Context | Read |
232
+ | `docs/style-exploration.md` | — | Create (Phase 1) | **Read** | Read | Read |
233
+ | `assets/images/` | — | **Create (samples)** | **Create (completions + processing)** | Read | Read |
234
+ | `assets/audio/` | — | **Create** | **Post-process** | Read | Read |
235
+ | `assets/models/` | — | — | **Create (3D pipeline)** | Read | Read |
236
+ | `assets/bundles/` | — | **Create (partial)** | **Create (TA atoms)** | Read | Read |
237
+ | `game/` | — | — | — | **Create** | Read |
238
+ | `logs/designer-log.md` | — | Create+Update | Read | Read | Read |
239
+ | `logs/ta-log.md` | — | — | **Create** | Read | Read |
240
+ | `logs/developer-log.md` | — | — | — | Create+Update | Read |
241
+ | `logs/review-report.md` | — | — | — | — | Create |
242
+
243
+ **Key**: Designer and TA both write `assets/`, but responsibilities don't overlap:
244
+
245
+ - Designer: MC + ASR (Phase 1), audio + digit strip + atom status (Phase 2)
246
+ - TA writes completion assets and technically processed production-grade files
247
+
248
+ ## Asset Contract (Asset Path Contract)
249
+
250
+ `layout-spec.md` defines **element ID → atlas+frame or file path**, **locked after Gate #1**:
251
+
252
+ - **PM** defines `assetMapping`, **atlas grouping table**, and specs (default: **WebP** images, **MP3** audio)
253
+ - **≥2 elements same class** (tiles / ui / vfx) → one **`.webp` + `.json`** atlas per group; each element has `frameId`
254
+ - **Exceptions**: full-screen bg (single webp), digit strip (single webp), MC/ASR reference (non-runtime)
255
+ - **Designer** delivers MP3 audio + digit strip webp at contracted paths
256
+ - **TA** delivers runtime atlases + post-processed MP3 per [ta-atlas-deliverable-standard.md](../../.claude/agents/refs/ta-atlas-deliverable-standard.md)
257
+ - **Developer** (`ui_pass` / `gameplay_pass`) binds `loadImage`/atlas+frame at contract paths with **real files** on disk, then integrates in Dev
258
+ - **Path / frame mismatch = integration failure** — TA Compliance + Reviewer check
259
+ - **No unilateral path changes** — PM + user-approved contract change only
260
+
261
+ ## Four-doc discipline
262
+
263
+ PM and Designer **own different layers**; TA and Developer **read all layers** at wave start (Upstream Intake).
264
+
265
+ | Layer | Files | Writer | Content rule |
266
+ | ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
267
+ | **Contracts (四件套)** | `project-state`, `design-brief`, `layout-spec`, `atom-plan`(**`atom-plan.json`** 机器契约 + **`atom-plan.md`** Gate #1 仅 Acceptance) | PM (Designer: read-only except ICP path fixes) | **Key fields only** — decisions, paths, DAG (`atoms[]`), status. No hex in brief; no Atom List mirror; no prompts or MC/ASR prose. |
268
+ | **Visual narrative** | `style-exploration`, `logs/designer-log` | Designer | MC/ASR intent, Handoff Pack, Coverage Matrix, Style Intent Notes |
269
+ | **Production proof** | `logs/ta-log`, `logs/developer-log` | TA / Developer | Upstream Intake table (mandatory), then pipeline / implementation logs |
270
+
271
+ Enforceable rules: [agent-conduct.md](agent-conduct.md) (§ PM / Designer / TA / Developer). L2: `ta-pipeline-cookbook.md` Step 0a, `developer-phase1-flow.md` Step 0.
272
+
273
+ ## Spec Quick-Check
274
+
275
+ Within 30 seconds of each wave start, the active agent validates Layout Spec:
276
+
277
+ | Checker | When | Checks | On Gap |
278
+ | --------- | ---------------------------------------------------------- | ---------------------------------------------------- | ----------------------------------------------------------------- |
279
+ | TA | Production Pipeline Wave 2 (TA entry) | Every assetMapping entry has clear size/format specs | Write `spec-gap` to project-state.md, PM supplements within 5 min |
280
+ | Developer | `ui_pass` / `gameplay_pass` start (after TA Wave 2 `done`) | Every GameplayAtom reference exists in assetMapping | Same |
281
+
282
+ ## DAG Modification Protocol
283
+
284
+ - **Default**: Follow PM's plan
285
+ - **Allowed**: Add/remove/modify atoms — update `atom-plan.json` `atoms[]` + record in `atom-plan.md` § DAG Revisions
286
+ - **Stop for direction changes**: Switching gameplay/style → report back
287
+ - **Reviewer audits**: Every revision evaluated for reasonableness
288
+
289
+ ## Upstream rework routing (Dev blockers)
290
+
291
+ | `routeTo` | Trigger | Orchestrator action |
292
+ | ------------ | -------------------------------------------------------------------- | ------------------------------------------------- |
293
+ | **TA** | Missing file, wrong size/format, style drift in mass-produced assets | Re-invoke `@technical-artist` → then `@developer` |
294
+ | **Designer** | Wrong/missing sample, audio mood, supplementary art | Re-invoke `@designer` → then `@developer` |
295
+ | **PM** | Contract ambiguity, gameplay vs spec conflict | `@pm` arbitrates ICP → then `@developer` |
296
+
297
+ Developer sets `devStatus: blocked_upstream` and **STOPs** until rework completes.
@@ -0,0 +1,50 @@
1
+ # Core Model — Remix = DAG(Atom[])
2
+
3
+ ## Atom DAG Structure
4
+
5
+ ```
6
+ ScaffoldAtom (skeleton)
7
+ ├── VisualAtom[] (baseline) → Designer (Phase 1 ASR; v2)
8
+ ├── VisualAtom[] (completions)→ Technical Artist
9
+ ├── VisualAtom[] (sprites/3D) → Technical Artist
10
+ ├── AudioAtom[] (generation) → Designer
11
+ ├── AudioAtom[] (processing) → Technical Artist
12
+ ├── VFXAtom[] / AnimationAtom[]→ Technical Artist
13
+ ├── ConfigAtom[] → Developer
14
+ └── GameplayAtom → Developer
15
+ ```
16
+
17
+ ## Atom Three Elements
18
+
19
+ | Element | Meaning |
20
+ | ----------- | -------------------------------------------- |
21
+ | **Recipe** | How it was made (prompt, model, seed) |
22
+ | **Result** | What it is (image/audio/JSON file) |
23
+ | **Binding** | How it's used (where in the DAG it connects) |
24
+
25
+ ## Atom Assignment Rules (5 Agents)
26
+
27
+ | Atom Type | assignTo | Notes |
28
+ | ---------------------------------------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
29
+ | `GameplayAtom` | Developer | PGS rules, state machine |
30
+ | `ConfigAtom` | Developer | Level config, difficulty curve |
31
+ | `VisualAtom` (baseline) | Designer | **designer-handoff-v2**: baseline = ASR slots in Phase 1; Phase 2 mark `done` with `actualOutput: ASR:...` or ICP supplementary PNG only |
32
+ | `VisualAtom` (completions: remaining elements) | TA | Derive full set from samples |
33
+ | `VisualAtom` (sprite sheets/animation/VFX) | TA | Technical pipeline |
34
+ | `VisualAtom` (3D models/GLB) | TA | 3D pipeline; needs `referenceSource` |
35
+ | `AudioAtom` (original generation) | Designer | BGM/SFX generation |
36
+ | `AudioAtom` (post-processing) | TA | compress/trim/loop |
37
+ | `VFXAtom` | TA | VFX sprite sheets |
38
+ | `AnimationAtom` | TA | Animation sprite sheets |
39
+
40
+ **Simple rule** (v2): Designer locks **MC + ASR** direction; TA mass-produces from ASR/MC to contract paths. Designer does not batch-export tile/UI PNGs at `assetMapping` in Phase 2.
41
+
42
+ ## Scheduling Metadata (PM injects into `docs/atom-plan.json` → `atoms[]`)
43
+
44
+ | Field | Meaning | Impact |
45
+ | --------------------------- | ----------------------------------- | ------------------------------------------------------------------- |
46
+ | `assignTo` | Which agent executes | Required for all atoms |
47
+ | `referenceSource` | Reference image source for 3D atoms | `"designer-sample"` → starts immediately; `"ta-completion"` → waits |
48
+ | `dependsOn: [atomId]` | Explicit prerequisites | Determines execution order |
49
+ | `priority: high/normal/low` | Priority level | Affects TA scheduling |
50
+ | `parallelGroup` | Parallel execution group | Same-group atoms start simultaneously |
@@ -0,0 +1,15 @@
1
+ # Platform Capabilities
2
+
3
+ | Category | Command Prefix | Used By |
4
+ | ------------------- | --------------------------------------------------------------- | ---------------------------------------------------- |
5
+ | AI Image Generation | `playcraft tools generate-image` | Designer / TA |
6
+ | AI 3D Generation | `playcraft tools generate-3d` | **TA** |
7
+ | 3D Pipeline | `playcraft 3d *` | **TA** |
8
+ | Sprite Sheets | `playcraft image sprite-sheet/sprite-split/animate/use-vfx` | **TA** |
9
+ | Image Processing | `playcraft image resize/crop/convert/remove-background/overlay` | **TA** |
10
+ | Audio Generation | `playcraft tools generate-sfx/generate-bgm` | Designer |
11
+ | Audio Processing | `playcraft audio compress/trim/loop/...` | **TA** |
12
+ | Skills Discovery | `playcraft skills list/match` | All agents |
13
+ | Asset Info | `playcraft image info` / `playcraft audio info` | TA / Reviewer |
14
+ | Dev preview | `npm run dev` (project `scripts.dev`) | Developer / Reviewer / orchestrator (refresh devUrl) |
15
+ | Build (future) | `playcraft build` / `build-all` | Not required for current `done` gate |
@@ -0,0 +1,65 @@
1
+ # Workflow Changelog
2
+
3
+ Template workflow spec versions for `packages/cli/project-template`. New projects from `playcraft create` copy the current template; record the version in each project's `docs/project-state.md` § Workflow spec.
4
+
5
+ ## convergence-v1 (current)
6
+
7
+ **Effective**: project-template default for new playable-ad projects.
8
+
9
+ ### Summary
10
+
11
+ - **Three convergence loops**: (1) Reviewer `design_check` before Gate #1 / #2b; (2) `ui_pass` → `ui_review` ⇄ `ui_rework` (max 5 rounds) with `ui_diff` (browser screenshots vs MC); (3) `gameplay_pass` → Reviewer `load_check` → Gate #3 user gameplay acceptance.
12
+ - **Developer split**: `ui_pass` (UI shell + light logic, `devStatus: ui_ready`) then `gameplay_pass` (core gameplay, `devStatus: ready`).
13
+ - **Removed**: `integration`, `review`, `rework`, six-dimension final review, AI gameplay walkthrough.
14
+ - **Production orchestration** unchanged: after Gate #2b, **strict serial** — Designer Ph.2 → TA → Developer (`ui_pass`).
15
+ - Visual delivery unchanged from **designer-handoff-v2** (MC + ASR, Handoff Pack, Phase 2 audio/digit only).
16
+ - **Reviewer tooling**: `playwright-cli` skill for browser automation (screenshot, console, resize).
17
+
18
+ ### Stage chain
19
+
20
+ ```
21
+ pm → style_exploration → production → ui_pass → ui_review ⇄ ui_rework → gameplay_pass → done
22
+ ```
23
+
24
+ ### Production waves (serial)
25
+
26
+ | Wave | Agent | Stage | Orchestrator invoke |
27
+ | ---- | ---------------- | ------------ | --------------------------------------------------- |
28
+ | 1 | Designer | `production` | `@designer` Ph.2 only after Gate #2b |
29
+ | 2 | Technical Artist | `production` | `@technical-artist` after Wave 1 `done` |
30
+ | 3 | Developer | `ui_pass` | `@developer` after Wave 2 `done` + Compliance green |
31
+
32
+ ### Trade-offs
33
+
34
+ | Benefit | Cost |
35
+ | ------------------------------------------------------------ | ------------------------------------------------- |
36
+ | UI convergence independently verifiable before gameplay | Extra Reviewer round + up to 5 UI rework cycles |
37
+ | Design defects caught before user Gates | Gate #1/#2b require extra Reviewer invoke |
38
+ | Gameplay quality left to human (Canvas opaque to automation) | No AI gameplay audit — user must judge at Gate #3 |
39
+
40
+ ---
41
+
42
+ ## production-serial-v1
43
+
44
+ **Superseded by** `convergence-v1` for orchestration; serial production waves below still apply within `production` stage.
45
+
46
+ ---
47
+
48
+ ## designer-handoff-v2
49
+
50
+ **Superseded by** `production-serial-v1` for orchestration; visual rules below still apply.
51
+
52
+ ### Summary
53
+
54
+ - Visual baseline locked in **Phase 1**: Master Composite (MC) + **ASR** dual sheets (UI + element state reference).
55
+ - **Phase 2 Designer**: BGM, SFX, digit strip only; `assignTo: Designer` VisualAtoms marked `done` when covered by ASR (not separate `tile_sample_*.png` batch).
56
+ - **Gate #2b Handoff Pack**: ASR Coverage Matrix, Palette Locked, Motion Notes in `designer-log` / `style-exploration`.
57
+ - Retired paths: `exploded_view_*.png`, `concept_selected.png`, per-frame `concept_*.png` / `hook_*.png` deliverable tables.
58
+
59
+ ---
60
+
61
+ ## designer-handoff-v1 (legacy)
62
+
63
+ - Single **Exploded View** (or scattered concept/storyboard PNGs) as TA extract source.
64
+ - Phase 2 sometimes assumed Designer outputs `tile_sample_*.png` at `assetMapping` paths.
65
+ - `playcraft-exploded-view` skill id (removed in v2).
@@ -0,0 +1,140 @@
1
+ # Workflow Consistency Checklist
2
+
3
+ Maintenance checklist after editing `packages/cli/project-template`. Run before merging doc changes.
4
+
5
+ ## Phase A — Invoke protocol
6
+
7
+ - [x] `agent-conduct.md`: § Invoke protocol (all sub-agents)
8
+ - [x] All five agents: First Step = handoff → Runtime → conditional refs
9
+ - [x] Checkpoint documented as human log only (collaboration § STOP sync)
10
+
11
+ ## Phase B — Track done & stage sync
12
+
13
+ - [x] Each agent Runtime has **Track done** note
14
+ - [x] `CLAUDE.md` + `playcraft-orchestrator.mdc`: § Stage sync on handoff
15
+ - [x] `project-state.template.md`: handoff Examples comment block
16
+
17
+ ## Phase C — STOP sync
18
+
19
+ - [x] `collaboration.md`: § STOP sync checklist (4 steps)
20
+ - [x] `agent-conduct.md`: sub-agents MUST complete STOP sync
21
+
22
+ ## Phase D — L1 &lt; 220 lines
23
+
24
+ - [x] `pm.md`, `designer.md`, `developer.md`, `reviewer.md`, `technical-artist.md` each **&lt; 220** lines
25
+ - [x] New refs registered in `refs/README.md` with L1 back-links
26
+ - [x] `designer-deliverable-spec.md`, `designer-style-exploration-flow.md`, `developer-phase1-flow.md` exist
27
+
28
+ ## Phase F — TA atlas / WebP / MP3
29
+
30
+ - [x] `ta-atlas-deliverable-standard.md` exists; TA L1 + Runtime reference it
31
+ - [x] `layout-spec.template.md`: atlas grouping table, webp defaults, frameId column
32
+ - [x] `collaboration.md` § Asset Contract: WebP atlas + MP3
33
+ - [x] PM `pm-workflow-detail.md`: Atlas grouping at Gate #1
34
+ - [x] Developer cookbook: atlasPath + frameId binding
35
+
36
+ ## Round 3 — Invoke 体感打磨
37
+
38
+ ### Phase A — Runtime 入口微调
39
+
40
+ - [x] Designer Runtime: Phase 1 Skill Discovery → style-exploration-flow (one line)
41
+ - [x] Developer Runtime: Spec Quick-Check (30s, MUST) on production branch
42
+ - [x] Developer Ph.1 STOP: `next_orchestrator_action` = single value `Wait for parallel tracks`
43
+ - [x] TA Step 0: verb pipeline (no E→A→B→C→D shorthand in L1)
44
+ - [x] TA Compliance: atlas grouping table check + spec-gap routeTo PM
45
+
46
+ ### Phase B — L1 术语显式化
47
+
48
+ - [x] PM Runtime: 四件套 list + atlas groups + Style Direction in Track done
49
+ - [x] Reviewer Goals: six dimension names + Vetoes listed
50
+ - [x] Designer Track done: MC 5×9:16 ratio (≈ 2.81)
51
+
52
+ ### Phase C — 跨 Agent 同步
53
+
54
+ - [x] `collaboration.md` § STOP sync: Parallel Tracking table example
55
+ - [x] `CLAUDE.md` + `playcraft-orchestrator.mdc`: Stage sync includes `Run Gate #2a`
56
+ - [x] All five L1 Mission: link to CLAUDE § Stage Model
57
+ - [x] `developer-phase1-flow.md`: linear Step 1–8 ordering
58
+
59
+ ### Phase D — 重复段清理
60
+
61
+ - [x] Developer L1: no separate `## Phase 1` / `## Phase 2` headings (Execute L2 under Runtime)
62
+ - [x] Designer Phase 2: skills/refs/output only (no duplicate Trigger)
63
+ - [x] Developer Important Rules: Test-first + Atlas binding split (#5 / #6)
64
+ - [x] Reviewer Output: sync `handoff.rework_round` on fail
65
+
66
+ ## Gate & orchestration (baseline)
67
+
68
+ - [x] Gate Protocol matches CLAUDE Orchestration table
69
+ - [x] All five agents: Runtime + PLAYCRAFT_STOP
70
+ - [x] PM Gate #1 four docs; Reviewer no `stage: rework`; Developer handoff Invoke @reviewer
71
+
72
+ ## Polish pass (Glossary / deliverable cards / TA Step naming)
73
+
74
+ - [x] `collaboration.md`: § Glossary (canonical terms)
75
+ - [x] `pm.md`: § Gate #1 Deliverable Card
76
+ - [x] Reviewer: `rework_round` failure budget explicit in L1 + `reviewer-six-dimension-eval.md`
77
+ - [x] `refs/README.md`: § 按 invoke 场景反查
78
+ - [x] `ta-pipeline-cookbook.md`: Step 0/1/2 (not Phase 0/1/2)
79
+ - [x] `CLAUDE.md`: Single-Agent Fallback removed; sub-agent invoke required
80
+
81
+ ## Phase G — Designer Handoff v2
82
+
83
+ - [x] `docs/team/workflow-changelog.md` documents `designer-handoff-v2`
84
+ - [x] `templates/project-state.template.md` § Workflow spec + Parallel Tracking (audio + digit + atom status)
85
+ - [x] `designer-deliverable-spec.md`: Handoff Pack, Phase 2 VisualAtom rules; no legacy Phase 2 visual-only-TA sentence
86
+ - [x] `designer-handoff-v2-checklist.md` linked from `designer-style-exploration-flow.md` Step 5
87
+ - [x] `templates/style-exploration.template.md` uses MC + ASR (no `concept_{{a}}.png`)
88
+ - [x] `templates/designer-log.template.md`: ASR Coverage Matrix + Palette Locked
89
+ - [x] `playcraft-style-qa` uses MC path; no `concept_selected.png`
90
+ - [x] `playcraft-asset-state-sheet` skill exists; `playcraft-exploded-view` removed
91
+ - [x] `core-model.md` + `atom-plan.template.md` v2 VisualAtom baseline
92
+ - [x] Vitest `designer-handoff-v2` cases pass
93
+
94
+ ## Phase J — atom-plan JSON canonical
95
+
96
+ - [x] `docs/team/atom-plan-format.md` — JSON + MD split, PM Gate #1 flow
97
+ - [x] `templates/atom-plan.template.json` + trimmed `atom-plan.template.md` (no inline Skills Match Snapshot)
98
+ - [x] `pm-workflow-detail.md` Step 8 + Gate checklist → `atom-plan.json` + `validate-atom-plan`
99
+ - [x] `playcraft-workflow` living DAG + `collaboration.md` / `agent-conduct.md` aligned
100
+ - [x] `.claude/hooks/validate-atom-plan.mjs` + PM STOP in `settings.json` / `.cursor/hooks.json`
101
+ - [x] `validate-workflow-stop.mjs` requires `atom-plan.json` for TA/Developer intake
102
+ - [x] Vitest `atom-plan-json-and-validate-hook` passes
103
+
104
+ ## Phase I — Upstream intake + four-doc discipline + hooks
105
+
106
+ - [x] `agent-conduct.md`: PM/Designer four-doc discipline; TA/Developer Upstream Intake MUST
107
+ - [x] `ta-pipeline-cookbook.md` Step 0a + `developer-phase1-flow.md` Step 0
108
+ - [x] `ta-log.template.md` + `developer-log.template.md` § Upstream Intake
109
+ - [x] `pm.md` + `pm-workflow-detail.md` + `designer.md` + `collaboration.md` § Four-doc discipline
110
+ - [x] `.claude/settings.json` + `.cursor/hooks.json` → `validate-workflow-stop.mjs`
111
+ - [x] Vitest `upstream-intake` + `validate-workflow-stop.test.ts` pass
112
+
113
+ ## Phase H — Production serial v1
114
+
115
+ - [x] `workflow-changelog.md`: `production-serial-v1` current; no Migration section
116
+ - [x] `templates/project-state.template.md`: `workflowSpecVersion` = `production-serial-v1`; § Production Pipeline (no Parallel Tracking / THREE-WAY)
117
+ - [x] Gate #2b: orchestrator invokes `@designer` only; serial `@technical-artist` → `integration` `@developer`
118
+ - [x] `designer.md` STOP: `Invoke @technical-artist`; `technical-artist.md`: `Set stage=integration, invoke @developer`
119
+ - [x] `developer.md` Runtime: no `stage: production` row; single `integration` branch
120
+ - [x] `developer-phase1-flow.md`: trigger `integration`; no assets-not-required / Parallel with
121
+ - [x] `CLAUDE.md` + `playcraft-orchestrator.mdc` + `collaboration.md` + `agent-conduct.md` + `agent-runtime-matrix.md` aligned
122
+ - [x] Vitest `production-serial-v1` cases pass
123
+
124
+ ## Phase K — Plan convergence (TA + Developer)
125
+
126
+ - [x] `templates/ta-log.template.md`: § Production Plan (Coverage / Atlas / Pipeline Order / Risk)
127
+ - [x] `templates/developer-log.template.md`: § Implementation Plan (Architecture / Scene-Asset / PGS / Risk)
128
+ - [x] `validate-workflow-stop.mjs`: validates Plan section + Risk Checklist + no placeholders
129
+ - [x] `.claude/hooks/README.md`: documents Plan validation on STOP
130
+ - [x] `technical-artist.md` + `developer.md`: Runtime + Track done + Important Rules reference Plan
131
+ - [x] `ta-pipeline-cookbook.md` Step 0d + `developer-phase1-flow.md` Step 3b
132
+ - [x] `agent-conduct.md`: TA/Developer MUST/MUST NOT for Plan before production/code
133
+ - [x] `collaboration.md` § STOP sync checklist step 5 (Plan convergence)
134
+ - [x] Vitest `validate-workflow-stop.test.ts` covers `validatePlan`
135
+
136
+ ## Automated
137
+
138
+ ```bash
139
+ cd packages/cli && pnpm exec vitest run test/project-template-workflow.test.ts test/validate-workflow-stop.test.ts
140
+ ```
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,26 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "skillsMatch": {
4
+ "engine": "{{engine}}",
5
+ "engineSource": "inferred",
6
+ "intent": ["{{gameplayType}}", "{{mechanic}}", "{{keywords}}"],
7
+ "items": [],
8
+ "mediaGroups": []
9
+ },
10
+ "atoms": [
11
+ {
12
+ "atomId": "{{production_atom_id}}",
13
+ "slot": "{{slot_name}}",
14
+ "type": "GameplayAtom",
15
+ "assignTo": "Developer",
16
+ "dependsOn": [],
17
+ "skillRef": "{{aigameplay_atomId_or_null}}",
18
+ "priority": "high",
19
+ "parallelGroup": null,
20
+ "referenceSource": null,
21
+ "status": "pending",
22
+ "actualOutput": null
23
+ }
24
+ ],
25
+ "dagRevisions": []
26
+ }