@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,545 @@
|
|
|
1
|
+
# PM Workflow Detail
|
|
2
|
+
|
|
3
|
+
> Read before executing Steps 1-8. Contains the full step-by-step analysis flow, interaction mode selection, five-axis framework application, Style Direction specification, scheduling metadata guide, and Pre-Write Validation Checklist.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Step 1: Intent Assessment — 9 Dimensions
|
|
8
|
+
|
|
9
|
+
Read the user's prompt and internally assess all 9 dimensions:
|
|
10
|
+
|
|
11
|
+
| Dimension | Example Signals | Critical? |
|
|
12
|
+
| ----------------------- | ---------------------------------------------------------------------- | --------- |
|
|
13
|
+
| **Gameplay type** | "match-3", "puzzle", "parkour" | Yes |
|
|
14
|
+
| **Visual style** | "cartoon", "realistic", "pixel art", "flat design" | Yes |
|
|
15
|
+
| **Element theme** | "fruits", "gems", "candy", "animals" | Yes |
|
|
16
|
+
| **Color mood** | "warm", "cold", "vibrant", "pastel", "dark" | Medium |
|
|
17
|
+
| **Target product** | "casual puzzle game", "RPG", "e-commerce" | Medium |
|
|
18
|
+
| **Target platform** | "Facebook", "TikTok", "Unity Ads" | Medium |
|
|
19
|
+
| **Target audience** | "casual gamers", "women 25-45", "kids" | Low |
|
|
20
|
+
| **Reference/benchmark** | "like Royal Match", "similar to Candy Crush" | Bonus |
|
|
21
|
+
| **User Motivation Job** | stress-relief / challenge / collection / creativity / immersion (JTBD) | Medium |
|
|
22
|
+
|
|
23
|
+
**User Motivation Job inference**: explicit signal words → classify directly; game genre implies strongly (strategy RPG → challenge); no signal → default to stress-relief (broadest audience).
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Step 2: Interaction Mode Selection
|
|
28
|
+
|
|
29
|
+
### Advisor Mode (Default)
|
|
30
|
+
|
|
31
|
+
**Core principle**: Complete internal analysis first, then write **Gate #1 option packages** for the orchestrator (see **Interaction Modes** § below). User selects via orchestrator `AskUserQuestion` — **not** by PM sub-agent.
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
IF information is sufficient (gameplay + style + theme are clear):
|
|
35
|
+
→ Write 1 recommended full package in checkpoint for orchestrator Gate #1
|
|
36
|
+
|
|
37
|
+
ELIF some dimension is ambiguous (e.g., style unclear):
|
|
38
|
+
→ Complete internal judgment on other dimensions
|
|
39
|
+
→ Document 2-3 options per ambiguous dimension in Gate #1 package
|
|
40
|
+
|
|
41
|
+
ELIF information is minimal (e.g., "make a playable ad" or only "麻将对对碰"):
|
|
42
|
+
→ Complete five-axis analysis, generate 2-3 complete directions
|
|
43
|
+
→ Document Option A / B / C in Gate #1 package (each covers all five axes + risk/tutorial/audience)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**NEVER**: ask the user directly (no `AskUserQuestion` on PM), open-ended chat questions, skip `gates.#1 = pending` STOP.
|
|
47
|
+
|
|
48
|
+
**ALWAYS**: 2-4 labeled options in checkpoint; mark recommendation; STOP after four docs + `gates.#1 = pending`; decide professionally only for **uncared** dimensions.
|
|
49
|
+
|
|
50
|
+
### Direct Intent Mode
|
|
51
|
+
|
|
52
|
+
Triggered only when **≥ 3 axes** are explicitly locked (naming a genre alone does not count):
|
|
53
|
+
|
|
54
|
+
| Trigger | Behavior |
|
|
55
|
+
| ------------------------------------------------------ | --------------------------------------------------------------------------------------------------- |
|
|
56
|
+
| Specified gameplay type only ("麻将对对碰", "match-3") | Mechanic locked → **stay in Advisor Mode** for other axes |
|
|
57
|
+
| Specified visual style ("cyberpunk", "pixel art") | Style axis locked |
|
|
58
|
+
| Specified emotion/experience ("urgency", "relaxing") | Emotional arc axis locked |
|
|
59
|
+
| ≥ 3 axes clearly specified | Skip multi-round option picking; **one** recommended package in Gate #1 checkpoint for orchestrator |
|
|
60
|
+
|
|
61
|
+
**Threshold**: ≥ 3 axes with clear directives → Direct Intent Mode. Otherwise → Advisor Mode.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Step 3: Classify Dimensions
|
|
66
|
+
|
|
67
|
+
For each dimension:
|
|
68
|
+
|
|
69
|
+
- **cared**: User explicitly mentioned or strongly implied
|
|
70
|
+
- **uncared**: User didn't mention — you decide with professional judgment
|
|
71
|
+
- **locked**: User explicitly specified, cannot change
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Step 4: Five-Axis Internal Evaluation + Option Generation
|
|
76
|
+
|
|
77
|
+
> **Before this step**: read `templates/design-methodology.md` and `templates/five-axis-framework.md` for the full classification tables and decision rules.
|
|
78
|
+
|
|
79
|
+
### Five-Axis Framework
|
|
80
|
+
|
|
81
|
+
| Axis | Decision Range | Downstream Impact | 30s Ad Default |
|
|
82
|
+
| ----------------- | --------------------------------------------------------- | --------------------------------- | ------------------------ |
|
|
83
|
+
| **Mechanic** | Single / Type A / B1 / B2 / C / D | Developer DAG structure | Single or Type B1 |
|
|
84
|
+
| **Dimension** | Flat 2D / 2.5D Visual / Isometric / True 3D | TA pipeline complexity | Flat 2D |
|
|
85
|
+
| **Interaction** | Tap / Tap+Swipe / Drag / Tap+Hold / Multi-touch | Tutorial time budget | Tap Only |
|
|
86
|
+
| **Narrative** | L0-L3 | Designer/TA character asset needs | L1 |
|
|
87
|
+
| **Emotional Arc** | Competence / Challenge / Curiosity / Relaxation / Urgency | Hook strategy | Competence or Relaxation |
|
|
88
|
+
|
|
89
|
+
Run the five-axis analysis internally (mechanic → dimension → interaction → narrative → emotional arc), then generate 2-3 complete options per the rules in `five-axis-framework.md`.
|
|
90
|
+
|
|
91
|
+
**Option format** — each option covers all 5 axes:
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
Option A (recommended): Mechanic=... + Dimension=... + Interaction=... + Narrative=... + Arc=...
|
|
95
|
+
→ Risk: Low | Tutorial: ~Xs | PGS coverage: yes/no
|
|
96
|
+
Option B: ...
|
|
97
|
+
Option C: ...
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Document options in Progress Checkpoint for orchestrator Gate #1. Write four files reflecting recommended option; set `gates.#1 = pending` → STOP.
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Step 5: Style Direction — Critical Output
|
|
105
|
+
|
|
106
|
+
**This is your most important creative contribution.** Don't just write "tropical cartoon" — write a Style Direction that a Designer can actually execute.
|
|
107
|
+
|
|
108
|
+
When unfamiliar with a style, research first:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
playcraft tools research --query "<style> mobile game art style characteristics" --focus visual --json
|
|
112
|
+
playcraft tools search-image --query "<style keywords> game screenshot" --json
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Style Direction must include these **explicit fields** (not implicit in Art Style):
|
|
116
|
+
|
|
117
|
+
1. **Dimension**: Flat 2D / 2.5D Visual / Isometric / True 3D — with rationale and downstream impact
|
|
118
|
+
2. **Interaction Modality**: Tap Only / Tap+Swipe / Drag / Tap+Hold — with tutorial time and audience width
|
|
119
|
+
3. **Emotional Arc**: Competence / Challenge / Curiosity / Relaxation / Urgency — how it threads through all 4 stages
|
|
120
|
+
4. **Emotional Arc Intent Table**: per-stage emotional beat + visual signal + audio signal
|
|
121
|
+
|
|
122
|
+
Plus the established 6 elements:
|
|
123
|
+
|
|
124
|
+
| Element | Bad Example | Good Example |
|
|
125
|
+
| ---------------- | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
126
|
+
| Art style | "cartoon" | "2D flat illustration with soft shadows, rounded corners on all elements, slight 3D depth via subtle gradients — similar to Candy Crush Saga's tile style but less glossy" |
|
|
127
|
+
| Color strategy | "bright colors" | "High saturation (70-90%) warm palette. Background uses deep greens (#1A6B3C → #0D4D2B gradient). Elements use pure primaries with white highlight on upper-left. UI accent in gold (#FFD700) for premium feel." |
|
|
128
|
+
| Visual hierarchy | (missing) | "Board is the visual focus (occupies 47% of screen). Background is atmospheric but low-contrast to not compete. HUD is minimal — just score + progress, white on semi-transparent dark." |
|
|
129
|
+
| Element design | "fruit icons" | "Fruits rendered as cute characters with tiny faces (2 dot eyes + small smile). Each fruit has its signature color as 80% of area with white specular highlight. Consistent 8px rounded corners." |
|
|
130
|
+
| Mood/feeling | "fun" | "Cheerful and rewarding. Every interaction should feel juicy — elements should look like they want to be tapped. Overall vibe: relaxing tropical vacation, not stressful competition." |
|
|
131
|
+
| References | (none) | "Visual reference: Tropicats, Royal Match board style. NOT like: Bejeweled (too glossy/3D), Tetris (too geometric)" |
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
## Step 6: Layout Spec Design
|
|
136
|
+
|
|
137
|
+
Design the shared contract between Designer, TA, and Developer:
|
|
138
|
+
|
|
139
|
+
1. **Space division** — screen zones with exact positions
|
|
140
|
+
2. **Color definition** — element colors, UI, background
|
|
141
|
+
3. **Asset specifications** — size, format, naming for each type
|
|
142
|
+
4. **Asset mapping** — element ID → file path (the integration bridge)
|
|
143
|
+
|
|
144
|
+
**Critical**: `assetMapping` paths are **locked after Gate #1**. No agent may unilaterally change paths — this is the Asset Contract: TA fills paths in production Wave 2; Developer binds **real files** in `integration` after TA Compliance green.
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Atlas grouping at Gate #1
|
|
149
|
+
|
|
150
|
+
**Before** `gates.#1 = passed`, the PM **MUST** define atlas groups in `layout-spec.md` so TA/Developer share one contract for packed sheets (not a pile of lone PNGs).
|
|
151
|
+
|
|
152
|
+
| Domain | Grouping rule | Contract |
|
|
153
|
+
| --------- | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
154
|
+
| **Tiles** | Elements that belong on the same board/grid layer (e.g. all match tiles, all mahjong faces) | If **≥ 2** raster elements share a group → **one** atlas: **`.webp` + sidecar `.json`** (frame layout / pivots) under a single path pair in `assetMapping` |
|
|
155
|
+
| **UI** | HUD, buttons, icons that ship together | Same: **≥ 2** elements → one **webp + json** atlas path |
|
|
156
|
+
| **VFX** | Sprite sequences / particles authored as sheets | Same: **≥ 2** frames or elements in one effect family → one **webp + json** atlas path |
|
|
157
|
+
|
|
158
|
+
**Defaults**: image atlas **format = WebP** (`*.webp`); standalone single assets may still use `*.webp` or `*.png` only if the spec states why. **Audio** contract: deliver **MP3** (`*.mp3`) for BGM/SFX in `assetMapping` unless a template explicitly requires another container.
|
|
159
|
+
|
|
160
|
+
Single-element groups stay as single-file paths; do not invent atlases for one texture.
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## Step 7: Experience Flow Design
|
|
165
|
+
|
|
166
|
+
Design each stage with four fields — from "what happens" to "what the player feels" (MDA player perspective):
|
|
167
|
+
|
|
168
|
+
**Hook (0-3s)**
|
|
169
|
+
|
|
170
|
+
- **Narrative Task**: What cognitive gap to open? (make the user wonder what happens next)
|
|
171
|
+
- **Emotion Target**: What should the user feel at second 3? (curiosity / mild anxiety / surprise)
|
|
172
|
+
- **Mechanic Expression**: What specific visual/action triggers the emotion?
|
|
173
|
+
- **Trigger Type**: Near-Win / Failure Display / Success Demo / Unexpected Conflict / Reward Reveal
|
|
174
|
+
|
|
175
|
+
**Tutorial (3-10s)**
|
|
176
|
+
|
|
177
|
+
- **Narrative Task**: Build "I learned it" mastery feeling; set expectation for upcoming challenge
|
|
178
|
+
- **Emotion Target**: Low-pressure control (flow theory: zero-skill users must start in the flow zone)
|
|
179
|
+
- **Mechanic Expression**: How to guide first interaction? gesture animation / character demo / highlight
|
|
180
|
+
- **Success Guarantee**: ✅ First interaction must succeed at 100%
|
|
181
|
+
|
|
182
|
+
**Gameplay (10-25s)**
|
|
183
|
+
|
|
184
|
+
- **Narrative Task**: Push toward emotional peak; make user feel "I'm about to win"
|
|
185
|
+
- **Emotion Target**: Flow (3-5 operations) → Near-Win trigger → emotional peak
|
|
186
|
+
- **Near-Win Design**: Which step triggers it, what scenario, how long to sustain, must have a solution
|
|
187
|
+
- **Mechanic Expression**: Core loop, levels, difficulty curve
|
|
188
|
+
|
|
189
|
+
**End Card (25-30s)**
|
|
190
|
+
|
|
191
|
+
- **Narrative Task**: Do NOT close the gap — create "the story isn't over" sequel feeling
|
|
192
|
+
- **Emotion Target**: Satisfaction + incompleteness (curiosity gap closure happens post-install)
|
|
193
|
+
- **CTA Emotion Logic**: Sequel feeling / reward inheritance / more challenges, NOT "download." "Continue playing" > "Download now"
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## Step 8: Atom Plan — JSON 主文件 + Markdown 富集
|
|
198
|
+
|
|
199
|
+
**Order is strict:** `atom-plan.json`(skillsMatch + atoms)→ `validate-atom-plan` → optional `atom-plan.md` 镜像 → `link`.
|
|
200
|
+
|
|
201
|
+
### 8a. 初始化 JSON
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
cp templates/atom-plan.template.json docs/atom-plan.json
|
|
205
|
+
cp templates/atom-plan.template.md docs/atom-plan.md
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### 8b. Run skills match → `skillsMatch`
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
playcraft skills match --intent "<gameplayType>,<mechanic>,<keywords>" --json
|
|
212
|
+
# 可选:playcraft skills list --category config --json
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
- 推荐省略 `--engine`(CLI 按 intent 自动选 phaser/threejs);若已定引擎则显式 `--engine <threejs|phaser>`。
|
|
216
|
+
- `<intent>` 须含 **玩法标签**(如 `match3`),不要只用泛词 `grid`;`mahjong` 无专用 `.aigameplay` 时会落到 `tileTextureSet` 媒体候选(见 CLI 提示)。
|
|
217
|
+
|
|
218
|
+
将 **完整 JSON** 写入 `atom-plan.json` → `skillsMatch`(可删 `items[].scaffoldFiles` 以省体积;**保留** `atomId`、`layer`、`reason`、`skillDir`、`mediaGroups`)。
|
|
219
|
+
|
|
220
|
+
### 8c. 填写 `atoms[]`
|
|
221
|
+
|
|
222
|
+
每条 production atom 一条 JSON 对象:
|
|
223
|
+
|
|
224
|
+
| 字段 | PM 必填 |
|
|
225
|
+
| --------------------------------------- | ---------------------------------------------------------------------------- |
|
|
226
|
+
| `atomId`, `type`, `assignTo` | ✓ |
|
|
227
|
+
| `dependsOn` | 数组,无则 `[]` |
|
|
228
|
+
| `skillRef` | 仅 GameplayAtom/ConfigAtom;值来自 `skillsMatch.items[].atomId`,否则 `null` |
|
|
229
|
+
| `priority`, `referenceSource`, `status` | 按模板 |
|
|
230
|
+
|
|
231
|
+
**禁止**:`playcraft-*`;未出现在 snapshot 的 atomId(除非 `dagRevisions` 记录 gap)。
|
|
232
|
+
|
|
233
|
+
**Skills 路径**:由 `playcraft.config.json` → `agent.skillsDir` 配置(`playcraft create` 时设置);**不要**在 atom-plan 写死 `node_modules/...`。
|
|
234
|
+
|
|
235
|
+
### 8d. 校验 + link(Gate #1 blocker)
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
playcraft skills validate-atom-plan
|
|
239
|
+
playcraft skills link --from-atom-plan --prune
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
- `validate-atom-plan`:PM 定稿前手动跑;**PM STOP** 时 hook 再拦一层(invalid skillRef 无法 STOP)。
|
|
243
|
+
- `link`:读取 `atom-plan.json` 中所有非空 `skillRef`。
|
|
244
|
+
|
|
245
|
+
**PM does not** pre-fill `atom-plan.md` § Impl Skill Context — **Developer** in `integration`.
|
|
246
|
+
|
|
247
|
+
### 8e. `atom-plan.md`(可选)
|
|
248
|
+
|
|
249
|
+
- 可在 `## Atom List` 表镜像 JSON(给人看);**不以 md 表为 skillRef 真源**。
|
|
250
|
+
- `## Acceptance Criteria` 仍写在 md(短句,可后续迁入 JSON)。
|
|
251
|
+
- 各 Agent 富集区不变:`## Asset / TA / Impl Skill Context`、`## DAG Revisions`。
|
|
252
|
+
|
|
253
|
+
### Atom Assignment Rules (5 Agents)
|
|
254
|
+
|
|
255
|
+
| Atom Type | assignTo | Notes |
|
|
256
|
+
| ---------------------------------------------- | --------- | ------------------------------------------------------------- |
|
|
257
|
+
| `GameplayAtom` | Developer | PGS rules, state machine |
|
|
258
|
+
| `ConfigAtom` | Developer | Level config, difficulty curve |
|
|
259
|
+
| `VisualAtom` (baseline) | Designer | designer-handoff-v2: ASR in Phase 1; Phase 2 atom status only |
|
|
260
|
+
| `VisualAtom` (completions: remaining elements) | TA | Derive full set from samples |
|
|
261
|
+
| `VisualAtom` (sprite sheets/animation/VFX) | TA | Technical pipeline |
|
|
262
|
+
| `VisualAtom` (3D models/GLB) | TA | 3D pipeline; must set `referenceSource` |
|
|
263
|
+
| `AudioAtom` (original generation) | Designer | BGM/SFX generation |
|
|
264
|
+
| `AudioAtom` (post-processing) | TA | compress/trim/loop |
|
|
265
|
+
| `VFXAtom` | TA | VFX sprite sheets |
|
|
266
|
+
| `AnimationAtom` | TA | Animation sprite sheets |
|
|
267
|
+
|
|
268
|
+
**Simple rule**: Designer handles "samples" (creative direction), TA handles "full sets" (production spec).
|
|
269
|
+
|
|
270
|
+
### Scheduling Metadata
|
|
271
|
+
|
|
272
|
+
For **every** atom, inject scheduling metadata so downstream agents can self-organize:
|
|
273
|
+
|
|
274
|
+
| Metadata | Meaning | Impact |
|
|
275
|
+
| --------------------------- | ----------------------------------- | --------------------------------------------------------------------------- |
|
|
276
|
+
| `assignTo` | Which agent executes | Required |
|
|
277
|
+
| `referenceSource` | Reference image source for 3D atoms | `"designer-sample"` → C₁ starts immediately; `"ta-completion"` → wait for A |
|
|
278
|
+
| `dependsOn: [atomId]` | Explicit prerequisites | TA determines execution order |
|
|
279
|
+
| `priority: high/normal/low` | Priority level | Affects TA internal scheduling |
|
|
280
|
+
| `parallelGroup` | Parallel execution group ID | Same-group atoms start simultaneously |
|
|
281
|
+
|
|
282
|
+
**Example**:
|
|
283
|
+
|
|
284
|
+
```yaml
|
|
285
|
+
- id: "3d-mahjong-tile"
|
|
286
|
+
type: VisualAtom
|
|
287
|
+
assignTo: TA
|
|
288
|
+
referenceSource: "designer-sample"
|
|
289
|
+
dependsOn: []
|
|
290
|
+
priority: high
|
|
291
|
+
|
|
292
|
+
- id: "tile-sprite-sheet"
|
|
293
|
+
type: AnimationAtom
|
|
294
|
+
assignTo: TA
|
|
295
|
+
referenceSource: "ta-completion"
|
|
296
|
+
dependsOn: ["tile-strawberry", "tile-blueberry"]
|
|
297
|
+
priority: normal
|
|
298
|
+
parallelGroup: "sprites"
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
### Fusion Gameplay DAG Rules
|
|
302
|
+
|
|
303
|
+
```
|
|
304
|
+
Mechanic axis impact on DAG:
|
|
305
|
+
- Type A / B1 / B2: 1 GameplayAtom
|
|
306
|
+
- Type C: 2 GameplayAtoms; second dependsOn first
|
|
307
|
+
2 ConfigAtoms, one per system
|
|
308
|
+
- Type D: 2 parallel GameplayAtoms (dependsOn —), notes: "parallel, extreme risk"
|
|
309
|
+
|
|
310
|
+
Dimension axis impact on DAG:
|
|
311
|
+
- Flat 2D / 2.5D / Isometric: no change in GameplayAtom count
|
|
312
|
+
- True 3D: HIGH RISK; GameplayAtom notes: "3D PGS required"
|
|
313
|
+
TA handles all 3D model atoms
|
|
314
|
+
Add extra TimeAtom if 3D on the critical path (~5 min per model)
|
|
315
|
+
|
|
316
|
+
Narrative level impact on DAG:
|
|
317
|
+
- L0: no character VisualAtom needed
|
|
318
|
+
- L1+: add VisualAtom (slot: character_main, assignTo: Designer — ASR element states)
|
|
319
|
+
add VisualAtom (slot: character_variants, assignTo: TA — color/pose variants)
|
|
320
|
+
- L2: add VisualAtom (slot: scenario_bg, assignTo: Designer — concept)
|
|
321
|
+
add VisualAtom (slot: scenario_details, assignTo: TA — completions)
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
Design complete production DAG with valid topological sort. Acceptance criteria: **one line per atom**, reference `layout-spec` paths — no duplicated visual generation prose.
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
## Pre-Write Validation Checklist
|
|
329
|
+
|
|
330
|
+
Before writing files, verify:
|
|
331
|
+
|
|
332
|
+
**Baseline checks:**
|
|
333
|
+
|
|
334
|
+
- [ ] Style Direction is specific enough for Designer to execute (not just adjectives)
|
|
335
|
+
- [ ] Every element in `colorPalette` has a corresponding `assetMapping` entry
|
|
336
|
+
- [ ] Every asset path follows directory conventions
|
|
337
|
+
- [ ] DAG has no cycles (`atom-plan.json` → `atoms[]` valid topological sort)
|
|
338
|
+
- [ ] Every atom in `atoms[]` has `assignTo` + explicit `dependsOn` (use `[]` when none)
|
|
339
|
+
- [ ] `atom-plan.md` at Gate #1: **Acceptance Criteria only** — no Atom List mirror, no DAG Order section
|
|
340
|
+
- [ ] First level guarantees player success
|
|
341
|
+
- [ ] Total experience fits 15-30 seconds
|
|
342
|
+
- [ ] Style Direction includes: art style, color strategy (prose — **no hex**), element design, mood, and 1+ reference
|
|
343
|
+
- [ ] Hex colors and element ids live **only** in `layout-spec.md` (not design-brief)
|
|
344
|
+
- [ ] Experience Flow has mechanics/narrative only — **no** per-stage Emotion Target (those live in Emotional Arc Intent table only)
|
|
345
|
+
- [ ] Fusion Strategy does **not** duplicate Style Direction § Dimension
|
|
346
|
+
|
|
347
|
+
**Five-axis completeness:**
|
|
348
|
+
|
|
349
|
+
Mechanic Axis:
|
|
350
|
+
|
|
351
|
+
- [ ] IF fusion gameplay: Fusion Strategy section filled in design-brief
|
|
352
|
+
- [ ] IF Type C/D: user selected a specific option from presented choices
|
|
353
|
+
|
|
354
|
+
Dimension Axis:
|
|
355
|
+
|
|
356
|
+
- [ ] Dimension explicitly declared in Style Direction
|
|
357
|
+
- [ ] IF True 3D: user explicitly selected this option
|
|
358
|
+
- [ ] IF 2.5D Visual: Designer cost impact (~3x) documented
|
|
359
|
+
|
|
360
|
+
Interaction Modality Axis:
|
|
361
|
+
|
|
362
|
+
- [ ] Interaction Modality explicitly declared in Style Direction
|
|
363
|
+
- [ ] Tutorial time estimate documented
|
|
364
|
+
|
|
365
|
+
Narrative Level Axis:
|
|
366
|
+
|
|
367
|
+
- [ ] Narrative Level explicitly declared (L0 / L1 / L2 / L3)
|
|
368
|
+
- [ ] IF L1+: character asset requirement noted for Designer
|
|
369
|
+
|
|
370
|
+
Emotional Arc Axis:
|
|
371
|
+
|
|
372
|
+
- [ ] Emotional Arc explicitly declared in Style Direction
|
|
373
|
+
- [ ] Emotional Arc Intent Table filled (per-stage visual/audio signals)
|
|
374
|
+
- [ ] Arc throughline is consistent: Hook / Tutorial / Gameplay / EndCard all align
|
|
375
|
+
- [ ] Near-Win design is specified in Gameplay stage with a solvable scenario
|
|
376
|
+
|
|
377
|
+
Interaction Mode:
|
|
378
|
+
|
|
379
|
+
- [ ] Gate #1 options in `project-state.md` § Gate #1 Options table (or one-line checkpoint Notes) — not full Style Direction prose
|
|
380
|
+
- [ ] PM did not use `AskUserQuestion`; `gates.#1 = pending` set before STOP
|
|
381
|
+
- [ ] Gate #1 package written: `project-state` + `design-brief` + `layout-spec` + `atom-plan.json` + `atom-plan.md` (Acceptance only)
|
|
382
|
+
- [ ] IF Direct Intent Mode: ≥ 3 axes locked from user prompt, documented which (gameplay name alone does not qualify)
|
|
383
|
+
|
|
384
|
+
Skills match (`docs/atom-plan.json`):
|
|
385
|
+
|
|
386
|
+
- [ ] `playcraft skills match --json` run with gameplay intent (`--engine` optional)
|
|
387
|
+
- [ ] `skillsMatch` field contains verbatim JSON (may strip `scaffoldFiles`; keep `items` + `mediaGroups`)
|
|
388
|
+
- [ ] Every `GameplayAtom` / `ConfigAtom` in `atoms[]` has `skillRef` from `skillsMatch.items` **or** `null` + `dagRevisions` gap
|
|
389
|
+
- [ ] No `playcraft-*` in any `skillRef`
|
|
390
|
+
- [ ] `playcraft skills validate-atom-plan` passes
|
|
391
|
+
- [ ] `playcraft skills link --from-atom-plan --prune` when any non-null `skillRef`
|
|
392
|
+
|
|
393
|
+
Scheduling:
|
|
394
|
+
|
|
395
|
+
- [ ] Every atom has `assignTo` field
|
|
396
|
+
- [ ] 3D atoms have `referenceSource` field
|
|
397
|
+
- [ ] Dependencies are explicitly declared (no implicit ordering)
|
|
398
|
+
- [ ] Parallel groups identified where possible
|
|
399
|
+
|
|
400
|
+
**Atlas (Gate #1)**:
|
|
401
|
+
|
|
402
|
+
- [ ] `layout-spec.md` lists atlas groups for **tiles**, **ui**, and **vfx** (or explicitly marks N/A with rationale)
|
|
403
|
+
- [ ] Every group with **≥ 2** raster elements names **one** `.webp` + **one** `.json` path in `assetMapping`
|
|
404
|
+
- [ ] Audio entries specify **`.mp3`** paths where applicable
|
|
405
|
+
|
|
406
|
+
---
|
|
407
|
+
|
|
408
|
+
## Design North Star
|
|
409
|
+
|
|
410
|
+
> **Design backward from the emotion the player carries away — lock the feeling first, then reverse-engineer every second of mechanics to serve it.**
|
|
411
|
+
|
|
412
|
+
- **Emotion-first**: decide what the user _feels_ at second 30, then work backward to second 0
|
|
413
|
+
- **Arc-first**: lock the arc type before choosing mechanics, dimension, or interaction
|
|
414
|
+
- **Sequel-first**: the End Card is a sequel entrance — the emotion must remain _partially unresolved_
|
|
415
|
+
|
|
416
|
+
---
|
|
417
|
+
|
|
418
|
+
## Core Knowledge
|
|
419
|
+
|
|
420
|
+
### Gameplay Landscape
|
|
421
|
+
|
|
422
|
+
6 major categories, 17+ sub-types:
|
|
423
|
+
|
|
424
|
+
- **A. Match & Eliminate**: Match-3, Tap Blast, Triple Match, Block Puzzle, Bubble Shooter, Merge, 2048
|
|
425
|
+
- **B. Sort & Puzzle**: Ball/Water Sort, Screw Puzzle, Pin Pull, Parking, Spot Difference, Memory Match
|
|
426
|
+
- **C. Action & Shooter**: Parkour, Throw, Shooter, Fighting, Sports
|
|
427
|
+
- **D. Simulation & Management**: Dress-up, Tycoon, Cleaning, Draw Line
|
|
428
|
+
- **E. Casino & Lottery**: Slots, Bingo, Wheel, Scratch Card
|
|
429
|
+
- **F. Strategy & Tower Defense**: Tower Defense, Formation, Summon
|
|
430
|
+
|
|
431
|
+
Implemented PGS: Match-3, Triple Match, Path Elimination, Arrow Pick Match.
|
|
432
|
+
|
|
433
|
+
### Three Core Competencies
|
|
434
|
+
|
|
435
|
+
| Competency | Output | Downstream Consumer |
|
|
436
|
+
| ---------------------------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------------------- |
|
|
437
|
+
| **Intent analysis + gameplay selection** | design-brief (five-axis + Style Direction) | Designer / Reviewer |
|
|
438
|
+
| **Contract definition** | layout-spec (assetMapping + specs) | Designer / TA / Developer (sole alignment mechanism) |
|
|
439
|
+
| **Scheduling** | atom-plan (with assignTo + referenceSource + dependsOn + priority + parallelGroup) | TA / Designer / Developer |
|
|
440
|
+
|
|
441
|
+
### Reference Documents (Read On Demand)
|
|
442
|
+
|
|
443
|
+
| Document | When to Read |
|
|
444
|
+
| ---------------------------------------------- | ---------------------------------------------------------------------------- |
|
|
445
|
+
| `templates/design-methodology.md` | Before Step 4 — MDA framework, JTBD motivation types, 3 emotional mechanisms |
|
|
446
|
+
| `templates/five-axis-framework.md` | During Step 4 — full classification tables and decision rules |
|
|
447
|
+
| `templates/design-lens-checklist.reference.md` | Pre-Write Validation — 8 design lenses |
|
|
448
|
+
|
|
449
|
+
### Experience Flow Structure
|
|
450
|
+
|
|
451
|
+
```
|
|
452
|
+
Hook (0-3s) → Tutorial (3-10s) → Gameplay (10-25s) → End Card (25-30s)
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
---
|
|
456
|
+
|
|
457
|
+
## Interaction Modes (Gate #1 packages for orchestrator)
|
|
458
|
+
|
|
459
|
+
> **You do not ask the user** — write options for the orchestrator's `AskUserQuestion` at Gate #1. (Full logic: **Step 2** above.)
|
|
460
|
+
|
|
461
|
+
### Advisor Mode (default)
|
|
462
|
+
|
|
463
|
+
Complete internal five-axis analysis → write **Option A/B/C** (each covers all five axes + risk / tutorial / audience) in Progress Checkpoint or a short `## Gate #1 Options` block before the four files.
|
|
464
|
+
|
|
465
|
+
### Direct Intent Mode
|
|
466
|
+
|
|
467
|
+
When **≥ 3 axes** are explicitly locked in the user prompt, write one **recommended package** + "同意 / 需要调整" as the orchestrator's single Gate #1 question payload.
|
|
468
|
+
|
|
469
|
+
**Threshold**: ≥ 3 axes → Direct Intent package; otherwise Advisor options. Axis counting: **Step 2**.
|
|
470
|
+
|
|
471
|
+
---
|
|
472
|
+
|
|
473
|
+
## Four-document workflow & output
|
|
474
|
+
|
|
475
|
+
> **Exit criteria**: see `pm.md` → Goals § Success criteria.
|
|
476
|
+
|
|
477
|
+
### Four-doc discipline (what belongs where)
|
|
478
|
+
|
|
479
|
+
Downstream **TA** and **Developer** read the four docs on every wave — keep them **short and contract-shaped** so intake is fast.
|
|
480
|
+
|
|
481
|
+
| File | **Put in** (key only) | **Do not put in** (use other files) |
|
|
482
|
+
| --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
|
|
483
|
+
| `design-brief.md` | Five-axis outcome, gameplay choice, **Style Direction** (Dimension/Modality/Arc + 6 elements + **Emotional Arc Intent table**), experience flow **mechanics only**, level knobs | MC/ASR paths, **hex codes**, per-stage emotions in Experience Flow, prompt logs, research essays |
|
|
484
|
+
| `layout-spec.md` | Screen, zones, palette ids, **assetMapping** + atlas table, per-path **spec** (WxH, format) | Storyboard prose, Style Intent Notes, TA pipeline logs |
|
|
485
|
+
| `atom-plan.json` + `atom-plan.md` | JSON: `skillsMatch` + `atoms[]` + `dagRevisions`; MD (Gate #1): **acceptance criteria only** + empty Context placeholders | Atom List mirror, DAG Order, visual/prompt prose, invented skillRefs, `playcraft-*` in `skillRef` |
|
|
486
|
+
| `project-state.md` | Stage, gates, handoff, file index, Pipeline waves, checkpoints | Long design rationale (→ design-brief) |
|
|
487
|
+
|
|
488
|
+
**Rule:** one fact → one canonical file. If TA/Developer need visual narrative, they read **`style-exploration.md`** + **`designer-log.md`** after the four docs ([`ta-pipeline-cookbook.md`](ta-pipeline-cookbook.md) Step 0a, [`developer-phase1-flow.md`](developer-phase1-flow.md) Step 0).
|
|
489
|
+
|
|
490
|
+
### Files
|
|
491
|
+
|
|
492
|
+
| File | Content | Template |
|
|
493
|
+
| ----------------------- | ------------------------------------------------------------------------- | ------------------------------------- |
|
|
494
|
+
| `docs/project-state.md` | Entry: user intent + current stage + file index | `templates/project-state.template.md` |
|
|
495
|
+
| `docs/design-brief.md` | Design rationale + **Style Direction** + experience flow + level config | `templates/design-brief.template.md` |
|
|
496
|
+
| `docs/layout-spec.md` | Layout spec: screen/zones/palette/asset-spec/mapping (+ **Atlas groups**) | `templates/layout-spec.template.md` |
|
|
497
|
+
| `docs/atom-plan.json` | `skillsMatch` + production `atoms[]` (Gate #1 machine contract) | `templates/atom-plan.template.json` |
|
|
498
|
+
| `docs/atom-plan.md` | Acceptance criteria + Asset/TA/Impl Context + DAG Revisions (human) | `templates/atom-plan.template.md` |
|
|
499
|
+
|
|
500
|
+
### Checklist
|
|
501
|
+
|
|
502
|
+
1. Complete internal analysis (**Steps 1–8**); document **Option A/B/C** in `project-state.md` § **Gate #1 Options** (table) or one-line checkpoint Notes
|
|
503
|
+
2. Write Gate #1 package + initialize directory structure (`atom-plan.json` + slim `atom-plan.md`)
|
|
504
|
+
3. Set `gates.#1 = pending` → update handoff + Progress Checkpoint → **STOP** (see `pm.md` → Runtime)
|
|
505
|
+
|
|
506
|
+
**On first delivery**: orchestrator sets `gates.#1 = passed` and `stage: style_exploration` after Gate #1 — **do not** change `stage` yourself.
|
|
507
|
+
|
|
508
|
+
### Directory initialization
|
|
509
|
+
|
|
510
|
+
```bash
|
|
511
|
+
mkdir -p docs/ assets/images/{bg,tiles,ui,vfx} assets/audio/{bgm,sfx} assets/bundles/ assets/models/ game/{gameplay,config,scenes} logs/
|
|
512
|
+
```
|
|
513
|
+
|
|
514
|
+
After each major output, update `docs/project-state.md` → Progress Checkpoint.
|
|
515
|
+
|
|
516
|
+
---
|
|
517
|
+
|
|
518
|
+
## Spec gap handling (production phase)
|
|
519
|
+
|
|
520
|
+
When TA or Developer report `spec-gap` in `project-state.md` during their 30s Spec check:
|
|
521
|
+
|
|
522
|
+
- PM auto-supplements within **5 minutes** (no Gate #1 re-approval needed)
|
|
523
|
+
- Add missing `assetMapping` entries / clarify ambiguous specs (including atlas path pairs if wrongly omitted)
|
|
524
|
+
- Update `layout-spec.md` directly
|
|
525
|
+
|
|
526
|
+
---
|
|
527
|
+
|
|
528
|
+
## Intent Clarification Protocol (ICP)
|
|
529
|
+
|
|
530
|
+
**Trigger**: Any Agent writes a question to `docs/intent-clarifications.md`
|
|
531
|
+
|
|
532
|
+
**PM responsibilities**:
|
|
533
|
+
|
|
534
|
+
1. Monitor `intent-clarifications.md` Open Questions list
|
|
535
|
+
2. If target Agent does not answer within 10 minutes → PM reminds the Agent
|
|
536
|
+
3. If a question spans multiple Agent boundaries → PM makes final arbitration
|
|
537
|
+
4. If any Agent receives >3 clarification questions → PM MUST record "intent transmission fault" in `atom-plan.md` DAG Revisions, and explain to user at Gate #3
|
|
538
|
+
5. Severe design intent deviation (e.g., TA completions completely mismatched to concept mockup) → PM has authority to require re-doing Gate #2
|
|
539
|
+
|
|
540
|
+
**PM as intent coordinator**:
|
|
541
|
+
|
|
542
|
+
- You are the only role that sees ALL clarifications across all agents
|
|
543
|
+
- Patterns in clarifications reveal spec gaps — address root cause, not just individual questions
|
|
544
|
+
- If Designer is asked >3 questions about style → Designer needs to improve Style Intent Notes quality
|
|
545
|
+
- If TA is asked >3 questions about samples → samples may be insufficient or ambiguous
|