@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.
- package/README.md +66 -3
- package/dist/atom-plan/validate-atom-plan.js +298 -0
- package/dist/cli-root-help.js +1 -1
- package/dist/commands/3d.js +363 -0
- package/dist/commands/create.js +337 -0
- package/dist/commands/fix-ids.js +17 -3
- package/dist/commands/fix-ids.test.js +264 -0
- package/dist/commands/image.js +1337 -43
- package/dist/commands/login.js +60 -2
- package/dist/commands/recommend.js +1 -1
- package/dist/commands/remix.js +213 -0
- package/dist/commands/skills.js +1379 -0
- package/dist/commands/tools-3d.js +473 -0
- package/dist/commands/tools-generation.js +454 -0
- package/dist/commands/tools-project.js +400 -0
- package/dist/commands/tools-research.js +37 -0
- package/dist/commands/tools-research.test.js +216 -0
- package/dist/commands/tools-utils.js +164 -0
- package/dist/commands/tools.js +7 -616
- package/dist/config.js +2 -0
- package/dist/index.js +20 -2
- package/dist/utils/agent-api-client.js +52 -16
- package/package.json +9 -3
- package/project-template/.claude/agents/designer.md +116 -0
- package/project-template/.claude/agents/developer.md +133 -0
- package/project-template/.claude/agents/pm.md +164 -0
- package/project-template/.claude/agents/refs/README.md +67 -0
- package/project-template/.claude/agents/refs/designer-art-style-catalog.md +533 -0
- package/project-template/.claude/agents/refs/designer-color-audio-recipes.md +153 -0
- package/project-template/.claude/agents/refs/designer-deliverable-spec.md +167 -0
- package/project-template/.claude/agents/refs/designer-dimension-axis.md +27 -0
- package/project-template/.claude/agents/refs/designer-handoff-v2-checklist.md +68 -0
- package/project-template/.claude/agents/refs/designer-master-composite-recipes.md +216 -0
- package/project-template/.claude/agents/refs/designer-style-exploration-flow.md +37 -0
- package/project-template/.claude/agents/refs/developer-dev-handoff.md +109 -0
- package/project-template/.claude/agents/refs/developer-impl-cookbook.md +134 -0
- package/project-template/.claude/agents/refs/developer-phase1-flow.md +211 -0
- package/project-template/.claude/agents/refs/pm-workflow-detail.md +545 -0
- package/project-template/.claude/agents/refs/reviewer-six-dimension-eval.md +286 -0
- package/project-template/.claude/agents/refs/ta-3d-flip-recipe.md +85 -0
- package/project-template/.claude/agents/refs/ta-atlas-deliverable-standard.md +46 -0
- package/project-template/.claude/agents/refs/ta-batch-pipeline-recipes.md +120 -0
- package/project-template/.claude/agents/refs/ta-image-generation-detail.md +356 -0
- package/project-template/.claude/agents/refs/ta-image-ops-reference.md +495 -0
- package/project-template/.claude/agents/refs/ta-pipeline-cookbook.md +699 -0
- package/project-template/.claude/agents/refs/ta-tools-reference.md +111 -0
- package/project-template/.claude/agents/refs/ta-vfx-preset-catalog.md +365 -0
- package/project-template/.claude/agents/reviewer.md +103 -0
- package/project-template/.claude/agents/technical-artist.md +111 -0
- package/project-template/.claude/hooks/README.md +36 -0
- package/project-template/.claude/hooks/validate-atom-plan.mjs +224 -0
- package/project-template/.claude/hooks/validate-workflow-stop.mjs +258 -0
- package/project-template/.claude/settings.json +32 -0
- package/project-template/.claude/settings.local.json +4 -0
- package/project-template/.claude/skills/playcraft-ad-psychology/SKILL.md +182 -0
- package/project-template/.claude/skills/playcraft-art-style-guide/SKILL.md +123 -0
- package/project-template/.claude/skills/playcraft-asset-state-sheet/SKILL.md +141 -0
- package/project-template/.claude/skills/playcraft-audio-generation/SKILL.md +280 -0
- package/project-template/.claude/skills/playcraft-batch-pipeline/SKILL.md +184 -0
- package/project-template/.claude/skills/playcraft-build-optimizer/SKILL.md +306 -0
- package/project-template/.claude/skills/playcraft-image-generation/SKILL.md +229 -0
- package/project-template/.claude/skills/playcraft-image-generation/reference/build-sprite-sheet.template.mjs +123 -0
- package/project-template/.claude/skills/playcraft-image-generation/reference/compare-style.template.mjs +254 -0
- package/project-template/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +235 -0
- package/project-template/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +97 -0
- package/project-template/.claude/skills/playcraft-image-generation/reference/gen-edit-variants.template.mjs +118 -0
- package/project-template/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +137 -0
- package/project-template/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +397 -0
- package/project-template/.claude/skills/playcraft-image-generation/reference/validate-sprite-sheet.template.mjs +296 -0
- package/project-template/.claude/skills/playcraft-image-ops/SKILL.md +122 -0
- package/project-template/.claude/skills/playcraft-masking/SKILL.md +373 -0
- package/project-template/.claude/skills/playcraft-research/SKILL.md +212 -0
- package/project-template/.claude/skills/playcraft-sprite-generation/SKILL.md +423 -0
- package/project-template/.claude/skills/playcraft-storyboard/SKILL.md +148 -0
- package/project-template/.claude/skills/playcraft-style-qa/SKILL.md +270 -0
- package/project-template/.claude/skills/playcraft-text-rendering/SKILL.md +236 -0
- package/project-template/.claude/skills/playcraft-vfx-animation/SKILL.md +130 -0
- package/project-template/.claude/skills/playcraft-workflow/SKILL.md +396 -0
- package/project-template/.cursor/hooks.json +17 -0
- package/project-template/.cursor/rules/playcraft-orchestrator.mdc +87 -0
- package/project-template/.cursor/rules/playcraft-subagent-boundary.mdc +18 -0
- package/project-template/CLAUDE.md +240 -0
- package/project-template/assets/audio/bgm/.gitkeep +0 -0
- package/project-template/assets/audio/sfx/.gitkeep +0 -0
- package/project-template/assets/bundles/.gitkeep +0 -0
- package/project-template/assets/images/bg/.gitkeep +0 -0
- package/project-template/assets/images/reference/.gitkeep +0 -0
- package/project-template/assets/images/storyboard/.gitkeep +0 -0
- package/project-template/assets/images/tiles/.gitkeep +0 -0
- package/project-template/assets/images/ui/.gitkeep +0 -0
- package/project-template/assets/images/vfx/.gitkeep +0 -0
- package/project-template/assets/models/.gitkeep +0 -0
- package/project-template/docs/team/agent-conduct.md +105 -0
- package/project-template/docs/team/agent-runtime-matrix.md +62 -0
- package/project-template/docs/team/atom-plan-format.md +74 -0
- package/project-template/docs/team/collaboration.md +288 -0
- package/project-template/docs/team/core-model.md +50 -0
- package/project-template/docs/team/platform-capabilities.md +15 -0
- package/project-template/docs/team/workflow-changelog.md +51 -0
- package/project-template/docs/team/workflow-consistency-checklist.md +128 -0
- package/project-template/game/config/.gitkeep +0 -0
- package/project-template/game/gameplay/.gitkeep +0 -0
- package/project-template/game/scenes/.gitkeep +0 -0
- package/project-template/logs/.gitkeep +0 -0
- package/project-template/ta-workspace/logs/.gitkeep +0 -0
- package/project-template/ta-workspace/scripts/.gitkeep +0 -0
- package/project-template/ta-workspace/tmp/.gitkeep +0 -0
- package/project-template/templates/atom-plan.template.json +26 -0
- package/project-template/templates/atom-plan.template.md +76 -0
- package/project-template/templates/design-brief.template.md +195 -0
- package/project-template/templates/design-lens-checklist.reference.md +117 -0
- package/project-template/templates/design-methodology.md +99 -0
- package/project-template/templates/designer-log.template.md +98 -0
- package/project-template/templates/developer-log.template.md +140 -0
- package/project-template/templates/five-axis-framework.md +186 -0
- package/project-template/templates/intent-clarifications.template.md +58 -0
- package/project-template/templates/layout-spec.template.md +132 -0
- package/project-template/templates/project-state.template.md +219 -0
- package/project-template/templates/review-report.template.md +166 -0
- package/project-template/templates/style-exploration.template.md +93 -0
- 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; < 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
|
+
```
|