@playcraft/cli 0.0.39 → 0.0.41

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 (121) 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/fix-ids.js +17 -3
  7. package/dist/commands/fix-ids.test.js +264 -0
  8. package/dist/commands/image.js +1337 -43
  9. package/dist/commands/login.js +60 -2
  10. package/dist/commands/recommend.js +1 -1
  11. package/dist/commands/remix.js +213 -0
  12. package/dist/commands/skills.js +1379 -0
  13. package/dist/commands/tools-3d.js +473 -0
  14. package/dist/commands/tools-generation.js +454 -0
  15. package/dist/commands/tools-project.js +400 -0
  16. package/dist/commands/tools-research.js +37 -0
  17. package/dist/commands/tools-research.test.js +216 -0
  18. package/dist/commands/tools-utils.js +164 -0
  19. package/dist/commands/tools.js +7 -616
  20. package/dist/config.js +2 -0
  21. package/dist/index.js +20 -2
  22. package/dist/utils/agent-api-client.js +52 -16
  23. package/package.json +9 -3
  24. package/project-template/.claude/agents/designer.md +116 -0
  25. package/project-template/.claude/agents/developer.md +133 -0
  26. package/project-template/.claude/agents/pm.md +164 -0
  27. package/project-template/.claude/agents/refs/README.md +67 -0
  28. package/project-template/.claude/agents/refs/designer-art-style-catalog.md +533 -0
  29. package/project-template/.claude/agents/refs/designer-color-audio-recipes.md +153 -0
  30. package/project-template/.claude/agents/refs/designer-deliverable-spec.md +167 -0
  31. package/project-template/.claude/agents/refs/designer-dimension-axis.md +27 -0
  32. package/project-template/.claude/agents/refs/designer-handoff-v2-checklist.md +68 -0
  33. package/project-template/.claude/agents/refs/designer-master-composite-recipes.md +216 -0
  34. package/project-template/.claude/agents/refs/designer-style-exploration-flow.md +37 -0
  35. package/project-template/.claude/agents/refs/developer-dev-handoff.md +109 -0
  36. package/project-template/.claude/agents/refs/developer-impl-cookbook.md +134 -0
  37. package/project-template/.claude/agents/refs/developer-phase1-flow.md +211 -0
  38. package/project-template/.claude/agents/refs/pm-workflow-detail.md +545 -0
  39. package/project-template/.claude/agents/refs/reviewer-six-dimension-eval.md +286 -0
  40. package/project-template/.claude/agents/refs/ta-3d-flip-recipe.md +85 -0
  41. package/project-template/.claude/agents/refs/ta-atlas-deliverable-standard.md +46 -0
  42. package/project-template/.claude/agents/refs/ta-batch-pipeline-recipes.md +120 -0
  43. package/project-template/.claude/agents/refs/ta-image-generation-detail.md +356 -0
  44. package/project-template/.claude/agents/refs/ta-image-ops-reference.md +495 -0
  45. package/project-template/.claude/agents/refs/ta-pipeline-cookbook.md +699 -0
  46. package/project-template/.claude/agents/refs/ta-tools-reference.md +111 -0
  47. package/project-template/.claude/agents/refs/ta-vfx-preset-catalog.md +365 -0
  48. package/project-template/.claude/agents/reviewer.md +103 -0
  49. package/project-template/.claude/agents/technical-artist.md +111 -0
  50. package/project-template/.claude/hooks/README.md +36 -0
  51. package/project-template/.claude/hooks/validate-atom-plan.mjs +224 -0
  52. package/project-template/.claude/hooks/validate-workflow-stop.mjs +258 -0
  53. package/project-template/.claude/settings.json +32 -0
  54. package/project-template/.claude/settings.local.json +4 -0
  55. package/project-template/.claude/skills/playcraft-ad-psychology/SKILL.md +182 -0
  56. package/project-template/.claude/skills/playcraft-art-style-guide/SKILL.md +123 -0
  57. package/project-template/.claude/skills/playcraft-asset-state-sheet/SKILL.md +141 -0
  58. package/project-template/.claude/skills/playcraft-audio-generation/SKILL.md +280 -0
  59. package/project-template/.claude/skills/playcraft-batch-pipeline/SKILL.md +184 -0
  60. package/project-template/.claude/skills/playcraft-build-optimizer/SKILL.md +306 -0
  61. package/project-template/.claude/skills/playcraft-image-generation/SKILL.md +229 -0
  62. package/project-template/.claude/skills/playcraft-image-generation/reference/build-sprite-sheet.template.mjs +123 -0
  63. package/project-template/.claude/skills/playcraft-image-generation/reference/compare-style.template.mjs +254 -0
  64. package/project-template/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +235 -0
  65. package/project-template/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +97 -0
  66. package/project-template/.claude/skills/playcraft-image-generation/reference/gen-edit-variants.template.mjs +118 -0
  67. package/project-template/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +137 -0
  68. package/project-template/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +397 -0
  69. package/project-template/.claude/skills/playcraft-image-generation/reference/validate-sprite-sheet.template.mjs +296 -0
  70. package/project-template/.claude/skills/playcraft-image-ops/SKILL.md +122 -0
  71. package/project-template/.claude/skills/playcraft-masking/SKILL.md +373 -0
  72. package/project-template/.claude/skills/playcraft-research/SKILL.md +212 -0
  73. package/project-template/.claude/skills/playcraft-sprite-generation/SKILL.md +423 -0
  74. package/project-template/.claude/skills/playcraft-storyboard/SKILL.md +148 -0
  75. package/project-template/.claude/skills/playcraft-style-qa/SKILL.md +270 -0
  76. package/project-template/.claude/skills/playcraft-text-rendering/SKILL.md +236 -0
  77. package/project-template/.claude/skills/playcraft-vfx-animation/SKILL.md +130 -0
  78. package/project-template/.claude/skills/playcraft-workflow/SKILL.md +396 -0
  79. package/project-template/.cursor/hooks.json +17 -0
  80. package/project-template/.cursor/rules/playcraft-orchestrator.mdc +87 -0
  81. package/project-template/.cursor/rules/playcraft-subagent-boundary.mdc +18 -0
  82. package/project-template/CLAUDE.md +240 -0
  83. package/project-template/assets/audio/bgm/.gitkeep +0 -0
  84. package/project-template/assets/audio/sfx/.gitkeep +0 -0
  85. package/project-template/assets/bundles/.gitkeep +0 -0
  86. package/project-template/assets/images/bg/.gitkeep +0 -0
  87. package/project-template/assets/images/reference/.gitkeep +0 -0
  88. package/project-template/assets/images/storyboard/.gitkeep +0 -0
  89. package/project-template/assets/images/tiles/.gitkeep +0 -0
  90. package/project-template/assets/images/ui/.gitkeep +0 -0
  91. package/project-template/assets/images/vfx/.gitkeep +0 -0
  92. package/project-template/assets/models/.gitkeep +0 -0
  93. package/project-template/docs/team/agent-conduct.md +105 -0
  94. package/project-template/docs/team/agent-runtime-matrix.md +62 -0
  95. package/project-template/docs/team/atom-plan-format.md +74 -0
  96. package/project-template/docs/team/collaboration.md +288 -0
  97. package/project-template/docs/team/core-model.md +50 -0
  98. package/project-template/docs/team/platform-capabilities.md +15 -0
  99. package/project-template/docs/team/workflow-changelog.md +51 -0
  100. package/project-template/docs/team/workflow-consistency-checklist.md +128 -0
  101. package/project-template/game/config/.gitkeep +0 -0
  102. package/project-template/game/gameplay/.gitkeep +0 -0
  103. package/project-template/game/scenes/.gitkeep +0 -0
  104. package/project-template/logs/.gitkeep +0 -0
  105. package/project-template/ta-workspace/logs/.gitkeep +0 -0
  106. package/project-template/ta-workspace/scripts/.gitkeep +0 -0
  107. package/project-template/ta-workspace/tmp/.gitkeep +0 -0
  108. package/project-template/templates/atom-plan.template.json +26 -0
  109. package/project-template/templates/atom-plan.template.md +76 -0
  110. package/project-template/templates/design-brief.template.md +195 -0
  111. package/project-template/templates/design-lens-checklist.reference.md +117 -0
  112. package/project-template/templates/design-methodology.md +99 -0
  113. package/project-template/templates/designer-log.template.md +98 -0
  114. package/project-template/templates/developer-log.template.md +140 -0
  115. package/project-template/templates/five-axis-framework.md +186 -0
  116. package/project-template/templates/intent-clarifications.template.md +58 -0
  117. package/project-template/templates/layout-spec.template.md +132 -0
  118. package/project-template/templates/project-state.template.md +219 -0
  119. package/project-template/templates/review-report.template.md +166 -0
  120. package/project-template/templates/style-exploration.template.md +93 -0
  121. package/project-template/templates/ta-log.template.md +205 -0
