@playcraft/cli 0.0.41 → 0.0.43
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/dist/atom-plan/validate-asr-coverage.js +317 -0
- package/dist/commands/prad.js +61 -0
- package/dist/commands/remix.js +4 -2
- package/dist/commands/skills.js +24 -0
- package/dist/commands/tools-generation.js +2 -4
- package/dist/commands/tools-utils.js +19 -0
- package/dist/prad/atom-ref.js +23 -0
- package/dist/prad/check.js +377 -0
- package/dist/prad/check.test.js +27 -0
- package/dist/prad/explain.js +109 -0
- package/dist/prad/load-spec.js +23 -0
- package/dist/prad/paths.js +83 -0
- package/dist/prad/skills-index.js +60 -0
- package/dist/utils/version-checker.js +8 -11
- package/package.json +3 -3
- package/project-template/.claude/agents/designer.md +34 -26
- package/project-template/.claude/agents/developer.md +55 -62
- package/project-template/.claude/agents/pm.md +3 -1
- package/project-template/.claude/agents/refs/README.md +21 -15
- package/project-template/.claude/agents/refs/designer-deliverable-spec.md +70 -7
- package/project-template/.claude/agents/refs/designer-handoff-v2-checklist.md +21 -13
- package/project-template/.claude/agents/refs/designer-master-composite-recipes.md +20 -28
- package/project-template/.claude/agents/refs/designer-style-exploration-flow.md +39 -9
- package/project-template/.claude/agents/refs/developer-dev-handoff.md +1 -1
- package/project-template/.claude/agents/refs/developer-phase1-flow.md +81 -156
- package/project-template/.claude/agents/refs/pm-workflow-detail.md +24 -2
- package/project-template/.claude/agents/refs/reviewer-convergence-eval.md +142 -0
- package/project-template/.claude/agents/refs/reviewer-six-dimension-eval.md +4 -284
- package/project-template/.claude/agents/refs/ta-atlas-deliverable-standard.md +27 -6
- package/project-template/.claude/agents/refs/ta-pipeline-cookbook.md +474 -29
- package/project-template/.claude/agents/reviewer.md +65 -38
- package/project-template/.claude/agents/technical-artist.md +38 -25
- package/project-template/.claude/hooks/README.md +40 -4
- package/project-template/.claude/hooks/asr-coverage-validate.mjs +381 -0
- package/project-template/.claude/hooks/validate-workflow-stop.mjs +196 -5
- package/project-template/.claude/settings.json +4 -0
- package/project-template/.claude/skills/playcraft-asset-state-sheet/SKILL.md +76 -22
- package/project-template/.claude/skills/playcraft-image-generation/SKILL.md +84 -15
- package/project-template/.claude/skills/playcraft-storyboard/SKILL.md +26 -7
- package/project-template/.claude/skills/playcraft-workflow/SKILL.md +104 -15
- package/project-template/.claude/skills/playwright-cli/SKILL.md +390 -0
- package/project-template/.claude/skills/playwright-cli/references/element-attributes.md +23 -0
- package/project-template/.claude/skills/playwright-cli/references/playwright-tests.md +39 -0
- package/project-template/.claude/skills/playwright-cli/references/request-mocking.md +87 -0
- package/project-template/.claude/skills/playwright-cli/references/running-code.md +240 -0
- package/project-template/.claude/skills/playwright-cli/references/session-management.md +226 -0
- package/project-template/.claude/skills/playwright-cli/references/spec-driven-testing.md +312 -0
- package/project-template/.claude/skills/playwright-cli/references/storage-state.md +275 -0
- package/project-template/.claude/skills/playwright-cli/references/test-generation.md +138 -0
- package/project-template/.claude/skills/playwright-cli/references/tracing.md +142 -0
- package/project-template/.claude/skills/playwright-cli/references/video-recording.md +157 -0
- package/project-template/.cursor/rules/playcraft-orchestrator.mdc +74 -24
- package/project-template/.cursor/rules/playcraft-subagent-boundary.mdc +1 -1
- package/project-template/CLAUDE.md +99 -59
- package/project-template/docs/team/agent-conduct.md +42 -26
- package/project-template/docs/team/agent-runtime-matrix.md +71 -39
- package/project-template/docs/team/atom-plan-format.md +101 -2
- package/project-template/docs/team/collaboration.md +57 -48
- package/project-template/docs/team/core-model.md +20 -19
- package/project-template/docs/team/workflow-changelog.md +28 -14
- package/project-template/docs/team/workflow-consistency-checklist.md +64 -0
- package/project-template/templates/atom-plan.template.json +18 -0
- package/project-template/templates/atom-plan.template.md +35 -3
- package/project-template/templates/designer-log.template.md +94 -5
- package/project-template/templates/developer-log.template.md +95 -101
- package/project-template/templates/layout-spec.template.md +62 -8
- package/project-template/templates/project-state.template.md +51 -33
- package/project-template/templates/review-report.template.md +76 -151
- package/project-template/templates/ta-log.template.md +180 -14
|
@@ -6,7 +6,6 @@ import updateNotifier from 'update-notifier';
|
|
|
6
6
|
import { readFileSync } from 'fs';
|
|
7
7
|
import { fileURLToPath } from 'url';
|
|
8
8
|
import { dirname, join } from 'path';
|
|
9
|
-
import { promptForUpdate } from './updater.js';
|
|
10
9
|
const __filename = fileURLToPath(import.meta.url);
|
|
11
10
|
const __dirname = dirname(__filename);
|
|
12
11
|
let packageJson;
|
|
@@ -20,11 +19,14 @@ function getPackageJson() {
|
|
|
20
19
|
return packageJson;
|
|
21
20
|
}
|
|
22
21
|
/**
|
|
23
|
-
*
|
|
24
|
-
* 使用 update-notifier
|
|
25
|
-
*
|
|
22
|
+
* 检查版本更新(非阻塞、非交互)
|
|
23
|
+
* 使用 update-notifier 打印一行提示;交互式更新请用 `playcraft upgrade`。
|
|
24
|
+
* 避免在普通 one-shot 命令结束后仍阻塞 stdin(inquirer 会导致进程不退出)。
|
|
26
25
|
*/
|
|
27
26
|
export function checkForUpdates(pkg) {
|
|
27
|
+
if (process.env.PLAYCRAFT_SKIP_UPDATE_CHECK === '1') {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
28
30
|
const packageData = pkg || getPackageJson();
|
|
29
31
|
// 只在 TTY 环境中检查(避免在 CI/CD 中显示提示)
|
|
30
32
|
if (!process.stdout.isTTY) {
|
|
@@ -35,17 +37,12 @@ export function checkForUpdates(pkg) {
|
|
|
35
37
|
pkg: packageData,
|
|
36
38
|
updateCheckInterval: 1000 * 60 * 60 * 24, // 24 小时
|
|
37
39
|
});
|
|
38
|
-
// 如果有更新可用,触发交互式提示
|
|
39
40
|
if (notifier.update) {
|
|
40
|
-
|
|
41
|
-
setImmediate(() => {
|
|
42
|
-
promptForUpdate(notifier.update, packageData.version);
|
|
43
|
-
});
|
|
41
|
+
notifier.notify({ defer: false, isGlobal: true });
|
|
44
42
|
}
|
|
45
43
|
}
|
|
46
|
-
catch
|
|
44
|
+
catch {
|
|
47
45
|
// 静默失败,不影响 CLI 正常使用
|
|
48
|
-
// 网络错误或其他问题不应该阻止用户使用 CLI
|
|
49
46
|
}
|
|
50
47
|
}
|
|
51
48
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@playcraft/cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.43",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
"@gltf-transform/core": "^4.3.0",
|
|
28
28
|
"@gltf-transform/extensions": "^4.3.0",
|
|
29
29
|
"@gltf-transform/functions": "^4.3.0",
|
|
30
|
-
"@playcraft/build": "^0.0.
|
|
31
|
-
"@playcraft/common": "^0.0.
|
|
30
|
+
"@playcraft/build": "^0.0.44",
|
|
31
|
+
"@playcraft/common": "^0.0.32",
|
|
32
32
|
"chokidar": "^4.0.3",
|
|
33
33
|
"commander": "^13.1.0",
|
|
34
34
|
"cors": "^2.8.6",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Designer: (1) Gate #2
|
|
2
|
+
description: "Designer: (1) Gate #2 image production (MC + ASR), (2) TA-ready handoff, (3) audio + digit strip after #2b — not TA mass production."
|
|
3
3
|
allowedTools:
|
|
4
4
|
- "Read"
|
|
5
5
|
- "Grep"
|
|
@@ -25,6 +25,8 @@ allowedTools:
|
|
|
25
25
|
---
|
|
26
26
|
|
|
27
27
|
> **First Step**: Read `docs/project-state.md` → **`## Agent handoff`** → **## Runtime** → branch; read `refs/` only when Runtime says so. STOP: [STOP sync checklist](../../docs/team/collaboration.md#stop-sync-checklist).
|
|
28
|
+
>
|
|
29
|
+
> **Workflow spec**: `convergence-v1` + `designer-handoff-v2` — stage chain `pm → style_exploration → production → ui_pass → ui_review ⇄ ui_rework → gameplay_pass → done`. See [workflow-changelog.md](../../docs/team/workflow-changelog.md).
|
|
28
30
|
|
|
29
31
|
# Designer — Playable Ads Design Agent
|
|
30
32
|
|
|
@@ -38,13 +40,13 @@ allowedTools:
|
|
|
38
40
|
2. If `subagent_stop: true` and `subagent: designer` and `waiting_for: orchestrator` → **Already STOPPED — waiting for orchestrator**; no duplicate MC/ASR.
|
|
39
41
|
3. Branch:
|
|
40
42
|
|
|
41
|
-
| Condition | This round only | On STOP
|
|
42
|
-
| ------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
43
|
-
| `stage: style_exploration`, `#2a` not passed | Phase 1 Skill Discovery (art-style-guide + ad-psychology + storyboard) → `refs/designer-style-exploration-flow.md` Steps 2–5 → `gates.#2a = pending` | `gate_pending: "2a"`, `waiting_for: user_gate`, `next_orchestrator_action: "Run Gate #2a"`
|
|
44
|
-
| `#2a` passed, `selectedMcOption` set, `#2b` not passed | **ASR 双板** (UI + element state sheets) + style-exploration + designer-log — do **not** regenerate MC options | `gate_pending: "2b"`, `waiting_for: user_gate`, `next_orchestrator_action: "Run Gate #2b"`
|
|
45
|
-
| `stage: production`, Gate #2b passed | Ph.2: audio + digit strip + VisualAtom status (ASR-covered → `done`; ICP gaps only) | `waiting_for: orchestrator`, `next_orchestrator_action: "Invoke @technical-artist"`
|
|
46
|
-
| `stage:
|
|
47
|
-
| `devStatus: blocked_upstream`, routeTo Designer | Upstream blocker fixes per developer-log | Same as rework scoped fix
|
|
43
|
+
| Condition | This round only | On STOP |
|
|
44
|
+
| ------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
|
|
45
|
+
| `stage: style_exploration`, `#2a` not passed | Phase 1 Skill Discovery (art-style-guide + ad-psychology + storyboard) → `refs/designer-style-exploration-flow.md` Steps 2–5 → `gates.#2a = pending` | `gate_pending: "2a"`, `waiting_for: user_gate`, `next_orchestrator_action: "Run Gate #2a"` |
|
|
46
|
+
| `#2a` passed, `selectedMcOption` set, `#2b` not passed | **ASR 双板** (UI + element state sheets) + style-exploration + designer-log — do **not** regenerate MC options | `gate_pending: "2b"`, `waiting_for: user_gate`, `next_orchestrator_action: "Run Gate #2b"` |
|
|
47
|
+
| `stage: production`, Gate #2b passed | Ph.2: audio + digit strip + VisualAtom status (ASR-covered → `done`; ICP gaps only) | `waiting_for: orchestrator`, `next_orchestrator_action: "Invoke @technical-artist"` |
|
|
48
|
+
| `stage: ui_rework`, routeTo Designer | Fix paths in UI Diff report / ICP only | `waiting_for: orchestrator`, `next_orchestrator_action: "Re-invoke @developer after ui_rework"` |
|
|
49
|
+
| `devStatus: blocked_upstream`, routeTo Designer | Upstream blocker fixes per developer-log | Same as rework scoped fix |
|
|
48
50
|
|
|
49
51
|
4. Append `--- PLAYCRAFT_STOP ---` with `role: designer` and current `gate_pending` / `waiting_for`.
|
|
50
52
|
|
|
@@ -60,16 +62,16 @@ allowedTools:
|
|
|
60
62
|
|
|
61
63
|
When trade-offs arise, preserve **#1 over #2 over #3**.
|
|
62
64
|
|
|
63
|
-
1. **
|
|
64
|
-
2. **
|
|
65
|
-
3. **Deliver audio + digit strip
|
|
65
|
+
1. **Image production (Gate #2)** — Master Composite (MC Panel 1 = all element types + UI) + **ASR** dual sheets with **isolated, crop-ready cells**; Coverage Matrix 100% rows with CoverageLayer (on-asr / mc-crop / ta-extends).
|
|
66
|
+
2. **Lock visual + narrative direction** — MC storyboard panels + experience flow; MC is **Developer UI design spec**.
|
|
67
|
+
3. **Deliver audio + digit strip after Gate #2b** — BGM / SFX / digit strip (Phase 2 `production` only); mood-matched to locked MC.
|
|
66
68
|
|
|
67
69
|
### Success criteria
|
|
68
70
|
|
|
69
|
-
| Phase | You succeed when
|
|
70
|
-
| --------------------------------- |
|
|
71
|
-
| **Phase 1** (`style_exploration`) | ≥2 MC; ASR dual sheets; Handoff Pack (Coverage Matrix, Palette Locked, Motion Notes); MC ratio checks |
|
|
72
|
-
| **Phase 2** (`production`) | BGM/SFX/digit strip; VisualAtoms `done` per v2 rules; no open ICP for Designer
|
|
71
|
+
| Phase | You succeed when |
|
|
72
|
+
| --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
73
|
+
| **Phase 1** (`style_exploration`) | ≥2 MC; ASR dual sheets (cells isolated); Image Production Preflight; Handoff Pack (Coverage Matrix 100% rows + CoverageLayer, Palette Locked, Motion Notes); MC ratio checks |
|
|
74
|
+
| **Phase 2** (`production`) | BGM/SFX/digit strip; VisualAtoms `done` per v2 rules; no open ICP for Designer |
|
|
73
75
|
|
|
74
76
|
### Deprioritized / Non-goals (summary)
|
|
75
77
|
|
|
@@ -83,7 +85,7 @@ Full element sets & TA pipelines; single MC before Gate #2; audio before style l
|
|
|
83
85
|
|
|
84
86
|
## Identity
|
|
85
87
|
|
|
86
|
-
**Art Director
|
|
88
|
+
**Art Director** (image-first, designer-handoff-v2): you **生** direction — **MC + ASR** (Phase 1), then audio (Phase 2). TA **产** — crop, remove-background, atlases. Ph.2: **no** batch `tile_sample_*.png`; visual baseline = MC + ASR. **Do not** run `remove-background` on ASR sheets — TA owns that. TA tools **not yours**: `sprite-sheet`, `animate`, `use-vfx`, `segment`, `3d *`.
|
|
87
89
|
|
|
88
90
|
## File Access
|
|
89
91
|
|
|
@@ -93,7 +95,7 @@ Full element sets & TA pipelines; single MC before Gate #2; audio before style l
|
|
|
93
95
|
|
|
94
96
|
## Tools
|
|
95
97
|
|
|
96
|
-
> **All CLI surfaces + deliverable tables**: read **`refs/designer-deliverable-spec.md`**. Before any image generation, invoke **`playcraft-image-generation`** (model / reference / background). Phase 1: `playcraft-storyboard` (MC) + `playcraft-asset-state-sheet` (ASR
|
|
98
|
+
> **All CLI surfaces + deliverable tables**: read **`refs/designer-deliverable-spec.md`**. Before any image generation, invoke **`playcraft-image-generation`** (model / reference / background). Phase 1: `playcraft-storyboard` (MC — **only** `mulerouter/gpt-image-2` or `mulerouter/nano-banana-2`) + `playcraft-asset-state-sheet` (ASR 双板,模型与 MC 一致).
|
|
97
99
|
|
|
98
100
|
### Phase 1 — Style exploration
|
|
99
101
|
|
|
@@ -103,14 +105,20 @@ Full element sets & TA pipelines; single MC before Gate #2; audio before style l
|
|
|
103
105
|
|
|
104
106
|
**Skills:** `playcraft-audio-generation`; `playcraft-style-qa` (ICP supplementary PNGs only) | **Refs:** `designer-color-audio-recipes.md`, `designer-deliverable-spec.md` § Phase 2 | Mark VisualAtoms `actualOutput: ASR:...` when covered.
|
|
105
107
|
|
|
106
|
-
## DAG & critical rules
|
|
108
|
+
## DAG & critical rules
|
|
107
109
|
|
|
108
110
|
0. **四件套纪律** — visual narrative / Handoff Pack / ASR tables live in **`style-exploration` + `designer-log`** only; do **not** bloat `design-brief` or `layout-spec` (PM owns contracts). Palette deltas → `designer-log` § Palette Locked.
|
|
109
|
-
1. **
|
|
110
|
-
2.
|
|
111
|
-
3.
|
|
112
|
-
4. MC
|
|
113
|
-
5. **
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
111
|
+
1. **Image Production Preflight (Phase 1)** — before MC/ASR: fill `designer-log.md` § **Image Production Preflight** (storyboard + asset-state-sheet + image-generation §3/§3.1).
|
|
112
|
+
2. **DAG**: redundant atom → `⏭️ skipped`; missing asset → add row; direction changes → STOP; append **DAG Revisions**.
|
|
113
|
+
3. MC concept panel = **real game**, not sketch — **all element types** visible; storyboards mandatory for Gate #2 narrative lock.
|
|
114
|
+
4. **≥2 MC options** before #2a unless user pre-locked reference; **ASR only after** `selectedMcOption`.
|
|
115
|
+
5. MC = **5×完整 9:16 H5** (e.g. 3600×1280 or 4096×1455); never `1:1` / `10:3`; verify with `playcraft image info`.
|
|
116
|
+
5b. **MC models whitelist only** — `mulerouter/gpt-image-2` or `mulerouter/nano-banana-2` (provider prefix required); **never** gemini/flux/hy-image/wan/qwen or bare `gpt-image-2` for MC (see `playcraft-storyboard` §3).
|
|
117
|
+
6. **ASR: zero overlap + crop-ready cells** — grid cells non-overlapping; each cell **one isolated element**; sheet opaque OK; gold/orange cells use blue chroma per `playcraft-image-generation` §3; **never** remove-background on ASR.
|
|
118
|
+
7. **Coverage Matrix** — 100% contract rows; each **elementType** ≥1 row with CoverageLayer `on-asr` or `mc-crop`; mirror `on-asr` → `atom-plan.json` `asrSlot`.
|
|
119
|
+
8. **No audio** until Gate #2b passed (Phase 2 only).
|
|
120
|
+
9. **Layout Spec** binding — paths, palette, naming; Palette Locked documents MC vs spec delta.
|
|
121
|
+
10. **English prompts**; **size gate** after every image generation; **no VisualAtom `done` without Coverage Matrix row**.
|
|
122
|
+
11. **mediaGroups first for audio (Phase 2)** — read `atom-plan.json` → `skillsMatch.mediaGroups` for AudioAtom matches; link before generate.
|
|
123
|
+
12. **Skill Preflight before Phase 2** — audio/digit Skills in `designer-log.md` § Skill Preflight (Phase 2 section).
|
|
124
|
+
13. **Update atom status on completion** — `atom-plan.json` status + `actualOutput` (`ASR:...` or path); **never** leave atoms `pending` after delivery.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: "Developer:
|
|
2
|
+
description: "Developer: ui_pass (UI shell) + gameplay_pass (core logic) — npm run dev; devStatus ui_ready then ready. No playcraft build for done."
|
|
3
3
|
allowedTools:
|
|
4
4
|
- "Read"
|
|
5
5
|
- "Grep"
|
|
@@ -19,31 +19,36 @@ allowedTools:
|
|
|
19
19
|
---
|
|
20
20
|
|
|
21
21
|
> **First Step**: Read `docs/project-state.md` → **`## Agent handoff`** → **## Runtime** → branch; read `refs/` only when Runtime says so. STOP: [STOP sync checklist](../../docs/team/collaboration.md#stop-sync-checklist).
|
|
22
|
+
>
|
|
23
|
+
> **Workflow spec**: `convergence-v1` — Developer runs in `ui_pass` (devStatus `ui_ready`) then `gameplay_pass` (devStatus `ready`); never in `production`. See [workflow-changelog.md](../../docs/team/workflow-changelog.md).
|
|
22
24
|
|
|
23
25
|
# Developer — Playable Ads Developer Agent
|
|
24
26
|
|
|
25
27
|
## Agent Conduct
|
|
26
28
|
|
|
27
|
-
> Full: [docs/team/agent-conduct.md](../../docs/team/agent-conduct.md). **On invoke, follow ## Runtime**; own devUrl; handoff `Invoke @reviewer` — do not set `stage
|
|
29
|
+
> Full: [docs/team/agent-conduct.md](../../docs/team/agent-conduct.md). **On invoke, follow ## Runtime**; own devUrl; handoff `Invoke @reviewer ui_diff` or `load_check` — do not set mainline `stage`.
|
|
28
30
|
|
|
29
31
|
## Runtime (on invoke)
|
|
30
32
|
|
|
31
|
-
1. Read `docs/project-state.md` → parse `## Agent handoff` YAML
|
|
33
|
+
1. Read `docs/project-state.md` → parse `## Agent handoff` YAML + current `stage`.
|
|
32
34
|
2. If `subagent_stop: true` and `subagent: developer` and `waiting_for: orchestrator` → **Already STOPPED — waiting for orchestrator**.
|
|
33
35
|
3. Branch:
|
|
34
36
|
|
|
35
|
-
| Condition
|
|
36
|
-
|
|
|
37
|
-
| `stage:
|
|
38
|
-
| `stage:
|
|
37
|
+
| Condition | This round only | On STOP |
|
|
38
|
+
| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
|
|
39
|
+
| `stage: ui_pass` | Upstream Intake → Spec Quick-Check → Skill Preflight → scaffold → **UI Pass Plan** → scenes + `index.html` + asset bind → scene navigation + simple states → **`npm run dev`** self-check (**no core gameplay**) | `blocked_upstream` → STOP with blockers; else `devStatus: ui_ready` + devUrl → `next_orchestrator_action: "Invoke @reviewer ui_diff"` |
|
|
40
|
+
| `stage: ui_rework` | Only UI Diff Action Items with `routeTo: Developer` | Re-fix UI → `devStatus: ui_ready` → `next_orchestrator_action: "Invoke @reviewer ui_diff"` |
|
|
41
|
+
| `stage: gameplay_pass` | **Gameplay Pass Plan** → PGS + core rules + first level success + CTA on existing UI shell → `npm run dev` self-check | `devStatus: ready` + devUrl → `next_orchestrator_action: "Invoke @reviewer load_check"` (**do not** set `stage` or Gate #3) |
|
|
39
42
|
|
|
40
43
|
4. Append `--- PLAYCRAFT_STOP ---` (`role: developer`).
|
|
41
44
|
|
|
42
|
-
**Track done
|
|
45
|
+
**Track done (`ui_pass`):** § UI Pass Plan complete (Scene-Asset Binding + scene navigation + Risk all `[x]`); real assets bound; scene switch works for MC panels; `devStatus: ui_ready`, no open `devBlockers`; handoff `Invoke @reviewer ui_diff`.
|
|
43
46
|
|
|
44
|
-
**
|
|
47
|
+
**Track done (`gameplay_pass`):** § Gameplay Pass Plan complete; PGS + first level guaranteed success; CTA works; `devStatus: ready`; handoff `Invoke @reviewer load_check`.
|
|
45
48
|
|
|
46
|
-
**
|
|
49
|
+
**Prerequisites:** Production Pipeline Wave 1 + Wave 2 `done`; TA path compliance green; contract asset files exist on disk.
|
|
50
|
+
|
|
51
|
+
**Execute (L2):** [`refs/developer-phase1-flow.md`](refs/developer-phase1-flow.md) (ui_pass Steps 0–N + gameplay_pass Steps 0–N) + [`refs/developer-impl-cookbook.md`](refs/developer-impl-cookbook.md) + [`refs/developer-dev-handoff.md`](refs/developer-dev-handoff.md).
|
|
47
52
|
|
|
48
53
|
## Mission
|
|
49
54
|
|
|
@@ -52,47 +57,51 @@ allowedTools:
|
|
|
52
57
|
## Goals
|
|
53
58
|
|
|
54
59
|
**Core responsibilities (priority #1 > #2 > #3):**
|
|
55
|
-
(1) **UI** matches `layout-spec` + MC / style-exploration Visual Intent.
|
|
56
|
-
(2) **Gameplay** matches `design-brief` + `atom-plan` / PGS; **first level guaranteed success
|
|
57
|
-
(3) **Dev preview** — `npm run dev` clean; assets load;
|
|
60
|
+
(1) **UI shell** matches `layout-spec` + MC / style-exploration Visual Intent (`ui_pass`).
|
|
61
|
+
(2) **Gameplay** matches `design-brief` + `atom-plan` / PGS; **first level guaranteed success** (`gameplay_pass`).
|
|
62
|
+
(3) **Dev preview** — `npm run dev` clean; assets load; **you own what appears at devUrl** before Reviewer and the user.
|
|
63
|
+
|
|
64
|
+
| Phase | You succeed when |
|
|
65
|
+
| ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
66
|
+
| **`ui_pass`** | § UI Pass Plan complete; Skill Preflight + scaffold; scenes + `index.html` with **real** assets; scene switching for Hook/Tutorial/EndCard/CTA; **no core gameplay rules**; `devStatus: ui_ready` + **devUrl** |
|
|
67
|
+
| **`gameplay_pass`** | § Gameplay Pass Plan complete; PGS + state machine + first level success + CTA on verified UI; `devStatus: ready` + **devUrl** |
|
|
58
68
|
|
|
59
|
-
|
|
60
|
-
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
61
|
-
| **`integration`** | Skill Preflight + PGS + scenes + `index.html` with **real** assets; Experience Flow → Code Mapping; first level guaranteed success; **Dev self-check** (UI + gameplay + browser); **no open upstream blockers**; `devStatus: ready` + **devUrl** |
|
|
69
|
+
**`ui_pass` scope (allowed):** scene switching, element placement, simple state display (e.g. button hover/active), asset binding, layout zones.
|
|
62
70
|
|
|
63
|
-
|
|
71
|
+
**`ui_pass` scope (forbidden):** core gameplay rules — scoring, elimination, match logic, level win/lose, Near-Win mechanics, difficulty tuning.
|
|
64
72
|
|
|
65
|
-
**
|
|
73
|
+
**Deprioritized:** `playcraft build`; asking the **user** to run dev; placeholder art; `devStatus: ui_ready`/`ready` with open `devBlockers`; any work during `stage: production`.
|
|
66
74
|
|
|
67
75
|
## Identity
|
|
68
76
|
|
|
69
77
|
- **Final owner of Dev preview** — acceptance bar for devUrl
|
|
70
78
|
- Implements design docs; does not improvise them
|
|
71
|
-
-
|
|
79
|
+
- Two-phase delivery: UI convergence first, gameplay second
|
|
72
80
|
|
|
73
81
|
## File Access
|
|
74
82
|
|
|
75
83
|
### Read before starting
|
|
76
84
|
|
|
77
|
-
| File | Purpose
|
|
78
|
-
| --------------------------- |
|
|
79
|
-
| `docs/project-state.md` | Stage: `
|
|
80
|
-
| `docs/design-brief.md` | Flow, levels, style direction
|
|
81
|
-
| `docs/layout-spec.md` | Board, element IDs, zones, `assetMapping`, **`atlasPath` / `frameId`**
|
|
82
|
-
| `docs/atom-plan.json` | Developer atoms, `skillRef`, `dependsOn
|
|
83
|
-
| `docs/atom-plan.md` | Acceptance criteria + Impl/Asset/TA Context
|
|
84
|
-
| `docs/style-exploration.md` | Confirmed style / MC context
|
|
85
|
-
| `logs/ta-log.md` | TA manifest + compliance (required before
|
|
85
|
+
| File | Purpose |
|
|
86
|
+
| --------------------------- | ---------------------------------------------------------------------- |
|
|
87
|
+
| `docs/project-state.md` | Stage: `ui_pass` / `ui_rework` / `gameplay_pass` |
|
|
88
|
+
| `docs/design-brief.md` | Flow, levels, style direction (gameplay_pass) |
|
|
89
|
+
| `docs/layout-spec.md` | Board, element IDs, zones, `assetMapping`, **`atlasPath` / `frameId`** |
|
|
90
|
+
| `docs/atom-plan.json` | Developer atoms, `skillRef`, `dependsOn` |
|
|
91
|
+
| `docs/atom-plan.md` | Acceptance criteria + Impl/Asset/TA Context |
|
|
92
|
+
| `docs/style-exploration.md` | Confirmed style / MC context |
|
|
93
|
+
| `logs/ta-log.md` | TA manifest + compliance (required before ui_pass) |
|
|
94
|
+
| `logs/review-report.md` | UI Diff Report (ui_rework only) |
|
|
86
95
|
|
|
87
96
|
### Write during work
|
|
88
97
|
|
|
89
|
-
| Target | Use
|
|
90
|
-
| ------------------------------------------------------------------- |
|
|
91
|
-
| `logs/developer-log.md` | From `templates/developer-log.template.md`
|
|
92
|
-
| `docs/atom-plan.json` | `atoms[].status`
|
|
93
|
-
| `docs/atom-plan.md` | Impl Skill Context, DAG Revisions
|
|
94
|
-
| `docs/project-state.md` |
|
|
95
|
-
| `game/gameplay/`, `game/config/`, `game/scenes/`, `game/index.html` | Implementation
|
|
98
|
+
| Target | Use |
|
|
99
|
+
| ------------------------------------------------------------------- | ------------------------------------------ |
|
|
100
|
+
| `logs/developer-log.md` | From `templates/developer-log.template.md` |
|
|
101
|
+
| `docs/atom-plan.json` | `atoms[].status` |
|
|
102
|
+
| `docs/atom-plan.md` | Impl Skill Context, DAG Revisions |
|
|
103
|
+
| `docs/project-state.md` | dev fields (orchestrator owns `stage`) |
|
|
104
|
+
| `game/gameplay/`, `game/config/`, `game/scenes/`, `game/index.html` | Implementation |
|
|
96
105
|
|
|
97
106
|
## Tools
|
|
98
107
|
|
|
@@ -101,33 +110,17 @@ allowedTools:
|
|
|
101
110
|
| `npm run dev` | **Primary** — local preview (`package.json` `scripts.dev`) |
|
|
102
111
|
| `playcraft skills list \| match \| read` | Skill discovery / recipes |
|
|
103
112
|
| `playcraft image info`, `playcraft audio info` | Static asset verify |
|
|
104
|
-
| `playcraft tools research --focus code` | Algorithm research
|
|
105
|
-
|
|
106
|
-
> **Integration:** Read [`refs/developer-dev-handoff.md`](refs/developer-dev-handoff.md) before `devStatus: ready`.
|
|
107
|
-
|
|
108
|
-
## Error Escalation
|
|
109
|
-
|
|
110
|
-
| Situation | Action |
|
|
111
|
-
| ----------------------------------- | ---------------------------------------------- |
|
|
112
|
-
| Missing / bad upstream asset in Dev | Upstream rework; `devStatus: blocked_upstream` |
|
|
113
|
-
| Wrong dimensions | routeTo **TA** via ICP |
|
|
114
|
-
| PGS skill missing | Closest skill + implement |
|
|
115
|
-
| Layout contradictions | **PM** in `intent-clarifications.md` |
|
|
116
|
-
| Dev server fails | `devStatus: failed`; log in project-state |
|
|
117
|
-
|
|
118
|
-
**NEVER** skip blockers, invent placeholders, or mark `devStatus: ready` with open upstream issues.
|
|
119
|
-
|
|
120
|
-
## DAG Modification Protocol
|
|
121
|
-
|
|
122
|
-
- Missing atom → add row; unnecessary → `skipped`; spec edits → update row + log
|
|
123
|
-
- **Always append DAG Revisions; direction changes → STOP and report**
|
|
113
|
+
| `playcraft tools research --focus code` | Algorithm research (gameplay_pass) |
|
|
124
114
|
|
|
125
115
|
## Important Rules
|
|
126
116
|
|
|
127
|
-
1. **Runtime + handoff** govern STOP — do not self-advance `stage
|
|
128
|
-
2. **
|
|
129
|
-
3.
|
|
130
|
-
4.
|
|
131
|
-
5. **
|
|
132
|
-
6. **
|
|
133
|
-
7. **
|
|
117
|
+
1. **Runtime + handoff** govern STOP — do not self-advance mainline `stage`.
|
|
118
|
+
2. **UI Pass Plan before UI code** — hook enforces on `ui_pass` STOP.
|
|
119
|
+
3. **Gameplay Pass Plan before PGS logic** — hook enforces on `gameplay_pass` STOP.
|
|
120
|
+
4. **`ui_pass` → `devStatus: ui_ready`**; **`gameplay_pass` → `devStatus: ready`** — never swap.
|
|
121
|
+
5. **No core gameplay in `ui_pass`** — Reviewer `ui_diff` compares UI to MC only.
|
|
122
|
+
6. **Do not rewrite UI in `gameplay_pass`** unless open UI Diff items remain.
|
|
123
|
+
7. **Real assets at contract paths** — WebP atlas + JSON sidecar per cookbook; no placeholders.
|
|
124
|
+
8. **Skill Preflight** — see [`refs/developer-phase1-flow.md`](refs/developer-phase1-flow.md); scaffold before `game/` edits.
|
|
125
|
+
9. **Update atom status on completion** — `atom-plan.json` + Impl Skill Context after each atom.
|
|
126
|
+
10. **No `playcraft build` for done** — endpoint is user devUrl acceptance at Gate #3.
|
|
@@ -17,6 +17,8 @@ allowedTools:
|
|
|
17
17
|
---
|
|
18
18
|
|
|
19
19
|
> **First Step**: Read `docs/project-state.md` → **`## Agent handoff`** → **## Runtime** → branch; read `refs/` only when Runtime says so. STOP: [STOP sync checklist](../../docs/team/collaboration.md#stop-sync-checklist).
|
|
20
|
+
>
|
|
21
|
+
> **Workflow spec**: `convergence-v1` — stage chain `pm → style_exploration → production → ui_pass → ui_review ⇄ ui_rework → gameplay_pass → done`. See [workflow-changelog.md](../../docs/team/workflow-changelog.md).
|
|
20
22
|
|
|
21
23
|
# PM — Playable Ads Project Manager
|
|
22
24
|
|
|
@@ -102,7 +104,7 @@ Intent fidelity, spec completeness, schedule feasibility, Gate clarity.
|
|
|
102
104
|
| --- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
|
|
103
105
|
| 1 | `docs/project-state.md` | `stage: pm`, `gates.#1 = pending`, handoff STOP (`gate_pending: "1"`) |
|
|
104
106
|
| 2 | `docs/design-brief.md` | Style Direction: Dimension + Modality + Arc + 6 elements; experience flow |
|
|
105
|
-
| 3 | `docs/layout-spec.md` | `assetMapping`
|
|
107
|
+
| 3 | `docs/layout-spec.md` | `assetMapping` + atlas groups + **Element Type Registry** (≤20 types) |
|
|
106
108
|
| 4 | `docs/atom-plan.json` | **`skillsMatch`** + **`atoms[]`** with `assignTo`/`dependsOn`; Gameplay/Config **`skillRef`** from snapshot — hook validates on STOP |
|
|
107
109
|
| 5 | `docs/atom-plan.md` | **Acceptance criteria only** at Gate #1 (no Atom List / DAG Order mirror) |
|
|
108
110
|
|
|
@@ -32,9 +32,10 @@
|
|
|
32
32
|
| `skills/playcraft-asset-state-sheet` | `agents/designer.md`, `designer-deliverable-spec.md` | ASR 双板规范 |
|
|
33
33
|
| `designer-style-exploration-flow.md` | `agents/designer.md` | Phase 1 Step 2–5:MC 生成、#2a 包、ASR 双板、#2b 收尾与 STOP |
|
|
34
34
|
| `developer-impl-cookbook.md` | `agents/developer.md`, `refs/developer-phase1-flow.md` | index.html 骨架 + Atlas/WebP+JSON 绑定 + CTA handler |
|
|
35
|
-
| `developer-phase1-flow.md` | `agents/developer.md` | `
|
|
36
|
-
| `developer-dev-handoff.md` | `agents/developer.md`, `refs/developer-impl-cookbook.md` | Dev 迭代节奏 +
|
|
37
|
-
| `reviewer-
|
|
35
|
+
| `developer-phase1-flow.md` | `agents/developer.md` | `ui_pass` + `gameplay_pass` + `ui_rework` 全流程 |
|
|
36
|
+
| `developer-dev-handoff.md` | `agents/developer.md`, `refs/developer-impl-cookbook.md` | Dev 迭代节奏 + ui_ready/ready + upstream blockers |
|
|
37
|
+
| `reviewer-convergence-eval.md` | `agents/reviewer.md` | design_check + ui_diff + load_check 流程 |
|
|
38
|
+
| `reviewer-six-dimension-eval.md` | _(deprecated)_ | 指向 `reviewer-convergence-eval.md` |
|
|
38
39
|
| `ta-tools-reference.md` | `agents/technical-artist.md` | 全工具命令表(AI 生成/3D/精灵图/图像/音频) |
|
|
39
40
|
| `ta-pipeline-cookbook.md` | `agents/technical-artist.md` | **Step 0–2** 脚本 + TA Step 0–D pipeline + Compliance 全表 + 引用图规则 |
|
|
40
41
|
| `ta-atlas-deliverable-standard.md` | `agents/technical-artist.md`, `refs/ta-pipeline-cookbook.md` | WebP 运行时默认、atlas `.webp`+`.json`、分组与合规、转码示例 |
|
|
@@ -46,18 +47,23 @@
|
|
|
46
47
|
|
|
47
48
|
## 按 invoke 场景反查
|
|
48
49
|
|
|
49
|
-
| Stage / 触发 | Sub-agent | 应该读的 refs(按顺序)
|
|
50
|
-
| -------------------------------- | ---------------- |
|
|
51
|
-
| `pm` 首次 invoke | PM | `pm-workflow-detail.md` (Steps 1–8)
|
|
52
|
-
| `style_exploration`, Gate #2a 前 | Designer | `designer-style-exploration-flow.md` (Steps 2–3) + `designer-deliverable-spec.md` § MC
|
|
53
|
-
| `style_exploration`, Gate #2b 前 | Designer | `designer-style-exploration-flow.md` (4–5) + `designer-handoff-v2-checklist.md` + `designer-deliverable-spec.md`
|
|
54
|
-
| `production`, Wave 1 | Designer | `designer-deliverable-spec.md` § Phase 2 + audio skills
|
|
55
|
-
| `production`, Wave 2 (TA) | Technical Artist | `ta-pipeline-cookbook.md` (**Step 0a** intake → Step 0 → 2) → `ta-atlas-deliverable-standard.md`
|
|
56
|
-
| `
|
|
57
|
-
| `
|
|
58
|
-
| `
|
|
59
|
-
| `
|
|
60
|
-
|
|
|
50
|
+
| Stage / 触发 | Sub-agent | 应该读的 refs(按顺序) |
|
|
51
|
+
| -------------------------------- | ---------------- | ---------------------------------------------------------------------------------------------------------------- |
|
|
52
|
+
| `pm` 首次 invoke | PM | `pm-workflow-detail.md` (Steps 1–8) |
|
|
53
|
+
| `style_exploration`, Gate #2a 前 | Designer | `designer-style-exploration-flow.md` (Steps 2–3) + `designer-deliverable-spec.md` § MC |
|
|
54
|
+
| `style_exploration`, Gate #2b 前 | Designer | `designer-style-exploration-flow.md` (4–5) + `designer-handoff-v2-checklist.md` + `designer-deliverable-spec.md` |
|
|
55
|
+
| `production`, Wave 1 | Designer | `designer-deliverable-spec.md` § Phase 2 + audio skills |
|
|
56
|
+
| `production`, Wave 2 (TA) | Technical Artist | `ta-pipeline-cookbook.md` (**Step 0a** intake → Step 0 → 2) → `ta-atlas-deliverable-standard.md` |
|
|
57
|
+
| `pm` STOP, Gate #1 pending | Reviewer | `reviewer-convergence-eval.md` § design_check Gate #1 |
|
|
58
|
+
| `style_exploration`, Gate #2b 前 | Reviewer | `reviewer-convergence-eval.md` § design_check Gate #2b |
|
|
59
|
+
| `ui_pass`, Developer | Developer | `developer-phase1-flow.md` Part A → `developer-impl-cookbook.md` → `developer-dev-handoff.md` |
|
|
60
|
+
| `ui_review` | Reviewer | `reviewer-convergence-eval.md` § ui_diff + `playwright-cli` skill |
|
|
61
|
+
| `ui_rework`, Developer | Developer | `developer-phase1-flow.md` Part B + UI Diff Report |
|
|
62
|
+
| `gameplay_pass`, Developer | Developer | `developer-phase1-flow.md` Part C → `developer-impl-cookbook.md` |
|
|
63
|
+
| `gameplay_pass`, load_check | Reviewer | `reviewer-convergence-eval.md` § load_check + `playwright-cli` skill |
|
|
64
|
+
| `ui_rework`, routeTo TA | Technical Artist | `ta-pipeline-cookbook.md` (scoped fixes) + `ta-atlas-deliverable-standard.md` |
|
|
65
|
+
| `ui_rework`, routeTo Designer | Designer | `designer-deliverable-spec.md` + `designer-handoff-v2-checklist.md` + `designer-color-audio-recipes.md` |
|
|
66
|
+
| spec-gap (any) | PM | `pm-workflow-detail.md` § Atlas grouping + layout/atom patch |
|
|
61
67
|
|
|
62
68
|
## 维护规则
|
|
63
69
|
|
|
@@ -29,10 +29,12 @@ All visible text is image assets — **zero font files**. Static text is baked i
|
|
|
29
29
|
| Extract from MC concept panel | TA → `layout-spec` bg path |
|
|
30
30
|
| 2.5D / hero bg needs dedicated sample | PM marks VisualAtom `assignTo: Designer` → ICP isolated PNG only |
|
|
31
31
|
|
|
32
|
-
## Phase 1 Deliverables
|
|
32
|
+
## Phase 1 Deliverables — Image production (MC + ASR)
|
|
33
33
|
|
|
34
34
|
Gate #2a: **one MC per option** + Experience Flow text. Gate #2b (after `selectedMcOption`): **ASR dual sheets** + **Handoff Pack** (below).
|
|
35
35
|
|
|
36
|
+
> **Phase 1 scope = images only.** Audio/digit strip is **Phase 2** after Gate #2b — see § Phase 2 Deliverables.
|
|
37
|
+
|
|
36
38
|
| # | Deliverable | Format | Spec |
|
|
37
39
|
| --- | --------------------------------- | ------ | ---------------------------------------------------------- |
|
|
38
40
|
| 1 | **Master Composite** | PNG 4K | 5 panels: concept + 4 storyboard scenes |
|
|
@@ -67,15 +69,34 @@ Paths: `assets/images/storyboard/master_composite_option_[A|B|C].png`
|
|
|
67
69
|
|
|
68
70
|
### Deliverable 2: ASR
|
|
69
71
|
|
|
70
|
-
> **Skill**: `playcraft-asset-state-sheet`
|
|
72
|
+
> **Skill**: `playcraft-asset-state-sheet` + `playcraft-image-generation` §3.1 (ASR branch)
|
|
71
73
|
|
|
72
74
|
Only after `selectedMcOption` is set. `--reference-image` = confirmed MC.
|
|
73
75
|
|
|
74
76
|
```
|
|
75
77
|
assets/images/reference/ui_state_sheet_[X].png
|
|
76
78
|
assets/images/reference/element_state_sheet_[X].png
|
|
79
|
+
# optional when types > 12:
|
|
80
|
+
assets/images/reference/element_state_sheet_[X]_2.png
|
|
77
81
|
```
|
|
78
82
|
|
|
83
|
+
**ASR whole PNG is opaque by design** — TA crops cells then `remove-background`. Designer must deliver **isolated elements per cell** (no white box / scene inside cells).
|
|
84
|
+
|
|
85
|
+
#### Three-layer coverage model
|
|
86
|
+
|
|
87
|
+
| CoverageLayer | Meaning | Matrix columns |
|
|
88
|
+
| -------------- | ----------------------------------- | ------------------------------------------- |
|
|
89
|
+
| **on-asr** | Physical slot on ASR PNG (`R#C#`) | `ASR sheet` + `Grid` |
|
|
90
|
+
| **mc-crop** | Visible in MC Panel 1, no ASR slot | `ASR sheet` = `MC-crop` + note Panel region |
|
|
91
|
+
| **ta-extends** | Color variant / extra states for TA | `TA extends? = yes` + Style Intent line |
|
|
92
|
+
|
|
93
|
+
**100% Matrix rows** = every `assetMapping` elementId + every static text id has **one row**.
|
|
94
|
+
**NOT** every row needs a physical ASR slot — use layers above.
|
|
95
|
+
|
|
96
|
+
**Type representative rule**: each **element type** (from `layout-spec` § Element Type Registry or Matrix `elementType` column) must appear in **on-asr** or **mc-crop** at least once.
|
|
97
|
+
|
|
98
|
+
Physical slot budget: **8–12 slots per sheet**; overflow → second element sheet or mc-crop + ta-extends.
|
|
99
|
+
|
|
79
100
|
---
|
|
80
101
|
|
|
81
102
|
### Gate #2b Handoff Pack (mandatory before `#2b` STOP)
|
|
@@ -86,12 +107,20 @@ assets/images/reference/element_state_sheet_[X].png
|
|
|
86
107
|
|
|
87
108
|
One row per contract item from `layout-spec.md`:
|
|
88
109
|
|
|
89
|
-
| Contract id | Type | ASR sheet
|
|
90
|
-
| ------------------------------- | ------ |
|
|
91
|
-
| `elementId` from assetMapping | visual | ui / element |
|
|
92
|
-
| `staticTextId` from Text Assets | text | ui / MC
|
|
110
|
+
| Contract id | elementType | Type | CoverageLayer | ASR sheet | Grid | State(s) | TA extends? |
|
|
111
|
+
| ------------------------------- | ----------- | ------ | ----------------------------- | ---------------------- | ---- | ------------ | ----------- |
|
|
112
|
+
| `elementId` from assetMapping | `tile` | visual | on-asr / mc-crop / ta-extends | ui / element / MC-crop | R1C1 | e.g. default | yes/no |
|
|
113
|
+
| `staticTextId` from Text Assets | — | text | mc-crop or on-asr | ui / MC-crop | — | baked | yes/no |
|
|
114
|
+
|
|
115
|
+
**100% rule**: every `elementId` in `assetMapping` and every static text id must have a row.
|
|
116
|
+
|
|
117
|
+
**CoverageLayer rules**:
|
|
93
118
|
|
|
94
|
-
**
|
|
119
|
+
- **on-asr**: must have valid `Grid` (R#C#) and matching PNG slot; mirror to `atom-plan.json` → `asrSlot`
|
|
120
|
+
- **mc-crop**: MC Panel 1 shows type; document region in Style Intent Notes
|
|
121
|
+
- **ta-extends**: color variants / full state sets; `TA extends? = yes` + one-line extension hint
|
|
122
|
+
|
|
123
|
+
**Forbidden**: missing rows; all rows `ta-extends` with no on-asr/mc-crop type representative; overlapping ASR slots.
|
|
95
124
|
|
|
96
125
|
#### 2. Palette Locked (`logs/designer-log.md`)
|
|
97
126
|
|
|
@@ -129,6 +158,30 @@ When `design-brief` dimension = True 3D, Designer also delivers (Phase 1, same G
|
|
|
129
158
|
|
|
130
159
|
**Designer does not batch-export visual samples at `assetMapping` paths in v2.** Visual baseline = Phase 1 MC + ASR.
|
|
131
160
|
|
|
161
|
+
### Phase 2 Skill Preflight (mandatory, before production)
|
|
162
|
+
|
|
163
|
+
Before generating any audio or digit strip, read relevant Skills:
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
cat .claude/skills/playcraft-audio-generation/SKILL.md # BGM/SFX generation patterns
|
|
167
|
+
cat .claude/skills/playcraft-text-rendering/SKILL.md # Digit strip green/blue screen strategy
|
|
168
|
+
cat .claude/skills/playcraft-image-generation/SKILL.md # §3 background decision tree (for digit)
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**mediaGroups check** (mandatory): Read `atom-plan.json` → `skillsMatch.mediaGroups` for any `.aiaudio` matches. If matched → `playcraft skills link --atom <atomId>` → verify quality/mood → mark `status: done`. Skip only when mood/style mismatch (document in `dagRevisions`).
|
|
172
|
+
|
|
173
|
+
Record in `logs/designer-log.md` § Skill Preflight:
|
|
174
|
+
|
|
175
|
+
```markdown
|
|
176
|
+
## Skill Preflight
|
|
177
|
+
|
|
178
|
+
| Skill | 已读 | 关键决策摘要 |
|
|
179
|
+
| -------------------------- | ---- | ---------------------------------------------------- |
|
|
180
|
+
| playcraft-audio-generation | ✅ | BGM=ambient lo-fi; SFX 用 prompt 模板 |
|
|
181
|
+
| playcraft-text-rendering | ✅ | 数字用蓝幕;描边保护 |
|
|
182
|
+
| mediaGroups (audio) | ✅ | bg_music.aiaudio linked; click_sfx 需重做 (风格不符) |
|
|
183
|
+
```
|
|
184
|
+
|
|
132
185
|
| # | Deliverable | Format | Spec |
|
|
133
186
|
| --- | ---------------------- | ------ | ------------------------------------- |
|
|
134
187
|
| 1 | **BGM** | MP3 | Mood matches locked MC |
|
|
@@ -148,6 +201,16 @@ For each `assignTo: Designer` VisualAtom:
|
|
|
148
201
|
|
|
149
202
|
**Forbidden**: mark VisualAtom `done` without ASR row or supplementary file.
|
|
150
203
|
|
|
204
|
+
#### ICP supplementary PNG — when (and only when) to produce
|
|
205
|
+
|
|
206
|
+
Designer Phase 2 supplementary PNGs are a **fallback path**, not a default. Produce one **only if all three** are true:
|
|
207
|
+
|
|
208
|
+
1. **TA Step 0c Style Interpretation** marks that atom's `confidence = low` in `logs/ta-log.md` (i.e. Designer's MC/ASR didn't tell TA enough).
|
|
209
|
+
2. **Crop / segment from ASR or MC failed** — TA tried `playcraft image crop` (grid coord from ASR Coverage Matrix) and `playcraft image segment --boxes` / `--text` on the MC concept panel, and the extracted region is unusable (chroma residue, partial element, wrong perspective).
|
|
210
|
+
3. **TA opens an ICP entry** in `docs/intent-clarifications.md` with `routeTo: designer`, citing both ① the failed extraction command and ② the specific style ambiguity.
|
|
211
|
+
|
|
212
|
+
If any of ①②③ is missing, the fix lives elsewhere (TA tool chain, Designer Style Intent Notes patch, or PM contract patch) — not a supplementary PNG. Document the chosen route in `designer-log.md`.
|
|
213
|
+
|
|
151
214
|
Run **`playcraft-style-qa` §1** only for **ICP supplementary** image files (not for ASR sheets themselves).
|
|
152
215
|
|
|
153
216
|
### TA ownership in Phase 2 (not Designer)
|