@playcraft/cli 0.0.43 → 0.0.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/atom-tree/build-skeleton.js +180 -0
- package/dist/atom-tree/fusion-hints.js +86 -0
- package/dist/atom-tree/selection.js +402 -0
- package/dist/commands/build-all.js +33 -5
- package/dist/commands/build.js +13 -7
- package/dist/commands/create.js +774 -50
- package/dist/commands/image.js +11 -0
- package/dist/commands/prad.js +3 -3
- package/dist/commands/remix.js +20 -0
- package/dist/commands/skills.js +961 -185
- package/dist/commands/tools-detect.js +56 -0
- package/dist/commands/tools-generation.js +21 -0
- package/dist/commands/tools-video-review.js +100 -0
- package/dist/commands/tools.js +4 -0
- package/dist/index.js +2 -0
- package/dist/prad/check.test.js +23 -1
- package/dist/prad/skills-index.js +1 -1
- package/dist/remix/init-template.js +80 -0
- package/dist/scaffold/compose.js +211 -0
- package/engine-packs/phaser/game/adapters/phaser.ts +52 -0
- package/engine-packs/phaser/game/config/game-config.ts +46 -0
- package/engine-packs/phaser/game/contract/publish.ts +141 -0
- package/engine-packs/phaser/game/contract/types.ts +34 -0
- package/engine-packs/phaser/game/index.ts +81 -0
- package/engine-packs/phaser/game/runtime-contract.ts +28 -0
- package/engine-packs/phaser/manifest.json +1 -0
- package/engine-packs/phaser/package.deps.json +1 -0
- package/engine-packs/threejs/game/config/game-config.ts +46 -0
- package/engine-packs/threejs/game/contract/publish.ts +141 -0
- package/engine-packs/threejs/game/contract/types.ts +34 -0
- package/engine-packs/threejs/game/index.ts +76 -0
- package/engine-packs/threejs/game/runtime-contract.ts +15 -0
- package/engine-packs/threejs/manifest.json +1 -0
- package/engine-packs/threejs/package.deps.json +8 -0
- package/package.json +18 -4
- package/project-template/.claude/agents/artist.md +101 -0
- package/project-template/.claude/agents/developer.md +90 -93
- package/project-template/.claude/agents/game-designer.md +192 -0
- package/project-template/.claude/agents/refs/README.md +57 -51
- package/project-template/.claude/agents/refs/{designer-color-audio-recipes.md → artist-color-audio-recipes.md} +2 -2
- package/project-template/.claude/agents/refs/{designer-deliverable-spec.md → artist-deliverable-spec.md} +57 -57
- package/project-template/.claude/agents/refs/{designer-dimension-axis.md → artist-dimension-axis.md} +5 -5
- package/project-template/.claude/agents/refs/{designer-handoff-v2-checklist.md → artist-handoff-v2-checklist.md} +15 -15
- package/project-template/.claude/agents/refs/artist-legacy-fallback.md +14 -0
- package/project-template/.claude/agents/refs/{designer-master-composite-recipes.md → artist-master-composite-recipes.md} +3 -3
- package/project-template/.claude/agents/refs/artist-style-exploration-flow.md +55 -0
- package/project-template/.claude/agents/refs/developer-dev-handoff.md +83 -40
- package/project-template/.claude/agents/refs/developer-impl-cookbook.md +365 -67
- package/project-template/.claude/agents/refs/developer-legacy-fallback.md +15 -0
- package/project-template/.claude/agents/refs/developer-phase1-flow.md +131 -85
- package/project-template/.claude/agents/refs/framework-5-component-filter.md +252 -0
- package/project-template/.claude/agents/refs/framework-game-feel-juice.md +266 -0
- package/project-template/.claude/agents/refs/framework-mda.md +147 -0
- package/project-template/.claude/agents/refs/game-designer-gameplay-sufficiency.md +123 -0
- package/project-template/.claude/agents/refs/game-designer-legacy-fallback.md +15 -0
- package/project-template/.claude/agents/refs/game-designer-workflow-detail.md +69 -0
- package/project-template/.claude/agents/refs/implementation-plan-guide.md +316 -0
- package/project-template/.claude/agents/refs/reviewer-convergence-eval.md +247 -33
- package/project-template/.claude/agents/refs/reviewer-legacy-fallback.md +14 -0
- package/project-template/.claude/agents/refs/skill-selector-guide.md +465 -0
- package/project-template/.claude/agents/refs/skill-value-layers.md +145 -0
- package/project-template/.claude/agents/refs/storyboard-generation-guide.md +110 -0
- package/project-template/.claude/agents/refs/ta-atlas-deliverable-standard.md +4 -4
- package/project-template/.claude/agents/refs/ta-pipeline-cookbook.md +101 -104
- package/project-template/.claude/agents/refs/technical-artist-legacy-fallback.md +14 -0
- package/project-template/.claude/agents/reviewer.md +81 -95
- package/project-template/.claude/agents/technical-artist.md +71 -95
- package/project-template/.claude/hooks/README.md +83 -35
- package/project-template/.claude/hooks/asr-coverage-validate.mjs +19 -19
- package/project-template/.claude/hooks/block-developer-preflight.mjs +185 -0
- package/project-template/.claude/hooks/block-ring1-tasklist.mjs +95 -0
- package/project-template/.claude/hooks/gate-dispatcher.mjs +78 -0
- package/project-template/.claude/hooks/gate-runner.mjs +557 -0
- package/project-template/.claude/hooks/gate.mjs +170 -0
- package/project-template/.claude/hooks/snapshot-milestone.mjs +246 -0
- package/project-template/.claude/hooks/user-prompt.mjs +193 -0
- package/project-template/.claude/hooks/validate-atom-tree-selection.mjs +281 -0
- package/project-template/.claude/hooks/validate-workflow-stop.mjs +1535 -95
- package/project-template/.claude/settings.json +54 -9
- package/project-template/.claude/skills/brainstorming/SKILL.md +161 -0
- package/project-template/.claude/skills/brainstorming/scripts/frame-template.html +270 -0
- package/project-template/.claude/skills/brainstorming/scripts/helper.js +177 -0
- package/project-template/.claude/skills/brainstorming/scripts/server.cjs +354 -0
- package/project-template/.claude/skills/brainstorming/scripts/start-server.sh +148 -0
- package/project-template/.claude/skills/brainstorming/scripts/stop-server.sh +56 -0
- package/project-template/.claude/skills/brainstorming/scripts/wait-for-selection.sh +62 -0
- package/project-template/.claude/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
- package/project-template/.claude/skills/brainstorming/visual-companion.md +309 -0
- package/project-template/.claude/skills/playcraft-ad-psychology/SKILL.md +3 -3
- package/project-template/.claude/skills/playcraft-art-style-guide/SKILL.md +3 -3
- package/project-template/.claude/skills/playcraft-asset-state-sheet/SKILL.md +35 -25
- package/project-template/.claude/skills/playcraft-audio-generation/SKILL.md +15 -15
- package/project-template/.claude/skills/playcraft-build-optimizer/SKILL.md +5 -5
- package/project-template/.claude/skills/playcraft-image-generation/SKILL.md +5 -5
- package/project-template/.claude/skills/playcraft-image-generation/reference/compare-style.template.mjs +5 -5
- package/project-template/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +116 -27
- package/project-template/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +1 -1
- package/project-template/.claude/skills/playcraft-image-processing/SKILL.md +219 -0
- package/project-template/.claude/skills/playcraft-playable-optimization/SKILL.md +161 -0
- package/project-template/.claude/skills/playcraft-research/SKILL.md +24 -21
- package/project-template/.claude/skills/playcraft-skill-recommender/SKILL.md +331 -0
- package/project-template/.claude/skills/playcraft-sprite-generation/SKILL.md +48 -48
- package/project-template/.claude/skills/playcraft-sprite-remix/SKILL.md +158 -0
- package/project-template/.claude/skills/playcraft-sprite-sheet/SKILL.md +100 -0
- package/project-template/.claude/skills/playcraft-storyboard/SKILL.md +4 -4
- package/project-template/.claude/skills/playcraft-style-qa/SKILL.md +45 -45
- package/project-template/.claude/skills/playcraft-text-rendering/SKILL.md +27 -27
- package/project-template/.claude/skills/session-analyzer/SKILL.md +386 -0
- package/project-template/.claude/skills/session-analyzer/scripts/execution-breakdown.mjs +182 -0
- package/project-template/.claude/skills/session-analyzer/scripts/find-turns.mjs +72 -0
- package/project-template/.claude/skills/session-analyzer/scripts/heavy-output.mjs +121 -0
- package/project-template/.claude/skills/session-analyzer/scripts/resolve-session.mjs +103 -0
- package/project-template/.claude/skills/session-analyzer/scripts/subagent-stats.mjs +127 -0
- package/project-template/.claude/skills/session-analyzer/scripts/subagent-tool-timeline.mjs +106 -0
- package/project-template/.claude/skills/session-analyzer/scripts/time-gaps.mjs +128 -0
- package/project-template/.claude/skills/session-analyzer/scripts/turn-timeline.mjs +67 -0
- package/project-template/.claude/snapshot.mjs +350 -0
- package/project-template/.codebuddy/settings.json +53 -0
- package/project-template/.cursor/hooks.json +1 -1
- package/project-template/.cursor/rules/playcraft-orchestrator.mdc +91 -86
- package/project-template/.cursor/rules/playcraft-subagent-boundary.mdc +16 -5
- package/project-template/CHANGELOG.md +105 -0
- package/project-template/CLAUDE.md +58 -254
- package/project-template/docs/DESIGN.md +65 -0
- package/project-template/docs/intent-clarifications.md +58 -0
- package/project-template/docs/pipeline-overview.md +69 -0
- package/project-template/docs/project-state.md +211 -0
- package/project-template/docs/team/agent-conduct.md +51 -105
- package/project-template/docs/team/agent-runtime-matrix.md +60 -74
- package/project-template/docs/team/atom-tree-format.md +169 -0
- package/project-template/docs/team/collaboration.md +319 -225
- package/project-template/docs/team/core-model.md +80 -46
- package/project-template/docs/team/game-designer-migration-todo.md +8 -0
- package/project-template/docs/team/harness-legacy-deprecation.md +23 -0
- package/project-template/docs/team/platform-capabilities.md +16 -13
- package/project-template/docs/team/workflow-changelog.md +95 -23
- package/project-template/docs/team/workflow-consistency-checklist.md +93 -45
- package/project-template/focus-lab/.gitkeep +0 -0
- package/project-template/game/.playcraft-scaffold-pending +0 -0
- package/project-template/game/index.ts +18 -0
- package/project-template/globals.d.ts +51 -0
- package/project-template/index.css +34 -0
- package/project-template/index.html +18 -0
- package/project-template/main.ts +9 -0
- package/project-template/package.json +79 -0
- package/project-template/skills/README.md +52 -0
- package/project-template/skills/_shared/agent-prep.md +136 -0
- package/project-template/skills/_shared/requirements.txt +1 -0
- package/project-template/skills/_shared/scripts/build-evidence-gate.mjs +87 -0
- package/project-template/skills/_shared/scripts/context-budget.mjs +215 -0
- package/project-template/skills/_shared/scripts/create-playable.mjs +140 -0
- package/project-template/skills/_shared/scripts/dev-start.mjs +151 -0
- package/project-template/skills/_shared/scripts/disclosure-config.mjs +480 -0
- package/project-template/skills/_shared/scripts/ensure-project.mjs +532 -0
- package/project-template/skills/_shared/scripts/gen-placeholder-audio.py +345 -0
- package/project-template/skills/_shared/scripts/gen-placeholder.py +244 -0
- package/project-template/skills/_shared/scripts/harness-smoke.mjs +257 -0
- package/project-template/skills/_shared/scripts/lib/validator-artifacts.mjs +129 -0
- package/project-template/skills/_shared/scripts/placeholder-pack-sheet.mjs +67 -0
- package/project-template/skills/_shared/scripts/placeholder_audio_lib.py +142 -0
- package/project-template/skills/_shared/scripts/placeholder_lib.py +993 -0
- package/project-template/skills/_shared/scripts/render-project-state.mjs +278 -0
- package/project-template/skills/_shared/scripts/ring-config.mjs +252 -0
- package/project-template/skills/_shared/scripts/skills-check.mjs +176 -0
- package/project-template/skills/_shared/scripts/slice-set.mjs +77 -0
- package/project-template/skills/_shared/scripts/state-advance-ring.mjs +63 -0
- package/project-template/skills/_shared/scripts/state-get.mjs +215 -0
- package/project-template/skills/_shared/scripts/state-handoff.mjs +120 -0
- package/project-template/skills/_shared/scripts/state-set.mjs +113 -0
- package/project-template/skills/_shared/scripts/state-store.mjs +893 -0
- package/project-template/skills/_shared/scripts/sync-template-skills.mjs +112 -0
- package/project-template/skills/_shared/scripts/verify-asset-code-sync.mjs +265 -0
- package/project-template/skills/_shared/scripts/verify-atom-conformance.mjs +181 -0
- package/project-template/skills/_shared/scripts/verify-env.mjs +285 -0
- package/project-template/skills/_shared/scripts/verify-placeholders.mjs +161 -0
- package/project-template/skills/_shared/scripts/workflow-doctor.mjs +348 -0
- package/project-template/skills/playable-animate/SKILL.md +52 -0
- package/project-template/skills/playable-animate/agents/openai.yaml +4 -0
- package/project-template/skills/playable-animate/references/board-refresh.md +30 -0
- package/project-template/skills/playable-animate/references/diagnosis-checklist.md +25 -0
- package/project-template/skills/playable-animate/references/entrance-sequencing.md +33 -0
- package/project-template/skills/playable-animate/references/interaction-timing.md +23 -0
- package/project-template/skills/playable-art/SKILL.md +203 -0
- package/project-template/skills/playable-art/agents/openai.yaml +4 -0
- package/project-template/skills/playable-art/references/alpha-postprocess.md +46 -0
- package/project-template/skills/playable-art/references/cta-art-spec.md +59 -0
- package/project-template/skills/playable-art/references/layout-proportions.md +30 -0
- package/project-template/skills/playable-art/references/prompt-patterns.md +83 -0
- package/project-template/skills/playable-art/references/reference-comparison.md +30 -0
- package/project-template/skills/playable-art/references/sheet-import-v2.md +91 -0
- package/project-template/skills/playable-art/scripts/build-atlas.py +332 -0
- package/project-template/skills/playable-art/scripts/chroma-key.py +50 -0
- package/project-template/skills/playable-art/scripts/extract-alpha-split.py +65 -0
- package/project-template/skills/playable-art/scripts/extract-dual-bg-alpha.py +118 -0
- package/project-template/skills/playable-art/scripts/import-gpt-art-sheets-v2.py +403 -0
- package/project-template/skills/playable-art/scripts/import-gpt-art-sheets.py +280 -0
- package/project-template/skills/playable-art/scripts/import-gpt-tile-sheet.py +114 -0
- package/project-template/skills/playable-art/scripts/import_gpt_art_pipeline.py +321 -0
- package/project-template/skills/playable-art/scripts/import_gpt_art_sheets_v2_test.py +126 -0
- package/project-template/skills/playable-art/scripts/placeholder_common.py +98 -0
- package/project-template/skills/playable-art/scripts/remove-bg.py +91 -0
- package/project-template/skills/playable-art/scripts/review-processed-assets.py +468 -0
- package/project-template/skills/playable-art/scripts/review_processed_assets_test.py +116 -0
- package/project-template/skills/playable-art/scripts/verify-alpha-clean.py +105 -0
- package/project-template/skills/playable-debug/SKILL.md +116 -0
- package/project-template/skills/playable-debug/agents/openai.yaml +4 -0
- package/project-template/skills/playable-debug/references/debug-config.md +40 -0
- package/project-template/skills/playable-focus/SKILL.md +148 -0
- package/project-template/skills/playable-focus/scripts/bootstrap-playground.mjs +84 -0
- package/project-template/skills/playable-focus/scripts/extract-focus-frames.mjs +87 -0
- package/project-template/skills/playable-focus/scripts/generate-focus-reports.mjs +121 -0
- package/project-template/skills/playable-focus/scripts/playground.mjs +390 -0
- package/project-template/skills/playable-focus/templates/focus-lab/frame.html +39 -0
- package/project-template/skills/playable-focus/templates/focus-lab/harness/clean-stage.js +114 -0
- package/project-template/skills/playable-focus/templates/focus-lab/harness/frame-lab-scene.js +94 -0
- package/project-template/skills/playable-focus/templates/focus-lab/harness/particle-lab-scene.js +224 -0
- package/project-template/skills/playable-focus/templates/focus-lab/model.html +16 -0
- package/project-template/skills/playable-focus/templates/focus-lab/particle.html +38 -0
- package/project-template/skills/playable-focus/templates/focus-lab/shatter.html +47 -0
- package/project-template/skills/playable-focus/templates/playground/registry.template.json +55 -0
- package/project-template/skills/playable-focus/templates/playground/vfx-catalog.template.json +280 -0
- package/project-template/skills/playable-fx-decompose/SKILL.md +212 -0
- package/project-template/skills/playable-fx-decompose/examples.md +89 -0
- package/project-template/skills/playable-fx-decompose/reference.md +201 -0
- package/project-template/skills/playable-fx-decompose/requirements.txt +2 -0
- package/project-template/skills/playable-fx-decompose/scripts/build-blank-tile-crack.py +192 -0
- package/project-template/skills/playable-fx-decompose/scripts/fix-shard-debris-frames.py +60 -0
- package/project-template/skills/playable-fx-decompose/scripts/generate-shard-debris.py +276 -0
- package/project-template/skills/playable-fx-peak/SKILL.md +237 -0
- package/project-template/skills/playable-fx-peak/requirements.txt +2 -0
- package/project-template/skills/playable-fx-peak/scripts/fix-frame-edges.py +70 -0
- package/project-template/skills/playable-fx-peak/scripts/repack-frame-sequence.py +526 -0
- package/project-template/skills/playable-fx-peak/scripts/validate-frame-anchors.py +130 -0
- package/project-template/skills/playable-placeholder/SKILL.md +239 -0
- package/project-template/skills/playable-record/SKILL.md +166 -0
- package/project-template/skills/playable-record/scripts/lib/build-artifact.mjs +92 -0
- package/project-template/skills/playable-record/scripts/lib/dev-server.mjs +104 -0
- package/project-template/skills/playable-record/scripts/lib/record-audio-bridge.js +141 -0
- package/project-template/skills/playable-record/scripts/lib/slice-structure-verify.mjs +199 -0
- package/project-template/skills/playable-record/scripts/record-playable.mjs +583 -0
- package/project-template/skills/playable-record/scripts/verify-build.mjs +185 -0
- package/project-template/skills/playable-record/scripts/verify-contract.mjs +261 -0
- package/project-template/skills/playable-record/scripts/verify-firstwin.mjs +398 -0
- package/project-template/skills/playable-record/scripts/verify-fusion.mjs +320 -0
- package/project-template/skills/playable-record/scripts/verify-lifecycle.mjs +78 -0
- package/project-template/skills/playable-record/scripts/verify-slice-artist.mjs +53 -0
- package/project-template/skills/playable-record/scripts/verify-slice-ta.mjs +53 -0
- package/project-template/skills/playable-record/scripts/verify-slice.mjs +142 -0
- package/project-template/skills/playable-record/scripts/verify-visual-ring.mjs +250 -0
- package/project-template/skills/playable-record/scripts/verify-visual-ring1.mjs +190 -0
- package/project-template/skills/playable-record/scripts/verify-vlm-video.mjs +227 -0
- package/project-template/skills/playable-validate/SKILL.md +260 -0
- package/project-template/skills/playable-validate/references/checklist-detail.md +36 -0
- package/project-template/skills/playable-validate/references/single-html-bundle.md +76 -0
- package/project-template/skills/playable-validate/validation-rules.md +200 -0
- package/project-template/skills/playable-verify-ui/SKILL.md +295 -0
- package/project-template/skills/playable-verify-ui/examples/asset-manifest.example.json +36 -0
- package/project-template/skills/playable-verify-ui/examples/mahjong-match.profile.yaml +334 -0
- package/project-template/skills/playable-verify-ui/profiles/template.profile.yaml +84 -0
- package/project-template/skills/playable-verify-ui/reference.md +165 -0
- package/project-template/skills/playable-verify-ui/references/phaser-patterns.md +67 -0
- package/project-template/skills/playable-verify-ui/references/scaling-decision-tree.md +51 -0
- package/project-template/skills/playable-verify-ui/requirements.txt +7 -0
- package/project-template/skills/playable-verify-ui/schema/asset-manifest.schema.json +68 -0
- package/project-template/skills/playable-verify-ui/schema/playable-ui-profile.schema.json +171 -0
- package/project-template/skills/playable-verify-ui/scripts/asset_manifest.py +231 -0
- package/project-template/skills/playable-verify-ui/scripts/lib/__init__.py +1 -0
- package/project-template/skills/playable-verify-ui/scripts/lib/config_expr.js +218 -0
- package/project-template/skills/playable-verify-ui/scripts/lib/node_utils.js +51 -0
- package/project-template/skills/playable-verify-ui/scripts/lib/profile_loader.py +59 -0
- package/project-template/skills/playable-verify-ui/scripts/lib/report.py +106 -0
- package/project-template/skills/playable-verify-ui/scripts/lib/runtime_contract.js +116 -0
- package/project-template/skills/playable-verify-ui/scripts/measure_frame_content.py +77 -0
- package/project-template/skills/playable-verify-ui/scripts/run_all.py +265 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_asset_sizes.py +77 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_assets_present.py +62 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_atlas_budget.py +84 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_atlas_frames.py +79 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_bg_clean.py +365 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_doc_asset_sync.py +90 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_fetch_antipatterns.py +59 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_game_config_load.js +54 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_hardcoded_layout.js +64 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_layout_regions.js +110 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_profile_schema.py +37 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_ring1_visual.py +211 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_runtime_contract.js +58 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_script_load_order.js +73 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_slice_plan.py +238 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_slice_plan_test.py +125 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_text_overlap.py +333 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_tile_consistency.py +323 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_vision_evidence.py +894 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_vision_evidence_test.py +122 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_visual.py +422 -0
- package/project-template/templates/{designer-log.template.md → artist-log.template.md} +26 -31
- package/project-template/templates/atom-tree.template.json +133 -0
- package/project-template/templates/design-brief.template.md +59 -162
- package/project-template/templates/design-lens-checklist.reference.md +14 -14
- package/project-template/templates/design-methodology.md +25 -25
- package/project-template/templates/design.template.md +50 -0
- package/project-template/templates/developer-log.template.md +187 -63
- package/project-template/templates/five-axis-framework.md +89 -44
- package/project-template/templates/gen-placeholder-audio.template.mjs +63 -0
- package/project-template/templates/gen-placeholders.template.mjs +81 -0
- package/project-template/templates/intent-clarifications.template.md +7 -7
- package/project-template/templates/layout-spec.template.md +32 -20
- package/project-template/templates/plan.template.md +80 -0
- package/project-template/templates/project-state.template.md +90 -191
- package/project-template/templates/review-report.template.md +208 -24
- package/project-template/templates/style-exploration.template.md +8 -8
- package/project-template/templates/ta-log.template.md +58 -35
- package/project-template/tsconfig.json +20 -0
- package/project-template/vite.config.ts +27 -0
- package/project-templates/phaser/.claude/agents/artist.md +101 -0
- package/project-templates/phaser/.claude/agents/developer.md +123 -0
- package/project-templates/phaser/.claude/agents/game-designer.md +192 -0
- package/project-templates/phaser/.claude/agents/refs/README.md +77 -0
- package/project-templates/phaser/.claude/agents/refs/artist-art-style-catalog.md +533 -0
- package/project-templates/phaser/.claude/agents/refs/artist-color-audio-recipes.md +153 -0
- package/project-templates/phaser/.claude/agents/refs/artist-deliverable-spec.md +230 -0
- package/project-templates/phaser/.claude/agents/refs/artist-dimension-axis.md +27 -0
- package/project-templates/phaser/.claude/agents/refs/artist-handoff-v2-checklist.md +76 -0
- package/project-templates/phaser/.claude/agents/refs/artist-legacy-fallback.md +14 -0
- package/project-templates/phaser/.claude/agents/refs/artist-master-composite-recipes.md +208 -0
- package/project-templates/phaser/.claude/agents/refs/artist-style-exploration-flow.md +55 -0
- package/project-templates/phaser/.claude/agents/refs/developer-dev-handoff.md +152 -0
- package/project-templates/phaser/.claude/agents/refs/developer-impl-cookbook.md +432 -0
- package/project-templates/phaser/.claude/agents/refs/developer-legacy-fallback.md +15 -0
- package/project-templates/phaser/.claude/agents/refs/developer-phase1-flow.md +404 -0
- package/project-templates/phaser/.claude/agents/refs/framework-5-component-filter.md +252 -0
- package/project-templates/phaser/.claude/agents/refs/framework-game-feel-juice.md +266 -0
- package/project-templates/phaser/.claude/agents/refs/framework-mda.md +147 -0
- package/project-templates/phaser/.claude/agents/refs/game-designer-gameplay-sufficiency.md +123 -0
- package/project-templates/phaser/.claude/agents/refs/game-designer-legacy-fallback.md +15 -0
- package/project-templates/phaser/.claude/agents/refs/game-designer-workflow-detail.md +69 -0
- package/project-templates/phaser/.claude/agents/refs/implementation-plan-guide.md +309 -0
- package/project-templates/phaser/.claude/agents/refs/reviewer-convergence-eval.md +350 -0
- package/project-templates/phaser/.claude/agents/refs/reviewer-legacy-fallback.md +14 -0
- package/project-templates/phaser/.claude/agents/refs/reviewer-six-dimension-eval.md +6 -0
- package/project-templates/phaser/.claude/agents/refs/skill-selector-guide.md +465 -0
- package/project-templates/phaser/.claude/agents/refs/skill-value-layers.md +145 -0
- package/project-templates/phaser/.claude/agents/refs/storyboard-generation-guide.md +110 -0
- package/project-templates/phaser/.claude/agents/refs/ta-3d-flip-recipe.md +88 -0
- package/project-templates/phaser/.claude/agents/refs/ta-atlas-deliverable-standard.md +67 -0
- package/project-templates/phaser/.claude/agents/refs/ta-batch-pipeline-recipes.md +120 -0
- package/project-templates/phaser/.claude/agents/refs/ta-image-generation-detail.md +300 -0
- package/project-templates/phaser/.claude/agents/refs/ta-image-ops-reference.md +495 -0
- package/project-templates/phaser/.claude/agents/refs/ta-pipeline-cookbook.md +1141 -0
- package/project-templates/phaser/.claude/agents/refs/ta-tools-reference.md +111 -0
- package/project-templates/phaser/.claude/agents/refs/ta-vfx-preset-catalog.md +365 -0
- package/project-templates/phaser/.claude/agents/refs/technical-artist-legacy-fallback.md +14 -0
- package/project-templates/phaser/.claude/agents/reviewer.md +116 -0
- package/project-templates/phaser/.claude/agents/technical-artist.md +100 -0
- package/project-templates/phaser/.claude/hooks/README.md +120 -0
- package/project-templates/phaser/.claude/hooks/asr-coverage-validate.mjs +381 -0
- package/project-templates/phaser/.claude/hooks/block-developer-preflight.mjs +185 -0
- package/project-templates/phaser/.claude/hooks/block-ring1-tasklist.mjs +95 -0
- package/project-templates/phaser/.claude/hooks/gate-dispatcher.mjs +78 -0
- package/project-templates/phaser/.claude/hooks/gate-runner.mjs +557 -0
- package/project-templates/phaser/.claude/hooks/gate.mjs +171 -0
- package/project-templates/phaser/.claude/hooks/snapshot-milestone.mjs +247 -0
- package/project-templates/phaser/.claude/hooks/user-prompt.mjs +194 -0
- package/project-templates/phaser/.claude/hooks/validate-atom-tree-selection.mjs +281 -0
- package/project-templates/phaser/.claude/hooks/validate-workflow-stop.mjs +1889 -0
- package/project-templates/phaser/.claude/settings.json +81 -0
- package/project-templates/phaser/.claude/skills/brainstorming/SKILL.md +161 -0
- package/project-templates/phaser/.claude/skills/brainstorming/scripts/frame-template.html +270 -0
- package/project-templates/phaser/.claude/skills/brainstorming/scripts/helper.js +177 -0
- package/project-templates/phaser/.claude/skills/brainstorming/scripts/server.cjs +354 -0
- package/project-templates/phaser/.claude/skills/brainstorming/scripts/start-server.sh +148 -0
- package/project-templates/phaser/.claude/skills/brainstorming/scripts/stop-server.sh +56 -0
- package/project-templates/phaser/.claude/skills/brainstorming/scripts/wait-for-selection.sh +62 -0
- package/project-templates/phaser/.claude/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
- package/project-templates/phaser/.claude/skills/brainstorming/visual-companion.md +309 -0
- package/project-templates/phaser/.claude/skills/playcraft-ad-psychology/SKILL.md +182 -0
- package/project-templates/phaser/.claude/skills/playcraft-art-style-guide/SKILL.md +123 -0
- package/project-templates/phaser/.claude/skills/playcraft-asset-state-sheet/SKILL.md +205 -0
- package/project-templates/phaser/.claude/skills/playcraft-audio-generation/SKILL.md +280 -0
- package/project-templates/phaser/.claude/skills/playcraft-batch-pipeline/SKILL.md +184 -0
- package/project-templates/phaser/.claude/skills/playcraft-build-optimizer/SKILL.md +306 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/SKILL.md +298 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/build-sprite-sheet.template.mjs +123 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/compare-style.template.mjs +254 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +324 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +97 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/gen-edit-variants.template.mjs +118 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +137 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +397 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/validate-sprite-sheet.template.mjs +296 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-ops/SKILL.md +122 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-processing/SKILL.md +219 -0
- package/project-templates/phaser/.claude/skills/playcraft-masking/SKILL.md +373 -0
- package/project-templates/phaser/.claude/skills/playcraft-playable-optimization/SKILL.md +161 -0
- package/project-templates/phaser/.claude/skills/playcraft-research/SKILL.md +215 -0
- package/project-templates/phaser/.claude/skills/playcraft-skill-recommender/SKILL.md +331 -0
- package/project-templates/phaser/.claude/skills/playcraft-sprite-generation/SKILL.md +423 -0
- package/project-templates/phaser/.claude/skills/playcraft-sprite-remix/SKILL.md +158 -0
- package/project-templates/phaser/.claude/skills/playcraft-sprite-sheet/SKILL.md +100 -0
- package/project-templates/phaser/.claude/skills/playcraft-storyboard/SKILL.md +167 -0
- package/project-templates/phaser/.claude/skills/playcraft-style-qa/SKILL.md +270 -0
- package/project-templates/phaser/.claude/skills/playcraft-text-rendering/SKILL.md +236 -0
- package/project-templates/phaser/.claude/skills/playcraft-vfx-animation/SKILL.md +130 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/SKILL.md +390 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/element-attributes.md +23 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/playwright-tests.md +39 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/request-mocking.md +87 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/running-code.md +240 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/session-management.md +226 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/spec-driven-testing.md +308 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/storage-state.md +275 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/test-generation.md +134 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/tracing.md +142 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/video-recording.md +153 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/SKILL.md +386 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/execution-breakdown.mjs +182 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/find-turns.mjs +72 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/heavy-output.mjs +121 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/resolve-session.mjs +103 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/subagent-stats.mjs +127 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/subagent-tool-timeline.mjs +106 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/time-gaps.mjs +128 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/turn-timeline.mjs +67 -0
- package/project-templates/phaser/.claude/snapshot.mjs +257 -0
- package/project-templates/phaser/.cursor/hooks.json +17 -0
- package/project-templates/phaser/.cursor/rules/playcraft-orchestrator.mdc +142 -0
- package/project-templates/phaser/.cursor/rules/playcraft-subagent-boundary.mdc +29 -0
- package/project-templates/phaser/.playcraft-engine +1 -0
- package/project-templates/phaser/CHANGELOG.md +105 -0
- package/project-templates/phaser/CLAUDE.md +84 -0
- package/project-templates/phaser/assets/audio/bgm/.gitkeep +0 -0
- package/project-templates/phaser/assets/audio/sfx/.gitkeep +0 -0
- package/project-templates/phaser/assets/bundles/.gitkeep +0 -0
- package/project-templates/phaser/assets/images/bg/.gitkeep +0 -0
- package/project-templates/phaser/assets/images/reference/.gitkeep +0 -0
- package/project-templates/phaser/assets/images/storyboard/.gitkeep +0 -0
- package/project-templates/phaser/assets/images/tiles/.gitkeep +0 -0
- package/project-templates/phaser/assets/images/ui/.gitkeep +0 -0
- package/project-templates/phaser/assets/images/vfx/.gitkeep +0 -0
- package/project-templates/phaser/assets/models/.gitkeep +0 -0
- package/project-templates/phaser/docs/DESIGN.md +65 -0
- package/project-templates/phaser/docs/intent-clarifications.md +58 -0
- package/project-templates/phaser/docs/pipeline-overview.md +69 -0
- package/project-templates/phaser/docs/project-state.md +211 -0
- package/project-templates/phaser/docs/scaffold-manifest.md +10 -0
- package/project-templates/phaser/docs/team/agent-conduct.md +67 -0
- package/project-templates/phaser/docs/team/agent-runtime-matrix.md +80 -0
- package/project-templates/phaser/docs/team/atom-tree-format.md +114 -0
- package/project-templates/phaser/docs/team/collaboration.md +391 -0
- package/project-templates/phaser/docs/team/core-model.md +85 -0
- package/project-templates/phaser/docs/team/game-designer-migration-todo.md +8 -0
- package/project-templates/phaser/docs/team/harness-legacy-deprecation.md +23 -0
- package/project-templates/phaser/docs/team/platform-capabilities.md +18 -0
- package/project-templates/phaser/docs/team/workflow-changelog.md +137 -0
- package/project-templates/phaser/docs/team/workflow-consistency-checklist.md +240 -0
- package/project-templates/phaser/focus-lab/.gitkeep +0 -0
- package/project-templates/phaser/game/adapters/phaser.ts +52 -0
- package/project-templates/phaser/game/config/.gitkeep +0 -0
- package/project-templates/phaser/game/config/game-config.ts +46 -0
- package/project-templates/phaser/game/contract/publish.ts +141 -0
- package/project-templates/phaser/game/contract/types.ts +34 -0
- package/project-templates/phaser/game/gameplay/.gitkeep +0 -0
- package/project-templates/phaser/game/index.ts +81 -0
- package/project-templates/phaser/game/runtime-contract.ts +28 -0
- package/project-templates/phaser/game/scenes/.gitkeep +0 -0
- package/project-templates/phaser/globals.d.ts +51 -0
- package/project-templates/phaser/index.css +34 -0
- package/project-templates/phaser/index.html +18 -0
- package/project-templates/phaser/main.ts +9 -0
- package/project-templates/phaser/package.json +79 -0
- package/project-templates/phaser/skills/README.md +52 -0
- package/project-templates/phaser/skills/_shared/agent-prep.md +136 -0
- package/project-templates/phaser/skills/_shared/requirements.txt +1 -0
- package/project-templates/phaser/skills/_shared/scripts/build-evidence-gate.mjs +87 -0
- package/project-templates/phaser/skills/_shared/scripts/context-budget.mjs +215 -0
- package/project-templates/phaser/skills/_shared/scripts/create-playable.mjs +140 -0
- package/project-templates/phaser/skills/_shared/scripts/dev-start.mjs +151 -0
- package/project-templates/phaser/skills/_shared/scripts/disclosure-config.mjs +480 -0
- package/project-templates/phaser/skills/_shared/scripts/ensure-project.mjs +532 -0
- package/project-templates/phaser/skills/_shared/scripts/gen-placeholder-audio.py +345 -0
- package/project-templates/phaser/skills/_shared/scripts/gen-placeholder.py +244 -0
- package/project-templates/phaser/skills/_shared/scripts/harness-smoke.mjs +257 -0
- package/project-templates/phaser/skills/_shared/scripts/lib/validator-artifacts.mjs +129 -0
- package/project-templates/phaser/skills/_shared/scripts/placeholder-pack-sheet.mjs +67 -0
- package/project-templates/phaser/skills/_shared/scripts/placeholder_audio_lib.py +142 -0
- package/project-templates/phaser/skills/_shared/scripts/placeholder_lib.py +993 -0
- package/project-templates/phaser/skills/_shared/scripts/render-project-state.mjs +278 -0
- package/project-templates/phaser/skills/_shared/scripts/ring-config.mjs +252 -0
- package/project-templates/phaser/skills/_shared/scripts/skills-check.mjs +176 -0
- package/project-templates/phaser/skills/_shared/scripts/slice-set.mjs +77 -0
- package/project-templates/phaser/skills/_shared/scripts/state-advance-ring.mjs +63 -0
- package/project-templates/phaser/skills/_shared/scripts/state-get.mjs +215 -0
- package/project-templates/phaser/skills/_shared/scripts/state-handoff.mjs +120 -0
- package/project-templates/phaser/skills/_shared/scripts/state-set.mjs +113 -0
- package/project-templates/phaser/skills/_shared/scripts/state-store.mjs +893 -0
- package/project-templates/phaser/skills/_shared/scripts/sync-template-skills.mjs +112 -0
- package/project-templates/phaser/skills/_shared/scripts/verify-asset-code-sync.mjs +265 -0
- package/project-templates/phaser/skills/_shared/scripts/verify-atom-conformance.mjs +181 -0
- package/project-templates/phaser/skills/_shared/scripts/verify-env.mjs +285 -0
- package/project-templates/phaser/skills/_shared/scripts/verify-placeholders.mjs +161 -0
- package/project-templates/phaser/skills/_shared/scripts/workflow-doctor.mjs +348 -0
- package/project-templates/phaser/skills/playable-animate/SKILL.md +52 -0
- package/project-templates/phaser/skills/playable-animate/agents/openai.yaml +4 -0
- package/project-templates/phaser/skills/playable-animate/references/board-refresh.md +30 -0
- package/project-templates/phaser/skills/playable-animate/references/diagnosis-checklist.md +25 -0
- package/project-templates/phaser/skills/playable-animate/references/entrance-sequencing.md +33 -0
- package/project-templates/phaser/skills/playable-animate/references/interaction-timing.md +23 -0
- package/project-templates/phaser/skills/playable-art/SKILL.md +203 -0
- package/project-templates/phaser/skills/playable-art/agents/openai.yaml +4 -0
- package/project-templates/phaser/skills/playable-art/references/alpha-postprocess.md +46 -0
- package/project-templates/phaser/skills/playable-art/references/cta-art-spec.md +59 -0
- package/project-templates/phaser/skills/playable-art/references/layout-proportions.md +30 -0
- package/project-templates/phaser/skills/playable-art/references/prompt-patterns.md +83 -0
- package/project-templates/phaser/skills/playable-art/references/reference-comparison.md +30 -0
- package/project-templates/phaser/skills/playable-art/references/sheet-import-v2.md +91 -0
- package/project-templates/phaser/skills/playable-art/scripts/build-atlas.py +332 -0
- package/project-templates/phaser/skills/playable-art/scripts/chroma-key.py +50 -0
- package/project-templates/phaser/skills/playable-art/scripts/extract-alpha-split.py +65 -0
- package/project-templates/phaser/skills/playable-art/scripts/extract-dual-bg-alpha.py +118 -0
- package/project-templates/phaser/skills/playable-art/scripts/import-gpt-art-sheets-v2.py +403 -0
- package/project-templates/phaser/skills/playable-art/scripts/import-gpt-art-sheets.py +280 -0
- package/project-templates/phaser/skills/playable-art/scripts/import-gpt-tile-sheet.py +114 -0
- package/project-templates/phaser/skills/playable-art/scripts/import_gpt_art_pipeline.py +321 -0
- package/project-templates/phaser/skills/playable-art/scripts/import_gpt_art_sheets_v2_test.py +126 -0
- package/project-templates/phaser/skills/playable-art/scripts/placeholder_common.py +98 -0
- package/project-templates/phaser/skills/playable-art/scripts/remove-bg.py +91 -0
- package/project-templates/phaser/skills/playable-art/scripts/review-processed-assets.py +468 -0
- package/project-templates/phaser/skills/playable-art/scripts/review_processed_assets_test.py +116 -0
- package/project-templates/phaser/skills/playable-art/scripts/verify-alpha-clean.py +105 -0
- package/project-templates/phaser/skills/playable-debug/SKILL.md +116 -0
- package/project-templates/phaser/skills/playable-debug/agents/openai.yaml +4 -0
- package/project-templates/phaser/skills/playable-debug/references/debug-config.md +40 -0
- package/project-templates/phaser/skills/playable-focus/SKILL.md +148 -0
- package/project-templates/phaser/skills/playable-focus/scripts/bootstrap-playground.mjs +84 -0
- package/project-templates/phaser/skills/playable-focus/scripts/extract-focus-frames.mjs +87 -0
- package/project-templates/phaser/skills/playable-focus/scripts/generate-focus-reports.mjs +121 -0
- package/project-templates/phaser/skills/playable-focus/scripts/playground.mjs +390 -0
- package/project-templates/phaser/skills/playable-focus/templates/focus-lab/frame.html +39 -0
- package/project-templates/phaser/skills/playable-focus/templates/focus-lab/harness/clean-stage.js +114 -0
- package/project-templates/phaser/skills/playable-focus/templates/focus-lab/harness/frame-lab-scene.js +94 -0
- package/project-templates/phaser/skills/playable-focus/templates/focus-lab/harness/particle-lab-scene.js +224 -0
- package/project-templates/phaser/skills/playable-focus/templates/focus-lab/model.html +16 -0
- package/project-templates/phaser/skills/playable-focus/templates/focus-lab/particle.html +38 -0
- package/project-templates/phaser/skills/playable-focus/templates/focus-lab/shatter.html +47 -0
- package/project-templates/phaser/skills/playable-fx-decompose/SKILL.md +212 -0
- package/project-templates/phaser/skills/playable-fx-decompose/examples.md +89 -0
- package/project-templates/phaser/skills/playable-fx-decompose/reference.md +201 -0
- package/project-templates/phaser/skills/playable-fx-decompose/requirements.txt +2 -0
- package/project-templates/phaser/skills/playable-fx-decompose/scripts/build-blank-tile-crack.py +192 -0
- package/project-templates/phaser/skills/playable-fx-decompose/scripts/fix-shard-debris-frames.py +60 -0
- package/project-templates/phaser/skills/playable-fx-decompose/scripts/generate-shard-debris.py +276 -0
- package/project-templates/phaser/skills/playable-fx-peak/SKILL.md +237 -0
- package/project-templates/phaser/skills/playable-fx-peak/requirements.txt +2 -0
- package/project-templates/phaser/skills/playable-fx-peak/scripts/fix-frame-edges.py +70 -0
- package/project-templates/phaser/skills/playable-fx-peak/scripts/repack-frame-sequence.py +526 -0
- package/project-templates/phaser/skills/playable-fx-peak/scripts/validate-frame-anchors.py +130 -0
- package/project-templates/phaser/skills/playable-placeholder/SKILL.md +239 -0
- package/project-templates/phaser/skills/playable-record/SKILL.md +166 -0
- package/project-templates/phaser/skills/playable-record/scripts/lib/build-artifact.mjs +92 -0
- package/project-templates/phaser/skills/playable-record/scripts/lib/dev-server.mjs +104 -0
- package/project-templates/phaser/skills/playable-record/scripts/lib/record-audio-bridge.js +141 -0
- package/project-templates/phaser/skills/playable-record/scripts/lib/slice-structure-verify.mjs +199 -0
- package/project-templates/phaser/skills/playable-record/scripts/record-playable.mjs +583 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-build.mjs +185 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-contract.mjs +261 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-firstwin.mjs +398 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-fusion.mjs +320 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-lifecycle.mjs +78 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-slice-artist.mjs +53 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-slice-ta.mjs +53 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-slice.mjs +142 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-visual-ring.mjs +250 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-visual-ring1.mjs +190 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-vlm-video.mjs +227 -0
- package/project-templates/phaser/skills/playable-validate/SKILL.md +260 -0
- package/project-templates/phaser/skills/playable-validate/references/checklist-detail.md +36 -0
- package/project-templates/phaser/skills/playable-validate/references/single-html-bundle.md +76 -0
- package/project-templates/phaser/skills/playable-validate/validation-rules.md +200 -0
- package/project-templates/phaser/skills/playable-verify-ui/SKILL.md +295 -0
- package/project-templates/phaser/skills/playable-verify-ui/examples/asset-manifest.example.json +36 -0
- package/project-templates/phaser/skills/playable-verify-ui/examples/mahjong-match.profile.yaml +334 -0
- package/project-templates/phaser/skills/playable-verify-ui/profiles/template.profile.yaml +84 -0
- package/project-templates/phaser/skills/playable-verify-ui/reference.md +165 -0
- package/project-templates/phaser/skills/playable-verify-ui/references/phaser-patterns.md +67 -0
- package/project-templates/phaser/skills/playable-verify-ui/references/scaling-decision-tree.md +51 -0
- package/project-templates/phaser/skills/playable-verify-ui/requirements.txt +7 -0
- package/project-templates/phaser/skills/playable-verify-ui/schema/asset-manifest.schema.json +68 -0
- package/project-templates/phaser/skills/playable-verify-ui/schema/playable-ui-profile.schema.json +171 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/asset_manifest.py +231 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/__init__.py +1 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/config_expr.js +218 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/node_utils.js +51 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/profile_loader.py +59 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/report.py +106 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/runtime_contract.js +116 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/measure_frame_content.py +77 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/run_all.py +265 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_asset_sizes.py +77 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_assets_present.py +62 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_atlas_budget.py +84 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_atlas_frames.py +79 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_bg_clean.py +365 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_doc_asset_sync.py +90 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_fetch_antipatterns.py +59 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_game_config_load.js +54 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_hardcoded_layout.js +64 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_layout_regions.js +110 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_profile_schema.py +37 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_ring1_visual.py +211 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_runtime_contract.js +58 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_script_load_order.js +73 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_slice_plan.py +238 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_slice_plan_test.py +125 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_text_overlap.py +333 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_tile_consistency.py +323 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_vision_evidence.py +894 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_vision_evidence_test.py +122 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_visual.py +422 -0
- package/project-templates/phaser/ta-workspace/scripts/.gitkeep +0 -0
- package/project-templates/phaser/templates/artist-log.template.md +182 -0
- package/project-templates/phaser/templates/atom-tree.template.json +133 -0
- package/project-templates/phaser/templates/design-brief.template.md +92 -0
- package/project-templates/phaser/templates/design-lens-checklist.reference.md +117 -0
- package/project-templates/phaser/templates/design-methodology.md +99 -0
- package/project-templates/phaser/templates/design.template.md +50 -0
- package/project-templates/phaser/templates/developer-log.template.md +258 -0
- package/project-templates/phaser/templates/five-axis-framework.md +194 -0
- package/project-templates/phaser/templates/gen-placeholder-audio.template.mjs +63 -0
- package/project-templates/phaser/templates/gen-placeholders.template.mjs +81 -0
- package/project-templates/phaser/templates/intent-clarifications.template.md +58 -0
- package/project-templates/phaser/templates/layout-spec.template.md +198 -0
- package/project-templates/phaser/templates/plan.template.md +80 -0
- package/project-templates/phaser/templates/project-state.template.md +136 -0
- package/project-templates/phaser/templates/review-report.template.md +275 -0
- package/project-templates/phaser/templates/style-exploration.template.md +93 -0
- package/project-templates/phaser/templates/ta-log.template.md +394 -0
- package/project-templates/phaser/tsconfig.json +20 -0
- package/project-templates/phaser/vite.config.ts +27 -0
- package/project-templates/threejs/.claude/agents/artist.md +101 -0
- package/project-templates/threejs/.claude/agents/developer.md +123 -0
- package/project-templates/threejs/.claude/agents/game-designer.md +192 -0
- package/project-templates/threejs/.claude/agents/refs/README.md +77 -0
- package/project-templates/threejs/.claude/agents/refs/artist-art-style-catalog.md +533 -0
- package/project-templates/threejs/.claude/agents/refs/artist-color-audio-recipes.md +153 -0
- package/project-templates/threejs/.claude/agents/refs/artist-deliverable-spec.md +230 -0
- package/project-templates/threejs/.claude/agents/refs/artist-dimension-axis.md +27 -0
- package/project-templates/threejs/.claude/agents/refs/artist-handoff-v2-checklist.md +76 -0
- package/project-templates/threejs/.claude/agents/refs/artist-legacy-fallback.md +14 -0
- package/project-templates/threejs/.claude/agents/refs/artist-master-composite-recipes.md +208 -0
- package/project-templates/threejs/.claude/agents/refs/artist-style-exploration-flow.md +55 -0
- package/project-templates/threejs/.claude/agents/refs/developer-dev-handoff.md +152 -0
- package/project-templates/threejs/.claude/agents/refs/developer-impl-cookbook.md +432 -0
- package/project-templates/threejs/.claude/agents/refs/developer-legacy-fallback.md +15 -0
- package/project-templates/threejs/.claude/agents/refs/developer-phase1-flow.md +404 -0
- package/project-templates/threejs/.claude/agents/refs/framework-5-component-filter.md +252 -0
- package/project-templates/threejs/.claude/agents/refs/framework-game-feel-juice.md +266 -0
- package/project-templates/threejs/.claude/agents/refs/framework-mda.md +147 -0
- package/project-templates/threejs/.claude/agents/refs/game-designer-gameplay-sufficiency.md +123 -0
- package/project-templates/threejs/.claude/agents/refs/game-designer-legacy-fallback.md +15 -0
- package/project-templates/threejs/.claude/agents/refs/game-designer-workflow-detail.md +69 -0
- package/project-templates/threejs/.claude/agents/refs/implementation-plan-guide.md +309 -0
- package/project-templates/threejs/.claude/agents/refs/reviewer-convergence-eval.md +350 -0
- package/project-templates/threejs/.claude/agents/refs/reviewer-legacy-fallback.md +14 -0
- package/project-templates/threejs/.claude/agents/refs/reviewer-six-dimension-eval.md +6 -0
- package/project-templates/threejs/.claude/agents/refs/skill-selector-guide.md +465 -0
- package/project-templates/threejs/.claude/agents/refs/skill-value-layers.md +145 -0
- package/project-templates/threejs/.claude/agents/refs/storyboard-generation-guide.md +110 -0
- package/project-templates/threejs/.claude/agents/refs/ta-3d-flip-recipe.md +88 -0
- package/project-templates/threejs/.claude/agents/refs/ta-atlas-deliverable-standard.md +67 -0
- package/project-templates/threejs/.claude/agents/refs/ta-batch-pipeline-recipes.md +120 -0
- package/project-templates/threejs/.claude/agents/refs/ta-image-generation-detail.md +300 -0
- package/project-templates/threejs/.claude/agents/refs/ta-image-ops-reference.md +495 -0
- package/project-templates/threejs/.claude/agents/refs/ta-pipeline-cookbook.md +1141 -0
- package/project-templates/threejs/.claude/agents/refs/ta-tools-reference.md +111 -0
- package/project-templates/threejs/.claude/agents/refs/ta-vfx-preset-catalog.md +365 -0
- package/project-templates/threejs/.claude/agents/refs/technical-artist-legacy-fallback.md +14 -0
- package/project-templates/threejs/.claude/agents/reviewer.md +116 -0
- package/project-templates/threejs/.claude/agents/technical-artist.md +100 -0
- package/project-templates/threejs/.claude/hooks/README.md +120 -0
- package/project-templates/threejs/.claude/hooks/asr-coverage-validate.mjs +381 -0
- package/project-templates/threejs/.claude/hooks/block-developer-preflight.mjs +185 -0
- package/project-templates/threejs/.claude/hooks/block-ring1-tasklist.mjs +95 -0
- package/project-templates/threejs/.claude/hooks/gate-dispatcher.mjs +78 -0
- package/project-templates/threejs/.claude/hooks/gate-runner.mjs +557 -0
- package/project-templates/threejs/.claude/hooks/gate.mjs +171 -0
- package/project-templates/threejs/.claude/hooks/snapshot-milestone.mjs +247 -0
- package/project-templates/threejs/.claude/hooks/user-prompt.mjs +194 -0
- package/project-templates/threejs/.claude/hooks/validate-atom-tree-selection.mjs +281 -0
- package/project-templates/threejs/.claude/hooks/validate-workflow-stop.mjs +1889 -0
- package/project-templates/threejs/.claude/settings.json +81 -0
- package/project-templates/threejs/.claude/skills/brainstorming/SKILL.md +161 -0
- package/project-templates/threejs/.claude/skills/brainstorming/scripts/frame-template.html +270 -0
- package/project-templates/threejs/.claude/skills/brainstorming/scripts/helper.js +177 -0
- package/project-templates/threejs/.claude/skills/brainstorming/scripts/server.cjs +354 -0
- package/project-templates/threejs/.claude/skills/brainstorming/scripts/start-server.sh +148 -0
- package/project-templates/threejs/.claude/skills/brainstorming/scripts/stop-server.sh +56 -0
- package/project-templates/threejs/.claude/skills/brainstorming/scripts/wait-for-selection.sh +62 -0
- package/project-templates/threejs/.claude/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
- package/project-templates/threejs/.claude/skills/brainstorming/visual-companion.md +309 -0
- package/project-templates/threejs/.claude/skills/playcraft-ad-psychology/SKILL.md +182 -0
- package/project-templates/threejs/.claude/skills/playcraft-art-style-guide/SKILL.md +123 -0
- package/project-templates/threejs/.claude/skills/playcraft-asset-state-sheet/SKILL.md +205 -0
- package/project-templates/threejs/.claude/skills/playcraft-audio-generation/SKILL.md +280 -0
- package/project-templates/threejs/.claude/skills/playcraft-batch-pipeline/SKILL.md +184 -0
- package/project-templates/threejs/.claude/skills/playcraft-build-optimizer/SKILL.md +306 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/SKILL.md +298 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/build-sprite-sheet.template.mjs +123 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/compare-style.template.mjs +254 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +324 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +97 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/gen-edit-variants.template.mjs +118 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +137 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +397 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/validate-sprite-sheet.template.mjs +296 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-ops/SKILL.md +122 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-processing/SKILL.md +219 -0
- package/project-templates/threejs/.claude/skills/playcraft-masking/SKILL.md +373 -0
- package/project-templates/threejs/.claude/skills/playcraft-playable-optimization/SKILL.md +161 -0
- package/project-templates/threejs/.claude/skills/playcraft-research/SKILL.md +215 -0
- package/project-templates/threejs/.claude/skills/playcraft-skill-recommender/SKILL.md +331 -0
- package/project-templates/threejs/.claude/skills/playcraft-sprite-generation/SKILL.md +423 -0
- package/project-templates/threejs/.claude/skills/playcraft-sprite-remix/SKILL.md +158 -0
- package/project-templates/threejs/.claude/skills/playcraft-sprite-sheet/SKILL.md +100 -0
- package/project-templates/threejs/.claude/skills/playcraft-storyboard/SKILL.md +167 -0
- package/project-templates/threejs/.claude/skills/playcraft-style-qa/SKILL.md +270 -0
- package/project-templates/threejs/.claude/skills/playcraft-text-rendering/SKILL.md +236 -0
- package/project-templates/threejs/.claude/skills/playcraft-vfx-animation/SKILL.md +130 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/SKILL.md +390 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/element-attributes.md +23 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/playwright-tests.md +39 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/request-mocking.md +87 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/running-code.md +240 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/session-management.md +226 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/spec-driven-testing.md +308 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/storage-state.md +275 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/test-generation.md +134 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/tracing.md +142 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/video-recording.md +153 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/SKILL.md +386 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/execution-breakdown.mjs +182 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/find-turns.mjs +72 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/heavy-output.mjs +121 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/resolve-session.mjs +103 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/subagent-stats.mjs +127 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/subagent-tool-timeline.mjs +106 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/time-gaps.mjs +128 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/turn-timeline.mjs +67 -0
- package/project-templates/threejs/.claude/snapshot.mjs +257 -0
- package/project-templates/threejs/.cursor/hooks.json +17 -0
- package/project-templates/threejs/.cursor/rules/playcraft-orchestrator.mdc +142 -0
- package/project-templates/threejs/.cursor/rules/playcraft-subagent-boundary.mdc +29 -0
- package/project-templates/threejs/.playcraft-engine +1 -0
- package/project-templates/threejs/CHANGELOG.md +105 -0
- package/project-templates/threejs/CLAUDE.md +84 -0
- package/project-templates/threejs/assets/audio/bgm/.gitkeep +0 -0
- package/project-templates/threejs/assets/audio/sfx/.gitkeep +0 -0
- package/project-templates/threejs/assets/bundles/.gitkeep +0 -0
- package/project-templates/threejs/assets/images/bg/.gitkeep +0 -0
- package/project-templates/threejs/assets/images/reference/.gitkeep +0 -0
- package/project-templates/threejs/assets/images/storyboard/.gitkeep +0 -0
- package/project-templates/threejs/assets/images/tiles/.gitkeep +0 -0
- package/project-templates/threejs/assets/images/ui/.gitkeep +0 -0
- package/project-templates/threejs/assets/images/vfx/.gitkeep +0 -0
- package/project-templates/threejs/assets/models/.gitkeep +0 -0
- package/project-templates/threejs/docs/DESIGN.md +65 -0
- package/project-templates/threejs/docs/intent-clarifications.md +58 -0
- package/project-templates/threejs/docs/pipeline-overview.md +69 -0
- package/project-templates/threejs/docs/project-state.md +211 -0
- package/project-templates/threejs/docs/scaffold-manifest.md +10 -0
- package/project-templates/threejs/docs/team/agent-conduct.md +67 -0
- package/project-templates/threejs/docs/team/agent-runtime-matrix.md +80 -0
- package/project-templates/threejs/docs/team/atom-tree-format.md +114 -0
- package/project-templates/threejs/docs/team/collaboration.md +391 -0
- package/project-templates/threejs/docs/team/core-model.md +85 -0
- package/project-templates/threejs/docs/team/game-designer-migration-todo.md +8 -0
- package/project-templates/threejs/docs/team/harness-legacy-deprecation.md +23 -0
- package/project-templates/threejs/docs/team/platform-capabilities.md +18 -0
- package/project-templates/threejs/docs/team/workflow-changelog.md +137 -0
- package/project-templates/threejs/docs/team/workflow-consistency-checklist.md +240 -0
- package/project-templates/threejs/focus-lab/.gitkeep +0 -0
- package/project-templates/threejs/game/config/.gitkeep +0 -0
- package/project-templates/threejs/game/config/game-config.ts +46 -0
- package/project-templates/threejs/game/contract/publish.ts +141 -0
- package/project-templates/threejs/game/contract/types.ts +34 -0
- package/project-templates/threejs/game/gameplay/.gitkeep +0 -0
- package/project-templates/threejs/game/index.ts +76 -0
- package/project-templates/threejs/game/runtime-contract.ts +15 -0
- package/project-templates/threejs/game/scenes/.gitkeep +0 -0
- package/project-templates/threejs/globals.d.ts +51 -0
- package/project-templates/threejs/index.css +34 -0
- package/project-templates/threejs/index.html +18 -0
- package/project-templates/threejs/main.ts +9 -0
- package/project-templates/threejs/package.json +79 -0
- package/project-templates/threejs/skills/README.md +52 -0
- package/project-templates/threejs/skills/_shared/agent-prep.md +136 -0
- package/project-templates/threejs/skills/_shared/requirements.txt +1 -0
- package/project-templates/threejs/skills/_shared/scripts/build-evidence-gate.mjs +87 -0
- package/project-templates/threejs/skills/_shared/scripts/context-budget.mjs +215 -0
- package/project-templates/threejs/skills/_shared/scripts/create-playable.mjs +140 -0
- package/project-templates/threejs/skills/_shared/scripts/dev-start.mjs +151 -0
- package/project-templates/threejs/skills/_shared/scripts/disclosure-config.mjs +480 -0
- package/project-templates/threejs/skills/_shared/scripts/ensure-project.mjs +532 -0
- package/project-templates/threejs/skills/_shared/scripts/gen-placeholder-audio.py +345 -0
- package/project-templates/threejs/skills/_shared/scripts/gen-placeholder.py +244 -0
- package/project-templates/threejs/skills/_shared/scripts/harness-smoke.mjs +257 -0
- package/project-templates/threejs/skills/_shared/scripts/lib/validator-artifacts.mjs +129 -0
- package/project-templates/threejs/skills/_shared/scripts/placeholder-pack-sheet.mjs +67 -0
- package/project-templates/threejs/skills/_shared/scripts/placeholder_audio_lib.py +142 -0
- package/project-templates/threejs/skills/_shared/scripts/placeholder_lib.py +993 -0
- package/project-templates/threejs/skills/_shared/scripts/render-project-state.mjs +278 -0
- package/project-templates/threejs/skills/_shared/scripts/ring-config.mjs +252 -0
- package/project-templates/threejs/skills/_shared/scripts/skills-check.mjs +176 -0
- package/project-templates/threejs/skills/_shared/scripts/slice-set.mjs +77 -0
- package/project-templates/threejs/skills/_shared/scripts/state-advance-ring.mjs +63 -0
- package/project-templates/threejs/skills/_shared/scripts/state-get.mjs +215 -0
- package/project-templates/threejs/skills/_shared/scripts/state-handoff.mjs +120 -0
- package/project-templates/threejs/skills/_shared/scripts/state-set.mjs +113 -0
- package/project-templates/threejs/skills/_shared/scripts/state-store.mjs +893 -0
- package/project-templates/threejs/skills/_shared/scripts/sync-template-skills.mjs +112 -0
- package/project-templates/threejs/skills/_shared/scripts/verify-asset-code-sync.mjs +265 -0
- package/project-templates/threejs/skills/_shared/scripts/verify-atom-conformance.mjs +181 -0
- package/project-templates/threejs/skills/_shared/scripts/verify-env.mjs +285 -0
- package/project-templates/threejs/skills/_shared/scripts/verify-placeholders.mjs +161 -0
- package/project-templates/threejs/skills/_shared/scripts/workflow-doctor.mjs +348 -0
- package/project-templates/threejs/skills/playable-animate/SKILL.md +52 -0
- package/project-templates/threejs/skills/playable-animate/agents/openai.yaml +4 -0
- package/project-templates/threejs/skills/playable-animate/references/board-refresh.md +30 -0
- package/project-templates/threejs/skills/playable-animate/references/diagnosis-checklist.md +25 -0
- package/project-templates/threejs/skills/playable-animate/references/entrance-sequencing.md +33 -0
- package/project-templates/threejs/skills/playable-animate/references/interaction-timing.md +23 -0
- package/project-templates/threejs/skills/playable-art/SKILL.md +203 -0
- package/project-templates/threejs/skills/playable-art/agents/openai.yaml +4 -0
- package/project-templates/threejs/skills/playable-art/references/alpha-postprocess.md +46 -0
- package/project-templates/threejs/skills/playable-art/references/cta-art-spec.md +59 -0
- package/project-templates/threejs/skills/playable-art/references/layout-proportions.md +30 -0
- package/project-templates/threejs/skills/playable-art/references/prompt-patterns.md +83 -0
- package/project-templates/threejs/skills/playable-art/references/reference-comparison.md +30 -0
- package/project-templates/threejs/skills/playable-art/references/sheet-import-v2.md +91 -0
- package/project-templates/threejs/skills/playable-art/scripts/build-atlas.py +332 -0
- package/project-templates/threejs/skills/playable-art/scripts/chroma-key.py +50 -0
- package/project-templates/threejs/skills/playable-art/scripts/extract-alpha-split.py +65 -0
- package/project-templates/threejs/skills/playable-art/scripts/extract-dual-bg-alpha.py +118 -0
- package/project-templates/threejs/skills/playable-art/scripts/import-gpt-art-sheets-v2.py +403 -0
- package/project-templates/threejs/skills/playable-art/scripts/import-gpt-art-sheets.py +280 -0
- package/project-templates/threejs/skills/playable-art/scripts/import-gpt-tile-sheet.py +114 -0
- package/project-templates/threejs/skills/playable-art/scripts/import_gpt_art_pipeline.py +321 -0
- package/project-templates/threejs/skills/playable-art/scripts/import_gpt_art_sheets_v2_test.py +126 -0
- package/project-templates/threejs/skills/playable-art/scripts/placeholder_common.py +98 -0
- package/project-templates/threejs/skills/playable-art/scripts/remove-bg.py +91 -0
- package/project-templates/threejs/skills/playable-art/scripts/review-processed-assets.py +468 -0
- package/project-templates/threejs/skills/playable-art/scripts/review_processed_assets_test.py +116 -0
- package/project-templates/threejs/skills/playable-art/scripts/verify-alpha-clean.py +105 -0
- package/project-templates/threejs/skills/playable-debug/SKILL.md +116 -0
- package/project-templates/threejs/skills/playable-debug/agents/openai.yaml +4 -0
- package/project-templates/threejs/skills/playable-debug/references/debug-config.md +40 -0
- package/project-templates/threejs/skills/playable-focus/SKILL.md +148 -0
- package/project-templates/threejs/skills/playable-focus/scripts/bootstrap-playground.mjs +84 -0
- package/project-templates/threejs/skills/playable-focus/scripts/extract-focus-frames.mjs +87 -0
- package/project-templates/threejs/skills/playable-focus/scripts/generate-focus-reports.mjs +121 -0
- package/project-templates/threejs/skills/playable-focus/scripts/playground.mjs +390 -0
- package/project-templates/threejs/skills/playable-focus/templates/focus-lab/frame.html +39 -0
- package/project-templates/threejs/skills/playable-focus/templates/focus-lab/harness/clean-stage.js +114 -0
- package/project-templates/threejs/skills/playable-focus/templates/focus-lab/harness/frame-lab-scene.js +94 -0
- package/project-templates/threejs/skills/playable-focus/templates/focus-lab/harness/particle-lab-scene.js +224 -0
- package/project-templates/threejs/skills/playable-focus/templates/focus-lab/model.html +16 -0
- package/project-templates/threejs/skills/playable-focus/templates/focus-lab/particle.html +38 -0
- package/project-templates/threejs/skills/playable-focus/templates/focus-lab/shatter.html +47 -0
- package/project-templates/threejs/skills/playable-fx-decompose/SKILL.md +212 -0
- package/project-templates/threejs/skills/playable-fx-decompose/examples.md +89 -0
- package/project-templates/threejs/skills/playable-fx-decompose/reference.md +201 -0
- package/project-templates/threejs/skills/playable-fx-decompose/requirements.txt +2 -0
- package/project-templates/threejs/skills/playable-fx-decompose/scripts/build-blank-tile-crack.py +192 -0
- package/project-templates/threejs/skills/playable-fx-decompose/scripts/fix-shard-debris-frames.py +60 -0
- package/project-templates/threejs/skills/playable-fx-decompose/scripts/generate-shard-debris.py +276 -0
- package/project-templates/threejs/skills/playable-fx-peak/SKILL.md +237 -0
- package/project-templates/threejs/skills/playable-fx-peak/requirements.txt +2 -0
- package/project-templates/threejs/skills/playable-fx-peak/scripts/fix-frame-edges.py +70 -0
- package/project-templates/threejs/skills/playable-fx-peak/scripts/repack-frame-sequence.py +526 -0
- package/project-templates/threejs/skills/playable-fx-peak/scripts/validate-frame-anchors.py +130 -0
- package/project-templates/threejs/skills/playable-placeholder/SKILL.md +239 -0
- package/project-templates/threejs/skills/playable-record/SKILL.md +166 -0
- package/project-templates/threejs/skills/playable-record/scripts/lib/build-artifact.mjs +92 -0
- package/project-templates/threejs/skills/playable-record/scripts/lib/dev-server.mjs +104 -0
- package/project-templates/threejs/skills/playable-record/scripts/lib/record-audio-bridge.js +141 -0
- package/project-templates/threejs/skills/playable-record/scripts/lib/slice-structure-verify.mjs +199 -0
- package/project-templates/threejs/skills/playable-record/scripts/record-playable.mjs +583 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-build.mjs +185 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-contract.mjs +261 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-firstwin.mjs +398 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-fusion.mjs +320 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-lifecycle.mjs +78 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-slice-artist.mjs +53 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-slice-ta.mjs +53 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-slice.mjs +142 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-visual-ring.mjs +250 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-visual-ring1.mjs +190 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-vlm-video.mjs +227 -0
- package/project-templates/threejs/skills/playable-validate/SKILL.md +260 -0
- package/project-templates/threejs/skills/playable-validate/references/checklist-detail.md +36 -0
- package/project-templates/threejs/skills/playable-validate/references/single-html-bundle.md +76 -0
- package/project-templates/threejs/skills/playable-validate/validation-rules.md +200 -0
- package/project-templates/threejs/skills/playable-verify-ui/SKILL.md +295 -0
- package/project-templates/threejs/skills/playable-verify-ui/examples/asset-manifest.example.json +36 -0
- package/project-templates/threejs/skills/playable-verify-ui/examples/mahjong-match.profile.yaml +334 -0
- package/project-templates/threejs/skills/playable-verify-ui/profiles/template.profile.yaml +84 -0
- package/project-templates/threejs/skills/playable-verify-ui/reference.md +165 -0
- package/project-templates/threejs/skills/playable-verify-ui/references/phaser-patterns.md +67 -0
- package/project-templates/threejs/skills/playable-verify-ui/references/scaling-decision-tree.md +51 -0
- package/project-templates/threejs/skills/playable-verify-ui/requirements.txt +7 -0
- package/project-templates/threejs/skills/playable-verify-ui/schema/asset-manifest.schema.json +68 -0
- package/project-templates/threejs/skills/playable-verify-ui/schema/playable-ui-profile.schema.json +171 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/asset_manifest.py +231 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/__init__.py +1 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/config_expr.js +218 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/node_utils.js +51 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/profile_loader.py +59 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/report.py +106 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/runtime_contract.js +116 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/measure_frame_content.py +77 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/run_all.py +265 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_asset_sizes.py +77 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_assets_present.py +62 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_atlas_budget.py +84 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_atlas_frames.py +79 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_bg_clean.py +365 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_doc_asset_sync.py +90 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_fetch_antipatterns.py +59 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_game_config_load.js +54 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_hardcoded_layout.js +64 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_layout_regions.js +110 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_profile_schema.py +37 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_ring1_visual.py +211 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_runtime_contract.js +58 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_script_load_order.js +73 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_slice_plan.py +238 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_slice_plan_test.py +125 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_text_overlap.py +333 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_tile_consistency.py +323 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_vision_evidence.py +894 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_vision_evidence_test.py +122 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_visual.py +422 -0
- package/project-templates/threejs/ta-workspace/scripts/.gitkeep +0 -0
- package/project-templates/threejs/templates/artist-log.template.md +182 -0
- package/project-templates/threejs/templates/atom-tree.template.json +133 -0
- package/project-templates/threejs/templates/design-brief.template.md +92 -0
- package/project-templates/threejs/templates/design-lens-checklist.reference.md +117 -0
- package/project-templates/threejs/templates/design-methodology.md +99 -0
- package/project-templates/threejs/templates/design.template.md +50 -0
- package/project-templates/threejs/templates/developer-log.template.md +258 -0
- package/project-templates/threejs/templates/five-axis-framework.md +194 -0
- package/project-templates/threejs/templates/gen-placeholder-audio.template.mjs +63 -0
- package/project-templates/threejs/templates/gen-placeholders.template.mjs +81 -0
- package/project-templates/threejs/templates/intent-clarifications.template.md +58 -0
- package/project-templates/threejs/templates/layout-spec.template.md +198 -0
- package/project-templates/threejs/templates/plan.template.md +80 -0
- package/project-templates/threejs/templates/project-state.template.md +136 -0
- package/project-templates/threejs/templates/review-report.template.md +275 -0
- package/project-templates/threejs/templates/style-exploration.template.md +93 -0
- package/project-templates/threejs/templates/ta-log.template.md +394 -0
- package/project-templates/threejs/tsconfig.json +20 -0
- package/project-templates/threejs/vite.config.ts +27 -0
- package/dist/atom-plan/validate-atom-plan.js +0 -298
- package/dist/playable/base-builder.js +0 -265
- package/dist/playable/builder.js +0 -1462
- package/dist/playable/converter.js +0 -150
- package/dist/playable/index.js +0 -3
- package/dist/playable/platforms/base.js +0 -12
- package/dist/playable/platforms/facebook.js +0 -37
- package/dist/playable/platforms/index.js +0 -24
- package/dist/playable/platforms/snapchat.js +0 -59
- package/dist/playable/playable-builder.js +0 -521
- package/dist/playable/types.js +0 -1
- package/dist/playable/vite/config-builder.js +0 -136
- package/dist/playable/vite/platform-configs.js +0 -102
- package/dist/playable/vite/plugin-model-compression.js +0 -63
- package/dist/playable/vite/plugin-platform.js +0 -65
- package/dist/playable/vite/plugin-playcanvas.js +0 -454
- package/dist/playable/vite-builder.js +0 -125
- package/project-template/.claude/agents/designer.md +0 -124
- package/project-template/.claude/agents/pm.md +0 -166
- package/project-template/.claude/agents/refs/designer-style-exploration-flow.md +0 -67
- package/project-template/.claude/agents/refs/pm-workflow-detail.md +0 -567
- package/project-template/.claude/hooks/validate-atom-plan.mjs +0 -224
- package/project-template/.claude/settings.local.json +0 -4
- package/project-template/.claude/skills/playcraft-workflow/SKILL.md +0 -485
- package/project-template/docs/team/atom-plan-format.md +0 -173
- package/project-template/templates/atom-plan.template.json +0 -44
- package/project-template/templates/atom-plan.template.md +0 -108
- /package/dist/{atom-plan → asr}/validate-asr-coverage.js +0 -0
- /package/{project-template → engine-packs/phaser}/game/config/.gitkeep +0 -0
- /package/{project-template → engine-packs/phaser}/game/gameplay/.gitkeep +0 -0
- /package/{project-template → engine-packs/phaser}/game/scenes/.gitkeep +0 -0
- /package/{project-template/logs → engine-packs/threejs/game/config}/.gitkeep +0 -0
- /package/{project-template/ta-workspace/logs → engine-packs/threejs/game/gameplay}/.gitkeep +0 -0
- /package/{project-template/ta-workspace/tmp → engine-packs/threejs/game/scenes}/.gitkeep +0 -0
- /package/project-template/.claude/agents/refs/{designer-art-style-catalog.md → artist-art-style-catalog.md} +0 -0
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
# Implementation Plan Guide — 开发执行计划
|
|
2
|
+
|
|
3
|
+
> **用途**:Orchestrator 在 `planning` 阶段 spawn plan-writer subagent 时注入的执行指南。
|
|
4
|
+
> Subagent 基于设计文档、layout contract、atom-tree 和 storyboard 参考,输出 **Developer 可直接执行的实践计划**:`docs/implementation-plan.md`。
|
|
5
|
+
>
|
|
6
|
+
> **Stage**: This subagent runs during the `planning` stage (after atom-tree is ready), not at the start of `development`. Developer enters `development` with a ready execution blueprint.
|
|
7
|
+
>
|
|
8
|
+
> **不是做什么**:
|
|
9
|
+
>
|
|
10
|
+
> - 不是完整工程设计文档
|
|
11
|
+
> - 不是代码草图文档
|
|
12
|
+
> - 不是 file tree / interface / pseudo-code 说明书
|
|
13
|
+
>
|
|
14
|
+
> **产出终点**:`docs/implementation-plan.md` 写入完成,并可被 Developer 直接按顺序执行。
|
|
15
|
+
|
|
16
|
+
## 输入(subagent 自行读取)
|
|
17
|
+
|
|
18
|
+
| 文件 | 关注内容 |
|
|
19
|
+
| --------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
|
|
20
|
+
| `docs/design-brief.md` | 核心玩法循环、规则、胜负条件、Experience Flow、首关保证意图 |
|
|
21
|
+
| `docs/DESIGN.md` | 玩家体验契约、反馈重点、阶段节奏、可读性要求 |
|
|
22
|
+
| `docs/layout-spec.md` | zone 布局、assetMapping、atlasPath/frameId、契约路径 |
|
|
23
|
+
| `docs/atom-tree.json` | `meta.selectedAtoms`(selected skill refs)、`skillsMatch.matches`、`skillsMatch.mediaGroups` |
|
|
24
|
+
| `docs/atom-tree.md` | `Acceptance Criteria`、`Selected Gameplay Trunk`、`Gameplay Assembly Link`、`Selected Skill Notes`、`Role Resolution`、`Gaps` |
|
|
25
|
+
| `docs/style-exploration.md` | MC 面板与 UI 目标参考 |
|
|
26
|
+
|
|
27
|
+
**优先级**:`design-brief` 核心玩法 > `DESIGN` 体验约束 > `layout-spec` 契约路径 > `atom-tree` 借鉴与覆盖提示 > MC 视觉参考
|
|
28
|
+
|
|
29
|
+
**重要边界**:
|
|
30
|
+
|
|
31
|
+
- `atom-tree` 是 **借鉴/引用输入**,不是后续制作流程的主轴
|
|
32
|
+
- 可以引用 selected atom / skillRef / mediaGroups 帮助规划,但不要把整个计划写成 atom 镜像
|
|
33
|
+
- 计划的主轴必须是 **面向玩家结果和验收的 Feature**;实践分层只用于思考覆盖面与实现边界,不作为输出章节或拆分主轴
|
|
34
|
+
- 输出优先遵循本 guide 定义的章节和字段;template 是初始化骨架,不是更高优先级规范
|
|
35
|
+
- 允许在不破坏主结构的前提下补充少量高价值说明,但不要新增压过主结构的大章节
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Step 1 — 提炼 Feature 主线
|
|
40
|
+
|
|
41
|
+
先把计划的主线从“玩法承诺”收敛成“少量可执行的 Feature”。
|
|
42
|
+
|
|
43
|
+
每个一级 Feature 应同时满足:
|
|
44
|
+
|
|
45
|
+
- 玩家可感知
|
|
46
|
+
- 可以独立验收
|
|
47
|
+
- 依赖关系清晰
|
|
48
|
+
- 可以作为一次实现 / 集成单位
|
|
49
|
+
|
|
50
|
+
### 可用思考维度(仅供收敛,不单独输出为章节)
|
|
51
|
+
|
|
52
|
+
| 维度 | 用途 | 典型内容 |
|
|
53
|
+
| ------------------ | ------------------------ | ------------------------------------------------ |
|
|
54
|
+
| `Data` | 静态配置与棋盘/关卡/常量 | board preset, tile catalog, level config |
|
|
55
|
+
| `Runtime Data` | 运行时状态与状态机 | scene state, selected item, timers, result state |
|
|
56
|
+
| `Gameplay Feature` | 核心玩法闭环 | 规则判定、操作响应、胜负推进 |
|
|
57
|
+
| `Panel` | 面板/场景/阶段容器 | Hook, Tutorial, Gameplay, EndCard, CTA |
|
|
58
|
+
| `Visual Feature` | 玩家能感知到的反馈与表现 | hint、glow、VFX、audio trigger、readability cues |
|
|
59
|
+
|
|
60
|
+
这些维度用于帮助判断:
|
|
61
|
+
|
|
62
|
+
- 某个 Feature 覆盖了哪些实现面
|
|
63
|
+
- 是否遗漏了关键边界
|
|
64
|
+
- 哪些 Feature 会共享 runtime boundary
|
|
65
|
+
- 哪些地方会直接影响“首关必胜”
|
|
66
|
+
|
|
67
|
+
**不要**把这些维度直接抄成 plan 的一级章节,也不要因为某个维度或 skill hit 很多就继续拆更多 feature。
|
|
68
|
+
|
|
69
|
+
输出时必须让 Developer 一眼看到:
|
|
70
|
+
|
|
71
|
+
- 先实现哪几个 Feature
|
|
72
|
+
- 哪些 Feature 依赖哪些基础
|
|
73
|
+
- 哪些可以并行
|
|
74
|
+
- 哪些直接影响“首关必胜”
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Step 2 — 提炼复用输入,但不要被其绑架
|
|
79
|
+
|
|
80
|
+
### 2.1 读取可借鉴输入
|
|
81
|
+
|
|
82
|
+
从 `atom-tree.json` / `atom-tree.md` 里提炼:
|
|
83
|
+
|
|
84
|
+
- 哪些 selected `skillRef` 明显能借鉴
|
|
85
|
+
- 哪些 `mediaGroups` 可以直接 link
|
|
86
|
+
- 哪些 `Acceptance Criteria` 必须在计划里兑现
|
|
87
|
+
- `Gameplay Assembly Link` 暗示了哪些 trunk-adjacent references 值得先读
|
|
88
|
+
|
|
89
|
+
### 2.2 复用覆盖度表
|
|
90
|
+
|
|
91
|
+
计划中保留一张轻量覆盖总览即可(让 Developer 一眼看到哪些 Feature 有参考、哪些从零):
|
|
92
|
+
|
|
93
|
+
| Feature | Skill Support | Level | 备注 |
|
|
94
|
+
| --------------------------- | ------------------- | ----- | -------- |
|
|
95
|
+
| {例如:Board + Entry Anim} | layered-stack-board | L4 | {一句话} |
|
|
96
|
+
| {例如:Match State Machine} | — | L0 | 自定义 |
|
|
97
|
+
|
|
98
|
+
规则:
|
|
99
|
+
|
|
100
|
+
- 不要求每个 Feature 都硬绑 atom
|
|
101
|
+
- 但如果某个 selected `skillRef` / `mediaGroup` 明显相关,必须在计划中承认它
|
|
102
|
+
- L0 项应简述为什么现有输入不够
|
|
103
|
+
- **覆盖表是总览;Feature 级别的 `Skill Support` 才是执行入口** — Developer 按 Feature 顺序工作时看到 Support 就知道该先读什么
|
|
104
|
+
|
|
105
|
+
### 2.3 风险项
|
|
106
|
+
|
|
107
|
+
**风险项的定义边界**:只收"当前无法确定答案"的开放问题,不收"已有方案但要提醒一下"的实现细节。
|
|
108
|
+
|
|
109
|
+
判断标准:如果你已经知道怎么做了,就不是风险,放到对应 Feature 的 `Acceptance` 或 `Implementation Locus` 里。
|
|
110
|
+
|
|
111
|
+
典型的真正风险:
|
|
112
|
+
|
|
113
|
+
- 算法正确性无法在 Phase 1 验证(需要真实数据才能确认)
|
|
114
|
+
- 首关必胜的容错边界不确定(依赖 playtesting 才能定)
|
|
115
|
+
- 某个交互效果需要 TA / Artist 配合才能判断可行性
|
|
116
|
+
|
|
117
|
+
**不是风险的内容(不要放进风险表)**:
|
|
118
|
+
|
|
119
|
+
- 资产占位处理方式(这是已知流程,见下方说明)
|
|
120
|
+
- 音频实现方式(Phase 1 只挂事件钩子,已有规范)
|
|
121
|
+
- 任何"已经想好怎么做了"的实现细节
|
|
122
|
+
|
|
123
|
+
### 2.4 资产占位策略(plan-writer 必读)
|
|
124
|
+
|
|
125
|
+
build 环原则:**能用占位图就用占位图;不能用占位图的才代码绘制。不考虑视觉表现力,只保证玩法可玩、程序正常执行。**
|
|
126
|
+
|
|
127
|
+
| 情况 | build 环处理方式 |
|
|
128
|
+
| ------------------------------------------ | ------------------------------------------------------------------------------- |
|
|
129
|
+
| ref-flow 已 link(mediaGroups 有匹配) | Tier 1:直接绑定合约路径 |
|
|
130
|
+
| 无匹配,且 `assetMapping` 期望静态图片文件 | Tier 2:`npm run placeholder:gen` 生成到合约路径 |
|
|
131
|
+
| Preloader 已 load 的 MP3 缺失 | Tier 2:`npm run placeholder:gen-audio`(先读 `playable-placeholder` skill) |
|
|
132
|
+
| 动态数字 / 计时文本 / 无图片合约路径 | Tier 3:最小化代码绘制(`fillText` / DOM / `Graphics`),developer-log 记录原因 |
|
|
133
|
+
| 音频 | Tier 3:只在正确时机 `emit` 命名事件,不实现播放 |
|
|
134
|
+
|
|
135
|
+
**禁止写法**:
|
|
136
|
+
|
|
137
|
+
- 用 Phaser `Graphics` / canvas 色块**代替**本该生成的占位图文件(有 `assetMapping` 路径时必须先 Tier 2)
|
|
138
|
+
- AI 生成图片、手绘占位图、build 环视觉打磨
|
|
139
|
+
- Web Audio 合成占位音
|
|
140
|
+
|
|
141
|
+
ring 4(TA 交付后):TA 把真实文件放到合约路径,代码零改动。
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Step 3 — 组织 Feature,不要写成架构白皮书
|
|
146
|
+
|
|
147
|
+
### Feature 组织原则
|
|
148
|
+
|
|
149
|
+
- 按 **用户可感知能力** 组织
|
|
150
|
+
- 不按“先写什么文件”组织
|
|
151
|
+
- 不按纯技术 Phase 编号组织
|
|
152
|
+
- 不按 layer 或 skill 命中数扩增一级 feature
|
|
153
|
+
- 不写完整接口 / file tree / pseudo-code
|
|
154
|
+
|
|
155
|
+
### 推荐 Feature 形态
|
|
156
|
+
|
|
157
|
+
```text
|
|
158
|
+
Board / Foundation Setup
|
|
159
|
+
Core Interaction Loop
|
|
160
|
+
Tutorial + First-level Success Control
|
|
161
|
+
Feedback + Readability
|
|
162
|
+
End Flow + CTA
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
如果某个游戏确实需要不同命名,也要保持同样的原则:**面向玩家结果、可独立验收、依赖清楚**。
|
|
166
|
+
|
|
167
|
+
### Feature 依赖图
|
|
168
|
+
|
|
169
|
+
输出 ASCII 图,表达:
|
|
170
|
+
|
|
171
|
+
- 哪些 shared foundation 先行
|
|
172
|
+
- 哪些 Feature 依赖 Runtime Data / scene flow
|
|
173
|
+
- 哪些反馈表现挂在已有 gameplay 事件上
|
|
174
|
+
- 哪些直接影响首关必胜
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## Step 4 — 写入 `docs/implementation-plan.md`
|
|
179
|
+
|
|
180
|
+
初始化时直接参考 [templates/plan.template.md](../../../templates/plan.template.md)。
|
|
181
|
+
|
|
182
|
+
### 强制结构
|
|
183
|
+
|
|
184
|
+
1. 核心玩法概述
|
|
185
|
+
2. 复用/借鉴覆盖度
|
|
186
|
+
3. Feature 依赖图
|
|
187
|
+
4. Feature 详细清单
|
|
188
|
+
5. 首关保证策略
|
|
189
|
+
6. 风险与开放问题
|
|
190
|
+
|
|
191
|
+
### 默认写法
|
|
192
|
+
|
|
193
|
+
- 以 6 个主章节为正文骨架
|
|
194
|
+
- **Feature 详细清单** 应该是全文主体,信息密度最高
|
|
195
|
+
- 允许在章节内部补少量辅助说明,但不要再扩成新的主线章节
|
|
196
|
+
- 除非任务显式要求,否则不要额外加入 `Architecture`、`Implementation Order`、`Asset Pipeline`、`Scene Flow`、`File/Module Structure` 这类大章节
|
|
197
|
+
- 如果确实需要补充实现顺序,请压缩到依赖图说明或 Feature 条目里,不要覆盖主结构
|
|
198
|
+
|
|
199
|
+
### 每个 Feature 必须包含的字段
|
|
200
|
+
|
|
201
|
+
```markdown
|
|
202
|
+
### Feature: {名称}
|
|
203
|
+
|
|
204
|
+
- **Goal**: {这一项解决什么玩家可感知问题}
|
|
205
|
+
- **Player-visible Outcome**: {玩家实际会看到/感受到什么变化}
|
|
206
|
+
- **Depends On**: {无 / Feature X / Feature Y}
|
|
207
|
+
- **Layers Touched**: {Data / Runtime Data / Gameplay Feature / Panel / Visual Feature}
|
|
208
|
+
- **Skill Support**: {skillRef} L{0-4} — {一句话说明在本 Feature 的实际参考价值}
|
|
209
|
+
- **Implementation Locus**: {实现落点,语义级即可,如 GameScene state / board preset / tutorial panel}
|
|
210
|
+
- **Acceptance**: {怎么算完成}
|
|
211
|
+
- **First-Level Success Impact**: {对首关必胜的影响,没有就写 none}
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### Skill Support 怎么写
|
|
215
|
+
|
|
216
|
+
**目的**:让 Developer 在执行到这个 Feature 时,知道"有现成代码值得先看一眼",而不是从零开始自己想。这不是强制要求,是引导——告诉 Developer 读了能省多少事、参考什么。
|
|
217
|
+
|
|
218
|
+
**格式**:`{skillRef} L{0-4} — {一句话说明在本 Feature 的实际参考价值}`
|
|
219
|
+
|
|
220
|
+
**级别含义**(对应 `skill-value-layers.md` 复用级别):
|
|
221
|
+
|
|
222
|
+
| 级别 | 含义 | Developer 期望行为 |
|
|
223
|
+
| ---- | ----------------------- | ---------------------------------------- |
|
|
224
|
+
| L4 | 有完整可用实现 | 先读 SKILL.md Code 段,理解后适配参数 |
|
|
225
|
+
| L3 | 核心算法/架构可复用 | 读 SKILL.md 提取核心逻辑,在此基础上改写 |
|
|
226
|
+
| L2 | 设计模式/思路有参考价值 | 扫一眼借鉴思路,自己实现 |
|
|
227
|
+
| L1 | 仅配置/参数有参考 | 快速看下默认值和边界条件 |
|
|
228
|
+
| L0 | 无参考 / From-scratch | 不需要读 Skill |
|
|
229
|
+
|
|
230
|
+
**示例**:
|
|
231
|
+
|
|
232
|
+
```markdown
|
|
233
|
+
- **Skill Support**: `layered-stack-board-phaser` L4 — 入场动画算法 + AABB 遮挡检测完整实现可直接适配
|
|
234
|
+
- **Skill Support**: `brain-age-ui-phaser` L3 — 数值+危险闪烁核心逻辑可用,需自己加 progress bar
|
|
235
|
+
- **Skill Support**: `match-pop.aicomponent` L2 — 粒子爆发效果思路可参考,但需改为双牌同时消除
|
|
236
|
+
- **Skill Support**: none (L0) — 自定义状态机,无现有 Skill 覆盖
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
**约束**:
|
|
240
|
+
|
|
241
|
+
- 一个 Feature 最多标注 1-2 个最相关的 Skill Support(不要罗列所有相关 Skill)
|
|
242
|
+
- Skill Support 必须说"在本 Feature 能帮什么"而非泛泛的"这个 Skill 存在"
|
|
243
|
+
- L0 的 Feature 可以省略 Skill Support 行或写 `none`
|
|
244
|
+
|
|
245
|
+
**禁止**:
|
|
246
|
+
|
|
247
|
+
- TypeScript `interface`
|
|
248
|
+
- 伪代码算法
|
|
249
|
+
- 完整 scene/file 树
|
|
250
|
+
- `src/...` 级别的 file allocation 清单
|
|
251
|
+
- “Feature 1/2/3 = 技术施工阶段”式线性工程流水账
|
|
252
|
+
|
|
253
|
+
### Implementation Locus 怎么写
|
|
254
|
+
|
|
255
|
+
允许:
|
|
256
|
+
|
|
257
|
+
- `board preset data`
|
|
258
|
+
- `gameplay runtime state`
|
|
259
|
+
- `tutorial overlay panel`
|
|
260
|
+
- `result transition flow`
|
|
261
|
+
- `selection feedback pipeline`
|
|
262
|
+
|
|
263
|
+
不允许:
|
|
264
|
+
|
|
265
|
+
- `src/game/board/FreeTileDetector.ts`
|
|
266
|
+
- `interface Tile`
|
|
267
|
+
- `function isTileFree(tile, board)`
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## Step 5 — 写入 Delivery Checklist
|
|
272
|
+
|
|
273
|
+
在 `docs/implementation-plan.md` 的 `## 8. Delivery Checklist` 节,从 `DESIGN.md` 和 `layout-spec.md` 提取**可在代码/运行时验证的具体约束**,每项一行。
|
|
274
|
+
|
|
275
|
+
**格式**:`- [ ] {具体约束} — source: {来源文件}`
|
|
276
|
+
|
|
277
|
+
**提取原则**:
|
|
278
|
+
|
|
279
|
+
- 只提取"做错了玩家会直接感知到"的约束,不是所有设计细节
|
|
280
|
+
- 每项必须是可验证的(能在浏览器/代码里确认 pass/fail),不是"做好 UI"这类模糊描述
|
|
281
|
+
- 典型来源:layout zone 边界、UI 可见性时机、交互可达性、关键资产接入要求
|
|
282
|
+
- 数量控制在 5-10 项,覆盖最高风险点即可
|
|
283
|
+
|
|
284
|
+
**重要**:这个节不是给 Developer 开发时看的,是给 `validate-workflow-stop` hook 在 Developer 自报完成时做验证用的。plan-writer 必须写,Developer 不需要主动查阅。
|
|
285
|
+
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
## 完成条件
|
|
289
|
+
|
|
290
|
+
| # | 检查项 | 标准 |
|
|
291
|
+
| --- | ---------------------- | ----------------------------------------------------- |
|
|
292
|
+
| 1 | 计划定位正确 | 是执行计划,不是工程设计白皮书 |
|
|
293
|
+
| 2 | 主轴正确 | 以 Feature 执行为主,不按 layer / skill 命中数拆分 |
|
|
294
|
+
| 3 | Skill Support 覆盖充分 | 有 skillRef 的 Feature 都标注了 Skill Support + level |
|
|
295
|
+
| 4 | From-scratch 可解释 | L0 Feature 没有现有 Skill 覆盖时有理由 |
|
|
296
|
+
| 5 | Feature 可执行 | 每个 Feature 都有 Goal / Depends / Acceptance |
|
|
297
|
+
| 6 | 首关必胜闭环 | 有专门策略,并映射到相关 Feature |
|
|
298
|
+
| 7 | 无代码污染 | 无接口、伪代码、file tree、源码路径清单 |
|
|
299
|
+
| 8 | Developer 可直接执行 | Developer 无需再次推导计划结构 |
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## 注意事项
|
|
304
|
+
|
|
305
|
+
- **计划服务开发执行,不服务炫技说明**
|
|
306
|
+
- **玩法完整性优先于架构漂亮**
|
|
307
|
+
- **复用输入要承认,但不要被 atom-tree 绑成后续制作流程**
|
|
308
|
+
- **允许写 Implementation Locus,不允许写代码结构**
|
|
309
|
+
- **允许写执行顺序,但应从属于主结构,不要写成新的大章节**
|
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
# Reviewer: Convergence Evaluation (design_check / gameplay_conformance / ui_diff / load_check / playable_validate)
|
|
2
|
+
|
|
3
|
+
> **Read before executing any Reviewer mode.** Growth-rings verify modes for `growth-rings-v1`.
|
|
4
|
+
> Invoked from `agents/reviewer.md` — orchestrator specifies mode per invoke.
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Mode: design_check
|
|
9
|
+
|
|
10
|
+
Soft checklist only — **do not judge subjective design quality**.
|
|
11
|
+
|
|
12
|
+
### Ring 1 clarify checklist (minimal package)
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
[ ] design-brief exists; uses living-brief structure (context / core gameplay / core fun / flow / level intent / confirmed decisions / assumptions / derived constraints)
|
|
16
|
+
[ ] design-brief includes source tags on important claims: [USER] / [WEB] / [SKILL] / [AGENT] / [ASSUMPTION]
|
|
17
|
+
[ ] design-brief records confirmed gameplay-direction decisions from brainstorm, not only retrospective summary prose
|
|
18
|
+
[ ] design-brief does not contain workflow-state claims like gate confirmation / handoff status
|
|
19
|
+
[ ] Style Direction has Dimension / Modality / Arc
|
|
20
|
+
[ ] layout-spec exists; assetMapping non-empty
|
|
21
|
+
[ ] atom-tree.json exists; skillsMatch non-empty
|
|
22
|
+
[ ] atom-tree.json `meta.selectedAtoms` is a compact selected-skill list (not a task / dependency graph)
|
|
23
|
+
[ ] atom-tree.md includes Selected Gameplay Trunk + Gameplay Assembly Link + Role Resolution + Gaps
|
|
24
|
+
[ ] no obvious cross-doc contradictions (assetMapping paths align with atom-tree reading guidance)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Fail →** list missing items + `routeTo: game-designer` (or `artist` if visual doc gap).
|
|
28
|
+
|
|
29
|
+
### Ring 3 ASR checklist (structural — hard fail)
|
|
30
|
+
|
|
31
|
+
Ring 3 ASR **structural** gaps are hard fails (missing files, row count, type representatives). Do not fail for subjective aesthetics.
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
[ ] MC five panels complete (concept + 4 storyboard)
|
|
35
|
+
[ ] MC aspect ratio correct — playcraft image info <mc-path> (width/height ≈ 2.81)
|
|
36
|
+
[ ] MC Panel 1 shows every element type from layout-spec § Element Type Registry (or assetMapping)
|
|
37
|
+
[ ] ASR dual sheets exist: ui_state_sheet_[X].png + element_state_sheet_[X].png
|
|
38
|
+
[ ] Optional overflow: element_state_sheet_[X]_2.png when types > 12
|
|
39
|
+
[ ] logs/artist-log.md § Image Production Preflight complete (3 image Skills)
|
|
40
|
+
[ ] ASR Coverage Matrix row count == assetMapping rows + static text ids
|
|
41
|
+
[ ] CoverageLayer column present; each elementType has ≥1 on-asr OR mc-crop row
|
|
42
|
+
[ ] Sheet grid metadata filled (no {{placeholders}})
|
|
43
|
+
[ ] ASR semantic split: UI board has no gameplay tiles; element board has no full HUD screenshot
|
|
44
|
+
[ ] Spot-check: ASR cells look isolated (no white box / scene floor inside cells) — note in report if obvious
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Optional CLI: `playcraft skills validate-asr-coverage --project-dir .`
|
|
48
|
+
|
|
49
|
+
**Pass →** handoff orchestrator for next verify step. **Fail →** routeTo Artist (or Game Designer if layout-spec/type budget issue).
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Mode: gameplay_conformance
|
|
54
|
+
|
|
55
|
+
> **Preconditions**: `devStatus: ready` set, `docs/DESIGN.md` exists, devUrl valid.
|
|
56
|
+
> **Executes BEFORE `load_check`** in every ring's verify loop — gameplay correctness must be verified before load/browser check.
|
|
57
|
+
|
|
58
|
+
### Check A: Design Drift Pre-check
|
|
59
|
+
|
|
60
|
+
对照 `DESIGN.md` 验证代码是否兑现了设计承诺:
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
[ ] 核心玩法循环 — 代码中是否实现了 DESIGN.md § 二 描述的完整操作→响应→决策闭环?
|
|
64
|
+
[ ] 规则体系 — 对照 DESIGN.md § 三 的合法操作/状态变化表,是否有遗漏?
|
|
65
|
+
[ ] 胜负条件 — 对照 DESIGN.md § 六,所有胜负条件是否有对应代码逻辑?
|
|
66
|
+
[ ] Experience Flow — Hook / Tutorial / Gameplay / EndCard 四阶段是否全部可达?
|
|
67
|
+
[ ] 首关保证 — DESIGN.md § 八 描述的策略是否在代码/配置中体现?
|
|
68
|
+
[ ] Visual Readability — 玩家能否区分可操作/不可操作/目标/风险?(代码 level 审查)
|
|
69
|
+
[ ] Level Progression — DESIGN.md § 七 的关卡配置是否在代码中正确加载?
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**输出**: Design Drift 报告
|
|
73
|
+
|
|
74
|
+
```markdown
|
|
75
|
+
### Design Drift Result
|
|
76
|
+
|
|
77
|
+
| # | 检查项 | 结果 | 详情 |
|
|
78
|
+
| --- | ------------ | ----------- | ------------------------------------------------------ |
|
|
79
|
+
| 1 | 核心玩法循环 | ✅ | swap → match → remove → gravity → refill 全部实现 |
|
|
80
|
+
| 2 | 规则体系 | ❌ Blocking | DESIGN.md 写了"锁定元素不可交换",代码中未实现锁定逻辑 |
|
|
81
|
+
| 3 | 胜负条件 | ✅ | countdown → lose / clearAll → win 正确 |
|
|
82
|
+
| ... | ... | ... | ... |
|
|
83
|
+
|
|
84
|
+
**Summary**: N Blocking / M Non-blocking
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**判定**: 有 Blocking Drift → 整体 FAIL,返回 Developer 修复。仅有 Non-blocking Drift → 记录到报告但不阻塞推进。
|
|
88
|
+
|
|
89
|
+
**Blocking Drift 的判定**:
|
|
90
|
+
|
|
91
|
+
- 核心玩法、设计承诺、复用承诺的偏离
|
|
92
|
+
- 文档写 A,代码做成 B
|
|
93
|
+
- 为了赶进度临时简化核心规则
|
|
94
|
+
|
|
95
|
+
**Non-blocking Drift 的判定**:
|
|
96
|
+
|
|
97
|
+
- 轻微细节、注释差异、非核心体验偏差
|
|
98
|
+
- 已按 reading guide 的 reference 方式合理替换了业务逻辑
|
|
99
|
+
|
|
100
|
+
### Check B: Skill Usage
|
|
101
|
+
|
|
102
|
+
对照 `atom-tree.md` 的 `Selected Atoms Summary` / `Selected Skill Notes` / `Gameplay Assembly Link` 与 developer-log § Skill Usage,检查 Skill 库的参考价值是否被有效利用:
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
[ ] developer-log 中是否记录了 Skill 参考情况?全部跳过时原因是否合理?
|
|
106
|
+
[ ] 标记 scaffold 的 Skill — scaffold 代码是否被实际参考/使用?
|
|
107
|
+
[ ] 标记 reference 的 Skill — 是否有体现核心设计模式的影响?
|
|
108
|
+
[ ] trunk-adjacent roles / providers 的关键引用是否被合理承认?
|
|
109
|
+
[ ] 媒体资产是否已 link 到资产路径?
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**这不是合规审计**——目的是确认高质量参考没有被无意中忽略。如果 Developer 记录了合理的不使用原因("Skill X 的架构不适用于这个场景,因为..."),那就是 OK 的。
|
|
113
|
+
|
|
114
|
+
### Check C: playwright-cli Automated Path Verification (batch — one tool call)
|
|
115
|
+
|
|
116
|
+
Use **`playwright-cli run-code`** once instead of atomic open/mousemove/eval/screenshot/close per step:
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
playwright-cli open <devUrl>
|
|
120
|
+
playwright-cli run-code "async page => {
|
|
121
|
+
await page.setViewportSize({ width: 390, height: 844 });
|
|
122
|
+
await page.waitForTimeout(3000);
|
|
123
|
+
const state = await page.evaluate(() => window.__playable?.getState?.() ?? null);
|
|
124
|
+
await page.screenshot({ path: 'logs/conform-load.png' });
|
|
125
|
+
return JSON.stringify({ state, url: page.url() });
|
|
126
|
+
}"
|
|
127
|
+
playwright-cli console
|
|
128
|
+
playwright-cli close
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Optional: simulate tutorial swap inside the same `run-code` block when DESIGN.md requires manual path proof (ring 2+). Ring 1 `firstLevelWin` is script-owned — Reviewer does not re-prove it here.
|
|
132
|
+
|
|
133
|
+
自动验证三个关键路径(screenshots from single batch):
|
|
134
|
+
|
|
135
|
+
```
|
|
136
|
+
[ ] Hook → Tutorial: 页面加载 5s 内显示 Hook 视觉 + Tutorial 引导元素
|
|
137
|
+
logs/conform-load.png (or dedicated conform-hook.png from run-code)
|
|
138
|
+
|
|
139
|
+
[ ] Tutorial → Gameplay: 模拟交互后进入 Gameplay 状态(或等待 Tutorial 自动推进)
|
|
140
|
+
|
|
141
|
+
[ ] Gameplay → EndCard: 超时等待(30s+)或手动推进后,EndCard/CTA 可见
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
playwright-cli console
|
|
146
|
+
playwright-cli close
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
控制台 Error 级别日志记录但不在此模式阻塞(那是 `load_check` 的职责)。
|
|
150
|
+
|
|
151
|
+
### Output: Conformance Report
|
|
152
|
+
|
|
153
|
+
写入 `logs/review-report.md` § Gameplay Conformance:
|
|
154
|
+
|
|
155
|
+
```markdown
|
|
156
|
+
## Gameplay Conformance
|
|
157
|
+
|
|
158
|
+
### Design Drift (Check A)
|
|
159
|
+
|
|
160
|
+
{drift result table + summary}
|
|
161
|
+
|
|
162
|
+
### Skill Usage (Check B)
|
|
163
|
+
|
|
164
|
+
{skill usage table + 违规判定}
|
|
165
|
+
|
|
166
|
+
### Path Verification (Check C)
|
|
167
|
+
|
|
168
|
+
{path result: ✅ Hook / ✅ Tutorial→Gameplay / ✅ EndCard}
|
|
169
|
+
|
|
170
|
+
### Overall
|
|
171
|
+
|
|
172
|
+
- **Result**: PASS / FAIL
|
|
173
|
+
- **Blocking Issues**: {count} — {summary}
|
|
174
|
+
- **Non-blocking Notes**: {count} — {summary}
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
**Pass →** `conformance: passed`, handoff `Invoke @reviewer load_check`
|
|
178
|
+
**Fail →** route Developer with blocking items; handoff `Re-invoke @developer for conformance fixes`
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## Mode: ui_diff
|
|
183
|
+
|
|
184
|
+
> **Read `playwright-cli` skill first.** Save all screenshots under `logs/`.
|
|
185
|
+
> **MUST Read each screenshot PNG** with multimodal vision before writing pass/fail. Disk asset size tables and `verify:visual` JSON alone **do not** satisfy ui_diff.
|
|
186
|
+
|
|
187
|
+
### Procedure
|
|
188
|
+
|
|
189
|
+
1. Read MC panel paths from `style-exploration.md` / `assets/images/reference/`.
|
|
190
|
+
2. Run `npm run ensure:project` then `npm run verify:ui` first — catch asset/layout drift before screenshots. If it FAILs on asset/layout, route to Developer/TA and stop; do not proceed to screenshots until PASS or only expected warnings.
|
|
191
|
+
3. Optional: `npm run verify:visual` when ASR locked — objective secondary signal only; **does not replace** visual rubric.
|
|
192
|
+
4. Run `npm run state:get -- --json`; if `devUrl` is down, route to Developer to restart with `npm run dev:start`.
|
|
193
|
+
5. For each scene Developer exposed (URL param or UI button):
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
playwright-cli open <devUrl>[?scene=hook|tutorial|endcard|cta]
|
|
197
|
+
playwright-cli resize 390 844
|
|
198
|
+
playwright-cli screenshot --filename=logs/ui-diff-<scene>.png
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
6. **Read each `logs/ui-diff-*.png`** (and `logs/load-check.png` if captured) — fill § Structured Visual Rubric below with PASS/FAIL + evidence citing what you see in the image.
|
|
202
|
+
7. Compare each screenshot vs corresponding MC panel:
|
|
203
|
+
|
|
204
|
+
| Scene | MC panel | Check |
|
|
205
|
+
| ---------- | --------------- | --------------------------------------- |
|
|
206
|
+
| Initial | Panel 1 Concept | Layout, hierarchy, element completeness |
|
|
207
|
+
| Hook | Panel 2 | Color mood, hook composition |
|
|
208
|
+
| Onboarding | Panel 3 | Tutorial UI, low-pressure layout |
|
|
209
|
+
| EndCard | Panel 4 | CTA zone, unresolved emotion |
|
|
210
|
+
| CTA | Panel 5 | Button prominence, accent color |
|
|
211
|
+
|
|
212
|
+
8. `playwright-cli console` — log errors (informational for ui_diff; critical only if UI broken).
|
|
213
|
+
9. `playwright-cli close`.
|
|
214
|
+
|
|
215
|
+
### Structured Visual Rubric (MUST fill in review-report.md — ring 4)
|
|
216
|
+
|
|
217
|
+
Each row: **PASS / FAIL** + **evidence** (describe what you see in the screenshot; cite screenshot path).
|
|
218
|
+
|
|
219
|
+
| Check ID | Question | Blocks pass? |
|
|
220
|
+
| ----------------- | --------------------------------------------------------------------------------------------------------------------------- | ------------ |
|
|
221
|
+
| `bg_clean` | Background is a clean plate — no baked board grid, HUD numbers, title text, or fake prop buttons painted into `bg_*` assets | Yes |
|
|
222
|
+
| `no_double_board` | Only one interactive tile layer — no ghost/static board under playable tiles (double-board) | Yes |
|
|
223
|
+
| `no_hud_ghost` | No duplicate HUD (e.g. two score counters, overlapping progress bars) | Yes |
|
|
224
|
+
| `no_fake_ui` | No non-interactive buttons/icons that look clickable but are baked into background art | Yes |
|
|
225
|
+
| `tile_silhouette` | Same-type gems share consistent silhouette/size (no mix of hex/diamond/square/drop in one set) | Yes |
|
|
226
|
+
| `text_no_overlap` | Baked Phaser text does not overlap art text on CTA/buttons (e.g. INSTALL vs 立即下载) | Yes |
|
|
227
|
+
| `mc_layout` | Scene layout matches locked MC/ASR reference (no critical/major drift) | Yes |
|
|
228
|
+
|
|
229
|
+
**Any FAIL on blocking rows → ui_diff fail.** Set `uiDiff: fail` in § Ring DoD Fields and `uiReviewStatus: failed`.
|
|
230
|
+
|
|
231
|
+
**All blocking rows PASS + no critical/major scene diffs → ui_diff pass.** Set `uiDiff: pass` and `uiReviewStatus: passed`.
|
|
232
|
+
|
|
233
|
+
### UI Diff Report (write to review-report.md)
|
|
234
|
+
|
|
235
|
+
For each difference:
|
|
236
|
+
|
|
237
|
+
- Screenshot path + MC reference path
|
|
238
|
+
- Description + severity (`critical` / `major` / `minor`)
|
|
239
|
+
- `routeTo: developer | ta | artist`
|
|
240
|
+
- Fix suggestion
|
|
241
|
+
|
|
242
|
+
**Pass:** no critical/major diffs (minor logged, do not block).
|
|
243
|
+
**Fail:** `uiReworkRound` +1; handoff orchestrator to invoke routed agents.
|
|
244
|
+
|
|
245
|
+
### Routing guide
|
|
246
|
+
|
|
247
|
+
| Issue type | routeTo |
|
|
248
|
+
| ---------------------------------- | --------- |
|
|
249
|
+
| Layout, code binding, scene switch | developer |
|
|
250
|
+
| Wrong asset color/size/style | ta |
|
|
251
|
+
| Ambiguous design intent | artist |
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
## Mode: load_check
|
|
256
|
+
|
|
257
|
+
Minimal pre-Ring Gate sanity check — **not gameplay QA**.
|
|
258
|
+
|
|
259
|
+
### Procedure
|
|
260
|
+
|
|
261
|
+
1. `npm run dev` if needed; `playwright-cli open <devUrl>`.
|
|
262
|
+
2. Wait for load (≤10s); confirm not white screen.
|
|
263
|
+
3. `playwright-cli console` — fail if any **Error**-level log.
|
|
264
|
+
4. `playwright-cli screenshot --filename=logs/load-check.png`.
|
|
265
|
+
5. `playwright-cli close`.
|
|
266
|
+
|
|
267
|
+
### Checklist
|
|
268
|
+
|
|
269
|
+
```
|
|
270
|
+
[ ] Page loads within 10s (not white screen)
|
|
271
|
+
[ ] Console has no Error-level messages
|
|
272
|
+
[ ] game/index.html reachable
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
**Pass →** `loadCheck: passed`, handoff `npm run ring:gate -- --iteration N`.
|
|
276
|
+
**Fail →** routeTo Developer with console error summary.
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## Severity (ui_diff only)
|
|
281
|
+
|
|
282
|
+
| Severity | Meaning | Blocks pass? |
|
|
283
|
+
| -------- | --------------------------- | ------------ |
|
|
284
|
+
| critical | UI broken / missing | Yes |
|
|
285
|
+
| major | Clear visual mismatch vs MC | Yes |
|
|
286
|
+
| minor | Polish / slight drift | No (log) |
|
|
287
|
+
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
## project-state fields (Reviewer writes)
|
|
291
|
+
|
|
292
|
+
| Field | Mode | Values |
|
|
293
|
+
| -------------------- | ----------------- | ------------------------- |
|
|
294
|
+
| `uiReviewStatus` | ui_diff | pending / passed / failed |
|
|
295
|
+
| `uiReworkRound` | ui_diff fail | 0–5 |
|
|
296
|
+
| `loadCheck` | load_check | pending / passed / failed |
|
|
297
|
+
| `loadCheckNotes` | load_check | console + load summary |
|
|
298
|
+
| `optimizationStatus` | playable_validate | pending / passed / failed |
|
|
299
|
+
| `optimizationReport` | playable_validate | path to validate/\*.md |
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## Mode: playable_validate
|
|
304
|
+
|
|
305
|
+
> **Read `playcraft-playable-optimization` skill first.** Heavy convergence check — ring 3+ verify or optional optimization before final Ring Gate.
|
|
306
|
+
|
|
307
|
+
### Procedure
|
|
308
|
+
|
|
309
|
+
1. `npm run ensure:project` — ensure toolkit + Playwright ready.
|
|
310
|
+
2. `npm run verify:ui` — catch asset/layout drift first.
|
|
311
|
+
3. `npm run record:mp4 -- --headed --fps=60` — produce `recordings/playable-YYYYMMDD-HHmmss.mp4`.
|
|
312
|
+
4. Watch MP4 against [validation-rules.md](../../skills/playable-validate/validation-rules.md):
|
|
313
|
+
- HOOK 0–3s:入场、HUD
|
|
314
|
+
- TUTORIAL 3–8s:引导
|
|
315
|
+
- GAMEPLAY 8–22s:输入、FX、连击
|
|
316
|
+
- ENDCARD 22–25s:CTA、尾帧
|
|
317
|
+
5. Each issue: `[MM:SS] 效果 → P0/P1/P2` + `routeTo: developer | ta | artist`.
|
|
318
|
+
6. If baseline MP4 exists (previous recording), compare for regressions.
|
|
319
|
+
7. Write report to `logs/review-report.md` § Playable Validate and `validate/PLAYABLE-YYYYMMDD-HHmmss.md`.
|
|
320
|
+
|
|
321
|
+
### Output: Playable Validate Report
|
|
322
|
+
|
|
323
|
+
```markdown
|
|
324
|
+
## Playable Validate
|
|
325
|
+
|
|
326
|
+
### Baseline
|
|
327
|
+
|
|
328
|
+
- Current: recordings/playable-YYYYMMDD-HHmmss.mp4
|
|
329
|
+
- Previous: recordings/playable-...mp4 (if any)
|
|
330
|
+
|
|
331
|
+
### Findings
|
|
332
|
+
|
|
333
|
+
| Time | Effect | Severity | routeTo | Status |
|
|
334
|
+
| ----- | ----------------- | -------- | ------- | ------ |
|
|
335
|
+
| 00:02 | Hook text cut off | P0 | ta | open |
|
|
336
|
+
|
|
337
|
+
### Regression vs baseline
|
|
338
|
+
|
|
339
|
+
- 改善: ...
|
|
340
|
+
- 仍存: ...
|
|
341
|
+
- 回归: ...
|
|
342
|
+
|
|
343
|
+
### Overall
|
|
344
|
+
|
|
345
|
+
- Result: PASS / FAIL
|
|
346
|
+
- P0: {count} | P1: {count} | P2: {count}
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
**Pass →** `optimizationStatus: passed`, handoff orchestrator for Ring Gate.
|
|
350
|
+
**Fail →** `optimizationStatus: failed`, route per `routeTo`; handoff invoke routed agents then re-verify.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Reviewer Legacy Fallback
|
|
2
|
+
|
|
3
|
+
Use this reference only when `dispatchPacket` is null and `sliceState` is empty.
|
|
4
|
+
|
|
5
|
+
This preserves the older growth-ring review path for existing projects. It is not part of slice-axis dispatch.
|
|
6
|
+
|
|
7
|
+
Legacy behavior:
|
|
8
|
+
|
|
9
|
+
- Read `npm run state:get -- --json` and follow the disclosed current action.
|
|
10
|
+
- Use the review mode explicitly requested by the orchestrator.
|
|
11
|
+
- Record structured evidence in the legacy report file when required.
|
|
12
|
+
- Route failures to the responsible role and do not modify production files.
|
|
13
|
+
|
|
14
|
+
When `sliceState` exists, return to the main Reviewer role contract.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
# Reviewer: Six-Dimension Evaluation (deprecated)
|
|
2
|
+
|
|
3
|
+
> **Superseded by [`reviewer-convergence-eval.md`](./reviewer-convergence-eval.md)** in `convergence-v1`.
|
|
4
|
+
> Do not use six-dimension scoring or final `review`/`rework` stages.
|
|
5
|
+
|
|
6
|
+
See `agents/reviewer.md` for the three modes: `design_check`, `ui_diff`, `load_check`.
|