@playcraft/cli 0.0.43 → 0.0.46
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-tree/build-skeleton.js +180 -0
- package/dist/atom-tree/fusion-hints.js +86 -0
- package/dist/atom-tree/selection.js +402 -0
- package/dist/commands/build-all.js +33 -5
- package/dist/commands/build.js +13 -7
- package/dist/commands/create.js +774 -50
- package/dist/commands/image.js +11 -0
- package/dist/commands/prad.js +3 -3
- package/dist/commands/remix.js +20 -0
- package/dist/commands/skills.js +961 -185
- package/dist/commands/tools-detect.js +56 -0
- package/dist/commands/tools-generation.js +21 -0
- package/dist/commands/tools-video-review.js +100 -0
- package/dist/commands/tools.js +4 -0
- package/dist/index.js +2 -0
- package/dist/prad/check.test.js +23 -1
- package/dist/prad/skills-index.js +1 -1
- package/dist/remix/init-template.js +80 -0
- package/dist/scaffold/compose.js +211 -0
- package/engine-packs/phaser/game/adapters/phaser.ts +52 -0
- package/engine-packs/phaser/game/config/game-config.ts +46 -0
- package/engine-packs/phaser/game/contract/publish.ts +141 -0
- package/engine-packs/phaser/game/contract/types.ts +34 -0
- package/engine-packs/phaser/game/index.ts +81 -0
- package/engine-packs/phaser/game/runtime-contract.ts +28 -0
- package/engine-packs/phaser/manifest.json +1 -0
- package/engine-packs/phaser/package.deps.json +1 -0
- package/engine-packs/threejs/game/config/game-config.ts +46 -0
- package/engine-packs/threejs/game/contract/publish.ts +141 -0
- package/engine-packs/threejs/game/contract/types.ts +34 -0
- package/engine-packs/threejs/game/index.ts +76 -0
- package/engine-packs/threejs/game/runtime-contract.ts +15 -0
- package/engine-packs/threejs/manifest.json +1 -0
- package/engine-packs/threejs/package.deps.json +8 -0
- package/package.json +18 -4
- package/project-template/.claude/agents/artist.md +101 -0
- package/project-template/.claude/agents/developer.md +90 -93
- package/project-template/.claude/agents/game-designer.md +192 -0
- package/project-template/.claude/agents/refs/README.md +57 -51
- package/project-template/.claude/agents/refs/{designer-color-audio-recipes.md → artist-color-audio-recipes.md} +2 -2
- package/project-template/.claude/agents/refs/{designer-deliverable-spec.md → artist-deliverable-spec.md} +57 -57
- package/project-template/.claude/agents/refs/{designer-dimension-axis.md → artist-dimension-axis.md} +5 -5
- package/project-template/.claude/agents/refs/{designer-handoff-v2-checklist.md → artist-handoff-v2-checklist.md} +15 -15
- package/project-template/.claude/agents/refs/artist-legacy-fallback.md +14 -0
- package/project-template/.claude/agents/refs/{designer-master-composite-recipes.md → artist-master-composite-recipes.md} +3 -3
- package/project-template/.claude/agents/refs/artist-style-exploration-flow.md +55 -0
- package/project-template/.claude/agents/refs/developer-dev-handoff.md +83 -40
- package/project-template/.claude/agents/refs/developer-impl-cookbook.md +365 -67
- package/project-template/.claude/agents/refs/developer-legacy-fallback.md +15 -0
- package/project-template/.claude/agents/refs/developer-phase1-flow.md +131 -85
- package/project-template/.claude/agents/refs/framework-5-component-filter.md +252 -0
- package/project-template/.claude/agents/refs/framework-game-feel-juice.md +266 -0
- package/project-template/.claude/agents/refs/framework-mda.md +147 -0
- package/project-template/.claude/agents/refs/game-designer-gameplay-sufficiency.md +123 -0
- package/project-template/.claude/agents/refs/game-designer-legacy-fallback.md +15 -0
- package/project-template/.claude/agents/refs/game-designer-workflow-detail.md +69 -0
- package/project-template/.claude/agents/refs/implementation-plan-guide.md +316 -0
- package/project-template/.claude/agents/refs/reviewer-convergence-eval.md +247 -33
- package/project-template/.claude/agents/refs/reviewer-legacy-fallback.md +14 -0
- package/project-template/.claude/agents/refs/skill-selector-guide.md +465 -0
- package/project-template/.claude/agents/refs/skill-value-layers.md +145 -0
- package/project-template/.claude/agents/refs/storyboard-generation-guide.md +110 -0
- package/project-template/.claude/agents/refs/ta-atlas-deliverable-standard.md +4 -4
- package/project-template/.claude/agents/refs/ta-pipeline-cookbook.md +101 -104
- package/project-template/.claude/agents/refs/technical-artist-legacy-fallback.md +14 -0
- package/project-template/.claude/agents/reviewer.md +81 -95
- package/project-template/.claude/agents/technical-artist.md +71 -95
- package/project-template/.claude/hooks/README.md +83 -35
- package/project-template/.claude/hooks/asr-coverage-validate.mjs +19 -19
- package/project-template/.claude/hooks/block-developer-preflight.mjs +185 -0
- package/project-template/.claude/hooks/block-ring1-tasklist.mjs +95 -0
- package/project-template/.claude/hooks/gate-dispatcher.mjs +78 -0
- package/project-template/.claude/hooks/gate-runner.mjs +557 -0
- package/project-template/.claude/hooks/gate.mjs +170 -0
- package/project-template/.claude/hooks/snapshot-milestone.mjs +246 -0
- package/project-template/.claude/hooks/user-prompt.mjs +193 -0
- package/project-template/.claude/hooks/validate-atom-tree-selection.mjs +281 -0
- package/project-template/.claude/hooks/validate-workflow-stop.mjs +1535 -95
- package/project-template/.claude/settings.json +54 -9
- package/project-template/.claude/skills/brainstorming/SKILL.md +161 -0
- package/project-template/.claude/skills/brainstorming/scripts/frame-template.html +270 -0
- package/project-template/.claude/skills/brainstorming/scripts/helper.js +177 -0
- package/project-template/.claude/skills/brainstorming/scripts/server.cjs +354 -0
- package/project-template/.claude/skills/brainstorming/scripts/start-server.sh +148 -0
- package/project-template/.claude/skills/brainstorming/scripts/stop-server.sh +56 -0
- package/project-template/.claude/skills/brainstorming/scripts/wait-for-selection.sh +62 -0
- package/project-template/.claude/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
- package/project-template/.claude/skills/brainstorming/visual-companion.md +309 -0
- package/project-template/.claude/skills/playcraft-ad-psychology/SKILL.md +3 -3
- package/project-template/.claude/skills/playcraft-art-style-guide/SKILL.md +3 -3
- package/project-template/.claude/skills/playcraft-asset-state-sheet/SKILL.md +35 -25
- package/project-template/.claude/skills/playcraft-audio-generation/SKILL.md +15 -15
- package/project-template/.claude/skills/playcraft-build-optimizer/SKILL.md +5 -5
- package/project-template/.claude/skills/playcraft-image-generation/SKILL.md +5 -5
- package/project-template/.claude/skills/playcraft-image-generation/reference/compare-style.template.mjs +5 -5
- package/project-template/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +116 -27
- package/project-template/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +1 -1
- package/project-template/.claude/skills/playcraft-image-processing/SKILL.md +219 -0
- package/project-template/.claude/skills/playcraft-playable-optimization/SKILL.md +161 -0
- package/project-template/.claude/skills/playcraft-research/SKILL.md +24 -21
- package/project-template/.claude/skills/playcraft-skill-recommender/SKILL.md +331 -0
- package/project-template/.claude/skills/playcraft-sprite-generation/SKILL.md +48 -48
- package/project-template/.claude/skills/playcraft-sprite-remix/SKILL.md +158 -0
- package/project-template/.claude/skills/playcraft-sprite-sheet/SKILL.md +100 -0
- package/project-template/.claude/skills/playcraft-storyboard/SKILL.md +4 -4
- package/project-template/.claude/skills/playcraft-style-qa/SKILL.md +45 -45
- package/project-template/.claude/skills/playcraft-text-rendering/SKILL.md +27 -27
- package/project-template/.claude/skills/session-analyzer/SKILL.md +386 -0
- package/project-template/.claude/skills/session-analyzer/scripts/execution-breakdown.mjs +182 -0
- package/project-template/.claude/skills/session-analyzer/scripts/find-turns.mjs +72 -0
- package/project-template/.claude/skills/session-analyzer/scripts/heavy-output.mjs +121 -0
- package/project-template/.claude/skills/session-analyzer/scripts/resolve-session.mjs +103 -0
- package/project-template/.claude/skills/session-analyzer/scripts/subagent-stats.mjs +127 -0
- package/project-template/.claude/skills/session-analyzer/scripts/subagent-tool-timeline.mjs +106 -0
- package/project-template/.claude/skills/session-analyzer/scripts/time-gaps.mjs +128 -0
- package/project-template/.claude/skills/session-analyzer/scripts/turn-timeline.mjs +67 -0
- package/project-template/.claude/snapshot.mjs +350 -0
- package/project-template/.codebuddy/settings.json +53 -0
- package/project-template/.cursor/hooks.json +1 -1
- package/project-template/.cursor/rules/playcraft-orchestrator.mdc +91 -86
- package/project-template/.cursor/rules/playcraft-subagent-boundary.mdc +16 -5
- package/project-template/CHANGELOG.md +105 -0
- package/project-template/CLAUDE.md +58 -254
- package/project-template/docs/DESIGN.md +65 -0
- package/project-template/docs/intent-clarifications.md +58 -0
- package/project-template/docs/pipeline-overview.md +69 -0
- package/project-template/docs/project-state.md +211 -0
- package/project-template/docs/team/agent-conduct.md +51 -105
- package/project-template/docs/team/agent-runtime-matrix.md +60 -74
- package/project-template/docs/team/atom-tree-format.md +169 -0
- package/project-template/docs/team/collaboration.md +319 -225
- package/project-template/docs/team/core-model.md +80 -46
- package/project-template/docs/team/game-designer-migration-todo.md +8 -0
- package/project-template/docs/team/harness-legacy-deprecation.md +23 -0
- package/project-template/docs/team/platform-capabilities.md +16 -13
- package/project-template/docs/team/workflow-changelog.md +95 -23
- package/project-template/docs/team/workflow-consistency-checklist.md +93 -45
- package/project-template/focus-lab/.gitkeep +0 -0
- package/project-template/game/.playcraft-scaffold-pending +0 -0
- package/project-template/game/index.ts +18 -0
- package/project-template/globals.d.ts +51 -0
- package/project-template/index.css +34 -0
- package/project-template/index.html +18 -0
- package/project-template/main.ts +9 -0
- package/project-template/package.json +79 -0
- package/project-template/skills/README.md +52 -0
- package/project-template/skills/_shared/agent-prep.md +136 -0
- package/project-template/skills/_shared/requirements.txt +1 -0
- package/project-template/skills/_shared/scripts/build-evidence-gate.mjs +87 -0
- package/project-template/skills/_shared/scripts/context-budget.mjs +215 -0
- package/project-template/skills/_shared/scripts/create-playable.mjs +140 -0
- package/project-template/skills/_shared/scripts/dev-start.mjs +151 -0
- package/project-template/skills/_shared/scripts/disclosure-config.mjs +480 -0
- package/project-template/skills/_shared/scripts/ensure-project.mjs +532 -0
- package/project-template/skills/_shared/scripts/gen-placeholder-audio.py +345 -0
- package/project-template/skills/_shared/scripts/gen-placeholder.py +244 -0
- package/project-template/skills/_shared/scripts/harness-smoke.mjs +257 -0
- package/project-template/skills/_shared/scripts/lib/validator-artifacts.mjs +129 -0
- package/project-template/skills/_shared/scripts/placeholder-pack-sheet.mjs +67 -0
- package/project-template/skills/_shared/scripts/placeholder_audio_lib.py +142 -0
- package/project-template/skills/_shared/scripts/placeholder_lib.py +993 -0
- package/project-template/skills/_shared/scripts/render-project-state.mjs +278 -0
- package/project-template/skills/_shared/scripts/ring-config.mjs +252 -0
- package/project-template/skills/_shared/scripts/skills-check.mjs +176 -0
- package/project-template/skills/_shared/scripts/slice-set.mjs +77 -0
- package/project-template/skills/_shared/scripts/state-advance-ring.mjs +63 -0
- package/project-template/skills/_shared/scripts/state-get.mjs +215 -0
- package/project-template/skills/_shared/scripts/state-handoff.mjs +120 -0
- package/project-template/skills/_shared/scripts/state-set.mjs +113 -0
- package/project-template/skills/_shared/scripts/state-store.mjs +893 -0
- package/project-template/skills/_shared/scripts/sync-template-skills.mjs +112 -0
- package/project-template/skills/_shared/scripts/verify-asset-code-sync.mjs +265 -0
- package/project-template/skills/_shared/scripts/verify-atom-conformance.mjs +181 -0
- package/project-template/skills/_shared/scripts/verify-env.mjs +285 -0
- package/project-template/skills/_shared/scripts/verify-placeholders.mjs +161 -0
- package/project-template/skills/_shared/scripts/workflow-doctor.mjs +348 -0
- package/project-template/skills/playable-animate/SKILL.md +52 -0
- package/project-template/skills/playable-animate/agents/openai.yaml +4 -0
- package/project-template/skills/playable-animate/references/board-refresh.md +30 -0
- package/project-template/skills/playable-animate/references/diagnosis-checklist.md +25 -0
- package/project-template/skills/playable-animate/references/entrance-sequencing.md +33 -0
- package/project-template/skills/playable-animate/references/interaction-timing.md +23 -0
- package/project-template/skills/playable-art/SKILL.md +203 -0
- package/project-template/skills/playable-art/agents/openai.yaml +4 -0
- package/project-template/skills/playable-art/references/alpha-postprocess.md +46 -0
- package/project-template/skills/playable-art/references/cta-art-spec.md +59 -0
- package/project-template/skills/playable-art/references/layout-proportions.md +30 -0
- package/project-template/skills/playable-art/references/prompt-patterns.md +83 -0
- package/project-template/skills/playable-art/references/reference-comparison.md +30 -0
- package/project-template/skills/playable-art/references/sheet-import-v2.md +91 -0
- package/project-template/skills/playable-art/scripts/build-atlas.py +332 -0
- package/project-template/skills/playable-art/scripts/chroma-key.py +50 -0
- package/project-template/skills/playable-art/scripts/extract-alpha-split.py +65 -0
- package/project-template/skills/playable-art/scripts/extract-dual-bg-alpha.py +118 -0
- package/project-template/skills/playable-art/scripts/import-gpt-art-sheets-v2.py +403 -0
- package/project-template/skills/playable-art/scripts/import-gpt-art-sheets.py +280 -0
- package/project-template/skills/playable-art/scripts/import-gpt-tile-sheet.py +114 -0
- package/project-template/skills/playable-art/scripts/import_gpt_art_pipeline.py +321 -0
- package/project-template/skills/playable-art/scripts/import_gpt_art_sheets_v2_test.py +126 -0
- package/project-template/skills/playable-art/scripts/placeholder_common.py +98 -0
- package/project-template/skills/playable-art/scripts/remove-bg.py +91 -0
- package/project-template/skills/playable-art/scripts/review-processed-assets.py +468 -0
- package/project-template/skills/playable-art/scripts/review_processed_assets_test.py +116 -0
- package/project-template/skills/playable-art/scripts/verify-alpha-clean.py +105 -0
- package/project-template/skills/playable-debug/SKILL.md +116 -0
- package/project-template/skills/playable-debug/agents/openai.yaml +4 -0
- package/project-template/skills/playable-debug/references/debug-config.md +40 -0
- package/project-template/skills/playable-focus/SKILL.md +148 -0
- package/project-template/skills/playable-focus/scripts/bootstrap-playground.mjs +84 -0
- package/project-template/skills/playable-focus/scripts/extract-focus-frames.mjs +87 -0
- package/project-template/skills/playable-focus/scripts/generate-focus-reports.mjs +121 -0
- package/project-template/skills/playable-focus/scripts/playground.mjs +390 -0
- package/project-template/skills/playable-focus/templates/focus-lab/frame.html +39 -0
- package/project-template/skills/playable-focus/templates/focus-lab/harness/clean-stage.js +114 -0
- package/project-template/skills/playable-focus/templates/focus-lab/harness/frame-lab-scene.js +94 -0
- package/project-template/skills/playable-focus/templates/focus-lab/harness/particle-lab-scene.js +224 -0
- package/project-template/skills/playable-focus/templates/focus-lab/model.html +16 -0
- package/project-template/skills/playable-focus/templates/focus-lab/particle.html +38 -0
- package/project-template/skills/playable-focus/templates/focus-lab/shatter.html +47 -0
- package/project-template/skills/playable-focus/templates/playground/registry.template.json +55 -0
- package/project-template/skills/playable-focus/templates/playground/vfx-catalog.template.json +280 -0
- package/project-template/skills/playable-fx-decompose/SKILL.md +212 -0
- package/project-template/skills/playable-fx-decompose/examples.md +89 -0
- package/project-template/skills/playable-fx-decompose/reference.md +201 -0
- package/project-template/skills/playable-fx-decompose/requirements.txt +2 -0
- package/project-template/skills/playable-fx-decompose/scripts/build-blank-tile-crack.py +192 -0
- package/project-template/skills/playable-fx-decompose/scripts/fix-shard-debris-frames.py +60 -0
- package/project-template/skills/playable-fx-decompose/scripts/generate-shard-debris.py +276 -0
- package/project-template/skills/playable-fx-peak/SKILL.md +237 -0
- package/project-template/skills/playable-fx-peak/requirements.txt +2 -0
- package/project-template/skills/playable-fx-peak/scripts/fix-frame-edges.py +70 -0
- package/project-template/skills/playable-fx-peak/scripts/repack-frame-sequence.py +526 -0
- package/project-template/skills/playable-fx-peak/scripts/validate-frame-anchors.py +130 -0
- package/project-template/skills/playable-placeholder/SKILL.md +239 -0
- package/project-template/skills/playable-record/SKILL.md +166 -0
- package/project-template/skills/playable-record/scripts/lib/build-artifact.mjs +92 -0
- package/project-template/skills/playable-record/scripts/lib/dev-server.mjs +104 -0
- package/project-template/skills/playable-record/scripts/lib/record-audio-bridge.js +141 -0
- package/project-template/skills/playable-record/scripts/lib/slice-structure-verify.mjs +199 -0
- package/project-template/skills/playable-record/scripts/record-playable.mjs +583 -0
- package/project-template/skills/playable-record/scripts/verify-build.mjs +185 -0
- package/project-template/skills/playable-record/scripts/verify-contract.mjs +261 -0
- package/project-template/skills/playable-record/scripts/verify-firstwin.mjs +398 -0
- package/project-template/skills/playable-record/scripts/verify-fusion.mjs +320 -0
- package/project-template/skills/playable-record/scripts/verify-lifecycle.mjs +78 -0
- package/project-template/skills/playable-record/scripts/verify-slice-artist.mjs +53 -0
- package/project-template/skills/playable-record/scripts/verify-slice-ta.mjs +53 -0
- package/project-template/skills/playable-record/scripts/verify-slice.mjs +142 -0
- package/project-template/skills/playable-record/scripts/verify-visual-ring.mjs +250 -0
- package/project-template/skills/playable-record/scripts/verify-visual-ring1.mjs +190 -0
- package/project-template/skills/playable-record/scripts/verify-vlm-video.mjs +227 -0
- package/project-template/skills/playable-validate/SKILL.md +260 -0
- package/project-template/skills/playable-validate/references/checklist-detail.md +36 -0
- package/project-template/skills/playable-validate/references/single-html-bundle.md +76 -0
- package/project-template/skills/playable-validate/validation-rules.md +200 -0
- package/project-template/skills/playable-verify-ui/SKILL.md +295 -0
- package/project-template/skills/playable-verify-ui/examples/asset-manifest.example.json +36 -0
- package/project-template/skills/playable-verify-ui/examples/mahjong-match.profile.yaml +334 -0
- package/project-template/skills/playable-verify-ui/profiles/template.profile.yaml +84 -0
- package/project-template/skills/playable-verify-ui/reference.md +165 -0
- package/project-template/skills/playable-verify-ui/references/phaser-patterns.md +67 -0
- package/project-template/skills/playable-verify-ui/references/scaling-decision-tree.md +51 -0
- package/project-template/skills/playable-verify-ui/requirements.txt +7 -0
- package/project-template/skills/playable-verify-ui/schema/asset-manifest.schema.json +68 -0
- package/project-template/skills/playable-verify-ui/schema/playable-ui-profile.schema.json +171 -0
- package/project-template/skills/playable-verify-ui/scripts/asset_manifest.py +231 -0
- package/project-template/skills/playable-verify-ui/scripts/lib/__init__.py +1 -0
- package/project-template/skills/playable-verify-ui/scripts/lib/config_expr.js +218 -0
- package/project-template/skills/playable-verify-ui/scripts/lib/node_utils.js +51 -0
- package/project-template/skills/playable-verify-ui/scripts/lib/profile_loader.py +59 -0
- package/project-template/skills/playable-verify-ui/scripts/lib/report.py +106 -0
- package/project-template/skills/playable-verify-ui/scripts/lib/runtime_contract.js +116 -0
- package/project-template/skills/playable-verify-ui/scripts/measure_frame_content.py +77 -0
- package/project-template/skills/playable-verify-ui/scripts/run_all.py +265 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_asset_sizes.py +77 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_assets_present.py +62 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_atlas_budget.py +84 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_atlas_frames.py +79 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_bg_clean.py +365 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_doc_asset_sync.py +90 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_fetch_antipatterns.py +59 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_game_config_load.js +54 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_hardcoded_layout.js +64 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_layout_regions.js +110 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_profile_schema.py +37 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_ring1_visual.py +211 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_runtime_contract.js +58 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_script_load_order.js +73 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_slice_plan.py +238 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_slice_plan_test.py +125 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_text_overlap.py +333 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_tile_consistency.py +323 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_vision_evidence.py +894 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_vision_evidence_test.py +122 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_visual.py +422 -0
- package/project-template/templates/{designer-log.template.md → artist-log.template.md} +26 -31
- package/project-template/templates/atom-tree.template.json +133 -0
- package/project-template/templates/design-brief.template.md +59 -162
- package/project-template/templates/design-lens-checklist.reference.md +14 -14
- package/project-template/templates/design-methodology.md +25 -25
- package/project-template/templates/design.template.md +50 -0
- package/project-template/templates/developer-log.template.md +187 -63
- package/project-template/templates/five-axis-framework.md +89 -44
- package/project-template/templates/gen-placeholder-audio.template.mjs +63 -0
- package/project-template/templates/gen-placeholders.template.mjs +81 -0
- package/project-template/templates/intent-clarifications.template.md +7 -7
- package/project-template/templates/layout-spec.template.md +32 -20
- package/project-template/templates/plan.template.md +80 -0
- package/project-template/templates/project-state.template.md +90 -191
- package/project-template/templates/review-report.template.md +208 -24
- package/project-template/templates/style-exploration.template.md +8 -8
- package/project-template/templates/ta-log.template.md +58 -35
- package/project-template/tsconfig.json +20 -0
- package/project-template/vite.config.ts +27 -0
- package/project-templates/phaser/.claude/agents/artist.md +101 -0
- package/project-templates/phaser/.claude/agents/developer.md +123 -0
- package/project-templates/phaser/.claude/agents/game-designer.md +192 -0
- package/project-templates/phaser/.claude/agents/refs/README.md +77 -0
- package/project-templates/phaser/.claude/agents/refs/artist-art-style-catalog.md +533 -0
- package/project-templates/phaser/.claude/agents/refs/artist-color-audio-recipes.md +153 -0
- package/project-templates/phaser/.claude/agents/refs/artist-deliverable-spec.md +230 -0
- package/project-templates/phaser/.claude/agents/refs/artist-dimension-axis.md +27 -0
- package/project-templates/phaser/.claude/agents/refs/artist-handoff-v2-checklist.md +76 -0
- package/project-templates/phaser/.claude/agents/refs/artist-legacy-fallback.md +14 -0
- package/project-templates/phaser/.claude/agents/refs/artist-master-composite-recipes.md +208 -0
- package/project-templates/phaser/.claude/agents/refs/artist-style-exploration-flow.md +55 -0
- package/project-templates/phaser/.claude/agents/refs/developer-dev-handoff.md +152 -0
- package/project-templates/phaser/.claude/agents/refs/developer-impl-cookbook.md +432 -0
- package/project-templates/phaser/.claude/agents/refs/developer-legacy-fallback.md +15 -0
- package/project-templates/phaser/.claude/agents/refs/developer-phase1-flow.md +404 -0
- package/project-templates/phaser/.claude/agents/refs/framework-5-component-filter.md +252 -0
- package/project-templates/phaser/.claude/agents/refs/framework-game-feel-juice.md +266 -0
- package/project-templates/phaser/.claude/agents/refs/framework-mda.md +147 -0
- package/project-templates/phaser/.claude/agents/refs/game-designer-gameplay-sufficiency.md +123 -0
- package/project-templates/phaser/.claude/agents/refs/game-designer-legacy-fallback.md +15 -0
- package/project-templates/phaser/.claude/agents/refs/game-designer-workflow-detail.md +69 -0
- package/project-templates/phaser/.claude/agents/refs/implementation-plan-guide.md +309 -0
- package/project-templates/phaser/.claude/agents/refs/reviewer-convergence-eval.md +350 -0
- package/project-templates/phaser/.claude/agents/refs/reviewer-legacy-fallback.md +14 -0
- package/project-templates/phaser/.claude/agents/refs/reviewer-six-dimension-eval.md +6 -0
- package/project-templates/phaser/.claude/agents/refs/skill-selector-guide.md +465 -0
- package/project-templates/phaser/.claude/agents/refs/skill-value-layers.md +145 -0
- package/project-templates/phaser/.claude/agents/refs/storyboard-generation-guide.md +110 -0
- package/project-templates/phaser/.claude/agents/refs/ta-3d-flip-recipe.md +88 -0
- package/project-templates/phaser/.claude/agents/refs/ta-atlas-deliverable-standard.md +67 -0
- package/project-templates/phaser/.claude/agents/refs/ta-batch-pipeline-recipes.md +120 -0
- package/project-templates/phaser/.claude/agents/refs/ta-image-generation-detail.md +300 -0
- package/project-templates/phaser/.claude/agents/refs/ta-image-ops-reference.md +495 -0
- package/project-templates/phaser/.claude/agents/refs/ta-pipeline-cookbook.md +1141 -0
- package/project-templates/phaser/.claude/agents/refs/ta-tools-reference.md +111 -0
- package/project-templates/phaser/.claude/agents/refs/ta-vfx-preset-catalog.md +365 -0
- package/project-templates/phaser/.claude/agents/refs/technical-artist-legacy-fallback.md +14 -0
- package/project-templates/phaser/.claude/agents/reviewer.md +116 -0
- package/project-templates/phaser/.claude/agents/technical-artist.md +100 -0
- package/project-templates/phaser/.claude/hooks/README.md +120 -0
- package/project-templates/phaser/.claude/hooks/asr-coverage-validate.mjs +381 -0
- package/project-templates/phaser/.claude/hooks/block-developer-preflight.mjs +185 -0
- package/project-templates/phaser/.claude/hooks/block-ring1-tasklist.mjs +95 -0
- package/project-templates/phaser/.claude/hooks/gate-dispatcher.mjs +78 -0
- package/project-templates/phaser/.claude/hooks/gate-runner.mjs +557 -0
- package/project-templates/phaser/.claude/hooks/gate.mjs +171 -0
- package/project-templates/phaser/.claude/hooks/snapshot-milestone.mjs +247 -0
- package/project-templates/phaser/.claude/hooks/user-prompt.mjs +194 -0
- package/project-templates/phaser/.claude/hooks/validate-atom-tree-selection.mjs +281 -0
- package/project-templates/phaser/.claude/hooks/validate-workflow-stop.mjs +1889 -0
- package/project-templates/phaser/.claude/settings.json +81 -0
- package/project-templates/phaser/.claude/skills/brainstorming/SKILL.md +161 -0
- package/project-templates/phaser/.claude/skills/brainstorming/scripts/frame-template.html +270 -0
- package/project-templates/phaser/.claude/skills/brainstorming/scripts/helper.js +177 -0
- package/project-templates/phaser/.claude/skills/brainstorming/scripts/server.cjs +354 -0
- package/project-templates/phaser/.claude/skills/brainstorming/scripts/start-server.sh +148 -0
- package/project-templates/phaser/.claude/skills/brainstorming/scripts/stop-server.sh +56 -0
- package/project-templates/phaser/.claude/skills/brainstorming/scripts/wait-for-selection.sh +62 -0
- package/project-templates/phaser/.claude/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
- package/project-templates/phaser/.claude/skills/brainstorming/visual-companion.md +309 -0
- package/project-templates/phaser/.claude/skills/playcraft-ad-psychology/SKILL.md +182 -0
- package/project-templates/phaser/.claude/skills/playcraft-art-style-guide/SKILL.md +123 -0
- package/project-templates/phaser/.claude/skills/playcraft-asset-state-sheet/SKILL.md +205 -0
- package/project-templates/phaser/.claude/skills/playcraft-audio-generation/SKILL.md +280 -0
- package/project-templates/phaser/.claude/skills/playcraft-batch-pipeline/SKILL.md +184 -0
- package/project-templates/phaser/.claude/skills/playcraft-build-optimizer/SKILL.md +306 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/SKILL.md +298 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/build-sprite-sheet.template.mjs +123 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/compare-style.template.mjs +254 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +324 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +97 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/gen-edit-variants.template.mjs +118 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +137 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +397 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/validate-sprite-sheet.template.mjs +296 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-ops/SKILL.md +122 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-processing/SKILL.md +219 -0
- package/project-templates/phaser/.claude/skills/playcraft-masking/SKILL.md +373 -0
- package/project-templates/phaser/.claude/skills/playcraft-playable-optimization/SKILL.md +161 -0
- package/project-templates/phaser/.claude/skills/playcraft-research/SKILL.md +215 -0
- package/project-templates/phaser/.claude/skills/playcraft-skill-recommender/SKILL.md +331 -0
- package/project-templates/phaser/.claude/skills/playcraft-sprite-generation/SKILL.md +423 -0
- package/project-templates/phaser/.claude/skills/playcraft-sprite-remix/SKILL.md +158 -0
- package/project-templates/phaser/.claude/skills/playcraft-sprite-sheet/SKILL.md +100 -0
- package/project-templates/phaser/.claude/skills/playcraft-storyboard/SKILL.md +167 -0
- package/project-templates/phaser/.claude/skills/playcraft-style-qa/SKILL.md +270 -0
- package/project-templates/phaser/.claude/skills/playcraft-text-rendering/SKILL.md +236 -0
- package/project-templates/phaser/.claude/skills/playcraft-vfx-animation/SKILL.md +130 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/SKILL.md +390 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/element-attributes.md +23 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/playwright-tests.md +39 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/request-mocking.md +87 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/running-code.md +240 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/session-management.md +226 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/spec-driven-testing.md +308 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/storage-state.md +275 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/test-generation.md +134 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/tracing.md +142 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/video-recording.md +153 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/SKILL.md +386 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/execution-breakdown.mjs +182 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/find-turns.mjs +72 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/heavy-output.mjs +121 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/resolve-session.mjs +103 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/subagent-stats.mjs +127 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/subagent-tool-timeline.mjs +106 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/time-gaps.mjs +128 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/turn-timeline.mjs +67 -0
- package/project-templates/phaser/.claude/snapshot.mjs +257 -0
- package/project-templates/phaser/.cursor/hooks.json +17 -0
- package/project-templates/phaser/.cursor/rules/playcraft-orchestrator.mdc +142 -0
- package/project-templates/phaser/.cursor/rules/playcraft-subagent-boundary.mdc +29 -0
- package/project-templates/phaser/.playcraft-engine +1 -0
- package/project-templates/phaser/CHANGELOG.md +105 -0
- package/project-templates/phaser/CLAUDE.md +84 -0
- package/project-templates/phaser/assets/audio/bgm/.gitkeep +0 -0
- package/project-templates/phaser/assets/audio/sfx/.gitkeep +0 -0
- package/project-templates/phaser/assets/bundles/.gitkeep +0 -0
- package/project-templates/phaser/assets/images/bg/.gitkeep +0 -0
- package/project-templates/phaser/assets/images/reference/.gitkeep +0 -0
- package/project-templates/phaser/assets/images/storyboard/.gitkeep +0 -0
- package/project-templates/phaser/assets/images/tiles/.gitkeep +0 -0
- package/project-templates/phaser/assets/images/ui/.gitkeep +0 -0
- package/project-templates/phaser/assets/images/vfx/.gitkeep +0 -0
- package/project-templates/phaser/assets/models/.gitkeep +0 -0
- package/project-templates/phaser/docs/DESIGN.md +65 -0
- package/project-templates/phaser/docs/intent-clarifications.md +58 -0
- package/project-templates/phaser/docs/pipeline-overview.md +69 -0
- package/project-templates/phaser/docs/project-state.md +211 -0
- package/project-templates/phaser/docs/scaffold-manifest.md +10 -0
- package/project-templates/phaser/docs/team/agent-conduct.md +67 -0
- package/project-templates/phaser/docs/team/agent-runtime-matrix.md +80 -0
- package/project-templates/phaser/docs/team/atom-tree-format.md +114 -0
- package/project-templates/phaser/docs/team/collaboration.md +391 -0
- package/project-templates/phaser/docs/team/core-model.md +85 -0
- package/project-templates/phaser/docs/team/game-designer-migration-todo.md +8 -0
- package/project-templates/phaser/docs/team/harness-legacy-deprecation.md +23 -0
- package/project-templates/phaser/docs/team/platform-capabilities.md +18 -0
- package/project-templates/phaser/docs/team/workflow-changelog.md +137 -0
- package/project-templates/phaser/docs/team/workflow-consistency-checklist.md +240 -0
- package/project-templates/phaser/focus-lab/.gitkeep +0 -0
- package/project-templates/phaser/game/adapters/phaser.ts +52 -0
- package/project-templates/phaser/game/config/.gitkeep +0 -0
- package/project-templates/phaser/game/config/game-config.ts +46 -0
- package/project-templates/phaser/game/contract/publish.ts +141 -0
- package/project-templates/phaser/game/contract/types.ts +34 -0
- package/project-templates/phaser/game/gameplay/.gitkeep +0 -0
- package/project-templates/phaser/game/index.ts +81 -0
- package/project-templates/phaser/game/runtime-contract.ts +28 -0
- package/project-templates/phaser/game/scenes/.gitkeep +0 -0
- package/project-templates/phaser/globals.d.ts +51 -0
- package/project-templates/phaser/index.css +34 -0
- package/project-templates/phaser/index.html +18 -0
- package/project-templates/phaser/main.ts +9 -0
- package/project-templates/phaser/package.json +79 -0
- package/project-templates/phaser/skills/README.md +52 -0
- package/project-templates/phaser/skills/_shared/agent-prep.md +136 -0
- package/project-templates/phaser/skills/_shared/requirements.txt +1 -0
- package/project-templates/phaser/skills/_shared/scripts/build-evidence-gate.mjs +87 -0
- package/project-templates/phaser/skills/_shared/scripts/context-budget.mjs +215 -0
- package/project-templates/phaser/skills/_shared/scripts/create-playable.mjs +140 -0
- package/project-templates/phaser/skills/_shared/scripts/dev-start.mjs +151 -0
- package/project-templates/phaser/skills/_shared/scripts/disclosure-config.mjs +480 -0
- package/project-templates/phaser/skills/_shared/scripts/ensure-project.mjs +532 -0
- package/project-templates/phaser/skills/_shared/scripts/gen-placeholder-audio.py +345 -0
- package/project-templates/phaser/skills/_shared/scripts/gen-placeholder.py +244 -0
- package/project-templates/phaser/skills/_shared/scripts/harness-smoke.mjs +257 -0
- package/project-templates/phaser/skills/_shared/scripts/lib/validator-artifacts.mjs +129 -0
- package/project-templates/phaser/skills/_shared/scripts/placeholder-pack-sheet.mjs +67 -0
- package/project-templates/phaser/skills/_shared/scripts/placeholder_audio_lib.py +142 -0
- package/project-templates/phaser/skills/_shared/scripts/placeholder_lib.py +993 -0
- package/project-templates/phaser/skills/_shared/scripts/render-project-state.mjs +278 -0
- package/project-templates/phaser/skills/_shared/scripts/ring-config.mjs +252 -0
- package/project-templates/phaser/skills/_shared/scripts/skills-check.mjs +176 -0
- package/project-templates/phaser/skills/_shared/scripts/slice-set.mjs +77 -0
- package/project-templates/phaser/skills/_shared/scripts/state-advance-ring.mjs +63 -0
- package/project-templates/phaser/skills/_shared/scripts/state-get.mjs +215 -0
- package/project-templates/phaser/skills/_shared/scripts/state-handoff.mjs +120 -0
- package/project-templates/phaser/skills/_shared/scripts/state-set.mjs +113 -0
- package/project-templates/phaser/skills/_shared/scripts/state-store.mjs +893 -0
- package/project-templates/phaser/skills/_shared/scripts/sync-template-skills.mjs +112 -0
- package/project-templates/phaser/skills/_shared/scripts/verify-asset-code-sync.mjs +265 -0
- package/project-templates/phaser/skills/_shared/scripts/verify-atom-conformance.mjs +181 -0
- package/project-templates/phaser/skills/_shared/scripts/verify-env.mjs +285 -0
- package/project-templates/phaser/skills/_shared/scripts/verify-placeholders.mjs +161 -0
- package/project-templates/phaser/skills/_shared/scripts/workflow-doctor.mjs +348 -0
- package/project-templates/phaser/skills/playable-animate/SKILL.md +52 -0
- package/project-templates/phaser/skills/playable-animate/agents/openai.yaml +4 -0
- package/project-templates/phaser/skills/playable-animate/references/board-refresh.md +30 -0
- package/project-templates/phaser/skills/playable-animate/references/diagnosis-checklist.md +25 -0
- package/project-templates/phaser/skills/playable-animate/references/entrance-sequencing.md +33 -0
- package/project-templates/phaser/skills/playable-animate/references/interaction-timing.md +23 -0
- package/project-templates/phaser/skills/playable-art/SKILL.md +203 -0
- package/project-templates/phaser/skills/playable-art/agents/openai.yaml +4 -0
- package/project-templates/phaser/skills/playable-art/references/alpha-postprocess.md +46 -0
- package/project-templates/phaser/skills/playable-art/references/cta-art-spec.md +59 -0
- package/project-templates/phaser/skills/playable-art/references/layout-proportions.md +30 -0
- package/project-templates/phaser/skills/playable-art/references/prompt-patterns.md +83 -0
- package/project-templates/phaser/skills/playable-art/references/reference-comparison.md +30 -0
- package/project-templates/phaser/skills/playable-art/references/sheet-import-v2.md +91 -0
- package/project-templates/phaser/skills/playable-art/scripts/build-atlas.py +332 -0
- package/project-templates/phaser/skills/playable-art/scripts/chroma-key.py +50 -0
- package/project-templates/phaser/skills/playable-art/scripts/extract-alpha-split.py +65 -0
- package/project-templates/phaser/skills/playable-art/scripts/extract-dual-bg-alpha.py +118 -0
- package/project-templates/phaser/skills/playable-art/scripts/import-gpt-art-sheets-v2.py +403 -0
- package/project-templates/phaser/skills/playable-art/scripts/import-gpt-art-sheets.py +280 -0
- package/project-templates/phaser/skills/playable-art/scripts/import-gpt-tile-sheet.py +114 -0
- package/project-templates/phaser/skills/playable-art/scripts/import_gpt_art_pipeline.py +321 -0
- package/project-templates/phaser/skills/playable-art/scripts/import_gpt_art_sheets_v2_test.py +126 -0
- package/project-templates/phaser/skills/playable-art/scripts/placeholder_common.py +98 -0
- package/project-templates/phaser/skills/playable-art/scripts/remove-bg.py +91 -0
- package/project-templates/phaser/skills/playable-art/scripts/review-processed-assets.py +468 -0
- package/project-templates/phaser/skills/playable-art/scripts/review_processed_assets_test.py +116 -0
- package/project-templates/phaser/skills/playable-art/scripts/verify-alpha-clean.py +105 -0
- package/project-templates/phaser/skills/playable-debug/SKILL.md +116 -0
- package/project-templates/phaser/skills/playable-debug/agents/openai.yaml +4 -0
- package/project-templates/phaser/skills/playable-debug/references/debug-config.md +40 -0
- package/project-templates/phaser/skills/playable-focus/SKILL.md +148 -0
- package/project-templates/phaser/skills/playable-focus/scripts/bootstrap-playground.mjs +84 -0
- package/project-templates/phaser/skills/playable-focus/scripts/extract-focus-frames.mjs +87 -0
- package/project-templates/phaser/skills/playable-focus/scripts/generate-focus-reports.mjs +121 -0
- package/project-templates/phaser/skills/playable-focus/scripts/playground.mjs +390 -0
- package/project-templates/phaser/skills/playable-focus/templates/focus-lab/frame.html +39 -0
- package/project-templates/phaser/skills/playable-focus/templates/focus-lab/harness/clean-stage.js +114 -0
- package/project-templates/phaser/skills/playable-focus/templates/focus-lab/harness/frame-lab-scene.js +94 -0
- package/project-templates/phaser/skills/playable-focus/templates/focus-lab/harness/particle-lab-scene.js +224 -0
- package/project-templates/phaser/skills/playable-focus/templates/focus-lab/model.html +16 -0
- package/project-templates/phaser/skills/playable-focus/templates/focus-lab/particle.html +38 -0
- package/project-templates/phaser/skills/playable-focus/templates/focus-lab/shatter.html +47 -0
- package/project-templates/phaser/skills/playable-fx-decompose/SKILL.md +212 -0
- package/project-templates/phaser/skills/playable-fx-decompose/examples.md +89 -0
- package/project-templates/phaser/skills/playable-fx-decompose/reference.md +201 -0
- package/project-templates/phaser/skills/playable-fx-decompose/requirements.txt +2 -0
- package/project-templates/phaser/skills/playable-fx-decompose/scripts/build-blank-tile-crack.py +192 -0
- package/project-templates/phaser/skills/playable-fx-decompose/scripts/fix-shard-debris-frames.py +60 -0
- package/project-templates/phaser/skills/playable-fx-decompose/scripts/generate-shard-debris.py +276 -0
- package/project-templates/phaser/skills/playable-fx-peak/SKILL.md +237 -0
- package/project-templates/phaser/skills/playable-fx-peak/requirements.txt +2 -0
- package/project-templates/phaser/skills/playable-fx-peak/scripts/fix-frame-edges.py +70 -0
- package/project-templates/phaser/skills/playable-fx-peak/scripts/repack-frame-sequence.py +526 -0
- package/project-templates/phaser/skills/playable-fx-peak/scripts/validate-frame-anchors.py +130 -0
- package/project-templates/phaser/skills/playable-placeholder/SKILL.md +239 -0
- package/project-templates/phaser/skills/playable-record/SKILL.md +166 -0
- package/project-templates/phaser/skills/playable-record/scripts/lib/build-artifact.mjs +92 -0
- package/project-templates/phaser/skills/playable-record/scripts/lib/dev-server.mjs +104 -0
- package/project-templates/phaser/skills/playable-record/scripts/lib/record-audio-bridge.js +141 -0
- package/project-templates/phaser/skills/playable-record/scripts/lib/slice-structure-verify.mjs +199 -0
- package/project-templates/phaser/skills/playable-record/scripts/record-playable.mjs +583 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-build.mjs +185 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-contract.mjs +261 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-firstwin.mjs +398 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-fusion.mjs +320 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-lifecycle.mjs +78 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-slice-artist.mjs +53 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-slice-ta.mjs +53 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-slice.mjs +142 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-visual-ring.mjs +250 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-visual-ring1.mjs +190 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-vlm-video.mjs +227 -0
- package/project-templates/phaser/skills/playable-validate/SKILL.md +260 -0
- package/project-templates/phaser/skills/playable-validate/references/checklist-detail.md +36 -0
- package/project-templates/phaser/skills/playable-validate/references/single-html-bundle.md +76 -0
- package/project-templates/phaser/skills/playable-validate/validation-rules.md +200 -0
- package/project-templates/phaser/skills/playable-verify-ui/SKILL.md +295 -0
- package/project-templates/phaser/skills/playable-verify-ui/examples/asset-manifest.example.json +36 -0
- package/project-templates/phaser/skills/playable-verify-ui/examples/mahjong-match.profile.yaml +334 -0
- package/project-templates/phaser/skills/playable-verify-ui/profiles/template.profile.yaml +84 -0
- package/project-templates/phaser/skills/playable-verify-ui/reference.md +165 -0
- package/project-templates/phaser/skills/playable-verify-ui/references/phaser-patterns.md +67 -0
- package/project-templates/phaser/skills/playable-verify-ui/references/scaling-decision-tree.md +51 -0
- package/project-templates/phaser/skills/playable-verify-ui/requirements.txt +7 -0
- package/project-templates/phaser/skills/playable-verify-ui/schema/asset-manifest.schema.json +68 -0
- package/project-templates/phaser/skills/playable-verify-ui/schema/playable-ui-profile.schema.json +171 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/asset_manifest.py +231 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/__init__.py +1 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/config_expr.js +218 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/node_utils.js +51 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/profile_loader.py +59 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/report.py +106 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/runtime_contract.js +116 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/measure_frame_content.py +77 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/run_all.py +265 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_asset_sizes.py +77 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_assets_present.py +62 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_atlas_budget.py +84 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_atlas_frames.py +79 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_bg_clean.py +365 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_doc_asset_sync.py +90 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_fetch_antipatterns.py +59 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_game_config_load.js +54 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_hardcoded_layout.js +64 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_layout_regions.js +110 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_profile_schema.py +37 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_ring1_visual.py +211 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_runtime_contract.js +58 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_script_load_order.js +73 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_slice_plan.py +238 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_slice_plan_test.py +125 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_text_overlap.py +333 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_tile_consistency.py +323 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_vision_evidence.py +894 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_vision_evidence_test.py +122 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_visual.py +422 -0
- package/project-templates/phaser/ta-workspace/scripts/.gitkeep +0 -0
- package/project-templates/phaser/templates/artist-log.template.md +182 -0
- package/project-templates/phaser/templates/atom-tree.template.json +133 -0
- package/project-templates/phaser/templates/design-brief.template.md +92 -0
- package/project-templates/phaser/templates/design-lens-checklist.reference.md +117 -0
- package/project-templates/phaser/templates/design-methodology.md +99 -0
- package/project-templates/phaser/templates/design.template.md +50 -0
- package/project-templates/phaser/templates/developer-log.template.md +258 -0
- package/project-templates/phaser/templates/five-axis-framework.md +194 -0
- package/project-templates/phaser/templates/gen-placeholder-audio.template.mjs +63 -0
- package/project-templates/phaser/templates/gen-placeholders.template.mjs +81 -0
- package/project-templates/phaser/templates/intent-clarifications.template.md +58 -0
- package/project-templates/phaser/templates/layout-spec.template.md +198 -0
- package/project-templates/phaser/templates/plan.template.md +80 -0
- package/project-templates/phaser/templates/project-state.template.md +136 -0
- package/project-templates/phaser/templates/review-report.template.md +275 -0
- package/project-templates/phaser/templates/style-exploration.template.md +93 -0
- package/project-templates/phaser/templates/ta-log.template.md +394 -0
- package/project-templates/phaser/tsconfig.json +20 -0
- package/project-templates/phaser/vite.config.ts +27 -0
- package/project-templates/threejs/.claude/agents/artist.md +101 -0
- package/project-templates/threejs/.claude/agents/developer.md +123 -0
- package/project-templates/threejs/.claude/agents/game-designer.md +192 -0
- package/project-templates/threejs/.claude/agents/refs/README.md +77 -0
- package/project-templates/threejs/.claude/agents/refs/artist-art-style-catalog.md +533 -0
- package/project-templates/threejs/.claude/agents/refs/artist-color-audio-recipes.md +153 -0
- package/project-templates/threejs/.claude/agents/refs/artist-deliverable-spec.md +230 -0
- package/project-templates/threejs/.claude/agents/refs/artist-dimension-axis.md +27 -0
- package/project-templates/threejs/.claude/agents/refs/artist-handoff-v2-checklist.md +76 -0
- package/project-templates/threejs/.claude/agents/refs/artist-legacy-fallback.md +14 -0
- package/project-templates/threejs/.claude/agents/refs/artist-master-composite-recipes.md +208 -0
- package/project-templates/threejs/.claude/agents/refs/artist-style-exploration-flow.md +55 -0
- package/project-templates/threejs/.claude/agents/refs/developer-dev-handoff.md +152 -0
- package/project-templates/threejs/.claude/agents/refs/developer-impl-cookbook.md +432 -0
- package/project-templates/threejs/.claude/agents/refs/developer-legacy-fallback.md +15 -0
- package/project-templates/threejs/.claude/agents/refs/developer-phase1-flow.md +404 -0
- package/project-templates/threejs/.claude/agents/refs/framework-5-component-filter.md +252 -0
- package/project-templates/threejs/.claude/agents/refs/framework-game-feel-juice.md +266 -0
- package/project-templates/threejs/.claude/agents/refs/framework-mda.md +147 -0
- package/project-templates/threejs/.claude/agents/refs/game-designer-gameplay-sufficiency.md +123 -0
- package/project-templates/threejs/.claude/agents/refs/game-designer-legacy-fallback.md +15 -0
- package/project-templates/threejs/.claude/agents/refs/game-designer-workflow-detail.md +69 -0
- package/project-templates/threejs/.claude/agents/refs/implementation-plan-guide.md +309 -0
- package/project-templates/threejs/.claude/agents/refs/reviewer-convergence-eval.md +350 -0
- package/project-templates/threejs/.claude/agents/refs/reviewer-legacy-fallback.md +14 -0
- package/project-templates/threejs/.claude/agents/refs/reviewer-six-dimension-eval.md +6 -0
- package/project-templates/threejs/.claude/agents/refs/skill-selector-guide.md +465 -0
- package/project-templates/threejs/.claude/agents/refs/skill-value-layers.md +145 -0
- package/project-templates/threejs/.claude/agents/refs/storyboard-generation-guide.md +110 -0
- package/project-templates/threejs/.claude/agents/refs/ta-3d-flip-recipe.md +88 -0
- package/project-templates/threejs/.claude/agents/refs/ta-atlas-deliverable-standard.md +67 -0
- package/project-templates/threejs/.claude/agents/refs/ta-batch-pipeline-recipes.md +120 -0
- package/project-templates/threejs/.claude/agents/refs/ta-image-generation-detail.md +300 -0
- package/project-templates/threejs/.claude/agents/refs/ta-image-ops-reference.md +495 -0
- package/project-templates/threejs/.claude/agents/refs/ta-pipeline-cookbook.md +1141 -0
- package/project-templates/threejs/.claude/agents/refs/ta-tools-reference.md +111 -0
- package/project-templates/threejs/.claude/agents/refs/ta-vfx-preset-catalog.md +365 -0
- package/project-templates/threejs/.claude/agents/refs/technical-artist-legacy-fallback.md +14 -0
- package/project-templates/threejs/.claude/agents/reviewer.md +116 -0
- package/project-templates/threejs/.claude/agents/technical-artist.md +100 -0
- package/project-templates/threejs/.claude/hooks/README.md +120 -0
- package/project-templates/threejs/.claude/hooks/asr-coverage-validate.mjs +381 -0
- package/project-templates/threejs/.claude/hooks/block-developer-preflight.mjs +185 -0
- package/project-templates/threejs/.claude/hooks/block-ring1-tasklist.mjs +95 -0
- package/project-templates/threejs/.claude/hooks/gate-dispatcher.mjs +78 -0
- package/project-templates/threejs/.claude/hooks/gate-runner.mjs +557 -0
- package/project-templates/threejs/.claude/hooks/gate.mjs +171 -0
- package/project-templates/threejs/.claude/hooks/snapshot-milestone.mjs +247 -0
- package/project-templates/threejs/.claude/hooks/user-prompt.mjs +194 -0
- package/project-templates/threejs/.claude/hooks/validate-atom-tree-selection.mjs +281 -0
- package/project-templates/threejs/.claude/hooks/validate-workflow-stop.mjs +1889 -0
- package/project-templates/threejs/.claude/settings.json +81 -0
- package/project-templates/threejs/.claude/skills/brainstorming/SKILL.md +161 -0
- package/project-templates/threejs/.claude/skills/brainstorming/scripts/frame-template.html +270 -0
- package/project-templates/threejs/.claude/skills/brainstorming/scripts/helper.js +177 -0
- package/project-templates/threejs/.claude/skills/brainstorming/scripts/server.cjs +354 -0
- package/project-templates/threejs/.claude/skills/brainstorming/scripts/start-server.sh +148 -0
- package/project-templates/threejs/.claude/skills/brainstorming/scripts/stop-server.sh +56 -0
- package/project-templates/threejs/.claude/skills/brainstorming/scripts/wait-for-selection.sh +62 -0
- package/project-templates/threejs/.claude/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
- package/project-templates/threejs/.claude/skills/brainstorming/visual-companion.md +309 -0
- package/project-templates/threejs/.claude/skills/playcraft-ad-psychology/SKILL.md +182 -0
- package/project-templates/threejs/.claude/skills/playcraft-art-style-guide/SKILL.md +123 -0
- package/project-templates/threejs/.claude/skills/playcraft-asset-state-sheet/SKILL.md +205 -0
- package/project-templates/threejs/.claude/skills/playcraft-audio-generation/SKILL.md +280 -0
- package/project-templates/threejs/.claude/skills/playcraft-batch-pipeline/SKILL.md +184 -0
- package/project-templates/threejs/.claude/skills/playcraft-build-optimizer/SKILL.md +306 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/SKILL.md +298 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/build-sprite-sheet.template.mjs +123 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/compare-style.template.mjs +254 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +324 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +97 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/gen-edit-variants.template.mjs +118 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +137 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +397 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/validate-sprite-sheet.template.mjs +296 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-ops/SKILL.md +122 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-processing/SKILL.md +219 -0
- package/project-templates/threejs/.claude/skills/playcraft-masking/SKILL.md +373 -0
- package/project-templates/threejs/.claude/skills/playcraft-playable-optimization/SKILL.md +161 -0
- package/project-templates/threejs/.claude/skills/playcraft-research/SKILL.md +215 -0
- package/project-templates/threejs/.claude/skills/playcraft-skill-recommender/SKILL.md +331 -0
- package/project-templates/threejs/.claude/skills/playcraft-sprite-generation/SKILL.md +423 -0
- package/project-templates/threejs/.claude/skills/playcraft-sprite-remix/SKILL.md +158 -0
- package/project-templates/threejs/.claude/skills/playcraft-sprite-sheet/SKILL.md +100 -0
- package/project-templates/threejs/.claude/skills/playcraft-storyboard/SKILL.md +167 -0
- package/project-templates/threejs/.claude/skills/playcraft-style-qa/SKILL.md +270 -0
- package/project-templates/threejs/.claude/skills/playcraft-text-rendering/SKILL.md +236 -0
- package/project-templates/threejs/.claude/skills/playcraft-vfx-animation/SKILL.md +130 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/SKILL.md +390 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/element-attributes.md +23 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/playwright-tests.md +39 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/request-mocking.md +87 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/running-code.md +240 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/session-management.md +226 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/spec-driven-testing.md +308 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/storage-state.md +275 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/test-generation.md +134 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/tracing.md +142 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/video-recording.md +153 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/SKILL.md +386 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/execution-breakdown.mjs +182 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/find-turns.mjs +72 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/heavy-output.mjs +121 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/resolve-session.mjs +103 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/subagent-stats.mjs +127 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/subagent-tool-timeline.mjs +106 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/time-gaps.mjs +128 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/turn-timeline.mjs +67 -0
- package/project-templates/threejs/.claude/snapshot.mjs +257 -0
- package/project-templates/threejs/.cursor/hooks.json +17 -0
- package/project-templates/threejs/.cursor/rules/playcraft-orchestrator.mdc +142 -0
- package/project-templates/threejs/.cursor/rules/playcraft-subagent-boundary.mdc +29 -0
- package/project-templates/threejs/.playcraft-engine +1 -0
- package/project-templates/threejs/CHANGELOG.md +105 -0
- package/project-templates/threejs/CLAUDE.md +84 -0
- package/project-templates/threejs/assets/audio/bgm/.gitkeep +0 -0
- package/project-templates/threejs/assets/audio/sfx/.gitkeep +0 -0
- package/project-templates/threejs/assets/bundles/.gitkeep +0 -0
- package/project-templates/threejs/assets/images/bg/.gitkeep +0 -0
- package/project-templates/threejs/assets/images/reference/.gitkeep +0 -0
- package/project-templates/threejs/assets/images/storyboard/.gitkeep +0 -0
- package/project-templates/threejs/assets/images/tiles/.gitkeep +0 -0
- package/project-templates/threejs/assets/images/ui/.gitkeep +0 -0
- package/project-templates/threejs/assets/images/vfx/.gitkeep +0 -0
- package/project-templates/threejs/assets/models/.gitkeep +0 -0
- package/project-templates/threejs/docs/DESIGN.md +65 -0
- package/project-templates/threejs/docs/intent-clarifications.md +58 -0
- package/project-templates/threejs/docs/pipeline-overview.md +69 -0
- package/project-templates/threejs/docs/project-state.md +211 -0
- package/project-templates/threejs/docs/scaffold-manifest.md +10 -0
- package/project-templates/threejs/docs/team/agent-conduct.md +67 -0
- package/project-templates/threejs/docs/team/agent-runtime-matrix.md +80 -0
- package/project-templates/threejs/docs/team/atom-tree-format.md +114 -0
- package/project-templates/threejs/docs/team/collaboration.md +391 -0
- package/project-templates/threejs/docs/team/core-model.md +85 -0
- package/project-templates/threejs/docs/team/game-designer-migration-todo.md +8 -0
- package/project-templates/threejs/docs/team/harness-legacy-deprecation.md +23 -0
- package/project-templates/threejs/docs/team/platform-capabilities.md +18 -0
- package/project-templates/threejs/docs/team/workflow-changelog.md +137 -0
- package/project-templates/threejs/docs/team/workflow-consistency-checklist.md +240 -0
- package/project-templates/threejs/focus-lab/.gitkeep +0 -0
- package/project-templates/threejs/game/config/.gitkeep +0 -0
- package/project-templates/threejs/game/config/game-config.ts +46 -0
- package/project-templates/threejs/game/contract/publish.ts +141 -0
- package/project-templates/threejs/game/contract/types.ts +34 -0
- package/project-templates/threejs/game/gameplay/.gitkeep +0 -0
- package/project-templates/threejs/game/index.ts +76 -0
- package/project-templates/threejs/game/runtime-contract.ts +15 -0
- package/project-templates/threejs/game/scenes/.gitkeep +0 -0
- package/project-templates/threejs/globals.d.ts +51 -0
- package/project-templates/threejs/index.css +34 -0
- package/project-templates/threejs/index.html +18 -0
- package/project-templates/threejs/main.ts +9 -0
- package/project-templates/threejs/package.json +79 -0
- package/project-templates/threejs/skills/README.md +52 -0
- package/project-templates/threejs/skills/_shared/agent-prep.md +136 -0
- package/project-templates/threejs/skills/_shared/requirements.txt +1 -0
- package/project-templates/threejs/skills/_shared/scripts/build-evidence-gate.mjs +87 -0
- package/project-templates/threejs/skills/_shared/scripts/context-budget.mjs +215 -0
- package/project-templates/threejs/skills/_shared/scripts/create-playable.mjs +140 -0
- package/project-templates/threejs/skills/_shared/scripts/dev-start.mjs +151 -0
- package/project-templates/threejs/skills/_shared/scripts/disclosure-config.mjs +480 -0
- package/project-templates/threejs/skills/_shared/scripts/ensure-project.mjs +532 -0
- package/project-templates/threejs/skills/_shared/scripts/gen-placeholder-audio.py +345 -0
- package/project-templates/threejs/skills/_shared/scripts/gen-placeholder.py +244 -0
- package/project-templates/threejs/skills/_shared/scripts/harness-smoke.mjs +257 -0
- package/project-templates/threejs/skills/_shared/scripts/lib/validator-artifacts.mjs +129 -0
- package/project-templates/threejs/skills/_shared/scripts/placeholder-pack-sheet.mjs +67 -0
- package/project-templates/threejs/skills/_shared/scripts/placeholder_audio_lib.py +142 -0
- package/project-templates/threejs/skills/_shared/scripts/placeholder_lib.py +993 -0
- package/project-templates/threejs/skills/_shared/scripts/render-project-state.mjs +278 -0
- package/project-templates/threejs/skills/_shared/scripts/ring-config.mjs +252 -0
- package/project-templates/threejs/skills/_shared/scripts/skills-check.mjs +176 -0
- package/project-templates/threejs/skills/_shared/scripts/slice-set.mjs +77 -0
- package/project-templates/threejs/skills/_shared/scripts/state-advance-ring.mjs +63 -0
- package/project-templates/threejs/skills/_shared/scripts/state-get.mjs +215 -0
- package/project-templates/threejs/skills/_shared/scripts/state-handoff.mjs +120 -0
- package/project-templates/threejs/skills/_shared/scripts/state-set.mjs +113 -0
- package/project-templates/threejs/skills/_shared/scripts/state-store.mjs +893 -0
- package/project-templates/threejs/skills/_shared/scripts/sync-template-skills.mjs +112 -0
- package/project-templates/threejs/skills/_shared/scripts/verify-asset-code-sync.mjs +265 -0
- package/project-templates/threejs/skills/_shared/scripts/verify-atom-conformance.mjs +181 -0
- package/project-templates/threejs/skills/_shared/scripts/verify-env.mjs +285 -0
- package/project-templates/threejs/skills/_shared/scripts/verify-placeholders.mjs +161 -0
- package/project-templates/threejs/skills/_shared/scripts/workflow-doctor.mjs +348 -0
- package/project-templates/threejs/skills/playable-animate/SKILL.md +52 -0
- package/project-templates/threejs/skills/playable-animate/agents/openai.yaml +4 -0
- package/project-templates/threejs/skills/playable-animate/references/board-refresh.md +30 -0
- package/project-templates/threejs/skills/playable-animate/references/diagnosis-checklist.md +25 -0
- package/project-templates/threejs/skills/playable-animate/references/entrance-sequencing.md +33 -0
- package/project-templates/threejs/skills/playable-animate/references/interaction-timing.md +23 -0
- package/project-templates/threejs/skills/playable-art/SKILL.md +203 -0
- package/project-templates/threejs/skills/playable-art/agents/openai.yaml +4 -0
- package/project-templates/threejs/skills/playable-art/references/alpha-postprocess.md +46 -0
- package/project-templates/threejs/skills/playable-art/references/cta-art-spec.md +59 -0
- package/project-templates/threejs/skills/playable-art/references/layout-proportions.md +30 -0
- package/project-templates/threejs/skills/playable-art/references/prompt-patterns.md +83 -0
- package/project-templates/threejs/skills/playable-art/references/reference-comparison.md +30 -0
- package/project-templates/threejs/skills/playable-art/references/sheet-import-v2.md +91 -0
- package/project-templates/threejs/skills/playable-art/scripts/build-atlas.py +332 -0
- package/project-templates/threejs/skills/playable-art/scripts/chroma-key.py +50 -0
- package/project-templates/threejs/skills/playable-art/scripts/extract-alpha-split.py +65 -0
- package/project-templates/threejs/skills/playable-art/scripts/extract-dual-bg-alpha.py +118 -0
- package/project-templates/threejs/skills/playable-art/scripts/import-gpt-art-sheets-v2.py +403 -0
- package/project-templates/threejs/skills/playable-art/scripts/import-gpt-art-sheets.py +280 -0
- package/project-templates/threejs/skills/playable-art/scripts/import-gpt-tile-sheet.py +114 -0
- package/project-templates/threejs/skills/playable-art/scripts/import_gpt_art_pipeline.py +321 -0
- package/project-templates/threejs/skills/playable-art/scripts/import_gpt_art_sheets_v2_test.py +126 -0
- package/project-templates/threejs/skills/playable-art/scripts/placeholder_common.py +98 -0
- package/project-templates/threejs/skills/playable-art/scripts/remove-bg.py +91 -0
- package/project-templates/threejs/skills/playable-art/scripts/review-processed-assets.py +468 -0
- package/project-templates/threejs/skills/playable-art/scripts/review_processed_assets_test.py +116 -0
- package/project-templates/threejs/skills/playable-art/scripts/verify-alpha-clean.py +105 -0
- package/project-templates/threejs/skills/playable-debug/SKILL.md +116 -0
- package/project-templates/threejs/skills/playable-debug/agents/openai.yaml +4 -0
- package/project-templates/threejs/skills/playable-debug/references/debug-config.md +40 -0
- package/project-templates/threejs/skills/playable-focus/SKILL.md +148 -0
- package/project-templates/threejs/skills/playable-focus/scripts/bootstrap-playground.mjs +84 -0
- package/project-templates/threejs/skills/playable-focus/scripts/extract-focus-frames.mjs +87 -0
- package/project-templates/threejs/skills/playable-focus/scripts/generate-focus-reports.mjs +121 -0
- package/project-templates/threejs/skills/playable-focus/scripts/playground.mjs +390 -0
- package/project-templates/threejs/skills/playable-focus/templates/focus-lab/frame.html +39 -0
- package/project-templates/threejs/skills/playable-focus/templates/focus-lab/harness/clean-stage.js +114 -0
- package/project-templates/threejs/skills/playable-focus/templates/focus-lab/harness/frame-lab-scene.js +94 -0
- package/project-templates/threejs/skills/playable-focus/templates/focus-lab/harness/particle-lab-scene.js +224 -0
- package/project-templates/threejs/skills/playable-focus/templates/focus-lab/model.html +16 -0
- package/project-templates/threejs/skills/playable-focus/templates/focus-lab/particle.html +38 -0
- package/project-templates/threejs/skills/playable-focus/templates/focus-lab/shatter.html +47 -0
- package/project-templates/threejs/skills/playable-fx-decompose/SKILL.md +212 -0
- package/project-templates/threejs/skills/playable-fx-decompose/examples.md +89 -0
- package/project-templates/threejs/skills/playable-fx-decompose/reference.md +201 -0
- package/project-templates/threejs/skills/playable-fx-decompose/requirements.txt +2 -0
- package/project-templates/threejs/skills/playable-fx-decompose/scripts/build-blank-tile-crack.py +192 -0
- package/project-templates/threejs/skills/playable-fx-decompose/scripts/fix-shard-debris-frames.py +60 -0
- package/project-templates/threejs/skills/playable-fx-decompose/scripts/generate-shard-debris.py +276 -0
- package/project-templates/threejs/skills/playable-fx-peak/SKILL.md +237 -0
- package/project-templates/threejs/skills/playable-fx-peak/requirements.txt +2 -0
- package/project-templates/threejs/skills/playable-fx-peak/scripts/fix-frame-edges.py +70 -0
- package/project-templates/threejs/skills/playable-fx-peak/scripts/repack-frame-sequence.py +526 -0
- package/project-templates/threejs/skills/playable-fx-peak/scripts/validate-frame-anchors.py +130 -0
- package/project-templates/threejs/skills/playable-placeholder/SKILL.md +239 -0
- package/project-templates/threejs/skills/playable-record/SKILL.md +166 -0
- package/project-templates/threejs/skills/playable-record/scripts/lib/build-artifact.mjs +92 -0
- package/project-templates/threejs/skills/playable-record/scripts/lib/dev-server.mjs +104 -0
- package/project-templates/threejs/skills/playable-record/scripts/lib/record-audio-bridge.js +141 -0
- package/project-templates/threejs/skills/playable-record/scripts/lib/slice-structure-verify.mjs +199 -0
- package/project-templates/threejs/skills/playable-record/scripts/record-playable.mjs +583 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-build.mjs +185 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-contract.mjs +261 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-firstwin.mjs +398 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-fusion.mjs +320 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-lifecycle.mjs +78 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-slice-artist.mjs +53 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-slice-ta.mjs +53 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-slice.mjs +142 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-visual-ring.mjs +250 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-visual-ring1.mjs +190 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-vlm-video.mjs +227 -0
- package/project-templates/threejs/skills/playable-validate/SKILL.md +260 -0
- package/project-templates/threejs/skills/playable-validate/references/checklist-detail.md +36 -0
- package/project-templates/threejs/skills/playable-validate/references/single-html-bundle.md +76 -0
- package/project-templates/threejs/skills/playable-validate/validation-rules.md +200 -0
- package/project-templates/threejs/skills/playable-verify-ui/SKILL.md +295 -0
- package/project-templates/threejs/skills/playable-verify-ui/examples/asset-manifest.example.json +36 -0
- package/project-templates/threejs/skills/playable-verify-ui/examples/mahjong-match.profile.yaml +334 -0
- package/project-templates/threejs/skills/playable-verify-ui/profiles/template.profile.yaml +84 -0
- package/project-templates/threejs/skills/playable-verify-ui/reference.md +165 -0
- package/project-templates/threejs/skills/playable-verify-ui/references/phaser-patterns.md +67 -0
- package/project-templates/threejs/skills/playable-verify-ui/references/scaling-decision-tree.md +51 -0
- package/project-templates/threejs/skills/playable-verify-ui/requirements.txt +7 -0
- package/project-templates/threejs/skills/playable-verify-ui/schema/asset-manifest.schema.json +68 -0
- package/project-templates/threejs/skills/playable-verify-ui/schema/playable-ui-profile.schema.json +171 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/asset_manifest.py +231 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/__init__.py +1 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/config_expr.js +218 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/node_utils.js +51 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/profile_loader.py +59 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/report.py +106 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/runtime_contract.js +116 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/measure_frame_content.py +77 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/run_all.py +265 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_asset_sizes.py +77 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_assets_present.py +62 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_atlas_budget.py +84 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_atlas_frames.py +79 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_bg_clean.py +365 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_doc_asset_sync.py +90 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_fetch_antipatterns.py +59 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_game_config_load.js +54 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_hardcoded_layout.js +64 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_layout_regions.js +110 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_profile_schema.py +37 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_ring1_visual.py +211 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_runtime_contract.js +58 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_script_load_order.js +73 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_slice_plan.py +238 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_slice_plan_test.py +125 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_text_overlap.py +333 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_tile_consistency.py +323 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_vision_evidence.py +894 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_vision_evidence_test.py +122 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_visual.py +422 -0
- package/project-templates/threejs/ta-workspace/scripts/.gitkeep +0 -0
- package/project-templates/threejs/templates/artist-log.template.md +182 -0
- package/project-templates/threejs/templates/atom-tree.template.json +133 -0
- package/project-templates/threejs/templates/design-brief.template.md +92 -0
- package/project-templates/threejs/templates/design-lens-checklist.reference.md +117 -0
- package/project-templates/threejs/templates/design-methodology.md +99 -0
- package/project-templates/threejs/templates/design.template.md +50 -0
- package/project-templates/threejs/templates/developer-log.template.md +258 -0
- package/project-templates/threejs/templates/five-axis-framework.md +194 -0
- package/project-templates/threejs/templates/gen-placeholder-audio.template.mjs +63 -0
- package/project-templates/threejs/templates/gen-placeholders.template.mjs +81 -0
- package/project-templates/threejs/templates/intent-clarifications.template.md +58 -0
- package/project-templates/threejs/templates/layout-spec.template.md +198 -0
- package/project-templates/threejs/templates/plan.template.md +80 -0
- package/project-templates/threejs/templates/project-state.template.md +136 -0
- package/project-templates/threejs/templates/review-report.template.md +275 -0
- package/project-templates/threejs/templates/style-exploration.template.md +93 -0
- package/project-templates/threejs/templates/ta-log.template.md +394 -0
- package/project-templates/threejs/tsconfig.json +20 -0
- package/project-templates/threejs/vite.config.ts +27 -0
- package/dist/atom-plan/validate-atom-plan.js +0 -298
- package/dist/playable/base-builder.js +0 -265
- package/dist/playable/builder.js +0 -1462
- package/dist/playable/converter.js +0 -150
- package/dist/playable/index.js +0 -3
- package/dist/playable/platforms/base.js +0 -12
- package/dist/playable/platforms/facebook.js +0 -37
- package/dist/playable/platforms/index.js +0 -24
- package/dist/playable/platforms/snapchat.js +0 -59
- package/dist/playable/playable-builder.js +0 -521
- package/dist/playable/types.js +0 -1
- package/dist/playable/vite/config-builder.js +0 -136
- package/dist/playable/vite/platform-configs.js +0 -102
- package/dist/playable/vite/plugin-model-compression.js +0 -63
- package/dist/playable/vite/plugin-platform.js +0 -65
- package/dist/playable/vite/plugin-playcanvas.js +0 -454
- package/dist/playable/vite-builder.js +0 -125
- package/project-template/.claude/agents/designer.md +0 -124
- package/project-template/.claude/agents/pm.md +0 -166
- package/project-template/.claude/agents/refs/designer-style-exploration-flow.md +0 -67
- package/project-template/.claude/agents/refs/pm-workflow-detail.md +0 -567
- package/project-template/.claude/hooks/validate-atom-plan.mjs +0 -224
- package/project-template/.claude/settings.local.json +0 -4
- package/project-template/.claude/skills/playcraft-workflow/SKILL.md +0 -485
- package/project-template/docs/team/atom-plan-format.md +0 -173
- package/project-template/templates/atom-plan.template.json +0 -44
- package/project-template/templates/atom-plan.template.md +0 -108
- /package/dist/{atom-plan → asr}/validate-asr-coverage.js +0 -0
- /package/{project-template → engine-packs/phaser}/game/config/.gitkeep +0 -0
- /package/{project-template → engine-packs/phaser}/game/gameplay/.gitkeep +0 -0
- /package/{project-template → engine-packs/phaser}/game/scenes/.gitkeep +0 -0
- /package/{project-template/logs → engine-packs/threejs/game/config}/.gitkeep +0 -0
- /package/{project-template/ta-workspace/logs → engine-packs/threejs/game/gameplay}/.gitkeep +0 -0
- /package/{project-template/ta-workspace/tmp → engine-packs/threejs/game/scenes}/.gitkeep +0 -0
- /package/project-template/.claude/agents/refs/{designer-art-style-catalog.md → artist-art-style-catalog.md} +0 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# Atom Tree Format
|
|
2
|
+
|
|
3
|
+
`docs/atom-tree.json` is the canonical machine-readable selection and product contract for the playable.
|
|
4
|
+
|
|
5
|
+
Ring 1 uses it as a compact selection manifest. Rings 2+ may grow the optional product tree as more gameplay, layout, and production detail is disclosed:
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
docs/atom-tree.json
|
|
9
|
+
├── meta.engineDecision required in ring 1
|
|
10
|
+
├── meta.skillsMatch required in ring 1
|
|
11
|
+
├── meta.selectedAtoms required in ring 1
|
|
12
|
+
├── meta.selectionRevisions optional revision log
|
|
13
|
+
├── meta.rings required gate metadata
|
|
14
|
+
├── engine required engine atom
|
|
15
|
+
├── globals optional ring 2+
|
|
16
|
+
├── scenes optional ring 2+
|
|
17
|
+
└── review optional review evidence
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Required Shape
|
|
21
|
+
|
|
22
|
+
```jsonc
|
|
23
|
+
{
|
|
24
|
+
"meta": {
|
|
25
|
+
"atomTreeSchemaVersion": 1,
|
|
26
|
+
"gate": 1,
|
|
27
|
+
"engineDecision": {
|
|
28
|
+
"mode": "explicit|inferred|unset",
|
|
29
|
+
"engine": "phaser",
|
|
30
|
+
"engineAtom": "phaser.aicomponent",
|
|
31
|
+
"adapter": "phaser",
|
|
32
|
+
"reason": "2D tile puzzle + tween/input/UI-heavy playable",
|
|
33
|
+
"runtimeContract": "window.__playable",
|
|
34
|
+
},
|
|
35
|
+
"skillsMatch": {
|
|
36
|
+
"engine": "phaser",
|
|
37
|
+
"engineSource": "explicit|inferred",
|
|
38
|
+
"intent": ["match3", "grid"],
|
|
39
|
+
"items": [{ "atomId": "match3_core.aigameplay" }],
|
|
40
|
+
"mediaGroups": [],
|
|
41
|
+
},
|
|
42
|
+
"selectedAtoms": ["match3_core.aigameplay", "phaser.aicomponent"],
|
|
43
|
+
"selectionRevisions": [],
|
|
44
|
+
"rings": {
|
|
45
|
+
"1": {
|
|
46
|
+
"goal": "first playable loop",
|
|
47
|
+
"requiredPaths": ["engine"],
|
|
48
|
+
"verifiers": ["contract", "lifecycle", "firstLevelWin", "placeholders"],
|
|
49
|
+
"acceptanceKeys": ["contract", "lifecycle", "firstLevelWin", "placeholders"],
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
"engine": "phaser.aicomponent",
|
|
54
|
+
"globals": {},
|
|
55
|
+
"scenes": [],
|
|
56
|
+
"review": {},
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Field Rules
|
|
61
|
+
|
|
62
|
+
- `meta.engineDecision` records the chosen engine root and the scaffold adapter. If engine choice is ambiguous, ask one question or set `designerAutoDecide=true` before scaffold.
|
|
63
|
+
- `meta.skillsMatch` is written by `playcraft skills init-atom-tree`.
|
|
64
|
+
- `meta.selectedAtoms` is the only source used by `playcraft skills link --from-atom-tree`.
|
|
65
|
+
- `meta.rings[N]` defines the minimum verifiable slice for ring gate.
|
|
66
|
+
- `engine` is required for scaffold. `globals` and `scenes` describe the product/content tree only when the current ring discloses enough detail.
|
|
67
|
+
- `review` stores structured review evidence when needed.
|
|
68
|
+
|
|
69
|
+
## Engine Adapter Boundary
|
|
70
|
+
|
|
71
|
+
Fast Ring 1 assembly is selection-driven, not Phaser-specific:
|
|
72
|
+
|
|
73
|
+
```text
|
|
74
|
+
user intent
|
|
75
|
+
→ skills match
|
|
76
|
+
→ meta.engineDecision
|
|
77
|
+
→ compact selectedAtoms
|
|
78
|
+
→ selected engine adapter
|
|
79
|
+
→ scaffold/runtime wiring
|
|
80
|
+
→ neutral verifier contract
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Examples:
|
|
84
|
+
|
|
85
|
+
| engineAtom | adapter | Typical first scaffold |
|
|
86
|
+
| ------------------------ | ------------ | ----------------------------------------------------------- |
|
|
87
|
+
| `phaser.aicomponent` | `phaser` | 2D (Two-Dimensional, 二维) scene, pointer input, tween loop |
|
|
88
|
+
| `threejs.aicomponent` | `threejs` | 3D (Three-Dimensional, 三维) scene, camera, raycast input |
|
|
89
|
+
| `playcanvas.aicomponent` | `playcanvas` | PlayCanvas scene/app bridge |
|
|
90
|
+
| `canvas2d.aicomponent` | `canvas2d` | Canvas loop + pointer input |
|
|
91
|
+
|
|
92
|
+
All adapters must expose the same neutral runtime contract: `window.__playable`.
|
|
93
|
+
Do not attach harness methods such as `start()` or `autoPlay()` to the engine object itself.
|
|
94
|
+
|
|
95
|
+
## Companion Markdown
|
|
96
|
+
|
|
97
|
+
`docs/atom-tree.md` is optional and generated with:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
playcraft skills gen-atom-tree-md
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
It is only a reading guide for selected Skills. Do not use it as a second contract.
|
|
104
|
+
|
|
105
|
+
## Do Not Add
|
|
106
|
+
|
|
107
|
+
- `assignTo`
|
|
108
|
+
- workflow `status`
|
|
109
|
+
- `actualOutput`
|
|
110
|
+
- implementation steps
|
|
111
|
+
- chat history
|
|
112
|
+
- implementation step tracking
|
|
113
|
+
|
|
114
|
+
Those belong in `implementation-plan.md`, `project-state.md`, and role logs.
|
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
# Agent Collaboration Reference
|
|
2
|
+
|
|
3
|
+
> **Workflow spec**: `growth-rings-v1` — four growth rings, each with inner loops `clarify → build → verify → Ring Gate`.
|
|
4
|
+
|
|
5
|
+
## Role Quick Index
|
|
6
|
+
|
|
7
|
+
Each role only needs specific sections of this document. Use this table to skip to what matters for you.
|
|
8
|
+
|
|
9
|
+
| Role | Read these sections |
|
|
10
|
+
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
11
|
+
| **Orchestrator** | All (this is your primary protocol doc) |
|
|
12
|
+
| **dispatchPacket** | Machine dispatch unit: `role + doWhat + flow + sliceId` from `npm run state:get`; supersedes ring-loop invoke wording when active slice exists |
|
|
13
|
+
| **Game Designer** | § STOP sync checklist, § Agent Handoff, § Four-doc discipline, § Spec Gap Protocol, § ICP |
|
|
14
|
+
| **Developer** | § STOP sync checklist, § Agent Handoff, § Developer in build loop, § Spec Gap Protocol, § Spec Quick-Check, § ICP, § Upstream rework routing |
|
|
15
|
+
| **Artist** | § STOP sync checklist, § Agent Handoff, § Four-doc discipline, § ICP, § MC five panels |
|
|
16
|
+
| **Technical Artist** | § STOP sync checklist, § Agent Handoff, § Four-doc discipline, § Spec Quick-Check, § ICP |
|
|
17
|
+
| **Reviewer** | § STOP sync checklist, § Agent Handoff, § UI rework sequence |
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Glossary
|
|
22
|
+
|
|
23
|
+
Canonical terms used across `CLAUDE.md`, agent L1 files, and `refs/`. Prefer the **Canonical** column in new edits.
|
|
24
|
+
|
|
25
|
+
| Canonical | Also called | Meaning |
|
|
26
|
+
| -------------------------------- | ------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
27
|
+
| **Growth ring** (iteration 1..4) | iteration, ring | Outer loop climbing the atom-tree: engine root → periphery → hook/CTA → production |
|
|
28
|
+
| **Inner loop** | clarify / build / verify | Per-ring collaboration cycle before Ring Gate |
|
|
29
|
+
| **Ring Gate** | user_gate, ring acceptance | One orchestrator-only user acceptance per ring after objective DoD passes (`npm run ring:gate`) |
|
|
30
|
+
| **Ring DoD** | ringDoD, objective DoD | Machine-checkable verifiers per ring (`verify:contract`, `verify:lifecycle`, `verify:firstwin`, `record:mp4`, `verify:ui`, `playable_validate`, `ui_diff`, `verify:ui:assets`, …) |
|
|
31
|
+
| **Ring 1 package** (minimal) | playable seed + compact atom selection | Ring 1 clarify deliverable: a concise `docs/DESIGN.md` playable seed (player action, immediate feedback, progress signal, first win, semantic placeholders, engine hint). Then a temporary ref-flow subagent creates compact `atom-tree.*` selection for scaffold only; no design-brief/layout/full product tree in ring 1 |
|
|
32
|
+
| **Handoff Context** | shared working memory | Structured `handoffContext` in `docs/project-state.json`. `state:get` exposes it as `contextPacket`; agents read it before artifact refs and write it on STOP. Markdown docs remain contracts/evidence, not the default cross-role memory. |
|
|
33
|
+
| **Asset Contract** | Asset Path Contract, assetMapping contract | `layout-spec.md` `assetMapping` paths — **locked only after ring 4** (`assetMappingLocked: true`) |
|
|
34
|
+
| **devUrl** | Dev URL, preview link | Local Dev server URL from `npm run dev`; orchestrator shares at each Ring Gate; user never runs dev themselves. **Always append `?debug=1`** so the on-screen one-click clear (debug) button is shown — every shared/recorded devUrl must carry `?debug=1` |
|
|
35
|
+
| **Artist depth by ring** | — | Ring 1–2: placeholder; Ring 3: ASR + style lock; Ring 4 Wave 1: audio + digit |
|
|
36
|
+
| **ASR Coverage Matrix** | — | `artist-log` table: every contract id → ASR slot; mandatory before ring 3 verify |
|
|
37
|
+
| **Palette Locked** | — | MC-sampled hex in `artist-log`; delta vs `layout-spec` |
|
|
38
|
+
| **growth-rings-v1** | workflow spec version | Current workflow; supersedes `convergence-v1`, `production-serial-v1`, waterfall stages |
|
|
39
|
+
| **design_check** | Reviewer mode (legacy) | Soft checklist — completeness only; use sparingly in growth-rings; prefer ring DoD verifiers |
|
|
40
|
+
| **gameplay_conformance** | Reviewer mode (ring 2+ review-backed DoD) | Verify DESIGN.md conformance + Skill usage evidence + playwright-cli path reachability; fill `gameplayConformance: pass/fail` in § Ring DoD Fields — `ring:gate` enforces it like `hookCta`/`uiDiff` |
|
|
41
|
+
| **ui_diff** | Reviewer mode | Browser screenshots vs locked ASR; routes UI rework (max 5 rounds) during ring 4 verify |
|
|
42
|
+
| **load_check** | Reviewer mode | Page loads + no console errors; no gameplay walkthrough |
|
|
43
|
+
| **playable_validate** | Reviewer mode | Ring 3+: hook/CTA + headed MP4 rules |
|
|
44
|
+
| **Production Pipeline** | serial waves in `project-state` | Ring 4 only: Wave 1 Artist (audio + digit) → Wave 2 TA (bulk production) |
|
|
45
|
+
| **Four-doc discipline** | 四件套写作纪律 | Game Designer/Artist: contracts only in four docs; narrative in style-exploration + artist-log; TA/Dev intake: agent-conduct + log templates |
|
|
46
|
+
| **TA Step 0 / 1 / 2** | (not "Phase") | **TA cookbook only**: Step 0 = Skill Discovery; Step 1 = Asset Completion; Step 2 = Technical Pipeline — TA runs all three in one ring 4 build invoke |
|
|
47
|
+
| **uiReworkRound** | — | Counts **ui_diff failures** (0 → 5 max) during ring 4 verify; at 5 → orchestrator decision |
|
|
48
|
+
| **ICP** | Intent Clarification Protocol | Async agent Q&A in `docs/intent-clarifications.md`; orchestrator does not interrupt user |
|
|
49
|
+
| **MC** | Master Composite | Five 9:16 panels in one image: concept panel + Hook / Onboarding / End Card / CTA storyboards (ring 3+) |
|
|
50
|
+
| **ASR** | Asset State Reference Sheet | UI + element state reference sheets; ring 3 build output; TA crop source in ring 4 |
|
|
51
|
+
| **archivedRings** | non-regression snapshot | Prior rings' passed DoD; must stay green when advancing iteration |
|
|
52
|
+
| **Single developer build owner** | Developer | Developer owns every ring's `build` loop: intake, read/load, implementation, integration, `devStatus` / `devUrl` / `devBlockers` |
|
|
53
|
+
|
|
54
|
+
## Mission vs Role vs Workflow
|
|
55
|
+
|
|
56
|
+
| Layer | Location | Purpose |
|
|
57
|
+
| ---------------- | -------------------------------- | ------------------------------------------------------------------------------------- |
|
|
58
|
+
| **Team Mission** | `CLAUDE.md` § Mission | Shared vision — why we build playable ads |
|
|
59
|
+
| **Role Card** | `.claude/agents/<role>.md` | Who the role is, what it owns, boundaries, success criteria, workflow interface |
|
|
60
|
+
| **Workflow** | `refs/` + dispatch-specific docs | How to execute the current task; varies by iteration/loop and orchestrator assignment |
|
|
61
|
+
|
|
62
|
+
When instructions conflict: role ownership in the role card wins over workflow shortcuts. Enforceable MUST/NEVER: [agent-conduct.md](agent-conduct.md).
|
|
63
|
+
|
|
64
|
+
## Ring Gate Protocol (Orchestrator-Only)
|
|
65
|
+
|
|
66
|
+
Only the **Orchestrator** (main session) may use `AskUserQuestion` for **Ring Gate** confirmations. Sub-agents prepare materials, update `project-state`, then **STOP**.
|
|
67
|
+
|
|
68
|
+
**Slice axis first**: When `state:get` reports `dispatchMode: true`, orchestrator dispatches by **`dispatchPacket` only** — do not tell subagents "Ring N build/verify". Ring Gate runs only after slice queue + objective DoD allow (see Knife 9).
|
|
69
|
+
|
|
70
|
+
**Objective DoD first**: Before any Ring Gate, orchestrator runs `npm run ring:gate -- --iteration N`. The script spawns verifiers, checks non-regression of prior rings, and sets `ringGateCanAskUser`. If it fails, route back to the owning agent — **do not** ask the user.
|
|
71
|
+
|
|
72
|
+
**Exception**: Game Designer uses `AskUserQuestion` for gameplay brainstorm/clarification during `loop: clarify` — this is requirement gathering, NOT a Ring Gate.
|
|
73
|
+
|
|
74
|
+
### Ring 1 engine scaffold (orchestrator, before build)
|
|
75
|
+
|
|
76
|
+
After Game Designer ring 1 clarify STOP and **before** invoking `@developer`:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
temporary ref-flow atom-selection subagent # creates compact docs/atom-tree.json
|
|
80
|
+
playcraft skills validate-atom-tree-selection
|
|
81
|
+
playcraft remix init-template --from-atom-tree
|
|
82
|
+
npm install && npm run verify:contract && npm run verify:lifecycle
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
- Writes `game/` from `engine-packs/{phaser|threejs}`, `.playcraft-engine`, and `docs/scaffold-manifest.md`.
|
|
86
|
+
- `npm run workflow:doctor` **BLOCKED** if `.playcraft-engine` ≠ `meta.engineDecision.adapter`, or if marker missing during ring 1 `loop: build`.
|
|
87
|
+
- **Do not** silently overwrite `game/` during selection — engine scaffold is always explicit via `init-template`.
|
|
88
|
+
|
|
89
|
+
See [core-model.md § Command Contract](core-model.md#command-contract) and [harness-legacy-deprecation.md](harness-legacy-deprecation.md).
|
|
90
|
+
|
|
91
|
+
### Per-ring flow
|
|
92
|
+
|
|
93
|
+
| Step | Loop | Agent(s) | STOP → next |
|
|
94
|
+
| ---- | ------- | ----------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
95
|
+
| 1 | clarify | `@game-designer` → temporary ref-flow selector | Orchestrator → ring 1: context packet + compact atom selection → `init-template` + `verify:contract` first → `loop: build` → `@developer` |
|
|
96
|
+
| 2 | build | `@developer` (+ Artist/TA per ring) | Ring 1: Developer self-gate (`verify:contract` + `verify:lifecycle` + `verify:firstwin` + `verify:placeholders`) → `loop: verify` → orchestrator `ring:gate`; ring 2+: → `loop: verify` → `@reviewer` |
|
|
97
|
+
| 3 | verify | ring 1: orchestrator only; ring 2+: `@reviewer` | Orchestrator → `npm run ring:gate -- --iteration N` |
|
|
98
|
+
| 4 | — | **Orchestrator only** | If pass → Ring Gate `AskUserQuestion` at devUrl → archive ring → `iteration+1`, `loop: clarify` |
|
|
99
|
+
|
|
100
|
+
### Ring DoD by iteration
|
|
101
|
+
|
|
102
|
+
| Ring | Objective DoD (via `ring:gate`) |
|
|
103
|
+
| ----- | ----------------------------------------------------------------------------------------------------------------------------------- |
|
|
104
|
+
| **1** | `verify:contract` + `verify:lifecycle` (HOOK → autoPlay → ENDCARD) + `verify:firstwin` + `verify:placeholders` |
|
|
105
|
+
| **2** | Ring 1 DoD + disclosed UI / MP4 evidence gates |
|
|
106
|
+
| **3** | Ring 2 DoD + Reviewer `playable_validate` (hook/CTA) |
|
|
107
|
+
| **4** | Ring 3 DoD + Reviewer `ui_diff` + `verify:ui:assets` + `verify:atom-conformance` (when present) + `verify:visual` (when ASR locked) |
|
|
108
|
+
|
|
109
|
+
After ring 4 Ring Gate pass → project **done** (user accepts devUrl; not `playcraft build`).
|
|
110
|
+
|
|
111
|
+
Sub-agent pattern: **write artifacts → update `handoffContext` + routing handoff + ringDoD → STOP (no user questions).**
|
|
112
|
+
|
|
113
|
+
## Agent Handoff
|
|
114
|
+
|
|
115
|
+
State lives in **`docs/project-state.json`** (machine source of truth). `docs/project-state.md` is a GENERATED, read-only view (including the `## Agent handoff` YAML fence) re-rendered after every write. **Read with `npm run state:get`, write with `npm run state:set` / `npm run ring:gate`. Never open or hand-edit the markdown.**
|
|
116
|
+
|
|
117
|
+
There are two handoff layers:
|
|
118
|
+
|
|
119
|
+
- `handoffContext` = shared working memory for the next role. It records ring summary, last role decisions/evidence, next role facts, stable shared decisions, and blockers.
|
|
120
|
+
- `handoff` YAML fields = routing flags for STOP / resume / Ring Gate.
|
|
121
|
+
|
|
122
|
+
Agents read `contextPacket` from `state:get` first, then open only required files or artifact refs named in that packet. Logs and markdown docs are traceable evidence, not the default memory every role must reload.
|
|
123
|
+
|
|
124
|
+
| Field | Writer | Meaning |
|
|
125
|
+
| -------------------------- | ------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
126
|
+
| `iteration` | Orchestrator on ring advance | Current growth ring 1..4 |
|
|
127
|
+
| `loop` | Orchestrator on loop transition | `clarify` \| `build` \| `verify` |
|
|
128
|
+
| `ringGoal` | Orchestrator / Designer on clarify | Human-readable ring scope |
|
|
129
|
+
| `ringGate` | Sub-agent on verify STOP | `pending` until orchestrator confirms user acceptance |
|
|
130
|
+
| `ringDoD` | Sub-agents + `ring:gate` runner | Objective verifier status map |
|
|
131
|
+
| `archivedRings` | Orchestrator on Ring Gate pass | Non-regression snapshot of prior rings |
|
|
132
|
+
| `subagent` | Sub-agent on STOP | Role that just finished (`game-designer`, temporary `skill-selector`/`ref-flow`, `artist`, `technical-artist`, `developer`, `reviewer`, `none`) |
|
|
133
|
+
| `subagent_stop` | Sub-agent on STOP | `true` = do not continue until orchestrator acts |
|
|
134
|
+
| `waiting_for` | Sub-agent: `orchestrator` on STOP; Orchestrator: `user_gate` only after `ringGateCanAskUser: yes` | `user_gate` = Ring Gate only; `orchestrator` = wait for invoke; `none` = active work |
|
|
135
|
+
| `next_orchestrator_action` | Sub-agent on STOP (**required**) | One sentence: the **only** legal next step for orchestrator |
|
|
136
|
+
| `last_completed_by` | Sub-agent on STOP | Same as `subagent` or action label |
|
|
137
|
+
| `block_reason` | Optional | Why pipeline cannot advance |
|
|
138
|
+
|
|
139
|
+
### `handoffContext` structure
|
|
140
|
+
|
|
141
|
+
| Field | Writer | Meaning |
|
|
142
|
+
| ----------------- | ---------------------------- | ---------------------------------------------------------------------------------------- |
|
|
143
|
+
| `ring` | Orchestrator / gate runner | Current ring summary, goal, and passed DoD (Definition of Done, 完成定义) |
|
|
144
|
+
| `lastRole` | Stopping sub-agent | Previous role summary, key decisions, `artifactRefs`, validation results, blockers |
|
|
145
|
+
| `nextRole` | Stopping sub-agent | Next role, must-know facts, required files, forbidden full-read files, artifact refs |
|
|
146
|
+
| `sharedDecisions` | Roles as decisions stabilize | Cross-role stable facts: engine, core action, semantic placeholders, asset contract refs |
|
|
147
|
+
| `openQuestions` | Any role | Only unresolved questions that block the next step |
|
|
148
|
+
|
|
149
|
+
**Orchestrator loop:** read handoff → if `waiting_for: user_gate` and `ringGateCanAskUser: yes` → Ring Gate only → else if `subagent_stop` → execute `next_orchestrator_action` → reset handoff before invoke.
|
|
150
|
+
|
|
151
|
+
**Sub-agent verify STOP:** set `waiting_for: orchestrator` and `next_orchestrator_action: npm run ring:gate -- --iteration N` — **never** `waiting_for: user_gate`.
|
|
152
|
+
|
|
153
|
+
**Sub-agent loop:** read handoff → if already stopped for this role → refuse duplicate work → else read role card + workflow → update handoff → append `--- PLAYCRAFT_STOP ---` footer.
|
|
154
|
+
|
|
155
|
+
### Updating handoff (use `state:set`, never hand-edit md)
|
|
156
|
+
|
|
157
|
+
Agents **must** update state via the CLI helper — do **not** use `python3 -c`, `sed`, or edit `docs/project-state.md`/`.json` by hand (error-prone, and md edits are overwritten on the next render):
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
npm run state:get -- iteration loop subagent_stop waiting_for
|
|
161
|
+
npm run state:set -- contextRole=game-designer contextSummary="Playable seed locked: tap target -> immediate feedback -> first win" contextNextRole=ref-flow contextArtifactRefs=docs/DESIGN.md contextCoreAction="tap target" contextSemanticPlaceholders="player;target;feedback;reward" contextMustKnow="Use DESIGN.md as playable seed only; select engine + compact gameplay trunk" contextRequiredFiles="docs/DESIGN.md"
|
|
162
|
+
npm run state:set -- subagent_stop=true waiting_for=orchestrator next_orchestrator_action="Spawn temporary ref-flow atom-selection subagent for ring 1 atom-tree selection" last_completed_by=game-designer
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
- Values with spaces: quote the whole `key=value` in shell, or pass as `next_orchestrator_action="npm run ring:gate -- --iteration 1"`.
|
|
166
|
+
- Keys route automatically: handoff keys → handoff block; `devStatus` / `devUrl` / `loadCheck` / `uiReviewStatus` / … → Dev Preview; `ringGate*` → Ring Gate Runner. The renderer always emits every table, so a write never silently no-ops on a missing row.
|
|
167
|
+
- Structured sub-operations: `npm run state:set -- --checkpoint "ring 1 self-gate passed" --by developer` appends a Progress Checkpoint; `npm run state:set -- --wave id=1 owner=artist status=done` sets a Production Pipeline wave row.
|
|
168
|
+
- Read single keys with `npm run state:get -- --json waiting_for next_orchestrator_action` to avoid pulling the whole state.
|
|
169
|
+
- Full context patch: `npm run state:set -- handoffContextPatch='{"lastRole":{"validation":["verify:firstwin pass"]}}'`.
|
|
170
|
+
|
|
171
|
+
## Developer in `build` loop
|
|
172
|
+
|
|
173
|
+
`developer` is the **build-loop owner** for every growth ring.
|
|
174
|
+
|
|
175
|
+
During `loop: build`, Developer is responsible for:
|
|
176
|
+
|
|
177
|
+
- upstream intake and Spec Quick-Check (depth scales per ring)
|
|
178
|
+
- read/load of current on-disk code, scaffolded code, linked assets, and Skill refs
|
|
179
|
+
- placeholder materialization (`playable-placeholder` skill) in rings 1–3
|
|
180
|
+
- implementation and integration
|
|
181
|
+
- feature-checklist review (ring 2+)
|
|
182
|
+
- `npm run dev`, `devStatus`, `devUrl`, and `devBlockers`
|
|
183
|
+
|
|
184
|
+
`logs/developer-log.md` is the development truth log: intake, read/load notes, feature checklist, verification, blockers, and readiness rationale.
|
|
185
|
+
|
|
186
|
+
## STOP sync checklist
|
|
187
|
+
|
|
188
|
+
On every sub-agent STOP, update **in order** (see [agent-conduct.md § Invoke protocol](agent-conduct.md#invoke-protocol-all-sub-agents)):
|
|
189
|
+
|
|
190
|
+
1. **handoff** — `npm run state:set -- subagent_stop=true waiting_for=orchestrator next_orchestrator_action="…" last_completed_by=<role>` — **do not** transition `iteration` / `loop`.
|
|
191
|
+
2. **ringDoD** — set fields Reviewer or build loop completed (`npm run state:set -- …` or `npm run ring:gate`).
|
|
192
|
+
3. **Progress Checkpoint** — `npm run state:set -- --checkpoint "<action/outcome>" --by <role>` (programmatic append; never hand-write a table row).
|
|
193
|
+
4. **Production Pipeline** — when ring 4 build, `npm run state:set -- --wave id=N owner=<role> status=done notes="…"` when a wave completes.
|
|
194
|
+
5. **Plan convergence (TA / Developer / Reviewer / Game Designer)** — required logs and handoff fields complete. Hook `validate-workflow-stop.mjs` enforces on STOP.
|
|
195
|
+
|
|
196
|
+
Example Production Pipeline (ring 4):
|
|
197
|
+
|
|
198
|
+
| Wave | Agent | Status | Notes |
|
|
199
|
+
| ---- | ---------------- | ------ | ------------------------------- |
|
|
200
|
+
| 1 | Artist | done | Ph.2: BGM + SFX + digit strip |
|
|
201
|
+
| 2 | Technical Artist | done | All TA atoms + Compliance green |
|
|
202
|
+
|
|
203
|
+
Checkpoint is a **human log** for evidence — **not** the routing source (`handoff`) or shared working memory (`handoffContext`).
|
|
204
|
+
|
|
205
|
+
## Iteration field ownership
|
|
206
|
+
|
|
207
|
+
| Field / transition | Writer |
|
|
208
|
+
| ---------------------------------------------- | ------------------------------------------ |
|
|
209
|
+
| `iteration`, `loop`, `ringGoal` | **Orchestrator only** (on handoff execute) |
|
|
210
|
+
| `ringGate: passed` + `archivedRings` update | **Orchestrator** after Ring Gate pass |
|
|
211
|
+
| `ringDoD` verifier fields | Sub-agents + `ring:gate` runner |
|
|
212
|
+
| `selectedMcOption` | Orchestrator during ring 3 style lock |
|
|
213
|
+
| `assetMappingLocked: true` | Orchestrator after ring 4 Ring Gate pass |
|
|
214
|
+
| `devStatus`, `devUrl`, `devBlockers` | Developer |
|
|
215
|
+
| `uiReviewStatus`, `uiReworkRound`, `loadCheck` | Reviewer |
|
|
216
|
+
|
|
217
|
+
Sub-agents **MUST NOT** change `iteration` or `loop`. They request orchestrator via `next_orchestrator_action`.
|
|
218
|
+
|
|
219
|
+
## UI rework sequence (ring 4 verify, orchestrator-owned)
|
|
220
|
+
|
|
221
|
+
During ring 4 `loop: verify`:
|
|
222
|
+
|
|
223
|
+
1. **Reviewer** (`ui_diff`) — screenshots vs locked ASR → fail: UI Diff Report in `review-report.md`, `uiReworkRound` +1, handoff `next_orchestrator_action: "Invoke routed agents per review-report, then @reviewer ui_diff"` → STOP.
|
|
224
|
+
2. **Orchestrator** — invoke `@developer` / `@technical-artist` / `@artist` per Action Items (`routeTo`).
|
|
225
|
+
3. **Fix agents** — apply fixes → handoff `Invoke @reviewer ui_diff` → STOP.
|
|
226
|
+
4. **Orchestrator** — invoke `@reviewer ui_diff` again; on pass → `npm run ring:gate -- --iteration 4` → Ring Gate.
|
|
227
|
+
|
|
228
|
+
Max **5** UI rework rounds (`uiReworkRound`). At 5 → orchestrator decision (proceed to Ring Gate or escalate to user).
|
|
229
|
+
|
|
230
|
+
Gameplay quality = user judgment at Ring Gate — Reviewer checks conformance + load safety only.
|
|
231
|
+
|
|
232
|
+
## Optimization sequence (optional, ring 4+)
|
|
233
|
+
|
|
234
|
+
Optional deep pass after ring 4 `ui_diff` pass and before final Ring Gate (or user requests "optimize"):
|
|
235
|
+
|
|
236
|
+
1. **Orchestrator** — invoke `@reviewer playable_validate` (may already be part of ring 3 DoD).
|
|
237
|
+
2. **Reviewer** — `verify:ui` → `record:mp4` headed → video validate rules → write report + routeTo → STOP.
|
|
238
|
+
3. **Orchestrator** — route fixes or proceed to Ring Gate.
|
|
239
|
+
|
|
240
|
+
Max **3** optimization rounds (at 3 → orchestrator decision).
|
|
241
|
+
|
|
242
|
+
## Spec Gap Protocol
|
|
243
|
+
|
|
244
|
+
`spec-gap` means an upstream contract hole is blocking downstream work.
|
|
245
|
+
|
|
246
|
+
| Trigger role | Typical trigger | Required action |
|
|
247
|
+
| ------------ | ------------------------------------------------------------ | -------------------------------------------------------------------- |
|
|
248
|
+
| TA | Missing size/format/path/atlas clarity in `layout-spec.md` | Write `spec-gap` into `project-state.md` and route to Game Designer |
|
|
249
|
+
| Developer | Missing contract path, unclear asset binding, atom ambiguity | Record blocker in `devBlockers` / handoff and route to Game Designer |
|
|
250
|
+
|
|
251
|
+
Rules:
|
|
252
|
+
|
|
253
|
+
- Raise within quick-check, not after long speculative work.
|
|
254
|
+
- Game Designer patches the relevant contract document.
|
|
255
|
+
- Use `block_reason: spec-gap` when the pipeline must pause.
|
|
256
|
+
|
|
257
|
+
## Intent Clarification Protocol (ICP)
|
|
258
|
+
|
|
259
|
+
Primary file: `docs/intent-clarifications.md`
|
|
260
|
+
|
|
261
|
+
- Continue with reasonable assumptions when safe.
|
|
262
|
+
- Use ICP when ambiguity materially affects direction, quality, or delivery.
|
|
263
|
+
- Game Designer arbitrates gameplay/spec intent conflicts.
|
|
264
|
+
- Orchestrator does not interrupt the user for internal ICP traffic.
|
|
265
|
+
|
|
266
|
+
| Need | Route |
|
|
267
|
+
| ---------------------------------------------------- | ------------------- |
|
|
268
|
+
| Contract ambiguity, gameplay vs spec conflict | `@game-designer` |
|
|
269
|
+
| Missing visual sample / supplementary isolated asset | `@artist` |
|
|
270
|
+
| Asset production / format / atlas / extraction issue | `@technical-artist` |
|
|
271
|
+
| Runtime binding / implementation path issue | `@developer` |
|
|
272
|
+
|
|
273
|
+
## Master Composite — five panels
|
|
274
|
+
|
|
275
|
+
| Name | Panel | Role |
|
|
276
|
+
| --------------------- | ----- | ------------------------------------------------------------------------ |
|
|
277
|
+
| **Concept panel** | 1 | All key element types + static text + full UI; TA primary extract source |
|
|
278
|
+
| **Storyboard panels** | 2–5 | Hook / Onboarding / End Card / CTA — Developer scene reference |
|
|
279
|
+
|
|
280
|
+
Produced during ring 3 style direction (storyboard subagent or Artist flow).
|
|
281
|
+
|
|
282
|
+
## User interaction model (three phases)
|
|
283
|
+
|
|
284
|
+
| Phase | User | Agents |
|
|
285
|
+
| -------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
|
|
286
|
+
| **A — Choose** | Game Designer brainstorms during `loop: clarify`; **Orchestrator** confirms each **Ring Gate** | Sub-agents STOP when loop complete; minimal user interruption during build |
|
|
287
|
+
| **B — Produce** | Not interrupted for terminal commands | Serial ring 4: Artist Wave 1 → TA Wave 2 → Developer integration; UI rework during ring 4 verify |
|
|
288
|
+
| **C — Dev delivery** | Open **devUrl** (with `?debug=1`) from orchestrator at each **Ring Gate** | Developer owns dev preview; Reviewer conformance; user judges fun/quality at Ring Gate |
|
|
289
|
+
|
|
290
|
+
**User never runs `npm run dev`.** Delivery endpoint = Dev URL acceptance (`done`), not `playcraft build`.
|
|
291
|
+
|
|
292
|
+
## Agent responsibility matrix (priority order)
|
|
293
|
+
|
|
294
|
+
| # | Game Designer | Artist | Technical Artist | Developer | Reviewer |
|
|
295
|
+
| -------- | -------------------------------------------------------- | ------------------------------------------------------------ | ---------------------------------------------------- | ---------------------------------------------------------- | -------------------------------------------------- |
|
|
296
|
+
| **1** | Experience contracts per ring (`DESIGN`, layout-spec, …) | Placeholder (ring 1–2) → ASR/style (ring 3) → audio (ring 4) | Style-faithful mass production (ring 4) | Build-loop convergence + dev preview ownership | `gameplay_conformance` + `load_check` every verify |
|
|
297
|
+
| **2** | Zero-ambiguity specs (depth grows per ring) | ASR Coverage Matrix, Palette Locked (ring 3+) | 100% `assetMapping` at spec (ring 4) | Placeholder-first assets (rings 1–3); integration (ring 4) | `playable_validate` (ring 3+), `ui_diff` (ring 4) |
|
|
298
|
+
| **3** | ICP; spec-gap arbitration | Style Intent Notes; respond to rework routes | Bulk production; respond on `routeTo: ta` in ui_diff | `devUrl` / `devBlockers`; route upstream via ICP | Fill Ring DoD Fields; increment `uiReworkRound` |
|
|
299
|
+
| **Last** | — | — | — | `playcraft build` = **future**, not `done` | — |
|
|
300
|
+
|
|
301
|
+
Full detail: `.claude/agents/<role>.md` § Goals.
|
|
302
|
+
|
|
303
|
+
## Project Directory — What Exists vs What Agents Create
|
|
304
|
+
|
|
305
|
+
```
|
|
306
|
+
<project-root>/ ← playcraft create <name> 初始化后
|
|
307
|
+
│
|
|
308
|
+
├── CLAUDE.md ✅ 协作总纲 (growth-rings-v1)
|
|
309
|
+
├── .claude/agents/ ✅ 5 个 Agent 指令 + refs/
|
|
310
|
+
├── docs/team/agent-conduct.md ✅ MUST/NEVER 行为契约
|
|
311
|
+
├── templates/ ✅ 只读模板
|
|
312
|
+
│
|
|
313
|
+
├── docs/project-state.json ⏳ state-store machine truth
|
|
314
|
+
├── docs/project-state.md ⏳ generated read-only view
|
|
315
|
+
├── docs/DESIGN.md ⏳ Ring 1 clarify(唯一交付物)
|
|
316
|
+
├── docs/design-brief.md ⏳ Ring 2+ 过程日志(Ring 1 不创建)
|
|
317
|
+
├── docs/atom-tree.json ⏳ 逐环增长
|
|
318
|
+
├── docs/layout-spec.md ⏳ Ring 2+ clarify
|
|
319
|
+
├── docs/implementation-plan.md ⏳ Ring 2+ build 前
|
|
320
|
+
├── docs/style-exploration.md ⏳ Ring 3+
|
|
321
|
+
│
|
|
322
|
+
├── game/** ⏳ Developer build loop
|
|
323
|
+
├── assets/** ⏳ Artist + TA (深度随环递进)
|
|
324
|
+
└── logs/*.md ⏳ 各角色工作日志
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
## Directory Conventions
|
|
328
|
+
|
|
329
|
+
```
|
|
330
|
+
<project-root>/
|
|
331
|
+
├── docs/ Design documents
|
|
332
|
+
├── assets/ Visual/audio/model assets
|
|
333
|
+
├── game/ Runtime code (Developer)
|
|
334
|
+
├── logs/ Work logs + review report
|
|
335
|
+
├── ta-workspace/ TA batch scripts + temp
|
|
336
|
+
└── templates/ Read-only reference templates
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
## File Read/Write Matrix
|
|
340
|
+
|
|
341
|
+
| File/Directory | Game Designer | Artist | **TA** | Developer | Reviewer |
|
|
342
|
+
| --------------------------- | ---------------- | ------------------- | ------------------------ | ----------------------------- | ---------------- |
|
|
343
|
+
| `docs/project-state.json` | via `state:set` | via `state:set` | via `state:set` | via `state:set` / `dev:start` | via `state:set` |
|
|
344
|
+
| `docs/project-state.md` | Generated view | Do not edit/open | Do not edit/open | Do not edit/open | Do not edit/open |
|
|
345
|
+
| `docs/design-brief.md` | Create | Read | Read | Read | Read |
|
|
346
|
+
| `docs/layout-spec.md` | Create (ring 2+) | **Read (contract)** | **Read (contract)** | **Read (contract)** | Read |
|
|
347
|
+
| `docs/atom-tree.json` | Read | Read | Read | Read | Read |
|
|
348
|
+
| `docs/style-exploration.md` | — | Create (ring 3+) | **Read** | Read | Read |
|
|
349
|
+
| `assets/images/` | — | **Create** | **Create (completions)** | Read | Read |
|
|
350
|
+
| `assets/audio/` | — | **Create** | **Post-process** | Read | Read |
|
|
351
|
+
| `game/` | — | — | — | **Create / Update** | Read |
|
|
352
|
+
| `logs/artist-log.md` | — | Create+Update | Read | Read | Read |
|
|
353
|
+
| `logs/ta-log.md` | — | — | **Create** | Read | Read |
|
|
354
|
+
| `logs/developer-log.md` | — | — | — | Create+Update | Read |
|
|
355
|
+
| `logs/review-report.md` | — | — | — | — | Create |
|
|
356
|
+
|
|
357
|
+
## Four-doc discipline
|
|
358
|
+
|
|
359
|
+
| Layer | Files | Writer | Content rule |
|
|
360
|
+
| -------------------- | ----------------------------------------------------- | ---------------------------------- | ------------------------------------------------- |
|
|
361
|
+
| **Contracts** | `project-state`, `DESIGN`, `layout-spec`, `atom-tree` | Game Designer + temporary ref-flow | Key fields only — no process chatter in contracts |
|
|
362
|
+
| **Visual narrative** | `style-exploration`, `logs/artist-log` | Artist | MC/ASR intent, Handoff Pack, Coverage Matrix |
|
|
363
|
+
| **Production proof** | `logs/ta-log`, `logs/developer-log` | TA / Developer | Upstream Intake + pipeline / implementation logs |
|
|
364
|
+
|
|
365
|
+
Enforceable rules: [agent-conduct.md](agent-conduct.md).
|
|
366
|
+
|
|
367
|
+
## Spec Quick-Check
|
|
368
|
+
|
|
369
|
+
Within 30 seconds at loop entry:
|
|
370
|
+
|
|
371
|
+
| Checker | When | Checks | On Gap |
|
|
372
|
+
| --------- | ------------------------------- | ------------------------------------------------------------- | ---------------------------------------------------------------------------- |
|
|
373
|
+
| TA | Ring 4 build, Wave 2 (TA entry) | Every assetMapping entry has clear size/format specs | Write `spec-gap` to project-state.md, Game Designer supplements within 5 min |
|
|
374
|
+
| Developer | Any `loop: build` start | Every GameplayAtom reference exists in assetMapping (ring 2+) | Same |
|
|
375
|
+
|
|
376
|
+
## Upstream rework routing (Dev blockers)
|
|
377
|
+
|
|
378
|
+
| `routeTo` | Trigger | Orchestrator action |
|
|
379
|
+
| ----------------- | -------------------------------------------------------------------- | --------------------------------------------------- |
|
|
380
|
+
| **TA** | Missing file, wrong size/format, style drift in mass-produced assets | Re-invoke `@technical-artist` → then `@developer` |
|
|
381
|
+
| **Artist** | Wrong/missing sample, audio mood, supplementary art | Re-invoke `@artist` → then `@developer` |
|
|
382
|
+
| **Game Designer** | Contract ambiguity, gameplay vs spec conflict | `@game-designer` arbitrates ICP → then `@developer` |
|
|
383
|
+
|
|
384
|
+
Developer sets `devStatus: blocked_upstream` and **STOPs** until rework completes.
|
|
385
|
+
|
|
386
|
+
## Selection Revision Protocol
|
|
387
|
+
|
|
388
|
+
- **Default**: follow current shortlist from `atom-tree.*`
|
|
389
|
+
- **Allowed**: refine `meta.selectedAtoms`, `skillsMatch`, reusable media when new evidence appears
|
|
390
|
+
- **Record where**: `docs/atom-tree.json` + `docs/atom-tree.md` § Revision Notes
|
|
391
|
+
- **Stop for direction changes**: switching gameplay/style/product direction → report back
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# Core Model — Atom Tree as the Single Structured Contract
|
|
2
|
+
|
|
3
|
+
## One Structured Source
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
Product Contract
|
|
7
|
+
├── atom-tree.json ←唯一结构化真源
|
|
8
|
+
├── DESIGN.md ←人读体验契约
|
|
9
|
+
└── layout-spec.md ←人读路径/资产契约
|
|
10
|
+
|
|
11
|
+
Execution Layer
|
|
12
|
+
├── implementation-plan.md
|
|
13
|
+
├── project-state.md
|
|
14
|
+
└── role logs
|
|
15
|
+
|
|
16
|
+
Optional Reading Guide
|
|
17
|
+
└── atom-tree.md ←由 atom-tree 生成,不是 handoff 必需文件
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Responsibilities
|
|
21
|
+
|
|
22
|
+
| File | Purpose | Contains | Must not contain |
|
|
23
|
+
| ----------------------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | --------------------------------- |
|
|
24
|
+
| `docs/atom-tree.json` | Selected Skill contract first; product/content blueprint when disclosed | `meta.skillsMatch`, `meta.selectedAtoms`, `meta.rings`, `engine`, optional `globals`/`scenes`/`review` | role chatter, implementation logs |
|
|
25
|
+
| `docs/DESIGN.md` | Human-readable player promise | core loop, first-level win, hook/CTA, constraints | duplicated selected Skill catalog |
|
|
26
|
+
| `docs/layout-spec.md` | Human-readable layout and asset paths | zones, assetMapping, palette, sizes | execution tracking / atom status |
|
|
27
|
+
| `docs/implementation-plan.md` | Developer execution plan | feature order, module decisions, risks, acceptance path | duplicated product tree |
|
|
28
|
+
| `docs/project-state.json` | Workflow cursor machine truth | iteration, loop, ringDoD, handoff, blockers, **sliceState**, dispatch via `state:get` | product/source-of-truth decisions |
|
|
29
|
+
| `docs/project-state.md` | Generated state view | rendered state tables for humans | manual edits or required reading |
|
|
30
|
+
|
|
31
|
+
## Slice queue (execution axis)
|
|
32
|
+
|
|
33
|
+
Structured product truth remains `atom-tree.json` + human docs. **Daily dispatch** when seeded:
|
|
34
|
+
|
|
35
|
+
- `sliceState.slices[]` — minimal playable slices (`sliceId`, `role`, `doWhat`, `flow`, `verifier`, …)
|
|
36
|
+
- `state:get` → `dispatchPacket` — orchestrator invoke unit; **not** ring loop names
|
|
37
|
+
- Ring `meta.rings[N]` — budget / required paths / acceptance keys for outer gates, not subagent self-routing
|
|
38
|
+
|
|
39
|
+
## Atom Tree Meaning
|
|
40
|
+
|
|
41
|
+
`docs/atom-tree.json` is the only structured handoff file.
|
|
42
|
+
|
|
43
|
+
It answers:
|
|
44
|
+
|
|
45
|
+
- What playable content exists when disclosed: engine, globals, scenes, layers, entities, rules, media.
|
|
46
|
+
- Which engine root was chosen and which scaffold adapter should be used: `meta.engineDecision`.
|
|
47
|
+
- Which Skill matches were considered: `meta.skillsMatch`.
|
|
48
|
+
- Which reusable atoms are selected and linked: `meta.selectedAtoms`.
|
|
49
|
+
- Which ring slice is currently required: `meta.rings[N].requiredPaths`.
|
|
50
|
+
- Which objective verifiers prove the ring: `meta.rings[N].verifiers` / `acceptanceKeys`.
|
|
51
|
+
|
|
52
|
+
## Engine-Neutral Fast Path
|
|
53
|
+
|
|
54
|
+
Fast assembly must not hard-code a single engine. The invariant is:
|
|
55
|
+
|
|
56
|
+
```text
|
|
57
|
+
atom-tree engine root → engine adapter scaffold → window.__playable contract → shared verifier
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
`phaser.aicomponent`, `threejs.aicomponent`, `playcanvas.aicomponent`, and future engine atoms may initialize differently. They are unified only at the runtime contract and verifier boundary. Harness methods belong on `window.__playable`; engine objects such as Phaser.Game must stay unmodified.
|
|
61
|
+
|
|
62
|
+
## Command Contract
|
|
63
|
+
|
|
64
|
+
- Initialize: `playcraft skills init-atom-tree --intent "..."`
|
|
65
|
+
- Apply engine scaffold: `playcraft remix init-template --from-atom-tree` (reads `meta.engineDecision.adapter`, writes `game/` + `.playcraft-engine`)
|
|
66
|
+
- Select: `playcraft skills select-atom --id "<atomId>"`
|
|
67
|
+
- Validate: `playcraft skills validate-atom-tree-selection`
|
|
68
|
+
- Link: `playcraft skills link --from-atom-tree --prune`
|
|
69
|
+
- Optional guide: `playcraft skills gen-atom-tree-md`
|
|
70
|
+
|
|
71
|
+
**Ring 1 agent chain (legacy growth-rings — when no active slice):**
|
|
72
|
+
|
|
73
|
+
```text
|
|
74
|
+
@game-designer → seed sliceState + design-brief + DESIGN.md (slice-axis primary)
|
|
75
|
+
OR legacy: temporary ref-flow atom-selection subagent
|
|
76
|
+
playcraft remix init-template --from-atom-tree
|
|
77
|
+
npm install && npm run verify:contract
|
|
78
|
+
→ orchestrator dispatches @developer via dispatchPacket (not "Ring 1 build" wording)
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Boundaries
|
|
82
|
+
|
|
83
|
+
- `atom-tree.json` may contain structural dependencies and selected atom refs.
|
|
84
|
+
- `atom-tree.json` must not become a task tracker with `assignTo`, `status`, or `actualOutput`.
|
|
85
|
+
- `atom-tree.md` is generated reading guidance only; if it disagrees with `atom-tree.json`, the JSON wins.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Game Designer migration todo (growth-rings-v1)
|
|
2
|
+
|
|
3
|
+
> **Status**: Superseded by growth-rings-v1 migration (2026-06). Kept for audit trail only.
|
|
4
|
+
|
|
5
|
+
| Location | Legacy item | Resolution in growth-rings-v1 | Status |
|
|
6
|
+
| ------------------------------------------------------ | ------------------------- | ----------------------------------------------------------------- | ------ |
|
|
7
|
+
| `.claude/agents/game-designer.md` | Gate #1 Deliverable Card | Ring 1 clarify deliverables in role card + collaboration glossary | done |
|
|
8
|
+
| `.claude/agents/refs/game-designer-workflow-detail.md` | Atlas grouping at Gate #1 | Atlas grouping at ring 2 layout-spec lock | done |
|