@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,286 @@
1
+ # Reviewer: Six-Dimension Evaluation & Scoring
2
+
3
+ > **Read before scoring and for the full audit loop.** Contains: Dev walkthrough; **Steps 0–0b + Phases 1–5** (DAG, layout, TA log, psychology, technical checks, six dimensions, DAG revisions); **scoring + veto**; **Rework mechanism** (rounds, severity, routing).
4
+
5
+ **Developer alignment**: Style Consistency + Intent Fidelity → **Dev UI match**; Experience Flow + Difficulty Balance → **Dev gameplay match**; technical checks + veto items → runtime in Dev. **Dev walkthrough pass ≠ optional.** Build is not required for review pass.
6
+
7
+ ---
8
+
9
+ ## Dev walkthrough (before six-dimension scoring)
10
+
11
+ Perform in browser at **devUrl** from `project-state.md` (start with `npm run dev` if down).
12
+
13
+ ### UI match (maps to Style Consistency + Intent Fidelity)
14
+
15
+ | Check | Compare against |
16
+ | --------------------------- | --------------------------------------------------------------- |
17
+ | Layout / zones / hierarchy | `layout-spec.md` |
18
+ | Color, mood, MC fidelity | `style-exploration.md`, Gate #2 MC (concept panel + storyboard) |
19
+ | Per-stage visual intent | Storyboard panels 2–5 in style-exploration |
20
+ | Text-as-image, sprites, VFX | Live Dev vs approved design |
21
+
22
+ ### Gameplay match (maps to Experience Flow + Difficulty Balance)
23
+
24
+ | Check | Compare against |
25
+ | ------------------------------------- | ---------------------------------- |
26
+ | Hook → Tutorial → Gameplay → End Card | `design-brief.md` experience flow |
27
+ | First level guaranteed success | PGS / atom-plan (**veto** if fail) |
28
+ | Near-Win, difficulty, CTA timing | design-brief + Dev playthrough |
29
+
30
+ Record pass/fail summary in `project-state.reviewerDevNotes` and `reviewerDevCheck`.
31
+
32
+ ---
33
+
34
+ ## Phase 4: Six-Dimension Experience Evaluation
35
+
36
+ Simulate the player walking through Hook → Tutorial → Gameplay → End Card:
37
+
38
+ ### 1. Experience Flow (experienceFlow)
39
+
40
+ | Checkpoint | Criteria |
41
+ | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
42
+ | Hook (0-3s) | Immediate visual/interactive hook? Attention captured in 3s? Does it match the Hook frame in `style-exploration.md` storyboard? |
43
+ | Tutorial (3-10s) | Clear? Player understands core mechanic in 2-3 steps? Does it align with the Tutorial storyboard frame intent (low-pressure, guide elements visible)? |
44
+ | Gameplay (10-25s) | Smooth loop? Good pacing? No dead ends? Is Near-Win designed as specified in design-brief — with a visible solution? |
45
+ | End Card (25-30s) | Natural CTA transition? Button visible and clickable? Does it create sequel feeling (not closure) as designed in EndCard storyboard frame? |
46
+ | Total duration | Fits within 15-30 seconds? |
47
+ | Storyboard fidelity | Does the final playable match the emotional arc and visual composition described in the Experience Flow Design section of `style-exploration.md`? |
48
+
49
+ ### 2. Creative Appeal (creativeAppeal)
50
+
51
+ | Checkpoint | Criteria |
52
+ | -------------------- | ------------------------------------------------- |
53
+ | Hook strength | Does opening visual stop the user from scrolling? |
54
+ | Freshness | Differentiated or template-feeling? |
55
+ | Emotional connection | Curiosity/excitement/satisfaction triggered? |
56
+ | Memorability | What sticks after playing? |
57
+
58
+ ### 3. Style Consistency (styleConsistency)
59
+
60
+ | Checkpoint | Criteria |
61
+ | ------------------- | ------------------------------------------------------------------------------------------------ |
62
+ | Concept fidelity | Do final assets match the approved **concept panel** (Panel 1) from style-exploration.md? |
63
+ | Storyboard fidelity | Do Hook/Tutorial/Gameplay/EndCard stages visually match storyboard panels 2–5? |
64
+ | Visual internal | Background, characters, UI belong to same style? Colors unified? |
65
+ | Audio internal | BGM and SFX harmonious? |
66
+ | Cross-media | Visual style and audio atmosphere match? Does audio-emotion rhythm match Experience Flow Design? |
67
+ | Gameplay-style | Gameplay pacing matches visual/audio rhythm? |
68
+
69
+ ### 4. Intent Fidelity (intentFidelity)
70
+
71
+ | Checkpoint | Criteria |
72
+ | --------------- | --------------------------------------------------- |
73
+ | Gameplay type | Actual gameplay matches design-brief selection? |
74
+ | Visual style | Matches intentTags? |
75
+ | Experience flow | Follows design-brief experienceFlow? |
76
+ | Level config | Matches levelConfig (number of levels, difficulty)? |
77
+ | Atom coverage | Every atom in plan is implemented? |
78
+
79
+ ### 5. Difficulty Balance (difficultyBalance)
80
+
81
+ | Checkpoint | Criteria |
82
+ | ------------------- | ------------------------------------------------------------ |
83
+ | First level success | **GUARANTEED?** (veto item — automatic fail if not) |
84
+ | Difficulty curve | Progressive? No sudden spikes? |
85
+ | Frustration control | Failure gives positive feedback ("try again" not "give up")? |
86
+ | Completability | Can finish within time limit? |
87
+
88
+ ### 6. Intent Transmission (intentTransmission)
89
+
90
+ **Check `docs/intent-clarifications.md`:**
91
+
92
+ - Any unresolved Open Questions? (deduct 1 point per unresolved question)
93
+ - Any Agent received >3 questions? (intent transmission fault)
94
+
95
+ **Check `logs/ta-log.md`:**
96
+
97
+ - Style Interpretation table exists?
98
+ - Any low-confidence items without corresponding clarifications?
99
+ - Micro-Batch Validation scores all >= 3?
100
+
101
+ **Check `logs/developer-log.md`:**
102
+
103
+ - Experience Flow → Code Mapping exists?
104
+ - All scenes have storyboard frame references?
105
+ - Code visual implementation matches storyboard intent?
106
+
107
+ **Scoring calibration (1–5):**
108
+
109
+ - 5: Zero open clarifications, TA self-check all pass, Developer mapping complete
110
+ - 4: 1–2 resolved clarifications, no quality impact
111
+ - 3: Unresolved clarifications exist, or TA has low-confidence items
112
+ - 2: Multiple unresolved clarifications, or Developer missing visual mapping
113
+ - 1: Severe intent transmission failure, downstream agents made major wrong assumptions
114
+
115
+ ---
116
+
117
+ ## Scoring
118
+
119
+ Each dimension: 1–5 points. **Maximum total: 30** (6 × 5).
120
+
121
+ | Score | Meaning | Calibration Example |
122
+ | ----- | ------------------------------------------------------ | ----------------------------------------------- |
123
+ | 5 | Excellent — exceeds expectations, ready to ship | Polished feel, strong hook, perfect consistency |
124
+ | 4 | Good — meets standard, minor tweaks then ship | Solid execution, one small inconsistency |
125
+ | 3 | Acceptable — basically works, needs improvement | Functional but generic |
126
+ | 2 | Below standard — obvious problems, partial redo needed | Major style clash or broken flow |
127
+ | 1 | Seriously deficient — directional error, full redo | Wrong gameplay, broken entry, no CTA |
128
+
129
+ **Total ≥ 24**: Pass — proceed to Gate #3 (orchestrator)
130
+ **Total 18–23**: Conditional pass — fix issues then re-review
131
+ **Total < 18**: Fail — route back to responsible agent(s)
132
+
133
+ **VETO ITEMS (automatic fail regardless of score):**
134
+
135
+ - First level does NOT guarantee success
136
+ - Zero CTA implementation
137
+ - External network requests present
138
+ - Entry file (index.html) missing
139
+
140
+ ---
141
+
142
+ ## Full review process (L2)
143
+
144
+ > Invoked from `agents/reviewer.md` — execute in order before final verdict.
145
+
146
+ ### Step 0: Dev preview (mandatory)
147
+
148
+ 1. Read `docs/project-state.md` → **Dev Preview**: `devUrl`, `devStatus`.
149
+ 2. If `devStatus` ≠ `ready` → **fail fast** (route Developer; do not score experience).
150
+ 3. If Dev server not reachable → run `npm run dev`, refresh `devUrl` in project-state.
151
+ 4. Open **devUrl** in browser; complete **UI match** + **gameplay match** (checklists in § Dev walkthrough above).
152
+ 5. Record summary in `project-state.md`: `reviewerDevCheck` (`passed` / `failed`), `reviewerDevNotes`.
153
+
154
+ **Do not** require `playcraft build`. **Do not** ask the user to run terminal commands.
155
+
156
+ ### Step 0b: Validator Skill Discovery
157
+
158
+ ```bash
159
+ playcraft skills list --category validator --json
160
+ playcraft skills match --intent "validator,balance,quality" --json
161
+ ```
162
+
163
+ For matched Validator Skills: read the SKILL.md, apply its checklist, record results in `review-report.md` per its format.
164
+
165
+ ### Phase 1: DAG Completeness Audit
166
+
167
+ For each atom in `docs/atom-plan.md`:
168
+
169
+ - `done` → verify `actualOutput` file exists on disk
170
+ - `skipped` → verify reason is documented
171
+ - `blocked` → verify blocker is documented
172
+
173
+ ### Phase 2: Layout Spec Compliance
174
+
175
+ **Layout Spec is the shared contract. Verify ALL THREE production agents comply.**
176
+
177
+ | Check | Route Issue To |
178
+ | -------------------------------------------------------- | ------------------------------------- |
179
+ | Asset sizes match `assetSpec` | TA (completions) / Designer (samples) |
180
+ | Filenames match `assetMapping` | TA (completions) / Designer (samples) |
181
+ | All assetMapping entries have files | **TA** (compliance gate) |
182
+ | Sprite sheet JSON paired with every atlas / sheet | **TA** |
183
+ | Element IDs in code match `colorPalette.tileColors[].id` | Developer |
184
+ | Zone coordinates in scene match `zones[].rect` | Developer |
185
+ | Every asset is used; every code reference has a file | TA + Developer |
186
+
187
+ ### Phase 2.5: TA Compliance Report Audit
188
+
189
+ Read `logs/ta-log.md` and verify: log exists and complete, Asset Coverage table fully filled and all PASS, Spec Compliance Summary passes, Compliance Verdict is PASS. (Note: file size is NOT a TA compliance concern — size optimization happens at build time.)
190
+
191
+ ### Phase 2.6: Ad Psychology Audit
192
+
193
+ > **Invoke the `playcraft-ad-psychology` skill** and use its four psychological hooks, 60-30-10 color rule, and CTA specs as evaluation criteria for Creative Appeal and Experience Flow dimensions.
194
+
195
+ Key checks against ad-psychology principles:
196
+
197
+ - Hook frame uses highest contrast + dynamic composition (Curiosity Gap)?
198
+ - Tutorial uses simplified layout + warm tone + large gesture icons (Instant Gratification)?
199
+ - Gameplay shows Near-Win state, NOT victory state (Progress Illusion)?
200
+ - EndCard shows unresolved reward + prominent CTA, NOT satisfaction (FOMO)?
201
+ - CTA button color is the ONLY accent color in the scene (60-30-10 rule)?
202
+ - CTA touch target ≥ 48×48 px, contrast ratio ≥ 4.5:1?
203
+
204
+ ### Phase 3: Automated Technical Checks
205
+
206
+ > **Invoke the `playcraft-build-optimizer` skill** for the compliance verification checklist (file size limits, external request detection, CTA API implementation, audio autoplay rules) and platform-specific requirements.
207
+
208
+ ```bash
209
+ # Total project size
210
+ du -sh .
211
+
212
+ # Asset samples (adjust globs to project)
213
+ playcraft image info assets/images/bg/*.webp
214
+ playcraft image info assets/images/tiles/*.webp
215
+ playcraft audio info --input assets/audio/bgm/*.mp3
216
+ playcraft audio info --input assets/audio/sfx/*.mp3
217
+
218
+ # Entry file exists
219
+ ls game/index.html
220
+
221
+ # Check for external requests
222
+ grep -r "http://" game/ || echo "No http:// found"
223
+ grep -r "https://" game/ || echo "No https:// found"
224
+ grep -r "fetch(" game/ || echo "No fetch() found"
225
+
226
+ # CTA implementation
227
+ grep -r "onCTAClick\|mraid\|FbPlayableAd\|ExitApi" game/
228
+ ```
229
+
230
+ ### Phase 4: Six-Dimension Experience Evaluation
231
+
232
+ > **Before starting Phase 4, read from the top of this document** (all six dimensions including Intent Transmission + scoring thresholds).
233
+
234
+ Six dimensions: **Experience Flow** / **Creative Appeal** / **Style Consistency** / **Intent Fidelity** / **Difficulty Balance** / **Intent Transmission** — each scored 1–5. **Total ≥ 24/30 = pass**; 18–23 conditional; &lt; 18 fail.
235
+
236
+ **Veto items (automatic fail)**: first level not guaranteed success / no CTA / external requests / missing index.html.
237
+
238
+ ### Phase 5: DAG Revision Audit
239
+
240
+ For each entry in DAG Revisions: is the modification reasonable? properly documented? did it deviate from original intent?
241
+
242
+ ---
243
+
244
+ ## Rework mechanism
245
+
246
+ ### Rework rules
247
+
248
+ | Rule | Detail |
249
+ | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------- |
250
+ | **Failure budget** | `rework_round` in `{0, 1}` → allow rework (+1 on fail). `rework_round == 2` on fail → **forced Gate #3** (3rd review failure; user decides) |
251
+ | **Parallel fixes** | If multiple agents have issues, route to all in parallel |
252
+ | **Incremental** | Fix only the problem parts, not redo everything |
253
+ | **No re-gating** | Rework goes directly back to Reviewer, no Gate #1/#2 re-approval |
254
+
255
+ ### Severity levels
256
+
257
+ | Severity | Definition | Handling |
258
+ | ---------- | ------------------------------------- | ---------------------------- |
259
+ | `critical` | Non-functional / white screen / crash | Must fix, cannot skip |
260
+ | `major` | Noticeable experience defect but runs | Rework fix, max 1 round |
261
+ | `minor` | Aesthetic suggestion / tweak | Log but do not block Gate #3 |
262
+
263
+ ### Feedback routing
264
+
265
+ | Issue Type | Route To |
266
+ | ---------------------------------------------- | -------------------- |
267
+ | Direction / experience flow issues | PM |
268
+ | Creative sample quality | Designer |
269
+ | Asset completeness / compliance / sprite sheet | **Technical Artist** |
270
+ | Gameplay logic bug / parameter imbalance | Developer |
271
+ | Dev runtime / integration technical issue | Developer |
272
+
273
+ ### Rework flow
274
+
275
+ ```
276
+ Issues found → review-report.md with severity + target + specific fix instructions
277
+
278
+ ├──→ Routed agents fix in parallel (incremental)
279
+
280
+ └──→ Developer Ph.2 fixes + Dev re-check
281
+
282
+ └──→ Reviewer re-checks
283
+
284
+ ┌────┴────┐
285
+ Pass Fail → round 2 or forced Gate #3
286
+ ```
@@ -0,0 +1,85 @@
1
+ # TA 3D Flip & Material Reskin Recipe
2
+
3
+ > Read by Technical Artist when dealing with:
4
+ > - Material/texture swap while preserving symbols (mahjong white→ice/metal/wood)
5
+ > - Card/tile flip animations (16-frame sprite sheets)
6
+ > - Any task requiring the 3D white model pipeline
7
+
8
+ ---
9
+
10
+ ## Option C: Material Reskin — Preserve Symbols, Swap Base Texture
11
+
12
+ **THE most common TA task for sprite sheet style variants.**
13
+ - Use when: mahjong white→ice, white→metal, white→wood
14
+ - Key insight: symbols are face textures, base material is a separate layer
15
+
16
+ ```bash
17
+ # Step 1: Split the original sprite sheet into individual tiles
18
+ playcraft image sprite-split \
19
+ --input assets/images/tiles/original_sheet.png \
20
+ --output-dir assets/images/tiles/split_frames \
21
+ --auto-detect --hint "mahjong tiles, uniform grid"
22
+ # → 44 individual PNGs + split-meta.json
23
+
24
+ # Step 2: Generate ONE new base material texture (reused for all tiles)
25
+ playcraft tools generate-image \
26
+ --prompt "ice crystal frosted glass texture, blue-white cold, seamless, top-down" \
27
+ --output assets/textures/ice_base.png
28
+
29
+ # Step 3: Create white model with new base material
30
+ playcraft 3d apply-texture \
31
+ --model plane \
32
+ --texture assets/textures/ice_base.png \
33
+ --output assets/models/ice_tile_base.glb
34
+
35
+ # Step 4: For EACH tile — render white model + original symbol as face texture
36
+ # (Uses the software rasterizer from playcraft-3d-flip-sprite SKILL)
37
+ # face texture = the split frame from Step 1 (preserves symbol exactly)
38
+ node render.mjs assets/models/ice_tile_base.glb \
39
+ assets/images/tiles/reskinned/tile_001.png \
40
+ assets/images/tiles/split_frames/frame_r0_c0.png
41
+ # Repeat for all 44 tiles — write a ta-workspace script for this step
42
+
43
+ # Step 5: Reassemble into sprite sheet (same grid as original)
44
+ playcraft image sprite-sheet \
45
+ --inputs assets/images/tiles/reskinned/tile_001.png,tile_002.png,... \
46
+ --output assets/images/tiles/ice_sheet \
47
+ --columns <original_columns> \
48
+ --cell-width <W> --cell-height <H>
49
+ ```
50
+
51
+ **Style switching efficiency**:
52
+ - To switch to METAL: only redo Step 2 (new texture) + Step 3-5
53
+ - To switch to WOOD: same — just one new base texture
54
+ - Symbols never change, never touch AI regeneration
55
+
56
+ ---
57
+
58
+ ## Option D: Batch 3D Flip Sprite Sheet (e.g., 34 mahjong flip animations)
59
+
60
+ Read `playcraft-3d-flip-sprite` SKILL for the full rendering pipeline.
61
+ (Software rasterizer: no Puppeteer/headless-gl needed)
62
+
63
+ **Per-tile workflow**: white model GLB + face texture → 16-frame flip sprite sheet
64
+
65
+ ```
66
+ 1. Flatten base GLB (remove surface geometry of original design)
67
+ 2. Generate face texture per tile variant
68
+ 3. Render 16-frame flip animation with soft rasterizer
69
+ 4. Output sprite sheet PNG
70
+ ```
71
+
72
+ See `.claude/skills/playcraft-3d-flip-sprite/` for complete instructions.
73
+
74
+ ---
75
+
76
+ ## Mahjong Tile Example: All 4 Workflows Compared
77
+
78
+ | Scenario | Method | When |
79
+ |---------|--------|------|
80
+ | One concept mockup → all 34 tiles | Sprite Generation (AI batch with reference-image) | Starting from scratch |
81
+ | Existing white tiles → Ice style (symbols preserved) | 3D path (Option C above) | Material/texture swap |
82
+ | Existing white tiles → Metal style | 3D path (swap ice→metal texture, rerun Step 3-5) | Style variant |
83
+ | Existing tiles → Pixel art style (symbols redrawn) | Sprite Remix (per-frame AI) | Full creative restyle |
84
+ | Existing tiles → Darker mood | Image Processing (`tint` + `overlay`) | Color/mood shift |
85
+ | Flip animation (16 frames per tile) | Option D (3D flip sprite, playcraft-3d-flip-sprite SKILL) | Animation |
@@ -0,0 +1,46 @@
1
+ # TA Atlas Deliverable Standard
2
+
3
+ > **When**: `stage: production` branch in `technical-artist.md` § Runtime.
4
+ > **Contract source**: `layout-spec.md` atlas groups + `assetMapping` (Gate #1 locked).
5
+
6
+ ## Defaults
7
+
8
+ | Asset type | Delivery format |
9
+ | ------------------- | -------------------------------------------------------------------------------------------- |
10
+ | Runtime images | **WebP** (`.webp`) — not PNG for final runtime assets |
11
+ | Multi-element class | **One atlas per logical group** → `.webp` + `.json` sidecar (`playcraft image sprite-sheet`) |
12
+ | Single large asset | One `.webp` (full-screen bg, etc.) |
13
+ | Audio (BGM/SFX) | **MP3** only after TA post-process |
14
+ | Digit strip | Single horizontal **WebP** at `layout-spec` path (not merged into UI atlas) |
15
+
16
+ ## Atlas grouping rules
17
+
18
+ 1. Read PM's **atlas grouping table** in `layout-spec.md` (group name → elementIds → `atlasPath`).
19
+ 2. **≥2 elements in same group** → TA MUST deliver **one** `.webp` + `.json`; map each element via `frameId` in assetMapping.
20
+ 3. **Do not** split one group into scattered files.
21
+ 4. **Exceptions** (single file OK): full-screen background, digit strip, MC/ASR reference (non-runtime), animation-only atlases (one animation = one atlas).
22
+
23
+ ## Production pipeline
24
+
25
+ 1. Spec Quick-Check → Style Interpretation → micro-batch (≥3) per group.
26
+ 2. Batch generate frames → `playcraft image sprite-sheet` → convert to **WebP** if needed:
27
+ ```bash
28
+ playcraft image convert --input atlas.png --output assets/images/tiles/tiles_atlas.webp --quality 85
29
+ ```
30
+ 3. Validate sidecar JSON: frame count = element count in group; grid params in `ta-log.md`.
31
+ 4. Audio: Designer MP3 → `playcraft audio compress/trim/loop/fade` → output **MP3**; verify with `playcraft audio info`.
32
+
33
+ ## Compliance (TA)
34
+
35
+ | Check | Pass criteria |
36
+ | -------------- | ----------------------------------------------------------------------------- |
37
+ | Atlas coverage | Every runtime element resolves to atlas+frame or single webp path |
38
+ | Sidecar | `.json` exists beside each multi-element atlas |
39
+ | Format | WebP for images; MP3 for audio (unless layout-spec explicit exception) |
40
+ | ta-log | One manifest row per atlas group: path, frames, cols/frameW/frameH/frameCount |
41
+
42
+ ## Developer handoff
43
+
44
+ Developer loads `atlasPath` once, uses `frameId` from layout-spec / JSON — not per-element file paths for grouped assets.
45
+
46
+ See also: `ta-pipeline-cookbook.md`, `playcraft-sprite-generation` SKILL (final delivery extension = `.webp`).
@@ -0,0 +1,120 @@
1
+ > 本文件是 batch/pipeline 的实用配方集。选型决策树和基础语法见 `playcraft-batch-pipeline` skill。
2
+
3
+ # Batch / Pipeline 实用配方集
4
+
5
+ ---
6
+
7
+ ## Batch 配方
8
+
9
+ ### 批量 resize + 转换格式
10
+
11
+ ```bash
12
+ playcraft image batch \
13
+ --input-dir assets/images/raw_tiles/ \
14
+ --output-dir assets/images/tiles/ \
15
+ --glob "*.png" \
16
+ --steps "resize --width 128 --height 128, trim" \
17
+ --parallel 8
18
+ ```
19
+
20
+ ### 批量去背(绿幕)
21
+
22
+ ```bash
23
+ playcraft image batch \
24
+ --input-dir assets/images/raw_sprites/ \
25
+ --output-dir assets/images/sprites/ \
26
+ --steps "remove-background --method floodfill --tolerance 40" \
27
+ --parallel 4
28
+ ```
29
+
30
+ ### 批量统一色调(制作主题变体)
31
+
32
+ ```bash
33
+ # 生成蓝色主题版本
34
+ playcraft image batch \
35
+ --input-dir assets/images/tiles/ \
36
+ --output-dir assets/images/tiles_blue_theme/ \
37
+ --steps "tint --color #4466BB" \
38
+ --parallel 6
39
+ ```
40
+
41
+ ### 断点续传(大批量任务中断后恢复)
42
+
43
+ ```bash
44
+ # 第一次运行中断了
45
+ playcraft image batch \
46
+ --input-dir assets/images/raw/ \
47
+ --output-dir assets/images/processed/ \
48
+ --steps "resize --width 256 --height 256, grayscale" \
49
+ --parallel 4 \
50
+ --skip-existing # 再次运行时跳过已完成的文件
51
+ ```
52
+
53
+ ---
54
+
55
+ ## Pipeline 配方
56
+
57
+ ### 配方 A: 去背 + 统一尺寸 + 合并精灵图
58
+
59
+ ```yaml
60
+ # ta-workspace/tile_pipeline.yaml
61
+ input:
62
+ dir: assets/images/raw_tiles/
63
+ glob: "*.png"
64
+
65
+ steps:
66
+ - command: remove-background
67
+ method: floodfill
68
+ tolerance: 40
69
+ - command: trim
70
+ threshold: 10
71
+ - command: resize
72
+ width: 128
73
+ height: 128
74
+ - command: pad
75
+ all: 4
76
+
77
+ output:
78
+ dir: ta-workspace/tmp/tiles_processed/
79
+
80
+ assemble:
81
+ sprite-sheet:
82
+ output: assets/images/tiles_atlas
83
+ columns: 6
84
+ padding: 2
85
+ ```
86
+
87
+ ```bash
88
+ playcraft image pipeline --config ta-workspace/tile_pipeline.yaml
89
+ ```
90
+
91
+ ### 配方 B: 多个主题色版本
92
+
93
+ 为同一套素材生成不同色调的主题变体:
94
+
95
+ ```bash
96
+ # 蓝色主题
97
+ playcraft image pipeline --config ta-workspace/theme_blue.yaml
98
+
99
+ # 红色主题(修改 tint color 即可)
100
+ sed 's/#4466BB/#BB4444/' ta-workspace/theme_blue.yaml > ta-workspace/theme_red.yaml
101
+ playcraft image pipeline --config ta-workspace/theme_red.yaml
102
+ ```
103
+
104
+ ### 配方 C: 批量缩略图生成
105
+
106
+ ```yaml
107
+ input:
108
+ dir: assets/images/concept/
109
+ glob: "*.png"
110
+ steps:
111
+ - command: resize
112
+ width: 240
113
+ height: 240
114
+ fit: cover
115
+ - command: convert
116
+ format: webp
117
+ quality: 80
118
+ output:
119
+ dir: assets/images/thumbnails/
120
+ ```