@playcraft/cli 0.0.44 → 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 +7 -1
- package/dist/commands/create.js +774 -50
- package/dist/commands/image.js +11 -0
- package/dist/commands/prad.js +61 -0
- 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/atom-ref.js +23 -0
- package/dist/prad/check.js +377 -0
- package/dist/prad/check.test.js +49 -0
- package/dist/prad/explain.js +109 -0
- package/dist/prad/load-spec.js +23 -0
- package/dist/prad/paths.js +83 -0
- package/dist/prad/skills-index.js +60 -0
- package/dist/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/.gitkeep +0 -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/gameplay/.gitkeep +0 -0
- package/engine-packs/threejs/game/index.ts +76 -0
- package/engine-packs/threejs/game/runtime-contract.ts +15 -0
- package/engine-packs/threejs/game/scenes/.gitkeep +0 -0
- package/engine-packs/threejs/manifest.json +1 -0
- package/engine-packs/threejs/package.deps.json +8 -0
- package/package.json +17 -3
- 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/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/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/.claude/agents/refs/{designer-art-style-catalog.md → artist-art-style-catalog.md} +0 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Harness Legacy Deprecation
|
|
2
|
+
|
|
3
|
+
## Current (2026-06)
|
|
4
|
+
|
|
5
|
+
| Surface | Status | Notes |
|
|
6
|
+
| ----------------------------------------------- | --------------- | -------------------------------------------------------------- |
|
|
7
|
+
| `window.__playable` | **Required** | Pass standard for `verify:contract`, `record:mp4`, `verify:ui` |
|
|
8
|
+
| `MainScene._onDebugAutoPlay()` + `sceneManager` | **Legacy warn** | Still passes static/live probes with deprecation warning |
|
|
9
|
+
| Harness methods on `window.__game.start` | **Blocked** | Shadowing `Phaser.Game.start` breaks boot |
|
|
10
|
+
|
|
11
|
+
## Timeline
|
|
12
|
+
|
|
13
|
+
| Milestone | Target | Action |
|
|
14
|
+
| --------------------- | ----------- | -------------------------------------------------------------- |
|
|
15
|
+
| Dual-path support | 2026-06 | Ship `publishPlayableRuntime()` + Phaser/Three.js engine-packs |
|
|
16
|
+
| Legacy warn in probes | 2026-06 | `evaluateContract` warns when only scene hooks present |
|
|
17
|
+
| Legacy removal | **2026-Q3** | `verify:contract` fails if `window.__playable` absent |
|
|
18
|
+
|
|
19
|
+
## Migration
|
|
20
|
+
|
|
21
|
+
1. Call `publishPlayableRuntime()` from `game/index.ts` (see `game/contract/publish.ts`).
|
|
22
|
+
2. Phaser projects: use `registerPlayable()` / `bindPlayableScene()` from `game/adapters/phaser.ts`.
|
|
23
|
+
3. Run `npm run verify:contract` — should report OK without legacy warnings.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Platform Capabilities
|
|
2
|
+
|
|
3
|
+
| Category | Command Prefix | Used By |
|
|
4
|
+
| -------------------------- | ----------------------------------------------------------------------------------- | -------------------------------------------------------- |
|
|
5
|
+
| AI Image Generation | `playcraft tools generate-image` | Designer / TA |
|
|
6
|
+
| AI 3D Generation | `playcraft tools generate-3d` | **TA** |
|
|
7
|
+
| 3D Pipeline | `playcraft 3d *` | **TA** |
|
|
8
|
+
| Sprite Sheets | `playcraft image sprite-sheet/sprite-split/animate/use-vfx` | **TA** |
|
|
9
|
+
| Image Processing | `playcraft image resize/crop/convert/remove-background/overlay` | **TA** |
|
|
10
|
+
| Audio Generation | `playcraft tools generate-sfx/generate-bgm` | Designer |
|
|
11
|
+
| Audio Processing | `playcraft audio compress/trim/loop/...` | **TA** |
|
|
12
|
+
| Skills Discovery | `playcraft skills *` (load `playcraft-skill-recommender` skill for CLI reference) | temporary ref-flow / Developer / Artist / TA as assigned |
|
|
13
|
+
| Asset Info | `playcraft image info` / `playcraft audio info` | TA / Reviewer |
|
|
14
|
+
| Dev preview | `npm run dev` (project `scripts.dev`) | Developer / Reviewer / orchestrator (refresh devUrl) |
|
|
15
|
+
| Placeholder images | `npm run placeholder:gen` (`skills/_shared/scripts/gen-placeholder.py`) | **Developer** (ring 1–2 build) |
|
|
16
|
+
| Placeholder audio | `npm run placeholder:gen-audio` (`skills/_shared/scripts/gen-placeholder-audio.py`) | **Developer** (ring 1–2 build, when load paths exist) |
|
|
17
|
+
| Develop placeholders skill | `skills/playable-placeholder/SKILL.md` | **Developer** |
|
|
18
|
+
| Build (future) | `playcraft build` / `build-all` | Not required for current `done` gate |
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# Workflow Changelog
|
|
2
|
+
|
|
3
|
+
Template workflow spec versions for `packages/cli/project-template`. New projects from `playcraft create` copy the current template; record the version in each project's `docs/project-state.md` § Workflow spec.
|
|
4
|
+
|
|
5
|
+
## growth-rings-v1 (current)
|
|
6
|
+
|
|
7
|
+
**Effective**: project-template default for new playable-ad projects (template `0.3.2-alpha.0`).
|
|
8
|
+
|
|
9
|
+
### 2026-06-23 — Ring 1 responsibility split
|
|
10
|
+
|
|
11
|
+
- **Fix**: split atom-tree selection out of the orchestrator and Game Designer. Ring 1 now routes `@game-designer` → temporary ref-flow atom-selection subagent → scaffold gate → `@developer`.
|
|
12
|
+
- **Scope**: ring 1 atom-tree is a compact selection package for engine scaffold and Skill reading, not a full product tree or execution plan.
|
|
13
|
+
- **Developer scope**: ring 1 build target narrowed to the smallest verifiable playable spine; rings 2+ carry periphery, hook/CTA packaging, and fuller content.
|
|
14
|
+
- **Maintenance**: agent tool surfaces should stay role-minimal. Long command catalogs belong in role refs / skills, not in every role card.
|
|
15
|
+
|
|
16
|
+
### 2026-06-17 — Ring 1 Dispatch Path (restore multi-agent orchestration)
|
|
17
|
+
|
|
18
|
+
- **Fix**: Ring 1 "Direct Path" had been interpreted as orchestrator inline execution (test9: single agent wrote DESIGN + game/). Restored **orchestrator dispatch**: `loop: clarify` → `@game-designer`; post-STOP scaffold → `@developer`; `loop: verify` → `ring:gate`.
|
|
19
|
+
- **Still blocked**: internal Task lists (`TaskCreate` / …) during iteration 1 — not `Task` subagent spawn.
|
|
20
|
+
- **`disclosure-config`**: `1:clarify` nextCommands = invoke game-designer; new `1:scaffold` phase after GD STOP; `1:build` = invoke developer + verifiers.
|
|
21
|
+
- **`user-prompt.mjs`**: loop-aware injection tells orchestrator to dispatch, not inline role-play.
|
|
22
|
+
|
|
23
|
+
### 2026-06-17 — Ring 1 Direct Path default (hook enforcement)
|
|
24
|
+
|
|
25
|
+
- **`user-prompt.mjs`**: when `iteration: 1`, injects `hookSpecificOutput.additionalContext` with the Ring 1 linear recipe on every `UserPromptSubmit` (soft enforcement).
|
|
26
|
+
- **`block-ring1-tasklist.mjs`**: new `PreToolUse` hook denies `TaskCreate` / `TaskUpdate` / `TaskList` / `TaskGet` / `TaskOutput` / `TaskStop` during iteration 1 (hard enforcement).
|
|
27
|
+
- **`project-state` slimming**: agent entry banner + collapsed deferred tables; agents should use `npm run state:get` instead of reading the full file in Ring 1.
|
|
28
|
+
- **Goal**: bare `claude -p "<goal>"` should follow direct path without a manual hard-constraint prompt (test8-style).
|
|
29
|
+
|
|
30
|
+
### 2026-06-24 — Knife 7: slice queue producer / plan alignment (slice-axis Ring 1)
|
|
31
|
+
|
|
32
|
+
- **Ring 1 Game Designer** (slice-axis): `design-brief.md` progressive discovery + `DESIGN.md` seed + `sliceState` developer slice queue — **not** layout/style/CTA/full plan.
|
|
33
|
+
- **`design-brief.template.md`** restored for discovery; **`plan.template.md`** reframed as slice-queue explain view; **`atom-tree.json`** adds `meta.activatedSlices[]`.
|
|
34
|
+
- **STOP**: when `sliceState` is seeded, `validateGameDesignerSliceQueueSeed` requires developer slice + `design-brief`; blocks premature `layout-spec` / `style-exploration` in Ring 1.
|
|
35
|
+
- **Legacy ring 1** (empty `sliceState`): unchanged ref-flow path.
|
|
36
|
+
|
|
37
|
+
### 2026-06-16 — Ring 1 progressive disclosure (clarify fast path)
|
|
38
|
+
|
|
39
|
+
- **Ring 1 clarify (legacy pre-slice-axis) = one concise `docs/DESIGN.md`** (core gameplay only). With **slice-axis Knife 7**, `design-brief.md` returns as Ring 1 discovery log alongside the slice queue.
|
|
40
|
+
- **`game-designer.md`** gains an authoritative **Ring 1 clarify — fast path** section: fixed paths, explicit STOP conditions, and a copy-adapt `npm run state:set` STOP recipe. Agents must not reverse-engineer hooks/gates or research style/audio/layout in ring 1.
|
|
41
|
+
- **STOP gate relaxed**: `validate-workflow-stop.mjs` ring 1 required docs = `docs/DESIGN.md` for Game Designer and `project-state + DESIGN` for Developer intake (design-brief dropped); rings 2–4 unchanged. design-brief is still validated _if present_.
|
|
42
|
+
- **Goal**: cut the ring 1 clarify loop from ~7 min to ~2 min by removing dual-doc writes, parallel process-log discipline, and premature research.
|
|
43
|
+
|
|
44
|
+
- `init-template` refuses to wipe user `game/` unless `--force`, scaffold manifest, or pending placeholder.
|
|
45
|
+
- `playcraft create` base template: no `.playcraft-engine`, placeholder `game/` until init-template.
|
|
46
|
+
|
|
47
|
+
### 2026-06-15 — engine-neutral scaffold (`0.3.1-alpha.0`)
|
|
48
|
+
|
|
49
|
+
- **Engine scaffold is explicit**: `playcraft remix init-template --from-atom-tree` applies `meta.engineDecision.adapter` to `game/` + `.playcraft-engine`. `init-atom-tree` only writes metadata and prints the next command.
|
|
50
|
+
- **Supported adapters (v1)**: `phaser`, `threejs` — unified at `window.__playable` + shared verifiers.
|
|
51
|
+
- **Orchestrator ring 1 build gate**: init-template + `npm run verify:contract` before `@developer` when `iteration: 1` + `loop: build`.
|
|
52
|
+
- **workflow-doctor**: errors on adapter / marker mismatch; errors on missing marker during ring 1 build.
|
|
53
|
+
|
|
54
|
+
### Summary (growth-rings-v1 baseline)
|
|
55
|
+
|
|
56
|
+
- **Four growth rings** climb the atom-tree from engine root upward: (1) engine-root + core gameplay, (2) gameplay + periphery, (3) playable ad hook/CTA, (4) production + architecture.
|
|
57
|
+
- **Inner loops per ring**: `clarify` → `build` → `verify` → **Ring Gate** (user acceptance). All roles collaborate each ring; depth increases per iteration.
|
|
58
|
+
- **Objective DoD**: `npm run ring:gate -- --iteration N` runs verifiers (`verify:contract`, `record:mp4`, `verify:ui`, etc.) instead of pre-development document packages.
|
|
59
|
+
- **Non-regression**: `archivedRings` in handoff YAML; prior ring DoD must stay green.
|
|
60
|
+
- **assetMapping freeze** moved to ring 4 only (was Gate #exec in convergence-v1).
|
|
61
|
+
- **Replaced**: waterfall stages (`pm → storyboard → planning → development → ...`) and six gates (`#1`, `#2a`, `#exec`, `#dev`, `#2b`, `#3`).
|
|
62
|
+
|
|
63
|
+
## convergence-v2 (superseded by growth-rings-v1)
|
|
64
|
+
|
|
65
|
+
**Effective**: project-template default for new playable-ad projects.
|
|
66
|
+
|
|
67
|
+
### Summary
|
|
68
|
+
|
|
69
|
+
- **Three convergence loops**: (1) scripted package checks for Gate #1 / #exec, plus Reviewer `design_check` before Gate #2b; (2) `pm → storyboard → planning → development → style_exploration → production → ui_review ⇄ ui_rework → done`; (3) Reviewer `gameplay_conformance` + `load_check` before Gate #dev → user gameplay acceptance; Reviewer `ui_diff` (browser screenshots vs MC, max 5 rounds) → Gate #3 visual acceptance.
|
|
70
|
+
- **Single Developer model**: `developer` owns the full `development` stage — upstream intake, spec quick-check, read/load of existing code + Skill refs, implementation, integration, feature-checklist review, `devStatus: ready`, `devUrl`, and blockers. `developer-lead` is retained only as a compatibility alias.
|
|
71
|
+
- **Removed**: internal `developer-lead → developer` batch dispatch as the default development pattern, `integration`, `review`, `rework` (replaced by `ui_rework`), six-dimension final review, AI gameplay walkthrough.
|
|
72
|
+
- **Production orchestration**: after Gate #2b, **strict serial** — Artist Ph.2 → TA → `ui_review`.
|
|
73
|
+
- Visual delivery unchanged from **artist-handoff-v2** (MC + ASR, Handoff Pack, Phase 2 audio/digit only).
|
|
74
|
+
- **Reviewer tooling**: `playwright-cli` skill for browser automation (screenshot, console, resize).
|
|
75
|
+
|
|
76
|
+
### Stage chain
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
pm → storyboard → development → style_exploration → production → ui_review ⇄ ui_rework → done
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Production waves (serial)
|
|
83
|
+
|
|
84
|
+
| Wave | Agent | Stage | Orchestrator invoke |
|
|
85
|
+
| ---- | ---------------- | ------------ | --------------------------------------- |
|
|
86
|
+
| 1 | Artist | `production` | `@artist` Ph.2 only after Gate #2b |
|
|
87
|
+
| 2 | Technical Artist | `production` | `@technical-artist` after Wave 1 `done` |
|
|
88
|
+
|
|
89
|
+
### Trade-offs
|
|
90
|
+
|
|
91
|
+
| Benefit | Cost |
|
|
92
|
+
| ----------------------------------------------------------------------- | ------------------------------------------------- |
|
|
93
|
+
| More context preserved inside one development owner | Developer role must carry more reading discipline |
|
|
94
|
+
| Existing code and Skill refs less likely to be dropped between handoffs | Less parallelism by default inside development |
|
|
95
|
+
| Read/load + checklist review become explicit readiness criteria | Development logs must be more structured |
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## convergence-v1
|
|
100
|
+
|
|
101
|
+
**Superseded by** `convergence-v2`.
|
|
102
|
+
|
|
103
|
+
### Summary
|
|
104
|
+
|
|
105
|
+
- **Three convergence loops**: (1) scripted package checks for Gate #1 / #exec, plus Reviewer `design_check` before Gate #2b; (2) `pm → storyboard → planning → development → style_exploration → production → ui_review ⇄ ui_rework → done`; (3) Reviewer `gameplay_conformance` + `load_check` before Gate #dev → user gameplay acceptance; Reviewer `ui_diff` (browser screenshots vs MC, max 5 rounds) → Gate #3 visual acceptance.
|
|
106
|
+
- **Historical Developer Lead / Developer split**: this was the old model. Current workflow uses the single `developer` role for scoped runtime implementation tasks, with `developer-lead` retained only as a compatibility alias.
|
|
107
|
+
- **Removed**: `integration`, `review`, `rework` (replaced by `ui_rework`), six-dimension final review, AI gameplay walkthrough.
|
|
108
|
+
- **Production orchestration**: after Gate #2b, **strict serial** — Artist Ph.2 → TA → `ui_review`.
|
|
109
|
+
- Visual delivery unchanged from **artist-handoff-v2** (MC + ASR, Handoff Pack, Phase 2 audio/digit only).
|
|
110
|
+
- **Reviewer tooling**: `playwright-cli` skill for browser automation (screenshot, console, resize).
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## production-serial-v1
|
|
115
|
+
|
|
116
|
+
**Superseded by** `convergence-v2` for orchestration; serial production waves below still apply within `production` stage.
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## artist-handoff-v2
|
|
121
|
+
|
|
122
|
+
**Superseded by** `production-serial-v1` for orchestration; visual rules below still apply.
|
|
123
|
+
|
|
124
|
+
### Summary
|
|
125
|
+
|
|
126
|
+
- Visual baseline locked in **Phase 1**: Master Composite (MC) + **ASR** dual sheets (UI + element state reference).
|
|
127
|
+
- **Phase 2 Artist**: BGM, SFX, digit strip only; visual coverage stays in ASR / artist-log, not a separate `VisualAtom done` status pass (not separate `tile_sample_*.png` batch).
|
|
128
|
+
- **Gate #2b Handoff Pack**: ASR Coverage Matrix, Palette Locked, Motion Notes in `artist-log` / `style-exploration`.
|
|
129
|
+
- Retired paths: `exploded_view_*.png`, `concept_selected.png`, per-frame `concept_*.png` / `hook_*.png` deliverable tables.
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## artist-handoff-v1 (legacy)
|
|
134
|
+
|
|
135
|
+
- Single **Exploded View** (or scattered concept/storyboard PNGs) as TA extract source.
|
|
136
|
+
- Phase 2 sometimes assumed Artist outputs `tile_sample_*.png` at `assetMapping` paths.
|
|
137
|
+
- `playcraft-exploded-view` skill id (removed in v2).
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
# Workflow Consistency Checklist
|
|
2
|
+
|
|
3
|
+
Maintenance checklist after editing `packages/cli/project-template`. Run before merging doc changes.
|
|
4
|
+
|
|
5
|
+
## Phase A — Invoke protocol
|
|
6
|
+
|
|
7
|
+
- [x] `agent-conduct.md`: § Invoke protocol (all sub-agents)
|
|
8
|
+
- [x] All five agents: First Step = handoff → Runtime → conditional refs
|
|
9
|
+
- [x] Checkpoint documented as human log only (collaboration § STOP sync)
|
|
10
|
+
|
|
11
|
+
## Phase B — Track done & stage sync
|
|
12
|
+
|
|
13
|
+
- [x] Each agent Runtime has **Track done** note
|
|
14
|
+
- [x] `CLAUDE.md` + `playcraft-orchestrator.mdc`: § Stage sync on handoff
|
|
15
|
+
- [x] `project-state.template.md`: handoff Examples comment block
|
|
16
|
+
|
|
17
|
+
## Phase C — STOP sync
|
|
18
|
+
|
|
19
|
+
- [x] `collaboration.md`: § STOP sync checklist (4 steps)
|
|
20
|
+
- [x] `agent-conduct.md`: sub-agents MUST complete STOP sync
|
|
21
|
+
|
|
22
|
+
## Phase D — L1 < 220 lines
|
|
23
|
+
|
|
24
|
+
- [x] `game-designer.md`, `artist.md`, `developer.md`, `reviewer.md`, `technical-artist.md` each **< 220** lines
|
|
25
|
+
- [x] New refs registered in `refs/README.md` with L1 back-links
|
|
26
|
+
- [x] `artist-deliverable-spec.md`, `artist-style-exploration-flow.md`, `developer-phase1-flow.md` exist
|
|
27
|
+
|
|
28
|
+
## Phase F — TA atlas / WebP / MP3
|
|
29
|
+
|
|
30
|
+
- [x] `ta-atlas-deliverable-standard.md` exists; TA L1 + Runtime reference it
|
|
31
|
+
- [x] `layout-spec.template.md`: atlas grouping table, webp defaults, frameId column
|
|
32
|
+
- [x] `collaboration.md` § Asset Contract: WebP atlas + MP3
|
|
33
|
+
- [x] Game Designer `game-designer-workflow-detail.md`: Atlas grouping at Gate #1
|
|
34
|
+
- [x] Developer cookbook: atlasPath + frameId binding
|
|
35
|
+
|
|
36
|
+
## Round 3 — Invoke 体感打磨
|
|
37
|
+
|
|
38
|
+
### Phase A — Runtime 入口微调
|
|
39
|
+
|
|
40
|
+
- [x] Artist Runtime: Phase 1 Skill Discovery → style-exploration-flow (one line)
|
|
41
|
+
- [x] Developer Runtime: Spec Quick-Check (30s, MUST) on production branch
|
|
42
|
+
- [x] Developer Ph.1 STOP: `next_orchestrator_action` = single value `Wait for parallel tracks`
|
|
43
|
+
- [x] TA Step 0: verb pipeline (no E→A→B→C→D shorthand in L1)
|
|
44
|
+
- [x] TA Compliance: atlas grouping table check + spec-gap routeTo Game Designer
|
|
45
|
+
|
|
46
|
+
### Phase B — L1 术语显式化
|
|
47
|
+
|
|
48
|
+
- [x] Game Designer Runtime: 四件套 list + atlas groups + Style Direction in Track done
|
|
49
|
+
- [x] Reviewer Goals: six dimension names + Vetoes listed
|
|
50
|
+
- [x] Artist Track done: MC 5×9:16 ratio (≈ 2.81)
|
|
51
|
+
|
|
52
|
+
### Phase C — 跨 Agent 同步
|
|
53
|
+
|
|
54
|
+
- [x] `collaboration.md` § STOP sync: Parallel Tracking table example
|
|
55
|
+
- [x] `CLAUDE.md` + `playcraft-orchestrator.mdc`: Stage sync includes `Run Gate #2a`
|
|
56
|
+
- [x] All five L1 Mission: link to CLAUDE § Stage Model
|
|
57
|
+
- [x] `developer-phase1-flow.md`: linear Step 1–8 ordering
|
|
58
|
+
|
|
59
|
+
### Phase D — 重复段清理
|
|
60
|
+
|
|
61
|
+
- [x] Developer L1: no separate `## Phase 1` / `## Phase 2` headings (Execute L2 under Runtime)
|
|
62
|
+
- [x] Artist Phase 2: skills/refs/output only (no duplicate Trigger)
|
|
63
|
+
- [x] Developer Important Rules: Test-first + Atlas binding split (#5 / #6)
|
|
64
|
+
- [x] Reviewer Output: sync `handoff.rework_round` on fail
|
|
65
|
+
|
|
66
|
+
## Gate & orchestration (baseline)
|
|
67
|
+
|
|
68
|
+
- [x] Gate Protocol matches CLAUDE Orchestration table
|
|
69
|
+
- [x] All five agents: Runtime + PLAYCRAFT_STOP
|
|
70
|
+
- [x] Game Designer Gate #1 four docs; Reviewer no `stage: rework`; Developer handoff Invoke @reviewer
|
|
71
|
+
|
|
72
|
+
## Polish pass (Glossary / deliverable cards / TA Step naming)
|
|
73
|
+
|
|
74
|
+
- [x] `collaboration.md`: § Glossary (canonical terms)
|
|
75
|
+
- [x] `game-designer.md`: § Gate #1 Deliverable Card
|
|
76
|
+
- [x] Reviewer: `rework_round` failure budget explicit in L1 + `reviewer-six-dimension-eval.md`
|
|
77
|
+
- [x] `refs/README.md`: § 按 invoke 场景反查
|
|
78
|
+
- [x] `ta-pipeline-cookbook.md`: Step 0/1/2 (not Phase 0/1/2)
|
|
79
|
+
- [x] `CLAUDE.md`: Single-Agent Fallback removed; sub-agent invoke required
|
|
80
|
+
|
|
81
|
+
## Phase G — Artist Handoff v2
|
|
82
|
+
|
|
83
|
+
- [x] `docs/team/workflow-changelog.md` documents `artist-handoff-v2`
|
|
84
|
+
- [x] `templates/project-state.template.md` § Workflow spec + Parallel Tracking (audio + digit + artist wave notes)
|
|
85
|
+
- [x] `artist-deliverable-spec.md`: Handoff Pack, Phase 2 VisualAtom rules; no legacy Phase 2 visual-only-TA sentence
|
|
86
|
+
- [x] `artist-handoff-v2-checklist.md` linked from `artist-style-exploration-flow.md` Step 5
|
|
87
|
+
- [x] `templates/style-exploration.template.md` uses MC + ASR (no `concept_{{a}}.png`)
|
|
88
|
+
- [x] `templates/artist-log.template.md`: ASR Coverage Matrix + Palette Locked
|
|
89
|
+
- [x] `playcraft-style-qa` uses MC path; no `concept_selected.png`
|
|
90
|
+
- [x] `playcraft-asset-state-sheet` skill exists; `playcraft-exploded-view` removed
|
|
91
|
+
- [x] `core-model.md` + `atom-tree.template.json` v2 VisualAtom baseline
|
|
92
|
+
- [x] Vitest `designer-handoff-v2` cases pass
|
|
93
|
+
|
|
94
|
+
## Phase J — atom-tree simplified manifest
|
|
95
|
+
|
|
96
|
+
- [x] `docs/team/atom-tree-format.md` — JSON + MD split rewritten as selection manifest + reference guide
|
|
97
|
+
- [x] `templates/atom-tree.template.json` aligned to `meta.skillsMatch` / `meta.selectedAtoms` / `selectionRevisions[]`
|
|
98
|
+
- [ ] ref-flow runtime / refs fully aligned to the simplified atom-tree model
|
|
99
|
+
- [ ] CLI-side validation / hook story updated for the new schema
|
|
100
|
+
- [x] `playcraft-workflow` core docs (`collaboration.md` / `agent-conduct.md` / `pipeline-overview.md` / `CLAUDE.md`) aligned to the new atom-tree positioning
|
|
101
|
+
- [ ] tests / hooks that still assume old `selectedSkills`-style schema audited and updated
|
|
102
|
+
|
|
103
|
+
## Phase I — Upstream intake + four-doc discipline + hooks
|
|
104
|
+
|
|
105
|
+
- [x] `agent-conduct.md`: Game Designer/Artist four-doc discipline; TA/Developer Upstream Intake MUST
|
|
106
|
+
- [x] `ta-pipeline-cookbook.md` Step 0a + `developer-phase1-flow.md` Step 0
|
|
107
|
+
- [x] `ta-log.template.md` + `developer-log.template.md` § Upstream Intake
|
|
108
|
+
- [x] `game-designer.md` + `game-designer-workflow-detail.md` + `artist.md` + `collaboration.md` § Four-doc discipline
|
|
109
|
+
- [x] `.claude/settings.json` + `.cursor/hooks.json` → `validate-workflow-stop.mjs`
|
|
110
|
+
- [x] Vitest `upstream-intake` + `validate-workflow-stop.test.ts` pass
|
|
111
|
+
|
|
112
|
+
## Phase H — Production serial v1
|
|
113
|
+
|
|
114
|
+
- [x] `workflow-changelog.md`: `production-serial-v1` current; no Migration section
|
|
115
|
+
- [x] `templates/project-state.template.md`: `workflowSpecVersion` = `production-serial-v1`; § Production Pipeline (no Parallel Tracking / THREE-WAY)
|
|
116
|
+
- [x] Gate #2b: orchestrator invokes `@artist` only; serial `@technical-artist` → `integration` `@developer`
|
|
117
|
+
- [x] `artist.md` STOP: `Invoke @technical-artist`; `technical-artist.md`: `Set stage=integration, invoke @developer`
|
|
118
|
+
- [x] `developer.md` Runtime: no `stage: production` row; single `integration` branch
|
|
119
|
+
- [x] `developer-phase1-flow.md`: trigger `integration`; no assets-not-required / Parallel with
|
|
120
|
+
- [x] `CLAUDE.md` + `playcraft-orchestrator.mdc` + `collaboration.md` + `agent-conduct.md` + `agent-runtime-matrix.md` aligned
|
|
121
|
+
- [x] Vitest `production-serial-v1` cases pass
|
|
122
|
+
|
|
123
|
+
## Phase K — Plan convergence (TA + Developer)
|
|
124
|
+
|
|
125
|
+
- [x] `templates/ta-log.template.md`: § Production Plan (Coverage / Atlas / Pipeline Order / Risk)
|
|
126
|
+
- [x] `templates/developer-log.template.md`: § Implementation Plan (Architecture / Scene-Asset / PGS / Risk)
|
|
127
|
+
- [x] `validate-workflow-stop.mjs`: validates Plan section + Risk Checklist + no placeholders
|
|
128
|
+
- [x] `.claude/hooks/README.md`: documents Plan validation on STOP
|
|
129
|
+
- [x] `technical-artist.md` + `developer.md`: Runtime + Track done + Important Rules reference Plan
|
|
130
|
+
- [x] `ta-pipeline-cookbook.md` Step 0d + `developer-phase1-flow.md` Step 3b
|
|
131
|
+
- [x] `agent-conduct.md`: TA/Developer MUST/MUST NOT for Plan before production/code
|
|
132
|
+
- [x] `collaboration.md` § STOP sync checklist step 5 (Plan convergence)
|
|
133
|
+
- [x] Vitest `validate-workflow-stop.test.ts` covers `validatePlan`
|
|
134
|
+
|
|
135
|
+
## Phase M — Developer role / flow split
|
|
136
|
+
|
|
137
|
+
- [x] `developer.md` rewritten around role perspective (architecture / project state / requirement implementation / boundaries)
|
|
138
|
+
- [x] Shared docs (`CLAUDE.md`, `agent-conduct`, `agent-runtime-matrix`, `pipeline-overview`) state that Skill literacy belongs to Developer cognition; flow docs only project it onto the current atom-tree
|
|
139
|
+
- [x] `developer-phase1-flow.md` explicitly scoped to execution sequence, not role ownership
|
|
140
|
+
- [x] `developer-dev-handoff.md` and `developer-impl-cookbook.md` marked as verification / pattern refs, not runtime authority
|
|
141
|
+
- [x] `refs/README.md` clarified L1 vs L2 expectation for Developer docs
|
|
142
|
+
- [x] `docs/role-analysis/04-developer-agent.md` updated to reflect role card vs flow split
|
|
143
|
+
|
|
144
|
+
## Phase L — convergence-v1 doc alignment audit (2026-05)
|
|
145
|
+
|
|
146
|
+
Documents missed during the `production-serial-v1` → `convergence-v1` upgrade (commit `9fdc39a06`). Each item below has a [W#] tag indicating which audit wave applied the fix.
|
|
147
|
+
|
|
148
|
+
> **⚠️ Critical finding** — commit `9fdc39a06` introduced `convergence-v1` but did **not modify any vitest test files**. Result: 23 tests under `packages/cli/test/project-template-workflow.test.ts` + `validate-workflow-stop.test.ts` are pre-existing failures against the new spec. Audit Wave W4 includes the full test suite re-alignment.
|
|
149
|
+
|
|
150
|
+
### W1 — Doc alignment
|
|
151
|
+
|
|
152
|
+
- [x] `agent-runtime-matrix.md`: rewritten — replaced `integration` / `review` / `rework` with `ui_pass` / `ui_review` / `ui_rework` / `gameplay_pass`; `reworkRound` → `uiReworkRound`; added `devStatus` / `loadCheck` columns; added Post-STOP verification table
|
|
153
|
+
- [x] All five agent L1 files (`game-designer.md`, `artist.md`, `technical-artist.md`, `developer.md`, `reviewer.md`): added `> **Workflow spec**: convergence-v1` declaration line at top
|
|
154
|
+
- [x] `refs/game-designer-workflow-detail.md`: `integration` → `ui_pass` (lines 144, 247)
|
|
155
|
+
- [x] `developer-dev-handoff.md`: `stage → review` → `devStatus: ui_ready` / `ready` + handoff `Invoke @reviewer ui_diff/load_check` (line 99)
|
|
156
|
+
|
|
157
|
+
### W2 — Term alignment (ASR)
|
|
158
|
+
|
|
159
|
+
- [ ] `playcraft-asset-state-sheet` Skill: "ASR State Inventory" → "ASR Coverage Matrix" (artist-log only has Coverage Matrix)
|
|
160
|
+
- [ ] `artist-log.template.md` § ASR Coverage Matrix: add "Sheet grid" metadata (rows × cols + cell width × height + cell padding)
|
|
161
|
+
- [ ] `ta-pipeline-cookbook.md` Step 0a + ASR extraction: aligned references
|
|
162
|
+
|
|
163
|
+
### W3 — Machine-readable ASR binding
|
|
164
|
+
|
|
165
|
+
- [ ] superseded under the simplified atom-tree manifest model; ASR coverage remains in `artist-log.template.md` and downstream logs instead of `atom-tree.json`
|
|
166
|
+
|
|
167
|
+
### W4 — Hook hardening + test suite re-alignment
|
|
168
|
+
|
|
169
|
+
- [ ] `validate-workflow-stop.mjs`: add `artist` branch validating `artist-log.md § Skill Preflight`
|
|
170
|
+
- [x] `validate-workflow-stop.mjs`: `readStage()` regex accepts current stage names (`pm`, `storyboard`, `development`, `style_exploration`, `production`, `ui_review`, `ui_rework`, `done`)
|
|
171
|
+
- [ ] `packages/cli/test/validate-workflow-stop.test.ts`: add designer + YAML stage test cases; rewrite `Developer Implementation Plan sample` → use `UI Pass Plan` / `Gameplay Pass Plan`
|
|
172
|
+
- [ ] `packages/cli/test/project-template-workflow.test.ts`: rewrite stale describes (originally pre-existing failures from commit `9fdc39a06`):
|
|
173
|
+
- `workflow-docs` (9 tests): replace six-dimension scoring / `rework_round` / `stage: review` assertions with `convergence-v1` equivalents (`uiReworkRound`, `ui_diff`, `load_check`)
|
|
174
|
+
- `production-serial-v1` (6 tests): delete or migrate to `convergence-v1` describe
|
|
175
|
+
- `upstream-intake-four-doc-discipline` (1 test): align with current `developer-phase1-flow.md`
|
|
176
|
+
- `plan-convergence-ta-developer` (6 tests): "Implementation Plan" → "UI Pass Plan" / "Gameplay Pass Plan"
|
|
177
|
+
- hooks README test: same alignment
|
|
178
|
+
|
|
179
|
+
### W5 — TA Compliance Gate coverage
|
|
180
|
+
|
|
181
|
+
- [x] `ta-log.template.md` § Compliance Gate: add `Text dimensions` row (for `images/txt/*`)
|
|
182
|
+
- [x] `ta-log.template.md` § Compliance Gate: add `Digit Strip dimensions` row (separate from UI)
|
|
183
|
+
- [x] `layout-spec.template.md` Digit Sprite Strip section: recommend `images/txt/digits.webp` path
|
|
184
|
+
- [x] `ta-pipeline-cookbook.md` § Transparency Classification example table: align digit path with `images/txt/` recommendation
|
|
185
|
+
|
|
186
|
+
### W6 — Interface polish
|
|
187
|
+
|
|
188
|
+
- [x] `artist-deliverable-spec.md` § Phase 2: clarify ICP supplementary PNG trigger condition (only when TA Step 0c confidence=low **and** crop/segment failed)
|
|
189
|
+
- [x] `ta-log.template.md` Style Interpretation: change "Do NOT proceed with any asset type where confidence = low" → atom-granularity ("hold that asset type; other types continue")
|
|
190
|
+
- [x] `artist-log.template.md` + `ta-log.template.md` § mediaGroups Reuse: add `extension` column + filter note (Artist: `.aiaudio` only; TA: `.aiimage` + `.aisprite`)
|
|
191
|
+
|
|
192
|
+
## Phase GR — growth-rings-v1 alignment (2026-06)
|
|
193
|
+
|
|
194
|
+
- [x] `collaboration.md` rewritten: Ring Gate Protocol + Iteration field ownership anchors
|
|
195
|
+
- [x] `.cursor/rules/playcraft-orchestrator.mdc` — iteration×loop matrix (no waterfall Gates)
|
|
196
|
+
- [x] `.cursor/rules/playcraft-subagent-boundary.mdc` — ring/loop boundaries
|
|
197
|
+
- [x] Role cards + key refs updated to growth-rings vocabulary
|
|
198
|
+
- [x] `validate-workflow-stop.mjs` — validatePlan uses `loop` not `stage`
|
|
199
|
+
- [x] `verify:visual` + `verify:atom-conformance` + `workflow-doctor --strict`
|
|
200
|
+
- [x] `validate-workflow-stop` invokes `workflow-doctor` `strict: 'stop'` on every gated STOP
|
|
201
|
+
- [x] `ring:gate` passes `--strict-if-references` to `verify:visual` when ASR is locked
|
|
202
|
+
- [x] `pipeline-overview.md` + `docs/harness/playcraft-harness-overview.md` updated
|
|
203
|
+
- [x] Vitest: project-template-workflow, validate-workflow-stop, workflow-doctor
|
|
204
|
+
|
|
205
|
+
> Phases A–N above describe **superseded** `convergence-v1` / `planning-stage-v1` history — do not use for new edits.
|
|
206
|
+
|
|
207
|
+
## Phase O — engine-neutral scaffold (growth-rings + init-template, template `0.3.1-alpha.0`)
|
|
208
|
+
|
|
209
|
+
- [x] `playcraft remix init-template` (`--engine`, `--from-atom-tree`, `--bake`, `--all-engines`)
|
|
210
|
+
- [x] `engine-packs/{phaser,threejs}` + `compose.ts` (project-template ⊕ pack)
|
|
211
|
+
- [x] `game/contract/` + `publishPlayableRuntime()` + Phaser adapter
|
|
212
|
+
- [x] `workflow-doctor`: `.playcraft-engine` vs `meta.engineDecision.adapter`
|
|
213
|
+
- [x] Ring 1 build gate in `playcraft-orchestrator.mdc`
|
|
214
|
+
- [x] `CLAUDE.md` + `collaboration.md` + `pipeline-overview.md` — Ring 1 init-template chain
|
|
215
|
+
- [x] `developer.md` / `skill-selector-guide.md` / `game-designer-workflow-detail.md` — engine vs atom scaffold
|
|
216
|
+
- [x] `playable-record` / `playable-debug` / `playable-validate` / `playcraft-playable-optimization` SKILL — `window.__playable`
|
|
217
|
+
- [x] `docs/harness/playcraft-harness-overview.md` (monorepo meta) — phaser/threejs + init-template
|
|
218
|
+
- [x] Vitest: `scaffold-compose.test.ts`, workflow-doctor engine checks, verify-contract legacy warn
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
cd packages/cli && pnpm exec vitest run test/scaffold-compose.test.ts test/workflow-doctor.test.ts test/verify-contract.test.ts test/harness-contract.test.ts
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
## Phase N — planning-stage-v1 (Gate #1 slim + planning stage + Gate #exec)
|
|
225
|
+
|
|
226
|
+
Flow change: Gate #1 only requires design-brief + DESIGN.md. After Gate #2a (MC selection), a new `planning` stage produces layout-spec (via sendMessage to Game Designer) → atom-tree (ref-flow) → implementation-plan (plan-writer). Gate #exec confirms the execution plan before development.
|
|
227
|
+
|
|
228
|
+
- [x] `CLAUDE.md`: Stage Model string includes `planning`; Gates include `#exec`; Stage sync table updated; Stage transition table updated; Asset Contract locked after Gate #exec (not #1); Post-STOP verification includes planning docs
|
|
229
|
+
- [x] `docs/team/collaboration.md`: Gate Protocol table includes `#exec`; Gate #1 section rewritten (2 deliverables only); Gate #exec section added; Stage field ownership includes `planning`; Four-doc discipline updated; Glossary updated (两件套)
|
|
230
|
+
- [x] `docs/pipeline-overview.md`: 全景矩阵 includes `planning`; Gate 节点一览 includes `#exec`; Stage 1 pm 产出缩减; Stage 2.5 `planning` added; Stage 3 development adjusted; Orchestrator 决策速查 updated
|
|
231
|
+
- [x] `docs/team/agent-runtime-matrix.md`: Game Designer row updated (planning stage sendMessage); Orchestrator row updated (planning + #exec); Reviewer row updated (execution_plan_check)
|
|
232
|
+
- [x] `docs/team/agent-conduct.md`: Orchestrator MUST includes #exec; Reviewer MUST includes execution_plan_check; Asset Contract locked after Gate #exec; Gate #1 design_check simplified
|
|
233
|
+
- [x] `templates/project-state.template.md`: Stage string includes `planning`; Gates table includes `#exec`; Handoff examples updated; File Index split (Gate #1 vs Planning)
|
|
234
|
+
- [x] `.claude/agents/reviewer.md`: Runtime table includes `execution_plan_check`; Goals table includes new mode; Review flow summary updated
|
|
235
|
+
- [x] `.claude/agents/game-designer.md`: Outputs section mentions layout-spec in planning stage via sendMessage
|
|
236
|
+
- [x] `.claude/agents/refs/skill-selector-guide.md`: temporary ref-flow atom selection runs in ring 1 after Game Designer; ref-flow deepening remains ring 2+
|
|
237
|
+
- [ ] `.claude/agents/refs/implementation-plan-guide.md`: Note that plan-writer runs in `planning` stage
|
|
238
|
+
- [ ] `.claude/agents/refs/storyboard-generation-guide.md`: Confirm no layout-spec dependency (storyboard reads design-brief only)
|
|
239
|
+
- [ ] `docs/team/workflow-changelog.md`: Document `planning-stage-v1` change
|
|
240
|
+
- [ ] Tests updated for new stage/gate sequence
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GAME_CONFIG — single source of truth for layout + runtime switches.
|
|
3
|
+
*
|
|
4
|
+
* Both the running game (TypeScript) and the verification harness
|
|
5
|
+
* (`verify:ui` loads this file directly via esbuild) read THIS file.
|
|
6
|
+
* There is no generated copy, so the values verify against can never drift
|
|
7
|
+
* from the values the game runs with.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
export interface GameConfig {
|
|
11
|
+
/** Design-space canvas width in px (portrait playable). */
|
|
12
|
+
DESIGN_WIDTH: number;
|
|
13
|
+
/** Design-space canvas height in px. */
|
|
14
|
+
DESIGN_HEIGHT: number;
|
|
15
|
+
|
|
16
|
+
/** CTA band vertical center / height / width in design space. */
|
|
17
|
+
CTA_Y: number;
|
|
18
|
+
CTA_H: number;
|
|
19
|
+
CTA_W: number;
|
|
20
|
+
|
|
21
|
+
/** Safe-area insets in px. */
|
|
22
|
+
SAFE_TOP: number;
|
|
23
|
+
SAFE_BOTTOM: number;
|
|
24
|
+
SAFE_SIDE: number;
|
|
25
|
+
|
|
26
|
+
/** Dev/record switch: show the one-click auto-play debug button. */
|
|
27
|
+
SHOW_DEBUG_BUTTON: boolean;
|
|
28
|
+
/** Dev/record switch: skip transitions to speed up capture. */
|
|
29
|
+
SKIP_TRANSITIONS: boolean;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export const GAME_CONFIG: GameConfig = {
|
|
33
|
+
DESIGN_WIDTH: 1080,
|
|
34
|
+
DESIGN_HEIGHT: 1920,
|
|
35
|
+
|
|
36
|
+
CTA_Y: 1620,
|
|
37
|
+
CTA_H: 300,
|
|
38
|
+
CTA_W: 1080,
|
|
39
|
+
|
|
40
|
+
SAFE_TOP: 48,
|
|
41
|
+
SAFE_BOTTOM: 48,
|
|
42
|
+
SAFE_SIDE: 16,
|
|
43
|
+
|
|
44
|
+
SHOW_DEBUG_BUTTON: true,
|
|
45
|
+
SKIP_TRANSITIONS: false,
|
|
46
|
+
};
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import type { PlayablePhase, PlayableRuntimeContract, SceneManagerContract } from "./types.js";
|
|
2
|
+
|
|
3
|
+
export type PublishPlayableBinding = {
|
|
4
|
+
engine?: string;
|
|
5
|
+
engineHandle?: unknown;
|
|
6
|
+
sceneManager: SceneManagerContract;
|
|
7
|
+
onDebugAutoPlay: () => void;
|
|
8
|
+
hideDebugUi?: () => void;
|
|
9
|
+
getCanvas?: () => HTMLCanvasElement | null;
|
|
10
|
+
getCaptureFps?: () => number;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
/** DOM id for the on-screen one-click clear (debug auto-play) button. */
|
|
14
|
+
export const DEBUG_CLEAR_BUTTON_ID = "playable-debug-clear";
|
|
15
|
+
|
|
16
|
+
/** True when the page was opened with the `?debug=1` URL flag. */
|
|
17
|
+
export function isDebugMode(): boolean {
|
|
18
|
+
try {
|
|
19
|
+
return new URLSearchParams(window.location.search).get("debug") === "1";
|
|
20
|
+
} catch {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** Remove the on-screen one-click clear button (e.g. before MP4 capture). */
|
|
26
|
+
export function removeDebugClearButton(): void {
|
|
27
|
+
if (typeof document === "undefined") return;
|
|
28
|
+
document.getElementById(DEBUG_CLEAR_BUTTON_ID)?.remove();
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Mount a fixed, on-screen "一键通关 (one-click clear)" debug button that calls
|
|
33
|
+
* window.__playable.autoPlay(). Rendered ONLY when the page is opened with
|
|
34
|
+
* `?debug=1`, so production / capture stays clean. Idempotent.
|
|
35
|
+
*
|
|
36
|
+
* Ring 1 onward this button is a hard requirement (verified by verify:firstwin):
|
|
37
|
+
* every playable must expose a debug-gated one-click clear from the first ring.
|
|
38
|
+
*/
|
|
39
|
+
export function mountDebugClearButton(contract: PlayableRuntimeContract): void {
|
|
40
|
+
if (typeof document === "undefined" || !isDebugMode()) return;
|
|
41
|
+
if (document.getElementById(DEBUG_CLEAR_BUTTON_ID)) return;
|
|
42
|
+
|
|
43
|
+
const btn = document.createElement("button");
|
|
44
|
+
btn.id = DEBUG_CLEAR_BUTTON_ID;
|
|
45
|
+
btn.type = "button";
|
|
46
|
+
btn.textContent = "🐞 一键通关";
|
|
47
|
+
btn.setAttribute("data-debug", "1");
|
|
48
|
+
Object.assign(btn.style, {
|
|
49
|
+
position: "fixed",
|
|
50
|
+
left: "50%",
|
|
51
|
+
bottom: "16px",
|
|
52
|
+
transform: "translateX(-50%)",
|
|
53
|
+
zIndex: "999999",
|
|
54
|
+
padding: "10px 18px",
|
|
55
|
+
fontSize: "16px",
|
|
56
|
+
fontFamily: "system-ui, sans-serif",
|
|
57
|
+
color: "#1a1a1a",
|
|
58
|
+
background: "#FFD54A",
|
|
59
|
+
border: "2px solid #1a1a1a",
|
|
60
|
+
borderRadius: "10px",
|
|
61
|
+
boxShadow: "0 2px 8px rgba(0,0,0,0.35)",
|
|
62
|
+
cursor: "pointer",
|
|
63
|
+
} as Partial<CSSStyleDeclaration>);
|
|
64
|
+
btn.addEventListener("click", (e) => {
|
|
65
|
+
e.preventDefault();
|
|
66
|
+
try {
|
|
67
|
+
contract.autoPlay();
|
|
68
|
+
} catch (err) {
|
|
69
|
+
console.error("[playable-debug] one-click clear failed", err);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
const mount = () => document.body.appendChild(btn);
|
|
74
|
+
if (document.body) mount();
|
|
75
|
+
else window.addEventListener("DOMContentLoaded", mount, { once: true });
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/** Publish the neutral recorder/debug entry point after the main scene is ready. */
|
|
79
|
+
export function publishPlayableRuntime(binding: PublishPlayableBinding): PlayableRuntimeContract {
|
|
80
|
+
const contract: PlayableRuntimeContract = {
|
|
81
|
+
engine: binding.engine ?? "unknown",
|
|
82
|
+
engineHandle: binding.engineHandle,
|
|
83
|
+
sceneManager: binding.sceneManager,
|
|
84
|
+
getState: () => ({
|
|
85
|
+
currentPhase: binding.sceneManager.currentPhase,
|
|
86
|
+
isGameOver: binding.sceneManager.isGameOver(),
|
|
87
|
+
}),
|
|
88
|
+
autoPlay: binding.onDebugAutoPlay,
|
|
89
|
+
start: binding.onDebugAutoPlay,
|
|
90
|
+
};
|
|
91
|
+
// Always provide hideDebugUi: it removes the on-screen debug button (for clean
|
|
92
|
+
// capture) and delegates to any engine-specific cleanup the binding supplied.
|
|
93
|
+
contract.hideDebugUi = () => {
|
|
94
|
+
removeDebugClearButton();
|
|
95
|
+
binding.hideDebugUi?.();
|
|
96
|
+
};
|
|
97
|
+
if (binding.getCanvas) contract.getCanvas = binding.getCanvas;
|
|
98
|
+
if (binding.getCaptureFps) contract.getCaptureFps = binding.getCaptureFps;
|
|
99
|
+
window.__playable = contract;
|
|
100
|
+
mountDebugClearButton(contract);
|
|
101
|
+
return contract;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/** Legacy Phaser MainScene shape — prefer window.__playable for new engines. */
|
|
105
|
+
export interface PlayableMainSceneLike {
|
|
106
|
+
sceneManager?: SceneManagerContract;
|
|
107
|
+
_onDebugAutoPlay?(): void;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Validate that a scene satisfies the legacy Phaser harness contract.
|
|
112
|
+
* Neutral engines should rely on publishPlayableRuntime only.
|
|
113
|
+
*/
|
|
114
|
+
export function assertPlayableSceneContract(scene: PlayableMainSceneLike): void {
|
|
115
|
+
const problems: string[] = [];
|
|
116
|
+
|
|
117
|
+
if (!scene.sceneManager) {
|
|
118
|
+
problems.push("scene.sceneManager is missing");
|
|
119
|
+
} else {
|
|
120
|
+
if (typeof scene.sceneManager.currentPhase !== "string") {
|
|
121
|
+
problems.push("sceneManager.currentPhase must be a PlayablePhase string");
|
|
122
|
+
}
|
|
123
|
+
if (typeof scene.sceneManager.isGameOver !== "function") {
|
|
124
|
+
problems.push("sceneManager.isGameOver() must be a function");
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (typeof scene._onDebugAutoPlay !== "function") {
|
|
128
|
+
problems.push("scene._onDebugAutoPlay() must be a function");
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if (problems.length > 0) {
|
|
132
|
+
const msg =
|
|
133
|
+
"[playable-contract] MainScene violates the recording/debug harness contract:\n" +
|
|
134
|
+
problems.map((p) => ` - ${p}`).join("\n") +
|
|
135
|
+
"\nSee game/runtime-contract.ts — record:mp4 and one-click clear depend on these hooks.";
|
|
136
|
+
console.error(msg);
|
|
137
|
+
throw new Error(msg);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export type { PlayablePhase, PlayableRuntimeContract, SceneManagerContract };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/** Lifecycle phases the recorder waits on (HOOK → … → ENDCARD). */
|
|
2
|
+
export type PlayablePhase = "HOOK" | "TUTORIAL" | "GAMEPLAY" | "ENDCARD";
|
|
3
|
+
|
|
4
|
+
/** Minimal scene-state surface the harness reads. */
|
|
5
|
+
export interface SceneManagerContract {
|
|
6
|
+
currentPhase: PlayablePhase;
|
|
7
|
+
isGameOver(): boolean;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/** Engine-neutral recorder/debug surface. Do not attach harness methods to the engine object. */
|
|
11
|
+
export interface PlayableRuntimeContract {
|
|
12
|
+
engine: string;
|
|
13
|
+
/** Opaque engine handle (Phaser.Game, THREE.WebGLRenderer context owner, etc.). */
|
|
14
|
+
engineHandle?: unknown;
|
|
15
|
+
sceneManager: SceneManagerContract;
|
|
16
|
+
getState(): { currentPhase: PlayablePhase; isGameOver: boolean };
|
|
17
|
+
autoPlay(): void;
|
|
18
|
+
start(): void;
|
|
19
|
+
/** Optional: hide debug UI before capture. */
|
|
20
|
+
hideDebugUi?(): void;
|
|
21
|
+
/** Optional: canvas for record bridge when engine handle is opaque. */
|
|
22
|
+
getCanvas?(): HTMLCanvasElement | null;
|
|
23
|
+
/** Optional: target capture FPS hint for record bridge. */
|
|
24
|
+
getCaptureFps?(): number;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
declare global {
|
|
28
|
+
interface Window {
|
|
29
|
+
__playable?: PlayableRuntimeContract;
|
|
30
|
+
__game?: unknown;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export {};
|
|
File without changes
|