@@ -0,0 +1,288 @@
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 (current) | See `workflow-changelog.md`; serial production waves + `integration` Developer |
16
+ | **designer-handoff-v2** | visual handoff spec | MC + ASR + Handoff Pack; bundled in `production-serial-v1` changelog |
17
+ | **Production Pipeline** | serial waves in `project-state` | Wave 1 Designer Ph.2 → Wave 2 TA; Developer only in `integration` |
18
+ | **Developer integration** | — | Single `integration` stage: Skill Preflight + PGS + asset bind + Dev self-check (replaces parallel Ph.1 in `production`) |
19
+ | **Four-doc discipline** | 四件套写作纪律 | PM/Designer: contracts only in four docs; narrative in style-exploration + designer-log; TA/Dev intake: agent-conduct + log templates |
20
+ | **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 |
21
+ | **reworkRound** | `handoff.rework_round` | Counts **review failures** (0 → 1 → 2). At `2`, next fail → forced Gate #3 (3rd failure) |
22
+ | **ICP** | Intent Clarification Protocol | Async agent Q&A in `docs/intent-clarifications.md`; orchestrator does not interrupt user |
23
+ | **MC** | Master Composite | Five 9:16 panels in one image: concept panel + Hook / Onboarding / End Card / CTA storyboards |
24
+ | **ASR** | Asset State Reference Sheet | 资产状态参考精灵图板:UI 组件状态板 + 元素状态板;Gate #2a 后产出;供 TA crop 量产(非 runtime atlas) |
25
+
26
+ ## Mission vs Goals vs Workflow
27
+
28
+ | Layer | Location | Purpose |
29
+ | ---------------- | ---------------------------------- | ----------------------------------------------------------------------------- |
30
+ | **Team Mission** | `CLAUDE.md` § Mission | Shared vision — why we build playable ads |
31
+ | **Role Goals** | `.claude/agents/<role>.md` § Goals | **What this role must achieve**, in priority order (Top 3 + success criteria) |
32
+ | **Workflow** | Same agent file + `refs/` | How to execute; exit criteria point back to Goals |
33
+
34
+ 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).
35
+
36
+ ## Gate Protocol (Orchestrator-Only)
37
+
38
+ Only the **Orchestrator** (main session) may use `AskUserQuestion` toward the user. Sub-agents prepare materials, update `project-state`, then **STOP**.
39
+
40
+ | Gate | Sub-agent deliverable | STOP signal (`project-state`) | Orchestrator action |
41
+ | ------- | ---------------------------------------------------------------- | ----------------------------- | ---------------------------------------------------------------------------------------------------------- |
42
+ | **#1** | PM: four design docs ready for review | `gates.#1 = pending` | `AskUserQuestion` → on pass: `gates.#1 = passed`, `stage: style_exploration`, invoke `@designer` |
43
+ | **#2a** | Designer: MC options A/B[/C] + partial `style-exploration.md` | `gates.#2a = pending` | `AskUserQuestion` pick option → set `selectedMcOption` → resume `@designer` |
44
+ | **#2b** | Designer: ASR 双板 + complete `style-exploration` + designer-log | `gates.#2b = pending` | `AskUserQuestion` confirm MC+ASR → `gates.#2b = passed`, `stage: production`, invoke `@designer` Ph.2 only |
45
+ | **#3** | Reviewer pass + `devStatus: ready` | `gates.#3 = pending` | Show **devUrl** → user accept → `stage: done` |
46
+
47
+ Sub-agent pattern: **write artifacts → update `## Agent handoff` + gates → STOP (no user questions).**
48
+
49
+ ## Agent Handoff
50
+
51
+ 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.
52
+
53
+ | Field | Writer | Meaning |
54
+ | -------------------------- | -------------------------------- | ------------------------------------------------------------------------------------------------ |
55
+ | `subagent` | Sub-agent on STOP | Role that just finished (`pm`, `designer`, `technical-artist`, `developer`, `reviewer`, `none`) |
56
+ | `subagent_stop` | Sub-agent on STOP | `true` = do not continue work until orchestrator acts |
57
+ | `waiting_for` | Both | `user_gate` = orchestrator must run Gate; `orchestrator` = wait for invoke; `none` = active work |
58
+ | `gate_pending` | Sub-agent when gate pending | `"1"` \| `"2a"` \| `"2b"` \| `"3"` \| `null` — sync with Gates table |
59
+ | `next_orchestrator_action` | Sub-agent on STOP (**required**) | One sentence: the **only** legal next step for orchestrator |
60
+ | `last_completed_by` | Sub-agent on STOP | Same as `subagent` or action label |
61
+ | `rework_round` | Reviewer on fail / orchestrator | Keep in sync with `reworkRound` in Gate resume fields |
62
+ | `block_reason` | Optional | Why pipeline cannot advance |
63
+
64
+ **Orchestrator loop:** read handoff → if `gate_pending` + `user_gate` → Gate only → else if `subagent_stop` → execute `next_orchestrator_action` → reset handoff before invoke.
65
+
66
+ **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.
67
+
68
+ ## STOP sync checklist
69
+
70
+ On every sub-agent STOP, update **in order** (see [agent-conduct.md § Invoke protocol](agent-conduct.md#invoke-protocol-all-sub-agents)):
71
+
72
+ 1. **Gates table** — set `#N = pending` when gate materials ready (if applicable).
73
+ 2. **`## Agent handoff`** — all fields; `subagent_stop: true`; `next_orchestrator_action` required.
74
+ 3. **Progress Checkpoint** — one row (stage, agent, action, outcome).
75
+ 4. **Production Pipeline** — when `stage: production`, set this role's wave row to `done` + notes when wave complete.
76
+
77
+ Example (update only your row when track complete):
78
+
79
+ | Wave | Agent | Status | Notes |
80
+ | ---- | ---------------- | ------ | --------------------------------------------------- |
81
+ | 1 | Designer | done | Ph.2: BGM + SFX + digit strip; VisualAtoms ASR-done |
82
+ | 2 | Technical Artist | done | All TA atoms + Compliance green |
83
+
84
+ Checkpoint is a **human log** for context — **not** the routing source (handoff is).
85
+
86
+ ## Stage field ownership
87
+
88
+ | Field / transition | Writer |
89
+ | ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
90
+ | `gates.#N = pending` | Sub-agent before STOP |
91
+ | `gates.#N = passed` | **Orchestrator** after user confirms Gate |
92
+ | Mainline `stage` (`pm` → `style_exploration` → `production` → `integration` → `review` → `rework` → `done`) | **Orchestrator only** |
93
+ | `selectedMcOption` | Orchestrator after Gate #2a |
94
+ | `devStatus`, `devUrl`, `devBlockers` | Developer |
95
+ | `reviewerDevCheck`, `reviewerDevNotes` | Reviewer |
96
+ | `reworkRound` | Reviewer on fail (+1); orchestrator may read for Gate #3 forced path |
97
+
98
+ Sub-agents **MUST NOT** set mainline `stage`. They request orchestrator via `next_orchestrator_action` (e.g. `Invoke @reviewer`).
99
+
100
+ ## Rework sequence (orchestrator-owned)
101
+
102
+ 1. **Reviewer** — Dev walkthrough + six dimensions → fail: `review-report.md`, `reworkRound` +1, handoff `next_orchestrator_action: "Set stage=rework, invoke routed agents per review-report"` → STOP (**no** `stage: rework` in reviewer write).
103
+ 2. **Orchestrator** — Set `stage: rework`, clear `subagent_stop`, invoke `@developer` / `@technical-artist` / `@designer` per Action Items (parallel when independent).
104
+ 3. **Developer** (and others) — Fix scoped items → `devStatus: ready` → handoff `Invoke @reviewer` → STOP.
105
+ 4. **Orchestrator** — Invoke `@reviewer` again; on pass → Gate #3.
106
+
107
+ ## Master Composite — five panels
108
+
109
+ | Name | Panel | `playcraft-storyboard` label | Role |
110
+ | --------------------- | ----- | ------------------------------------------------- | ------------------------------------------------------------------------ |
111
+ | **Concept panel** | 1 | Main Gameplay | All key element types + static text + full UI; TA primary extract source |
112
+ | **Storyboard panels** | 2–5 | Hook / Onboarding / End Card / CTA Always Visible | Per-stage visual intent; Developer scene reference |
113
+
114
+ ## User interaction model (three phases)
115
+
116
+ | Phase | User | Agents |
117
+ | -------------------- | --------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
118
+ | **A — Choose** | **Orchestrator only** — `AskUserQuestion` for Gate #1, #2a, #2b | Sub-agents STOP when gate materials ready; no mass production until Gate #2b passed |
119
+ | **B — Produce** | Not interrupted for terminal commands | Serial: Designer Ph.2 → TA → Developer (`integration`) |
120
+ | **C — Dev delivery** | **Gate #3 only**: open **devUrl** from orchestrator | Developer owns Dev quality → Reviewer Dev walkthrough → user accepts |
121
+
122
+ **User never runs `npm run dev`.** Delivery endpoint = Dev URL acceptance (`done`), not `playcraft build`.
123
+
124
+ ## Agent responsibility matrix (priority order)
125
+
126
+ | # | PM | Designer | Technical Artist | Developer | Reviewer |
127
+ | -------- | --------------------------------------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------------------------------- | ------------------------------------------------ |
128
+ | **1** | Define experience + gameplay (`design-brief`, flow) | Lock visual + narrative — **MC = UI spec for Developer** | Style-faithful mass production from MC/ASR | **Restore UI** (`layout-spec` + MC storyboard) | Audit intent vs design docs |
129
+ | **2** | Zero-ambiguity contracts (`layout-spec`, `atom-plan`) | Handoff Pack: ASR Coverage Matrix, Palette Locked, Motion Notes | 100% `assetMapping` at spec | **Restore PM gameplay** (PGS, first level success) | Audit player experience (UI + gameplay fidelity) |
130
+ | **3** | Gates + ICP; **spec-gap** vs **asset rework** arbitration | Audio + digit strip; **respond to Developer visual/audio rework** | Production-grade assets; **respond to Developer TA rework** | **Dev preview owner** (`npm run dev`, devUrl, upstream blockers) | **Dev walkthrough** UI + gameplay, then verdict |
131
+ | **Last** | — | — | — | `playcraft build` = **future**, not `done` | — |
132
+
133
+ Full detail: `.claude/agents/<role>.md` § Goals.
134
+
135
+ ## Project Directory — What Exists vs What Agents Create
136
+
137
+ ```
138
+ <project-root>/ ← playcraft create <name> 初始化后
139
+
140
+ ├── CLAUDE.md ✅ 已存在(协作总纲)
141
+ ├── .claude/agents/ ✅ 已存在(5 个 Agent 指令 + refs/ 详细参考)
142
+ │ ├── pm.md PM(项目管理)
143
+ │ ├── designer.md Designer(设计)
144
+ │ ├── technical-artist.md Technical Artist(技术美术)
145
+ │ ├── developer.md Developer(开发)
146
+ │ ├── reviewer.md Reviewer(审核)
147
+ │ └── refs/ L2 按需细则
148
+ ├── .claude/skills/ ✅ 已存在(平台工具 Skill)
149
+ ├── .claude/settings.local.json ✅ 模板(权限白名单,见文件内说明)
150
+ ├── .cursor/rules/ ✅ 编排与边界规则(Cursor 主会话)
151
+ ├── .cursor/hooks.json ✅ Cursor subagentStop → validate-workflow-stop
152
+ ├── .claude/settings.json ✅ Claude Code SubagentStop hooks(可提交)
153
+ ├── .claude/hooks/ ✅ 共享校验脚本(见 README)
154
+ ├── docs/team/agent-conduct.md ✅ 已存在(MUST/NEVER 行为契约)
155
+ ├── templates/ ✅ 已存在(只读,Agent 创建文档时参考)
156
+ ├── .gitignore ✅ 已存在
157
+
158
+ ├── ta-workspace/scripts/ ✅ 已存在(TA 写 Node.js 批量脚本,入库)
159
+ ├── ta-workspace/logs/ ✅ 已存在(gitkeep,脚本日志不入库)
160
+ ├── ta-workspace/tmp/ ✅ 已存在(gitkeep,临时产物不入库)
161
+
162
+ ├── assets/images/{bg,tiles,ui,vfx,reference}/ ✅ 已存在(gitkeep 占位;reference = ASR 双板)
163
+ ├── assets/audio/{bgm,sfx}/ ✅ 已存在(gitkeep 占位)
164
+ ├── assets/models/ ✅ 已存在(gitkeep 占位,3D GLB 资产)
165
+ ├── assets/bundles/ ✅ 已存在(gitkeep 占位)
166
+
167
+ │ 以下目录/文件在 playcraft create 时为空,由 Agent 运行时填充:
168
+
169
+ ├── docs/project-state.md ⏳ PM 创建
170
+ ├── docs/design-brief.md ⏳ PM 创建
171
+ ├── docs/layout-spec.md ⏳ PM 创建
172
+ ├── docs/atom-plan.json ⏳ PM 创建(skillsMatch + atoms[] DAG)
173
+ ├── docs/atom-plan.md ⏳ PM 创建(验收标准 + Context 富集区)
174
+ ├── docs/style-exploration.md ⏳ Designer Phase 1 创建
175
+
176
+ ├── assets/images/** ⏳ Designer (样本) + TA (补全)
177
+ ├── assets/audio/** ⏳ Designer (生成) + TA (后处理)
178
+ ├── assets/models/** ⏳ TA (3D 管线)
179
+ ├── assets/bundles/** ⏳ Designer + TA (atom 封包)
180
+
181
+ ├── game/gameplay/ ⏳ Developer Phase 1
182
+ ├── game/config/ ⏳ Developer Phase 1
183
+ ├── game/scenes/ ⏳ Developer Phase 1
184
+ ├── game/index.html ⏳ Developer Phase 1 + 2
185
+
186
+ ├── logs/designer-log.md ⏳ Designer
187
+ ├── logs/ta-log.md ⏳ Technical Artist
188
+ ├── logs/developer-log.md ⏳ Developer
189
+ └── logs/review-report.md ⏳ Reviewer
190
+ ```
191
+
192
+ ## Directory Conventions
193
+
194
+ **All agents MUST follow this structure.**
195
+
196
+ ```
197
+ <project-root>/
198
+ ├── docs/ Design documents (PM creates, all agents reference)
199
+ ├── assets/
200
+ │ ├── images/{bg,tiles,ui,vfx,reference} Visual assets (ASR in reference/; samples + TA completions)
201
+ │ ├── audio/{bgm,sfx} Audio assets (Designer generates, TA post-processes)
202
+ │ ├── models/ 3D GLB assets (TA production)
203
+ │ └── bundles/ Atom bundles (Designer + TA create)
204
+ ├── game/
205
+ │ ├── gameplay/ PGS + state machine (Developer)
206
+ │ ├── config/ Level configs (Developer)
207
+ │ ├── scenes/ Scene definitions (Developer)
208
+ │ └── index.html Entry point (Developer)
209
+ ├── logs/ Work logs + review report
210
+ ├── ta-workspace/ TA batch scripts + temp files
211
+ └── templates/ Read-only reference templates
212
+ ```
213
+
214
+ ## File Read/Write Matrix
215
+
216
+ | File/Directory | PM | Designer | **TA** | Developer | Reviewer |
217
+ | --------------------------- | ------ | ----------------------- | ------------------------------------- | ----------------------- | -------- |
218
+ | `docs/project-state.md` | Create | Update stage | **Update stage** | Update stage | Read |
219
+ | `docs/design-brief.md` | Create | Read | **Read** | Read | Read |
220
+ | `docs/layout-spec.md` | Create | **Read (contract)** | **Read (contract)** | **Read (contract)** | Read |
221
+ | `docs/atom-plan.json` | Create | Update `atoms[].status` | Update `atoms[].status` | Update `atoms[].status` | Read |
222
+ | `docs/atom-plan.md` | Create | Asset Skill Context | TA Skill Context | Impl Skill Context | Read |
223
+ | `docs/style-exploration.md` | — | Create (Phase 1) | **Read** | Read | Read |
224
+ | `assets/images/` | — | **Create (samples)** | **Create (completions + processing)** | Read | Read |
225
+ | `assets/audio/` | — | **Create** | **Post-process** | Read | Read |
226
+ | `assets/models/` | — | — | **Create (3D pipeline)** | Read | Read |
227
+ | `assets/bundles/` | — | **Create (partial)** | **Create (TA atoms)** | Read | Read |
228
+ | `game/` | — | — | — | **Create** | Read |
229
+ | `logs/designer-log.md` | — | Create+Update | Read | Read | Read |
230
+ | `logs/ta-log.md` | — | — | **Create** | Read | Read |
231
+ | `logs/developer-log.md` | — | — | — | Create+Update | Read |
232
+ | `logs/review-report.md` | — | — | — | — | Create |
233
+
234
+ **Key**: Designer and TA both write `assets/`, but responsibilities don't overlap:
235
+
236
+ - Designer: MC + ASR (Phase 1), audio + digit strip + atom status (Phase 2)
237
+ - TA writes completion assets and technically processed production-grade files
238
+
239
+ ## Asset Contract (Asset Path Contract)
240
+
241
+ `layout-spec.md` defines **element ID → atlas+frame or file path**, **locked after Gate #1**:
242
+
243
+ - **PM** defines `assetMapping`, **atlas grouping table**, and specs (default: **WebP** images, **MP3** audio)
244
+ - **≥2 elements same class** (tiles / ui / vfx) → one **`.webp` + `.json`** atlas per group; each element has `frameId`
245
+ - **Exceptions**: full-screen bg (single webp), digit strip (single webp), MC/ASR reference (non-runtime)
246
+ - **Designer** delivers MP3 audio + digit strip webp at contracted paths
247
+ - **TA** delivers runtime atlases + post-processed MP3 per [ta-atlas-deliverable-standard.md](../../.claude/agents/refs/ta-atlas-deliverable-standard.md)
248
+ - **Developer** (`integration`) binds `loadImage`/atlas+frame at contract paths with **real files** on disk, then integrates in Dev
249
+ - **Path / frame mismatch = integration failure** — TA Compliance + Reviewer check
250
+ - **No unilateral path changes** — PM + user-approved contract change only
251
+
252
+ ## Four-doc discipline
253
+
254
+ PM and Designer **own different layers**; TA and Developer **read all layers** at wave start (Upstream Intake).
255
+
256
+ | Layer | Files | Writer | Content rule |
257
+ | ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
258
+ | **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. |
259
+ | **Visual narrative** | `style-exploration`, `logs/designer-log` | Designer | MC/ASR intent, Handoff Pack, Coverage Matrix, Style Intent Notes |
260
+ | **Production proof** | `logs/ta-log`, `logs/developer-log` | TA / Developer | Upstream Intake table (mandatory), then pipeline / implementation logs |
261
+
262
+ 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.
263
+
264
+ ## Spec Quick-Check
265
+
266
+ Within 30 seconds of each wave start, the active agent validates Layout Spec:
267
+
268
+ | Checker | When | Checks | On Gap |
269
+ | --------- | -------------------------------------------- | ---------------------------------------------------- | ----------------------------------------------------------------- |
270
+ | 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 |
271
+ | Developer | `integration` start (after TA Wave 2 `done`) | Every GameplayAtom reference exists in assetMapping | Same |
272
+
273
+ ## DAG Modification Protocol
274
+
275
+ - **Default**: Follow PM's plan
276
+ - **Allowed**: Add/remove/modify atoms — update `atom-plan.json` `atoms[]` + record in `atom-plan.md` § DAG Revisions
277
+ - **Stop for direction changes**: Switching gameplay/style → report back
278
+ - **Reviewer audits**: Every revision evaluated for reasonableness
279
+
280
+ ## Upstream rework routing (Dev blockers)
281
+
282
+ | `routeTo` | Trigger | Orchestrator action |
283
+ | ------------ | -------------------------------------------------------------------- | ------------------------------------------------- |
284
+ | **TA** | Missing file, wrong size/format, style drift in mass-produced assets | Re-invoke `@technical-artist` → then `@developer` |
285
+ | **Designer** | Wrong/missing sample, audio mood, supplementary art | Re-invoke `@designer` → then `@developer` |
286
+ | **PM** | Contract ambiguity, gameplay vs spec conflict | `@pm` arbitrates ICP → then `@developer` |
287
+
288
+ 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,51 @@
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
+ ## production-serial-v1 (current)
6
+
7
+ **Effective**: project-template default for new playable-ad projects.
8
+
9
+ ### Summary
10
+
11
+ - **Production orchestration**: after Gate #2b, **strict serial** — Designer Ph.2 → TA → Developer (`integration`). No parallel spawn of `@developer` during `production`.
12
+ - **Production Pipeline** replaces Parallel Tracking: Wave 1 Designer, Wave 2 TA; Developer runs only in `integration` with real assets on disk.
13
+ - **Developer**: single `integration` invoke — Spec Quick-Check, Skill Preflight, PGS/scenes, asset bind, `npm run dev` → `devStatus: ready`.
14
+ - Visual delivery unchanged from **designer-handoff-v2** (MC + ASR, Handoff Pack, Phase 2 audio/digit only).
15
+ - **atom-plan Gate #1**: PM writes `docs/atom-plan.json` (`skillsMatch` + `atoms[]`); `skillRef` only from `skillsMatch.items`; `playcraft skills validate-atom-plan` + PM STOP hook; `atom-plan.md` for Context 富集 only.
16
+
17
+ ### Production waves (serial)
18
+
19
+ | Wave | Agent | Stage | Orchestrator invoke |
20
+ | ---- | ---------------- | ------------- | --------------------------------------------------- |
21
+ | 1 | Designer | `production` | `@designer` Ph.2 only after Gate #2b |
22
+ | 2 | Technical Artist | `production` | `@technical-artist` after Wave 1 `done` |
23
+ | 3 | Developer | `integration` | `@developer` after Wave 2 `done` + Compliance green |
24
+
25
+ ### Trade-offs
26
+
27
+ | Benefit | Cost |
28
+ | ------------------------------------------------------------------------ | ------------------------------------------------------------------ |
29
+ | Developer codes against real TA output; fewer integration visual reworks | Longer wall-clock before `integration` (no TA ∥ Developer overlap) |
30
+ | TA Compliance before gameplay code | Spec-gap blocks the whole chain until PM supplements |
31
+
32
+ ---
33
+
34
+ ## designer-handoff-v2
35
+
36
+ **Superseded by** `production-serial-v1` for orchestration; visual rules below still apply.
37
+
38
+ ### Summary
39
+
40
+ - Visual baseline locked in **Phase 1**: Master Composite (MC) + **ASR** dual sheets (UI + element state reference).
41
+ - **Phase 2 Designer**: BGM, SFX, digit strip only; `assignTo: Designer` VisualAtoms marked `done` when covered by ASR (not separate `tile_sample_*.png` batch).
42
+ - **Gate #2b Handoff Pack**: ASR Coverage Matrix, Palette Locked, Motion Notes in `designer-log` / `style-exploration`.
43
+ - Retired paths: `exploded_view_*.png`, `concept_selected.png`, per-frame `concept_*.png` / `hook_*.png` deliverable tables.
44
+
45
+ ---
46
+
47
+ ## designer-handoff-v1 (legacy)
48
+
49
+ - Single **Exploded View** (or scattered concept/storyboard PNGs) as TA extract source.
50
+ - Phase 2 sometimes assumed Designer outputs `tile_sample_*.png` at `assetMapping` paths.
51
+ - `playcraft-exploded-view` skill id (removed in v2).
@@ -0,0 +1,128 @@
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
+ ## Automated
125
+
126
+ ```bash
127
+ cd packages/cli && pnpm exec vitest run test/project-template-workflow.test.ts test/validate-workflow-stop.test.ts
128
+ ```
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
+ }