@playcraft/cli 0.0.55 → 0.0.57
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 +18 -0
- package/REMIX.md +115 -19
- package/dist/atom-tree/fusion-hints.js +8 -3
- package/dist/atom-tree/fusion-intent.js +62 -0
- package/dist/atom-tree/selection.js +3 -1
- package/dist/commands/create.js +299 -85
- package/dist/commands/image.js +79 -69
- package/dist/commands/levels.js +29 -0
- package/dist/commands/patterns.js +75 -0
- package/dist/commands/remix.js +93 -0
- package/dist/commands/skills.js +48 -17
- package/dist/index.js +9 -5
- package/dist/remix/clone-source.js +208 -0
- package/dist/remix/clone.js +256 -0
- package/dist/remix/local-git.js +56 -0
- package/dist/remix/pull.js +64 -0
- package/dist/remix/push.js +70 -0
- package/dist/scaffold/templates.js +1 -1
- package/dist/utils/agent-api-client.js +10 -3
- package/dist/utils/remix-image-attachments.js +4 -32
- package/dist/utils/sandbox-path.js +20 -0
- package/package.json +3 -3
- package/project-template/.claude/agents/creative-director.md +114 -0
- package/project-template/.claude/agents/developer.md +5 -2
- package/project-template/.claude/agents/game-designer.md +41 -20
- package/project-template/.claude/agents/refs/README.md +8 -0
- package/project-template/.claude/agents/refs/creative-director-guide.md +35 -0
- package/project-template/.claude/agents/refs/creative-director-kickoff-guide.md +52 -0
- package/project-template/.claude/agents/refs/creative-discovery-guide.md +76 -0
- package/project-template/.claude/agents/refs/creative-north-star-examples.md +82 -0
- package/project-template/.claude/agents/refs/developer-dev-handoff.md +1 -1
- package/project-template/.claude/agents/refs/game-designer-fusion-depth-playbook.md +28 -0
- package/project-template/.claude/agents/refs/game-designer-gameplay-sufficiency.md +4 -4
- package/project-template/.claude/agents/reviewer.md +11 -0
- package/project-template/.claude/hooks/README.md +12 -12
- package/project-template/.claude/hooks/block-developer-preflight.mjs +49 -13
- package/project-template/.claude/hooks/block-ring1-tasklist.mjs +1 -1
- package/project-template/.claude/hooks/user-prompt.mjs +3 -13
- package/project-template/.claude/hooks/validate-workflow-stop.mjs +209 -12
- package/project-template/.claude/settings.json +2 -2
- package/project-template/.claude/skills/playcraft-playable-optimization/SKILL.md +20 -20
- package/project-template/.claude/skills/session-analyzer/scripts/resolve-session.mjs +0 -1
- package/project-template/.claude/snapshot.mjs +0 -1
- package/project-template/.codebuddy/settings.json +1 -1
- package/project-template/.cursor/rules/playcraft-orchestrator.mdc +1 -1
- package/project-template/CLAUDE.md +9 -9
- package/project-template/docs/project-state.md +1 -1
- package/project-template/docs/team/agent-conduct.md +18 -18
- package/project-template/docs/team/collaboration.md +19 -7
- package/project-template/docs/team/workflow-changelog.md +15 -0
- package/project-template/fusion-patterns/catalog.json +77 -0
- package/project-template/package.json +2 -0
- package/project-template/skills/_shared/scripts/create-playable.mjs +31 -11
- package/project-template/skills/_shared/scripts/dev-start.mjs +3 -3
- package/project-template/skills/_shared/scripts/disclosure-config.mjs +65 -39
- package/project-template/skills/_shared/scripts/harness-smoke.mjs +3 -1
- package/project-template/skills/_shared/scripts/lib/fusion-intent.mjs +88 -0
- package/project-template/skills/_shared/scripts/lib/skill-fidelity.mjs +185 -0
- package/project-template/skills/_shared/scripts/slice-set.mjs +29 -2
- package/project-template/skills/_shared/scripts/state-get.mjs +124 -7
- package/project-template/skills/_shared/scripts/state-store.mjs +25 -2
- package/project-template/skills/_shared/scripts/validate-level-sketch.mjs +444 -0
- package/project-template/skills/_shared/scripts/verify-design-consistency.mjs +728 -0
- package/project-template/skills/playable-record/scripts/lib/dev-server.mjs +46 -11
- package/project-template/skills/playable-record/scripts/record-playable.mjs +2 -1
- package/project-template/skills/playable-record/scripts/verify-contract.mjs +4 -4
- package/project-template/skills/playable-record/scripts/verify-firstwin.mjs +3 -3
- package/project-template/skills/playable-record/scripts/verify-fusion.mjs +37 -2
- package/project-template/skills/playable-record/scripts/verify-slice.mjs +2 -2
- package/project-template/templates/design-brief.template.md +34 -0
- package/project-template/templates/design-methodology.md +1 -2
- package/project-template/templates/design.template.md +65 -0
- package/project-template/templates/developer-log.template.md +12 -1
- package/project-template/templates/five-axis-framework.md +12 -0
- package/project-template/templates/game-designer-creative-process.template.md +99 -0
- package/project-template/templates/level-sketch.template.json +56 -0
- package/project-template/templates/north-star.template.md +43 -0
- package/project-template/templates/project-state.template.md +1 -1
- package/project-template/vite.config.ts +4 -5
- package/project-templates/phaser/.claude/agents/creative-director.md +114 -0
- package/project-templates/phaser/.claude/agents/game-designer.md +41 -20
- package/project-templates/phaser/.claude/agents/refs/creative-director-guide.md +35 -0
- package/project-templates/phaser/.claude/agents/refs/creative-director-kickoff-guide.md +52 -0
- package/project-templates/phaser/.claude/agents/refs/creative-discovery-guide.md +76 -0
- package/project-templates/phaser/.claude/agents/refs/creative-north-star-examples.md +82 -0
- package/project-templates/phaser/.claude/agents/refs/developer-dev-handoff.md +1 -1
- package/project-templates/phaser/.claude/agents/refs/game-designer-fusion-depth-playbook.md +28 -0
- package/project-templates/phaser/.claude/agents/reviewer.md +11 -0
- package/project-templates/phaser/.claude/hooks/block-ring1-tasklist.mjs +2 -2
- package/project-templates/phaser/.claude/hooks/user-prompt.mjs +17 -18
- package/project-templates/phaser/.claude/hooks/validate-workflow-stop.mjs +209 -12
- package/project-templates/phaser/.claude/skills/playcraft-playable-optimization/SKILL.md +20 -20
- package/project-templates/phaser/.cursor/rules/playcraft-orchestrator.mdc +1 -1
- package/project-templates/phaser/CLAUDE.md +88 -54
- package/project-templates/phaser/docs/DESIGN.md +25 -0
- package/project-templates/phaser/docs/project-state.md +1 -1
- package/project-templates/phaser/docs/team/collaboration.md +19 -7
- package/project-templates/phaser/docs/team/workflow-changelog.md +14 -0
- package/project-templates/phaser/fusion-patterns/catalog.json +77 -0
- package/project-templates/phaser/package.json +3 -1
- package/project-templates/phaser/skills/_shared/scripts/dev-start.mjs +3 -3
- package/project-templates/phaser/skills/_shared/scripts/disclosure-config.mjs +65 -39
- package/project-templates/phaser/skills/_shared/scripts/harness-smoke.mjs +3 -1
- package/project-templates/phaser/skills/_shared/scripts/lib/fusion-intent.mjs +88 -0
- package/project-templates/phaser/skills/_shared/scripts/lib/skill-fidelity.mjs +185 -0
- package/project-templates/phaser/skills/_shared/scripts/state-get.mjs +124 -7
- package/project-templates/phaser/skills/_shared/scripts/state-store.mjs +25 -2
- package/project-templates/phaser/skills/_shared/scripts/validate-level-sketch.mjs +444 -0
- package/project-templates/phaser/skills/_shared/scripts/verify-design-consistency.mjs +728 -0
- package/project-templates/phaser/skills/playable-record/scripts/lib/dev-server.mjs +46 -11
- package/project-templates/phaser/skills/playable-record/scripts/record-playable.mjs +2 -1
- package/project-templates/phaser/skills/playable-record/scripts/verify-contract.mjs +4 -4
- package/project-templates/phaser/skills/playable-record/scripts/verify-firstwin.mjs +3 -3
- package/project-templates/phaser/skills/playable-record/scripts/verify-fusion.mjs +37 -2
- package/project-templates/phaser/skills/playable-record/scripts/verify-slice.mjs +2 -2
- package/project-templates/phaser/templates/design-brief.template.md +42 -11
- package/project-templates/phaser/templates/design-methodology.md +1 -2
- package/project-templates/phaser/templates/design.template.md +77 -0
- package/project-templates/phaser/templates/five-axis-framework.md +50 -1
- package/project-templates/phaser/templates/game-designer-creative-process.template.md +99 -0
- package/project-templates/phaser/templates/level-sketch.template.json +56 -0
- package/project-templates/phaser/templates/north-star.template.md +43 -0
- package/project-templates/phaser/templates/project-state.template.md +1 -1
- package/project-templates/phaser/vite.config.ts +4 -5
- package/project-templates/threejs/.claude/agents/creative-director.md +114 -0
- package/project-templates/threejs/.claude/agents/game-designer.md +41 -20
- package/project-templates/threejs/.claude/agents/refs/creative-director-guide.md +35 -0
- package/project-templates/threejs/.claude/agents/refs/creative-director-kickoff-guide.md +52 -0
- package/project-templates/threejs/.claude/agents/refs/creative-discovery-guide.md +76 -0
- package/project-templates/threejs/.claude/agents/refs/creative-north-star-examples.md +82 -0
- package/project-templates/threejs/.claude/agents/refs/developer-dev-handoff.md +1 -1
- package/project-templates/threejs/.claude/agents/refs/game-designer-fusion-depth-playbook.md +28 -0
- package/project-templates/threejs/.claude/agents/reviewer.md +11 -0
- package/project-templates/threejs/.claude/hooks/block-ring1-tasklist.mjs +2 -2
- package/project-templates/threejs/.claude/hooks/user-prompt.mjs +17 -18
- package/project-templates/threejs/.claude/hooks/validate-workflow-stop.mjs +209 -12
- package/project-templates/threejs/.claude/skills/playcraft-playable-optimization/SKILL.md +20 -20
- package/project-templates/threejs/.cursor/rules/playcraft-orchestrator.mdc +1 -1
- package/project-templates/threejs/CLAUDE.md +88 -54
- package/project-templates/threejs/docs/DESIGN.md +25 -0
- package/project-templates/threejs/docs/project-state.md +1 -1
- package/project-templates/threejs/docs/team/collaboration.md +19 -7
- package/project-templates/threejs/docs/team/workflow-changelog.md +14 -0
- package/project-templates/threejs/fusion-patterns/catalog.json +77 -0
- package/project-templates/threejs/package.json +3 -1
- package/project-templates/threejs/skills/_shared/scripts/dev-start.mjs +3 -3
- package/project-templates/threejs/skills/_shared/scripts/disclosure-config.mjs +65 -39
- package/project-templates/threejs/skills/_shared/scripts/harness-smoke.mjs +3 -1
- package/project-templates/threejs/skills/_shared/scripts/lib/fusion-intent.mjs +88 -0
- package/project-templates/threejs/skills/_shared/scripts/lib/skill-fidelity.mjs +185 -0
- package/project-templates/threejs/skills/_shared/scripts/state-get.mjs +124 -7
- package/project-templates/threejs/skills/_shared/scripts/state-store.mjs +25 -2
- package/project-templates/threejs/skills/_shared/scripts/validate-level-sketch.mjs +444 -0
- package/project-templates/threejs/skills/_shared/scripts/verify-design-consistency.mjs +728 -0
- package/project-templates/threejs/skills/playable-record/scripts/lib/dev-server.mjs +46 -11
- package/project-templates/threejs/skills/playable-record/scripts/record-playable.mjs +2 -1
- package/project-templates/threejs/skills/playable-record/scripts/verify-contract.mjs +4 -4
- package/project-templates/threejs/skills/playable-record/scripts/verify-firstwin.mjs +3 -3
- package/project-templates/threejs/skills/playable-record/scripts/verify-fusion.mjs +37 -2
- package/project-templates/threejs/skills/playable-record/scripts/verify-slice.mjs +2 -2
- package/project-templates/threejs/templates/design-brief.template.md +42 -11
- package/project-templates/threejs/templates/design-methodology.md +1 -2
- package/project-templates/threejs/templates/design.template.md +77 -0
- package/project-templates/threejs/templates/five-axis-framework.md +50 -1
- package/project-templates/threejs/templates/game-designer-creative-process.template.md +99 -0
- package/project-templates/threejs/templates/level-sketch.template.json +56 -0
- package/project-templates/threejs/templates/north-star.template.md +43 -0
- package/project-templates/threejs/templates/project-state.template.md +1 -1
- package/project-templates/threejs/vite.config.ts +4 -5
- package/project-template/docs/DESIGN.md +0 -65
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": 1,
|
|
3
|
+
"row": 8,
|
|
4
|
+
"col": 8,
|
|
5
|
+
"levelTime": 0,
|
|
6
|
+
"trayCapacity": 7,
|
|
7
|
+
"matchCount": 3,
|
|
8
|
+
"colors": ["red", "red", "red", "blue", "blue", "blue"],
|
|
9
|
+
"arrows": [
|
|
10
|
+
[
|
|
11
|
+
[0, 0],
|
|
12
|
+
[1, 0],
|
|
13
|
+
[2, 0],
|
|
14
|
+
[3, 0],
|
|
15
|
+
[4, 0],
|
|
16
|
+
[5, 0]
|
|
17
|
+
],
|
|
18
|
+
[
|
|
19
|
+
[7, 1],
|
|
20
|
+
[6, 1],
|
|
21
|
+
[5, 1],
|
|
22
|
+
[4, 1],
|
|
23
|
+
[3, 1],
|
|
24
|
+
[2, 1]
|
|
25
|
+
],
|
|
26
|
+
[
|
|
27
|
+
[2, 2],
|
|
28
|
+
[2, 3],
|
|
29
|
+
[2, 4],
|
|
30
|
+
[2, 5],
|
|
31
|
+
[2, 6]
|
|
32
|
+
],
|
|
33
|
+
[
|
|
34
|
+
[0, 7],
|
|
35
|
+
[1, 7],
|
|
36
|
+
[2, 7],
|
|
37
|
+
[3, 7],
|
|
38
|
+
[4, 7]
|
|
39
|
+
],
|
|
40
|
+
[
|
|
41
|
+
[7, 6],
|
|
42
|
+
[6, 6],
|
|
43
|
+
[5, 6],
|
|
44
|
+
[4, 6],
|
|
45
|
+
[3, 6]
|
|
46
|
+
],
|
|
47
|
+
[
|
|
48
|
+
[6, 3],
|
|
49
|
+
[6, 4],
|
|
50
|
+
[6, 5],
|
|
51
|
+
[5, 5],
|
|
52
|
+
[4, 5],
|
|
53
|
+
[3, 5]
|
|
54
|
+
]
|
|
55
|
+
]
|
|
56
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Creative North Star — {Game Name}
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
Ring 1 creative discovery output (written by @creative-director).
|
|
5
|
+
@game-designer-spec copies §0 fields from this file into docs/DESIGN.md §0.
|
|
6
|
+
One-liner: verbatim. Micro-Story Spine: field-value match (trimmed per field).
|
|
7
|
+
Source: templates/north-star.template.md
|
|
8
|
+
-->
|
|
9
|
+
|
|
10
|
+
**Date**: {YYYY-MM-DD}
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Micro-Story Spine
|
|
15
|
+
|
|
16
|
+
**Narrative level**: L1 | L2 <!-- default L1; L0 only when user explicitly opts out of story; L3 forbidden -->
|
|
17
|
+
**Who**: {player identity; L0 may use n/a — pure mechanic showcase}
|
|
18
|
+
**Situation**: {opening Hook frame — one glance readable scene/situation}
|
|
19
|
+
**Stakes**: {what core pressure means in the player's world — not abstract game over}
|
|
20
|
+
**Payoff image**: {first core payoff moment — must film a PGS beat: path slide out, fly to tray, or tray match burst}
|
|
21
|
+
**Emotional arc**: {Urgency | Challenge | Competence | Curiosity | Relaxation}
|
|
22
|
+
|
|
23
|
+
## One-liner
|
|
24
|
+
|
|
25
|
+
{L1/L2: one vivid pitch — must name Who or Situation; no pure debt/bet abstract stacking.}
|
|
26
|
+
{L0: Hook spectacle + mechanic payoff; Who optional.}
|
|
27
|
+
|
|
28
|
+
## System Dynamic
|
|
29
|
+
|
|
30
|
+
{One sentence — what system tension keeps the player acting.}
|
|
31
|
+
|
|
32
|
+
## Why this fusion
|
|
33
|
+
|
|
34
|
+
{2–3 sentences — how parent mechanics **serve** the idea above. Start with intent, not grid sizes.}
|
|
35
|
+
|
|
36
|
+
## Rejected vibe
|
|
37
|
+
|
|
38
|
+
- {Not this — e.g. not a casual match-3 binge}
|
|
39
|
+
- {Not this — e.g. not a pure arrow logic puzzle with no payoff}
|
|
40
|
+
|
|
41
|
+
## Design Intent
|
|
42
|
+
|
|
43
|
+
{Phase 4 single line — must match One-liner verbatim when copied to DESIGN §0.}
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
|
|
56
56
|
Each iteration runs inner loops: `clarify` → `build` → `verify` → **Ring Gate** (user acceptance) → next iteration.
|
|
57
57
|
|
|
58
|
-
<!-- Iteration definitions: see
|
|
58
|
+
<!-- Iteration definitions: see docs/team/collaboration.md (growth-rings-v1) -->
|
|
59
59
|
|
|
60
60
|
## Ring DoD (current iteration)
|
|
61
61
|
|
|
@@ -12,11 +12,10 @@ export default defineConfig(({ command }) => ({
|
|
|
12
12
|
},
|
|
13
13
|
server: {
|
|
14
14
|
host: "0.0.0.0",
|
|
15
|
-
// Preferred port;
|
|
16
|
-
//
|
|
17
|
-
//
|
|
18
|
-
|
|
19
|
-
port: 3000,
|
|
15
|
+
// Preferred port; avoid 6000 (Chromium ERR_UNSAFE_PORT). strictPort:false
|
|
16
|
+
// lets Vite auto-increment when 5173 is taken. Harness scripts parse the
|
|
17
|
+
// actual "Local:" URL. See dev-start.mjs.
|
|
18
|
+
port: 5173,
|
|
20
19
|
strictPort: false,
|
|
21
20
|
open: true,
|
|
22
21
|
},
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
# {Game Name} — Ring 1 Core Gameplay Contract
|
|
2
|
-
|
|
3
|
-
<!--
|
|
4
|
-
Ring 1 only. This file is the single Game Designer deliverable for the first
|
|
5
|
-
ring. It defines what the player can do, why the core loop is fun, how the
|
|
6
|
-
game starts at HOOK, and how the first level is guaranteed winnable.
|
|
7
|
-
|
|
8
|
-
Do not add layout-spec, production assets, CTA (Call to Action, 行动召唤)
|
|
9
|
-
polish, ASR (Asset State Reference, 资产状态参考), full MP4 (MPEG-4 Part 14,
|
|
10
|
-
视频容器格式), or multi-level progression here. Those are disclosed by
|
|
11
|
-
state:get in later rings.
|
|
12
|
-
-->
|
|
13
|
-
|
|
14
|
-
**Date**: {YYYY-MM-DD}
|
|
15
|
-
**Engine**: {phaser / threejs / undecided}
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## 1. Player Promise
|
|
20
|
-
|
|
21
|
-
{Describe the playable in 3-5 sentences from the player's point of view. Focus on what the player sees, what they can do, and the first satisfying outcome.}
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## 2. Core Loop
|
|
26
|
-
|
|
27
|
-
### 2.1 One Player-Available Action Chain
|
|
28
|
-
|
|
29
|
-
> **Player sees**: {what object / board / target is visible}
|
|
30
|
-
> **Player does**: {tap / drag / aim / choose}
|
|
31
|
-
> **Game responds**: {immediate feedback and state change}
|
|
32
|
-
> **Next decision**: {what new information lets the player act again}
|
|
33
|
-
|
|
34
|
-
### 2.2 Loop Evolution
|
|
35
|
-
|
|
36
|
-
{Describe what changes after 3-5 successful actions: more confidence, combo payoff, clearer goal, or rising tension.}
|
|
37
|
-
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
## 3. Core Rules
|
|
41
|
-
|
|
42
|
-
### 3.1 Valid Actions
|
|
43
|
-
|
|
44
|
-
- {Action}: valid when {condition}; result is {state change / feedback}.
|
|
45
|
-
|
|
46
|
-
### 3.2 Invalid Actions
|
|
47
|
-
|
|
48
|
-
- {Invalid action}: game responds with {non-blocking feedback}; the first-level win path remains available.
|
|
49
|
-
|
|
50
|
-
### 3.3 Win / Lose
|
|
51
|
-
|
|
52
|
-
- **Win**: {condition}; player reaches `ENDCARD`.
|
|
53
|
-
- **Lose**: {condition, or "not present in first level"}.
|
|
54
|
-
|
|
55
|
-
---
|
|
56
|
-
|
|
57
|
-
## 4. First-Level Win Strategy
|
|
58
|
-
|
|
59
|
-
{Explain the exact mechanism that makes the first level winnable: constrained setup, guided target, simplified rules, generous timing, or locked failure path. Do not only write "guaranteed win".}
|
|
60
|
-
|
|
61
|
-
---
|
|
62
|
-
|
|
63
|
-
## 5. Ring 1 HOOK Entry
|
|
64
|
-
|
|
65
|
-
{Describe the starting HOOK state that is visible immediately when the game loads. It should be enough for `verify:lifecycle` to observe `HOOK`, then for `autoPlay()` to advance through player-reachable actions to `ENDCARD`.}
|