@playcraft/cli 0.0.44 → 0.0.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/atom-tree/build-skeleton.js +180 -0
- package/dist/atom-tree/fusion-hints.js +86 -0
- package/dist/atom-tree/selection.js +402 -0
- package/dist/commands/build-all.js +33 -5
- package/dist/commands/build.js +7 -1
- package/dist/commands/create.js +774 -50
- package/dist/commands/image.js +11 -0
- package/dist/commands/prad.js +61 -0
- package/dist/commands/remix.js +20 -0
- package/dist/commands/skills.js +961 -185
- package/dist/commands/tools-detect.js +56 -0
- package/dist/commands/tools-generation.js +21 -0
- package/dist/commands/tools-video-review.js +100 -0
- package/dist/commands/tools.js +4 -0
- package/dist/index.js +2 -0
- package/dist/prad/atom-ref.js +23 -0
- package/dist/prad/check.js +377 -0
- package/dist/prad/check.test.js +49 -0
- package/dist/prad/explain.js +109 -0
- package/dist/prad/load-spec.js +23 -0
- package/dist/prad/paths.js +83 -0
- package/dist/prad/skills-index.js +60 -0
- package/dist/remix/init-template.js +80 -0
- package/dist/scaffold/compose.js +211 -0
- package/engine-packs/phaser/game/adapters/phaser.ts +52 -0
- package/engine-packs/phaser/game/config/game-config.ts +46 -0
- package/engine-packs/phaser/game/contract/publish.ts +141 -0
- package/engine-packs/phaser/game/contract/types.ts +34 -0
- package/engine-packs/phaser/game/index.ts +81 -0
- package/engine-packs/phaser/game/runtime-contract.ts +28 -0
- package/engine-packs/phaser/manifest.json +1 -0
- package/engine-packs/phaser/package.deps.json +1 -0
- package/engine-packs/threejs/game/config/.gitkeep +0 -0
- package/engine-packs/threejs/game/config/game-config.ts +46 -0
- package/engine-packs/threejs/game/contract/publish.ts +141 -0
- package/engine-packs/threejs/game/contract/types.ts +34 -0
- package/engine-packs/threejs/game/gameplay/.gitkeep +0 -0
- package/engine-packs/threejs/game/index.ts +76 -0
- package/engine-packs/threejs/game/runtime-contract.ts +15 -0
- package/engine-packs/threejs/game/scenes/.gitkeep +0 -0
- package/engine-packs/threejs/manifest.json +1 -0
- package/engine-packs/threejs/package.deps.json +8 -0
- package/package.json +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/__pycache__/placeholder_audio_lib.cpython-311.pyc +0 -0
- package/project-template/skills/_shared/scripts/__pycache__/placeholder_lib.cpython-311.pyc +0 -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/__pycache__/import-gpt-art-sheets-v2.cpython-311.pyc +0 -0
- package/project-template/skills/playable-art/scripts/__pycache__/import_gpt_art_pipeline.cpython-311.pyc +0 -0
- package/project-template/skills/playable-art/scripts/__pycache__/review-processed-assets.cpython-311.pyc +0 -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/__pycache__/asset_manifest.cpython-311.pyc +0 -0
- package/project-template/skills/playable-verify-ui/scripts/__pycache__/verify_slice_plan.cpython-311.pyc +0 -0
- package/project-template/skills/playable-verify-ui/scripts/__pycache__/verify_vision_evidence.cpython-311.pyc +0 -0
- package/project-template/skills/playable-verify-ui/scripts/asset_manifest.py +231 -0
- package/project-template/skills/playable-verify-ui/scripts/lib/__init__.py +1 -0
- package/project-template/skills/playable-verify-ui/scripts/lib/config_expr.js +218 -0
- package/project-template/skills/playable-verify-ui/scripts/lib/node_utils.js +51 -0
- package/project-template/skills/playable-verify-ui/scripts/lib/profile_loader.py +59 -0
- package/project-template/skills/playable-verify-ui/scripts/lib/report.py +106 -0
- package/project-template/skills/playable-verify-ui/scripts/lib/runtime_contract.js +116 -0
- package/project-template/skills/playable-verify-ui/scripts/measure_frame_content.py +77 -0
- package/project-template/skills/playable-verify-ui/scripts/run_all.py +265 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_asset_sizes.py +77 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_assets_present.py +62 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_atlas_budget.py +84 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_atlas_frames.py +79 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_bg_clean.py +365 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_doc_asset_sync.py +90 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_fetch_antipatterns.py +59 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_game_config_load.js +54 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_hardcoded_layout.js +64 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_layout_regions.js +110 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_profile_schema.py +37 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_ring1_visual.py +211 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_runtime_contract.js +58 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_script_load_order.js +73 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_slice_plan.py +238 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_slice_plan_test.py +125 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_text_overlap.py +333 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_tile_consistency.py +323 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_vision_evidence.py +894 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_vision_evidence_test.py +122 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_visual.py +422 -0
- package/project-template/templates/{designer-log.template.md → artist-log.template.md} +26 -31
- package/project-template/templates/atom-tree.template.json +133 -0
- package/project-template/templates/design-brief.template.md +59 -162
- package/project-template/templates/design-lens-checklist.reference.md +14 -14
- package/project-template/templates/design-methodology.md +25 -25
- package/project-template/templates/design.template.md +50 -0
- package/project-template/templates/developer-log.template.md +187 -63
- package/project-template/templates/five-axis-framework.md +89 -44
- package/project-template/templates/gen-placeholder-audio.template.mjs +63 -0
- package/project-template/templates/gen-placeholders.template.mjs +81 -0
- package/project-template/templates/intent-clarifications.template.md +7 -7
- package/project-template/templates/layout-spec.template.md +32 -20
- package/project-template/templates/plan.template.md +80 -0
- package/project-template/templates/project-state.template.md +90 -191
- package/project-template/templates/review-report.template.md +208 -24
- package/project-template/templates/style-exploration.template.md +8 -8
- package/project-template/templates/ta-log.template.md +58 -35
- package/project-template/tsconfig.json +20 -0
- package/project-template/vite.config.ts +27 -0
- package/project-templates/phaser/.claude/agents/artist.md +101 -0
- package/project-templates/phaser/.claude/agents/developer.md +123 -0
- package/project-templates/phaser/.claude/agents/game-designer.md +192 -0
- package/project-templates/phaser/.claude/agents/refs/README.md +77 -0
- package/project-templates/phaser/.claude/agents/refs/artist-art-style-catalog.md +533 -0
- package/project-templates/phaser/.claude/agents/refs/artist-color-audio-recipes.md +153 -0
- package/project-templates/phaser/.claude/agents/refs/artist-deliverable-spec.md +230 -0
- package/project-templates/phaser/.claude/agents/refs/artist-dimension-axis.md +27 -0
- package/project-templates/phaser/.claude/agents/refs/artist-handoff-v2-checklist.md +76 -0
- package/project-templates/phaser/.claude/agents/refs/artist-legacy-fallback.md +14 -0
- package/project-templates/phaser/.claude/agents/refs/artist-master-composite-recipes.md +208 -0
- package/project-templates/phaser/.claude/agents/refs/artist-style-exploration-flow.md +55 -0
- package/project-templates/phaser/.claude/agents/refs/developer-dev-handoff.md +152 -0
- package/project-templates/phaser/.claude/agents/refs/developer-impl-cookbook.md +432 -0
- package/project-templates/phaser/.claude/agents/refs/developer-legacy-fallback.md +15 -0
- package/project-templates/phaser/.claude/agents/refs/developer-phase1-flow.md +404 -0
- package/project-templates/phaser/.claude/agents/refs/framework-5-component-filter.md +252 -0
- package/project-templates/phaser/.claude/agents/refs/framework-game-feel-juice.md +266 -0
- package/project-templates/phaser/.claude/agents/refs/framework-mda.md +147 -0
- package/project-templates/phaser/.claude/agents/refs/game-designer-gameplay-sufficiency.md +123 -0
- package/project-templates/phaser/.claude/agents/refs/game-designer-legacy-fallback.md +15 -0
- package/project-templates/phaser/.claude/agents/refs/game-designer-workflow-detail.md +69 -0
- package/project-templates/phaser/.claude/agents/refs/implementation-plan-guide.md +309 -0
- package/project-templates/phaser/.claude/agents/refs/reviewer-convergence-eval.md +350 -0
- package/project-templates/phaser/.claude/agents/refs/reviewer-legacy-fallback.md +14 -0
- package/project-templates/phaser/.claude/agents/refs/reviewer-six-dimension-eval.md +6 -0
- package/project-templates/phaser/.claude/agents/refs/skill-selector-guide.md +465 -0
- package/project-templates/phaser/.claude/agents/refs/skill-value-layers.md +145 -0
- package/project-templates/phaser/.claude/agents/refs/storyboard-generation-guide.md +110 -0
- package/project-templates/phaser/.claude/agents/refs/ta-3d-flip-recipe.md +88 -0
- package/project-templates/phaser/.claude/agents/refs/ta-atlas-deliverable-standard.md +67 -0
- package/project-templates/phaser/.claude/agents/refs/ta-batch-pipeline-recipes.md +120 -0
- package/project-templates/phaser/.claude/agents/refs/ta-image-generation-detail.md +300 -0
- package/project-templates/phaser/.claude/agents/refs/ta-image-ops-reference.md +495 -0
- package/project-templates/phaser/.claude/agents/refs/ta-pipeline-cookbook.md +1141 -0
- package/project-templates/phaser/.claude/agents/refs/ta-tools-reference.md +111 -0
- package/project-templates/phaser/.claude/agents/refs/ta-vfx-preset-catalog.md +365 -0
- package/project-templates/phaser/.claude/agents/refs/technical-artist-legacy-fallback.md +14 -0
- package/project-templates/phaser/.claude/agents/reviewer.md +116 -0
- package/project-templates/phaser/.claude/agents/technical-artist.md +100 -0
- package/project-templates/phaser/.claude/hooks/README.md +120 -0
- package/project-templates/phaser/.claude/hooks/asr-coverage-validate.mjs +381 -0
- package/project-templates/phaser/.claude/hooks/block-developer-preflight.mjs +185 -0
- package/project-templates/phaser/.claude/hooks/block-ring1-tasklist.mjs +95 -0
- package/project-templates/phaser/.claude/hooks/gate-dispatcher.mjs +78 -0
- package/project-templates/phaser/.claude/hooks/gate-runner.mjs +557 -0
- package/project-templates/phaser/.claude/hooks/gate.mjs +171 -0
- package/project-templates/phaser/.claude/hooks/snapshot-milestone.mjs +247 -0
- package/project-templates/phaser/.claude/hooks/user-prompt.mjs +194 -0
- package/project-templates/phaser/.claude/hooks/validate-atom-tree-selection.mjs +281 -0
- package/project-templates/phaser/.claude/hooks/validate-workflow-stop.mjs +1889 -0
- package/project-templates/phaser/.claude/settings.json +81 -0
- package/project-templates/phaser/.claude/skills/brainstorming/SKILL.md +161 -0
- package/project-templates/phaser/.claude/skills/brainstorming/scripts/frame-template.html +270 -0
- package/project-templates/phaser/.claude/skills/brainstorming/scripts/helper.js +177 -0
- package/project-templates/phaser/.claude/skills/brainstorming/scripts/server.cjs +354 -0
- package/project-templates/phaser/.claude/skills/brainstorming/scripts/start-server.sh +148 -0
- package/project-templates/phaser/.claude/skills/brainstorming/scripts/stop-server.sh +56 -0
- package/project-templates/phaser/.claude/skills/brainstorming/scripts/wait-for-selection.sh +62 -0
- package/project-templates/phaser/.claude/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
- package/project-templates/phaser/.claude/skills/brainstorming/visual-companion.md +309 -0
- package/project-templates/phaser/.claude/skills/playcraft-ad-psychology/SKILL.md +182 -0
- package/project-templates/phaser/.claude/skills/playcraft-art-style-guide/SKILL.md +123 -0
- package/project-templates/phaser/.claude/skills/playcraft-asset-state-sheet/SKILL.md +205 -0
- package/project-templates/phaser/.claude/skills/playcraft-audio-generation/SKILL.md +280 -0
- package/project-templates/phaser/.claude/skills/playcraft-batch-pipeline/SKILL.md +184 -0
- package/project-templates/phaser/.claude/skills/playcraft-build-optimizer/SKILL.md +306 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/SKILL.md +298 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/build-sprite-sheet.template.mjs +123 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/compare-style.template.mjs +254 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +324 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +97 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/gen-edit-variants.template.mjs +118 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +137 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +397 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/validate-sprite-sheet.template.mjs +296 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-ops/SKILL.md +122 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-processing/SKILL.md +219 -0
- package/project-templates/phaser/.claude/skills/playcraft-masking/SKILL.md +373 -0
- package/project-templates/phaser/.claude/skills/playcraft-playable-optimization/SKILL.md +161 -0
- package/project-templates/phaser/.claude/skills/playcraft-research/SKILL.md +215 -0
- package/project-templates/phaser/.claude/skills/playcraft-skill-recommender/SKILL.md +331 -0
- package/project-templates/phaser/.claude/skills/playcraft-sprite-generation/SKILL.md +423 -0
- package/project-templates/phaser/.claude/skills/playcraft-sprite-remix/SKILL.md +158 -0
- package/project-templates/phaser/.claude/skills/playcraft-sprite-sheet/SKILL.md +100 -0
- package/project-templates/phaser/.claude/skills/playcraft-storyboard/SKILL.md +167 -0
- package/project-templates/phaser/.claude/skills/playcraft-style-qa/SKILL.md +270 -0
- package/project-templates/phaser/.claude/skills/playcraft-text-rendering/SKILL.md +236 -0
- package/project-templates/phaser/.claude/skills/playcraft-vfx-animation/SKILL.md +130 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/SKILL.md +390 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/element-attributes.md +23 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/playwright-tests.md +39 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/request-mocking.md +87 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/running-code.md +240 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/session-management.md +226 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/spec-driven-testing.md +308 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/storage-state.md +275 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/test-generation.md +134 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/tracing.md +142 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/video-recording.md +153 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/SKILL.md +386 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/execution-breakdown.mjs +182 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/find-turns.mjs +72 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/heavy-output.mjs +121 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/resolve-session.mjs +103 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/subagent-stats.mjs +127 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/subagent-tool-timeline.mjs +106 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/time-gaps.mjs +128 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/turn-timeline.mjs +67 -0
- package/project-templates/phaser/.claude/snapshot.mjs +257 -0
- package/project-templates/phaser/.cursor/hooks.json +17 -0
- package/project-templates/phaser/.cursor/rules/playcraft-orchestrator.mdc +142 -0
- package/project-templates/phaser/.cursor/rules/playcraft-subagent-boundary.mdc +29 -0
- package/project-templates/phaser/.playcraft-engine +1 -0
- package/project-templates/phaser/CHANGELOG.md +105 -0
- package/project-templates/phaser/CLAUDE.md +84 -0
- package/project-templates/phaser/assets/audio/bgm/.gitkeep +0 -0
- package/project-templates/phaser/assets/audio/sfx/.gitkeep +0 -0
- package/project-templates/phaser/assets/bundles/.gitkeep +0 -0
- package/project-templates/phaser/assets/images/bg/.gitkeep +0 -0
- package/project-templates/phaser/assets/images/reference/.gitkeep +0 -0
- package/project-templates/phaser/assets/images/storyboard/.gitkeep +0 -0
- package/project-templates/phaser/assets/images/tiles/.gitkeep +0 -0
- package/project-templates/phaser/assets/images/ui/.gitkeep +0 -0
- package/project-templates/phaser/assets/images/vfx/.gitkeep +0 -0
- package/project-templates/phaser/assets/models/.gitkeep +0 -0
- package/project-templates/phaser/docs/DESIGN.md +65 -0
- package/project-templates/phaser/docs/intent-clarifications.md +58 -0
- package/project-templates/phaser/docs/pipeline-overview.md +69 -0
- package/project-templates/phaser/docs/project-state.md +211 -0
- package/project-templates/phaser/docs/scaffold-manifest.md +10 -0
- package/project-templates/phaser/docs/team/agent-conduct.md +67 -0
- package/project-templates/phaser/docs/team/agent-runtime-matrix.md +80 -0
- package/project-templates/phaser/docs/team/atom-tree-format.md +114 -0
- package/project-templates/phaser/docs/team/collaboration.md +391 -0
- package/project-templates/phaser/docs/team/core-model.md +85 -0
- package/project-templates/phaser/docs/team/game-designer-migration-todo.md +8 -0
- package/project-templates/phaser/docs/team/harness-legacy-deprecation.md +23 -0
- package/project-templates/phaser/docs/team/platform-capabilities.md +18 -0
- package/project-templates/phaser/docs/team/workflow-changelog.md +137 -0
- package/project-templates/phaser/docs/team/workflow-consistency-checklist.md +240 -0
- package/project-templates/phaser/focus-lab/.gitkeep +0 -0
- package/project-templates/phaser/game/adapters/phaser.ts +52 -0
- package/project-templates/phaser/game/config/.gitkeep +0 -0
- package/project-templates/phaser/game/config/game-config.ts +46 -0
- package/project-templates/phaser/game/contract/publish.ts +141 -0
- package/project-templates/phaser/game/contract/types.ts +34 -0
- package/project-templates/phaser/game/gameplay/.gitkeep +0 -0
- package/project-templates/phaser/game/index.ts +81 -0
- package/project-templates/phaser/game/runtime-contract.ts +28 -0
- package/project-templates/phaser/game/scenes/.gitkeep +0 -0
- package/project-templates/phaser/globals.d.ts +51 -0
- package/project-templates/phaser/index.css +34 -0
- package/project-templates/phaser/index.html +18 -0
- package/project-templates/phaser/main.ts +9 -0
- package/project-templates/phaser/package.json +79 -0
- package/project-templates/phaser/skills/README.md +52 -0
- package/project-templates/phaser/skills/_shared/agent-prep.md +136 -0
- package/project-templates/phaser/skills/_shared/requirements.txt +1 -0
- package/project-templates/phaser/skills/_shared/scripts/build-evidence-gate.mjs +87 -0
- package/project-templates/phaser/skills/_shared/scripts/context-budget.mjs +215 -0
- package/project-templates/phaser/skills/_shared/scripts/create-playable.mjs +140 -0
- package/project-templates/phaser/skills/_shared/scripts/dev-start.mjs +151 -0
- package/project-templates/phaser/skills/_shared/scripts/disclosure-config.mjs +480 -0
- package/project-templates/phaser/skills/_shared/scripts/ensure-project.mjs +532 -0
- package/project-templates/phaser/skills/_shared/scripts/gen-placeholder-audio.py +345 -0
- package/project-templates/phaser/skills/_shared/scripts/gen-placeholder.py +244 -0
- package/project-templates/phaser/skills/_shared/scripts/harness-smoke.mjs +257 -0
- package/project-templates/phaser/skills/_shared/scripts/lib/validator-artifacts.mjs +129 -0
- package/project-templates/phaser/skills/_shared/scripts/placeholder-pack-sheet.mjs +67 -0
- package/project-templates/phaser/skills/_shared/scripts/placeholder_audio_lib.py +142 -0
- package/project-templates/phaser/skills/_shared/scripts/placeholder_lib.py +993 -0
- package/project-templates/phaser/skills/_shared/scripts/render-project-state.mjs +278 -0
- package/project-templates/phaser/skills/_shared/scripts/ring-config.mjs +252 -0
- package/project-templates/phaser/skills/_shared/scripts/skills-check.mjs +176 -0
- package/project-templates/phaser/skills/_shared/scripts/slice-set.mjs +77 -0
- package/project-templates/phaser/skills/_shared/scripts/state-advance-ring.mjs +63 -0
- package/project-templates/phaser/skills/_shared/scripts/state-get.mjs +215 -0
- package/project-templates/phaser/skills/_shared/scripts/state-handoff.mjs +120 -0
- package/project-templates/phaser/skills/_shared/scripts/state-set.mjs +113 -0
- package/project-templates/phaser/skills/_shared/scripts/state-store.mjs +893 -0
- package/project-templates/phaser/skills/_shared/scripts/sync-template-skills.mjs +112 -0
- package/project-templates/phaser/skills/_shared/scripts/verify-asset-code-sync.mjs +265 -0
- package/project-templates/phaser/skills/_shared/scripts/verify-atom-conformance.mjs +181 -0
- package/project-templates/phaser/skills/_shared/scripts/verify-env.mjs +285 -0
- package/project-templates/phaser/skills/_shared/scripts/verify-placeholders.mjs +161 -0
- package/project-templates/phaser/skills/_shared/scripts/workflow-doctor.mjs +348 -0
- package/project-templates/phaser/skills/playable-animate/SKILL.md +52 -0
- package/project-templates/phaser/skills/playable-animate/agents/openai.yaml +4 -0
- package/project-templates/phaser/skills/playable-animate/references/board-refresh.md +30 -0
- package/project-templates/phaser/skills/playable-animate/references/diagnosis-checklist.md +25 -0
- package/project-templates/phaser/skills/playable-animate/references/entrance-sequencing.md +33 -0
- package/project-templates/phaser/skills/playable-animate/references/interaction-timing.md +23 -0
- package/project-templates/phaser/skills/playable-art/SKILL.md +203 -0
- package/project-templates/phaser/skills/playable-art/agents/openai.yaml +4 -0
- package/project-templates/phaser/skills/playable-art/references/alpha-postprocess.md +46 -0
- package/project-templates/phaser/skills/playable-art/references/cta-art-spec.md +59 -0
- package/project-templates/phaser/skills/playable-art/references/layout-proportions.md +30 -0
- package/project-templates/phaser/skills/playable-art/references/prompt-patterns.md +83 -0
- package/project-templates/phaser/skills/playable-art/references/reference-comparison.md +30 -0
- package/project-templates/phaser/skills/playable-art/references/sheet-import-v2.md +91 -0
- package/project-templates/phaser/skills/playable-art/scripts/build-atlas.py +332 -0
- package/project-templates/phaser/skills/playable-art/scripts/chroma-key.py +50 -0
- package/project-templates/phaser/skills/playable-art/scripts/extract-alpha-split.py +65 -0
- package/project-templates/phaser/skills/playable-art/scripts/extract-dual-bg-alpha.py +118 -0
- package/project-templates/phaser/skills/playable-art/scripts/import-gpt-art-sheets-v2.py +403 -0
- package/project-templates/phaser/skills/playable-art/scripts/import-gpt-art-sheets.py +280 -0
- package/project-templates/phaser/skills/playable-art/scripts/import-gpt-tile-sheet.py +114 -0
- package/project-templates/phaser/skills/playable-art/scripts/import_gpt_art_pipeline.py +321 -0
- package/project-templates/phaser/skills/playable-art/scripts/import_gpt_art_sheets_v2_test.py +126 -0
- package/project-templates/phaser/skills/playable-art/scripts/placeholder_common.py +98 -0
- package/project-templates/phaser/skills/playable-art/scripts/remove-bg.py +91 -0
- package/project-templates/phaser/skills/playable-art/scripts/review-processed-assets.py +468 -0
- package/project-templates/phaser/skills/playable-art/scripts/review_processed_assets_test.py +116 -0
- package/project-templates/phaser/skills/playable-art/scripts/verify-alpha-clean.py +105 -0
- package/project-templates/phaser/skills/playable-debug/SKILL.md +116 -0
- package/project-templates/phaser/skills/playable-debug/agents/openai.yaml +4 -0
- package/project-templates/phaser/skills/playable-debug/references/debug-config.md +40 -0
- package/project-templates/phaser/skills/playable-focus/SKILL.md +148 -0
- package/project-templates/phaser/skills/playable-focus/scripts/bootstrap-playground.mjs +84 -0
- package/project-templates/phaser/skills/playable-focus/scripts/extract-focus-frames.mjs +87 -0
- package/project-templates/phaser/skills/playable-focus/scripts/generate-focus-reports.mjs +121 -0
- package/project-templates/phaser/skills/playable-focus/scripts/playground.mjs +390 -0
- package/project-templates/phaser/skills/playable-focus/templates/focus-lab/frame.html +39 -0
- package/project-templates/phaser/skills/playable-focus/templates/focus-lab/harness/clean-stage.js +114 -0
- package/project-templates/phaser/skills/playable-focus/templates/focus-lab/harness/frame-lab-scene.js +94 -0
- package/project-templates/phaser/skills/playable-focus/templates/focus-lab/harness/particle-lab-scene.js +224 -0
- package/project-templates/phaser/skills/playable-focus/templates/focus-lab/model.html +16 -0
- package/project-templates/phaser/skills/playable-focus/templates/focus-lab/particle.html +38 -0
- package/project-templates/phaser/skills/playable-focus/templates/focus-lab/shatter.html +47 -0
- package/project-templates/phaser/skills/playable-fx-decompose/SKILL.md +212 -0
- package/project-templates/phaser/skills/playable-fx-decompose/examples.md +89 -0
- package/project-templates/phaser/skills/playable-fx-decompose/reference.md +201 -0
- package/project-templates/phaser/skills/playable-fx-decompose/requirements.txt +2 -0
- package/project-templates/phaser/skills/playable-fx-decompose/scripts/build-blank-tile-crack.py +192 -0
- package/project-templates/phaser/skills/playable-fx-decompose/scripts/fix-shard-debris-frames.py +60 -0
- package/project-templates/phaser/skills/playable-fx-decompose/scripts/generate-shard-debris.py +276 -0
- package/project-templates/phaser/skills/playable-fx-peak/SKILL.md +237 -0
- package/project-templates/phaser/skills/playable-fx-peak/requirements.txt +2 -0
- package/project-templates/phaser/skills/playable-fx-peak/scripts/fix-frame-edges.py +70 -0
- package/project-templates/phaser/skills/playable-fx-peak/scripts/repack-frame-sequence.py +526 -0
- package/project-templates/phaser/skills/playable-fx-peak/scripts/validate-frame-anchors.py +130 -0
- package/project-templates/phaser/skills/playable-placeholder/SKILL.md +239 -0
- package/project-templates/phaser/skills/playable-record/SKILL.md +166 -0
- package/project-templates/phaser/skills/playable-record/scripts/lib/build-artifact.mjs +92 -0
- package/project-templates/phaser/skills/playable-record/scripts/lib/dev-server.mjs +104 -0
- package/project-templates/phaser/skills/playable-record/scripts/lib/record-audio-bridge.js +141 -0
- package/project-templates/phaser/skills/playable-record/scripts/lib/slice-structure-verify.mjs +199 -0
- package/project-templates/phaser/skills/playable-record/scripts/record-playable.mjs +583 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-build.mjs +185 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-contract.mjs +261 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-firstwin.mjs +398 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-fusion.mjs +320 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-lifecycle.mjs +78 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-slice-artist.mjs +53 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-slice-ta.mjs +53 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-slice.mjs +142 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-visual-ring.mjs +250 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-visual-ring1.mjs +190 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-vlm-video.mjs +227 -0
- package/project-templates/phaser/skills/playable-validate/SKILL.md +260 -0
- package/project-templates/phaser/skills/playable-validate/references/checklist-detail.md +36 -0
- package/project-templates/phaser/skills/playable-validate/references/single-html-bundle.md +76 -0
- package/project-templates/phaser/skills/playable-validate/validation-rules.md +200 -0
- package/project-templates/phaser/skills/playable-verify-ui/SKILL.md +295 -0
- package/project-templates/phaser/skills/playable-verify-ui/examples/asset-manifest.example.json +36 -0
- package/project-templates/phaser/skills/playable-verify-ui/examples/mahjong-match.profile.yaml +334 -0
- package/project-templates/phaser/skills/playable-verify-ui/profiles/template.profile.yaml +84 -0
- package/project-templates/phaser/skills/playable-verify-ui/reference.md +165 -0
- package/project-templates/phaser/skills/playable-verify-ui/references/phaser-patterns.md +67 -0
- package/project-templates/phaser/skills/playable-verify-ui/references/scaling-decision-tree.md +51 -0
- package/project-templates/phaser/skills/playable-verify-ui/requirements.txt +7 -0
- package/project-templates/phaser/skills/playable-verify-ui/schema/asset-manifest.schema.json +68 -0
- package/project-templates/phaser/skills/playable-verify-ui/schema/playable-ui-profile.schema.json +171 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/asset_manifest.py +231 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/__init__.py +1 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/config_expr.js +218 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/node_utils.js +51 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/profile_loader.py +59 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/report.py +106 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/runtime_contract.js +116 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/measure_frame_content.py +77 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/run_all.py +265 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_asset_sizes.py +77 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_assets_present.py +62 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_atlas_budget.py +84 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_atlas_frames.py +79 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_bg_clean.py +365 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_doc_asset_sync.py +90 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_fetch_antipatterns.py +59 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_game_config_load.js +54 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_hardcoded_layout.js +64 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_layout_regions.js +110 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_profile_schema.py +37 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_ring1_visual.py +211 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_runtime_contract.js +58 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_script_load_order.js +73 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_slice_plan.py +238 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_slice_plan_test.py +125 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_text_overlap.py +333 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_tile_consistency.py +323 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_vision_evidence.py +894 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_vision_evidence_test.py +122 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_visual.py +422 -0
- package/project-templates/phaser/ta-workspace/scripts/.gitkeep +0 -0
- package/project-templates/phaser/templates/artist-log.template.md +182 -0
- package/project-templates/phaser/templates/atom-tree.template.json +133 -0
- package/project-templates/phaser/templates/design-brief.template.md +92 -0
- package/project-templates/phaser/templates/design-lens-checklist.reference.md +117 -0
- package/project-templates/phaser/templates/design-methodology.md +99 -0
- package/project-templates/phaser/templates/design.template.md +50 -0
- package/project-templates/phaser/templates/developer-log.template.md +258 -0
- package/project-templates/phaser/templates/five-axis-framework.md +194 -0
- package/project-templates/phaser/templates/gen-placeholder-audio.template.mjs +63 -0
- package/project-templates/phaser/templates/gen-placeholders.template.mjs +81 -0
- package/project-templates/phaser/templates/intent-clarifications.template.md +58 -0
- package/project-templates/phaser/templates/layout-spec.template.md +198 -0
- package/project-templates/phaser/templates/plan.template.md +80 -0
- package/project-templates/phaser/templates/project-state.template.md +136 -0
- package/project-templates/phaser/templates/review-report.template.md +275 -0
- package/project-templates/phaser/templates/style-exploration.template.md +93 -0
- package/project-templates/phaser/templates/ta-log.template.md +394 -0
- package/project-templates/phaser/tsconfig.json +20 -0
- package/project-templates/phaser/vite.config.ts +27 -0
- package/project-templates/threejs/.claude/agents/artist.md +101 -0
- package/project-templates/threejs/.claude/agents/developer.md +123 -0
- package/project-templates/threejs/.claude/agents/game-designer.md +192 -0
- package/project-templates/threejs/.claude/agents/refs/README.md +77 -0
- package/project-templates/threejs/.claude/agents/refs/artist-art-style-catalog.md +533 -0
- package/project-templates/threejs/.claude/agents/refs/artist-color-audio-recipes.md +153 -0
- package/project-templates/threejs/.claude/agents/refs/artist-deliverable-spec.md +230 -0
- package/project-templates/threejs/.claude/agents/refs/artist-dimension-axis.md +27 -0
- package/project-templates/threejs/.claude/agents/refs/artist-handoff-v2-checklist.md +76 -0
- package/project-templates/threejs/.claude/agents/refs/artist-legacy-fallback.md +14 -0
- package/project-templates/threejs/.claude/agents/refs/artist-master-composite-recipes.md +208 -0
- package/project-templates/threejs/.claude/agents/refs/artist-style-exploration-flow.md +55 -0
- package/project-templates/threejs/.claude/agents/refs/developer-dev-handoff.md +152 -0
- package/project-templates/threejs/.claude/agents/refs/developer-impl-cookbook.md +432 -0
- package/project-templates/threejs/.claude/agents/refs/developer-legacy-fallback.md +15 -0
- package/project-templates/threejs/.claude/agents/refs/developer-phase1-flow.md +404 -0
- package/project-templates/threejs/.claude/agents/refs/framework-5-component-filter.md +252 -0
- package/project-templates/threejs/.claude/agents/refs/framework-game-feel-juice.md +266 -0
- package/project-templates/threejs/.claude/agents/refs/framework-mda.md +147 -0
- package/project-templates/threejs/.claude/agents/refs/game-designer-gameplay-sufficiency.md +123 -0
- package/project-templates/threejs/.claude/agents/refs/game-designer-legacy-fallback.md +15 -0
- package/project-templates/threejs/.claude/agents/refs/game-designer-workflow-detail.md +69 -0
- package/project-templates/threejs/.claude/agents/refs/implementation-plan-guide.md +309 -0
- package/project-templates/threejs/.claude/agents/refs/reviewer-convergence-eval.md +350 -0
- package/project-templates/threejs/.claude/agents/refs/reviewer-legacy-fallback.md +14 -0
- package/project-templates/threejs/.claude/agents/refs/reviewer-six-dimension-eval.md +6 -0
- package/project-templates/threejs/.claude/agents/refs/skill-selector-guide.md +465 -0
- package/project-templates/threejs/.claude/agents/refs/skill-value-layers.md +145 -0
- package/project-templates/threejs/.claude/agents/refs/storyboard-generation-guide.md +110 -0
- package/project-templates/threejs/.claude/agents/refs/ta-3d-flip-recipe.md +88 -0
- package/project-templates/threejs/.claude/agents/refs/ta-atlas-deliverable-standard.md +67 -0
- package/project-templates/threejs/.claude/agents/refs/ta-batch-pipeline-recipes.md +120 -0
- package/project-templates/threejs/.claude/agents/refs/ta-image-generation-detail.md +300 -0
- package/project-templates/threejs/.claude/agents/refs/ta-image-ops-reference.md +495 -0
- package/project-templates/threejs/.claude/agents/refs/ta-pipeline-cookbook.md +1141 -0
- package/project-templates/threejs/.claude/agents/refs/ta-tools-reference.md +111 -0
- package/project-templates/threejs/.claude/agents/refs/ta-vfx-preset-catalog.md +365 -0
- package/project-templates/threejs/.claude/agents/refs/technical-artist-legacy-fallback.md +14 -0
- package/project-templates/threejs/.claude/agents/reviewer.md +116 -0
- package/project-templates/threejs/.claude/agents/technical-artist.md +100 -0
- package/project-templates/threejs/.claude/hooks/README.md +120 -0
- package/project-templates/threejs/.claude/hooks/asr-coverage-validate.mjs +381 -0
- package/project-templates/threejs/.claude/hooks/block-developer-preflight.mjs +185 -0
- package/project-templates/threejs/.claude/hooks/block-ring1-tasklist.mjs +95 -0
- package/project-templates/threejs/.claude/hooks/gate-dispatcher.mjs +78 -0
- package/project-templates/threejs/.claude/hooks/gate-runner.mjs +557 -0
- package/project-templates/threejs/.claude/hooks/gate.mjs +171 -0
- package/project-templates/threejs/.claude/hooks/snapshot-milestone.mjs +247 -0
- package/project-templates/threejs/.claude/hooks/user-prompt.mjs +194 -0
- package/project-templates/threejs/.claude/hooks/validate-atom-tree-selection.mjs +281 -0
- package/project-templates/threejs/.claude/hooks/validate-workflow-stop.mjs +1889 -0
- package/project-templates/threejs/.claude/settings.json +81 -0
- package/project-templates/threejs/.claude/skills/brainstorming/SKILL.md +161 -0
- package/project-templates/threejs/.claude/skills/brainstorming/scripts/frame-template.html +270 -0
- package/project-templates/threejs/.claude/skills/brainstorming/scripts/helper.js +177 -0
- package/project-templates/threejs/.claude/skills/brainstorming/scripts/server.cjs +354 -0
- package/project-templates/threejs/.claude/skills/brainstorming/scripts/start-server.sh +148 -0
- package/project-templates/threejs/.claude/skills/brainstorming/scripts/stop-server.sh +56 -0
- package/project-templates/threejs/.claude/skills/brainstorming/scripts/wait-for-selection.sh +62 -0
- package/project-templates/threejs/.claude/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
- package/project-templates/threejs/.claude/skills/brainstorming/visual-companion.md +309 -0
- package/project-templates/threejs/.claude/skills/playcraft-ad-psychology/SKILL.md +182 -0
- package/project-templates/threejs/.claude/skills/playcraft-art-style-guide/SKILL.md +123 -0
- package/project-templates/threejs/.claude/skills/playcraft-asset-state-sheet/SKILL.md +205 -0
- package/project-templates/threejs/.claude/skills/playcraft-audio-generation/SKILL.md +280 -0
- package/project-templates/threejs/.claude/skills/playcraft-batch-pipeline/SKILL.md +184 -0
- package/project-templates/threejs/.claude/skills/playcraft-build-optimizer/SKILL.md +306 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/SKILL.md +298 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/build-sprite-sheet.template.mjs +123 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/compare-style.template.mjs +254 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +324 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +97 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/gen-edit-variants.template.mjs +118 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +137 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +397 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/validate-sprite-sheet.template.mjs +296 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-ops/SKILL.md +122 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-processing/SKILL.md +219 -0
- package/project-templates/threejs/.claude/skills/playcraft-masking/SKILL.md +373 -0
- package/project-templates/threejs/.claude/skills/playcraft-playable-optimization/SKILL.md +161 -0
- package/project-templates/threejs/.claude/skills/playcraft-research/SKILL.md +215 -0
- package/project-templates/threejs/.claude/skills/playcraft-skill-recommender/SKILL.md +331 -0
- package/project-templates/threejs/.claude/skills/playcraft-sprite-generation/SKILL.md +423 -0
- package/project-templates/threejs/.claude/skills/playcraft-sprite-remix/SKILL.md +158 -0
- package/project-templates/threejs/.claude/skills/playcraft-sprite-sheet/SKILL.md +100 -0
- package/project-templates/threejs/.claude/skills/playcraft-storyboard/SKILL.md +167 -0
- package/project-templates/threejs/.claude/skills/playcraft-style-qa/SKILL.md +270 -0
- package/project-templates/threejs/.claude/skills/playcraft-text-rendering/SKILL.md +236 -0
- package/project-templates/threejs/.claude/skills/playcraft-vfx-animation/SKILL.md +130 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/SKILL.md +390 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/element-attributes.md +23 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/playwright-tests.md +39 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/request-mocking.md +87 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/running-code.md +240 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/session-management.md +226 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/spec-driven-testing.md +308 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/storage-state.md +275 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/test-generation.md +134 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/tracing.md +142 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/video-recording.md +153 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/SKILL.md +386 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/execution-breakdown.mjs +182 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/find-turns.mjs +72 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/heavy-output.mjs +121 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/resolve-session.mjs +103 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/subagent-stats.mjs +127 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/subagent-tool-timeline.mjs +106 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/time-gaps.mjs +128 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/turn-timeline.mjs +67 -0
- package/project-templates/threejs/.claude/snapshot.mjs +257 -0
- package/project-templates/threejs/.cursor/hooks.json +17 -0
- package/project-templates/threejs/.cursor/rules/playcraft-orchestrator.mdc +142 -0
- package/project-templates/threejs/.cursor/rules/playcraft-subagent-boundary.mdc +29 -0
- package/project-templates/threejs/.playcraft-engine +1 -0
- package/project-templates/threejs/CHANGELOG.md +105 -0
- package/project-templates/threejs/CLAUDE.md +84 -0
- package/project-templates/threejs/assets/audio/bgm/.gitkeep +0 -0
- package/project-templates/threejs/assets/audio/sfx/.gitkeep +0 -0
- package/project-templates/threejs/assets/bundles/.gitkeep +0 -0
- package/project-templates/threejs/assets/images/bg/.gitkeep +0 -0
- package/project-templates/threejs/assets/images/reference/.gitkeep +0 -0
- package/project-templates/threejs/assets/images/storyboard/.gitkeep +0 -0
- package/project-templates/threejs/assets/images/tiles/.gitkeep +0 -0
- package/project-templates/threejs/assets/images/ui/.gitkeep +0 -0
- package/project-templates/threejs/assets/images/vfx/.gitkeep +0 -0
- package/project-templates/threejs/assets/models/.gitkeep +0 -0
- package/project-templates/threejs/docs/DESIGN.md +65 -0
- package/project-templates/threejs/docs/intent-clarifications.md +58 -0
- package/project-templates/threejs/docs/pipeline-overview.md +69 -0
- package/project-templates/threejs/docs/project-state.md +211 -0
- package/project-templates/threejs/docs/scaffold-manifest.md +10 -0
- package/project-templates/threejs/docs/team/agent-conduct.md +67 -0
- package/project-templates/threejs/docs/team/agent-runtime-matrix.md +80 -0
- package/project-templates/threejs/docs/team/atom-tree-format.md +114 -0
- package/project-templates/threejs/docs/team/collaboration.md +391 -0
- package/project-templates/threejs/docs/team/core-model.md +85 -0
- package/project-templates/threejs/docs/team/game-designer-migration-todo.md +8 -0
- package/project-templates/threejs/docs/team/harness-legacy-deprecation.md +23 -0
- package/project-templates/threejs/docs/team/platform-capabilities.md +18 -0
- package/project-templates/threejs/docs/team/workflow-changelog.md +137 -0
- package/project-templates/threejs/docs/team/workflow-consistency-checklist.md +240 -0
- package/project-templates/threejs/focus-lab/.gitkeep +0 -0
- package/project-templates/threejs/game/config/.gitkeep +0 -0
- package/project-templates/threejs/game/config/game-config.ts +46 -0
- package/project-templates/threejs/game/contract/publish.ts +141 -0
- package/project-templates/threejs/game/contract/types.ts +34 -0
- package/project-templates/threejs/game/gameplay/.gitkeep +0 -0
- package/project-templates/threejs/game/index.ts +76 -0
- package/project-templates/threejs/game/runtime-contract.ts +15 -0
- package/project-templates/threejs/game/scenes/.gitkeep +0 -0
- package/project-templates/threejs/globals.d.ts +51 -0
- package/project-templates/threejs/index.css +34 -0
- package/project-templates/threejs/index.html +18 -0
- package/project-templates/threejs/main.ts +9 -0
- package/project-templates/threejs/package.json +79 -0
- package/project-templates/threejs/skills/README.md +52 -0
- package/project-templates/threejs/skills/_shared/agent-prep.md +136 -0
- package/project-templates/threejs/skills/_shared/requirements.txt +1 -0
- package/project-templates/threejs/skills/_shared/scripts/build-evidence-gate.mjs +87 -0
- package/project-templates/threejs/skills/_shared/scripts/context-budget.mjs +215 -0
- package/project-templates/threejs/skills/_shared/scripts/create-playable.mjs +140 -0
- package/project-templates/threejs/skills/_shared/scripts/dev-start.mjs +151 -0
- package/project-templates/threejs/skills/_shared/scripts/disclosure-config.mjs +480 -0
- package/project-templates/threejs/skills/_shared/scripts/ensure-project.mjs +532 -0
- package/project-templates/threejs/skills/_shared/scripts/gen-placeholder-audio.py +345 -0
- package/project-templates/threejs/skills/_shared/scripts/gen-placeholder.py +244 -0
- package/project-templates/threejs/skills/_shared/scripts/harness-smoke.mjs +257 -0
- package/project-templates/threejs/skills/_shared/scripts/lib/validator-artifacts.mjs +129 -0
- package/project-templates/threejs/skills/_shared/scripts/placeholder-pack-sheet.mjs +67 -0
- package/project-templates/threejs/skills/_shared/scripts/placeholder_audio_lib.py +142 -0
- package/project-templates/threejs/skills/_shared/scripts/placeholder_lib.py +993 -0
- package/project-templates/threejs/skills/_shared/scripts/render-project-state.mjs +278 -0
- package/project-templates/threejs/skills/_shared/scripts/ring-config.mjs +252 -0
- package/project-templates/threejs/skills/_shared/scripts/skills-check.mjs +176 -0
- package/project-templates/threejs/skills/_shared/scripts/slice-set.mjs +77 -0
- package/project-templates/threejs/skills/_shared/scripts/state-advance-ring.mjs +63 -0
- package/project-templates/threejs/skills/_shared/scripts/state-get.mjs +215 -0
- package/project-templates/threejs/skills/_shared/scripts/state-handoff.mjs +120 -0
- package/project-templates/threejs/skills/_shared/scripts/state-set.mjs +113 -0
- package/project-templates/threejs/skills/_shared/scripts/state-store.mjs +893 -0
- package/project-templates/threejs/skills/_shared/scripts/sync-template-skills.mjs +112 -0
- package/project-templates/threejs/skills/_shared/scripts/verify-asset-code-sync.mjs +265 -0
- package/project-templates/threejs/skills/_shared/scripts/verify-atom-conformance.mjs +181 -0
- package/project-templates/threejs/skills/_shared/scripts/verify-env.mjs +285 -0
- package/project-templates/threejs/skills/_shared/scripts/verify-placeholders.mjs +161 -0
- package/project-templates/threejs/skills/_shared/scripts/workflow-doctor.mjs +348 -0
- package/project-templates/threejs/skills/playable-animate/SKILL.md +52 -0
- package/project-templates/threejs/skills/playable-animate/agents/openai.yaml +4 -0
- package/project-templates/threejs/skills/playable-animate/references/board-refresh.md +30 -0
- package/project-templates/threejs/skills/playable-animate/references/diagnosis-checklist.md +25 -0
- package/project-templates/threejs/skills/playable-animate/references/entrance-sequencing.md +33 -0
- package/project-templates/threejs/skills/playable-animate/references/interaction-timing.md +23 -0
- package/project-templates/threejs/skills/playable-art/SKILL.md +203 -0
- package/project-templates/threejs/skills/playable-art/agents/openai.yaml +4 -0
- package/project-templates/threejs/skills/playable-art/references/alpha-postprocess.md +46 -0
- package/project-templates/threejs/skills/playable-art/references/cta-art-spec.md +59 -0
- package/project-templates/threejs/skills/playable-art/references/layout-proportions.md +30 -0
- package/project-templates/threejs/skills/playable-art/references/prompt-patterns.md +83 -0
- package/project-templates/threejs/skills/playable-art/references/reference-comparison.md +30 -0
- package/project-templates/threejs/skills/playable-art/references/sheet-import-v2.md +91 -0
- package/project-templates/threejs/skills/playable-art/scripts/build-atlas.py +332 -0
- package/project-templates/threejs/skills/playable-art/scripts/chroma-key.py +50 -0
- package/project-templates/threejs/skills/playable-art/scripts/extract-alpha-split.py +65 -0
- package/project-templates/threejs/skills/playable-art/scripts/extract-dual-bg-alpha.py +118 -0
- package/project-templates/threejs/skills/playable-art/scripts/import-gpt-art-sheets-v2.py +403 -0
- package/project-templates/threejs/skills/playable-art/scripts/import-gpt-art-sheets.py +280 -0
- package/project-templates/threejs/skills/playable-art/scripts/import-gpt-tile-sheet.py +114 -0
- package/project-templates/threejs/skills/playable-art/scripts/import_gpt_art_pipeline.py +321 -0
- package/project-templates/threejs/skills/playable-art/scripts/import_gpt_art_sheets_v2_test.py +126 -0
- package/project-templates/threejs/skills/playable-art/scripts/placeholder_common.py +98 -0
- package/project-templates/threejs/skills/playable-art/scripts/remove-bg.py +91 -0
- package/project-templates/threejs/skills/playable-art/scripts/review-processed-assets.py +468 -0
- package/project-templates/threejs/skills/playable-art/scripts/review_processed_assets_test.py +116 -0
- package/project-templates/threejs/skills/playable-art/scripts/verify-alpha-clean.py +105 -0
- package/project-templates/threejs/skills/playable-debug/SKILL.md +116 -0
- package/project-templates/threejs/skills/playable-debug/agents/openai.yaml +4 -0
- package/project-templates/threejs/skills/playable-debug/references/debug-config.md +40 -0
- package/project-templates/threejs/skills/playable-focus/SKILL.md +148 -0
- package/project-templates/threejs/skills/playable-focus/scripts/bootstrap-playground.mjs +84 -0
- package/project-templates/threejs/skills/playable-focus/scripts/extract-focus-frames.mjs +87 -0
- package/project-templates/threejs/skills/playable-focus/scripts/generate-focus-reports.mjs +121 -0
- package/project-templates/threejs/skills/playable-focus/scripts/playground.mjs +390 -0
- package/project-templates/threejs/skills/playable-focus/templates/focus-lab/frame.html +39 -0
- package/project-templates/threejs/skills/playable-focus/templates/focus-lab/harness/clean-stage.js +114 -0
- package/project-templates/threejs/skills/playable-focus/templates/focus-lab/harness/frame-lab-scene.js +94 -0
- package/project-templates/threejs/skills/playable-focus/templates/focus-lab/harness/particle-lab-scene.js +224 -0
- package/project-templates/threejs/skills/playable-focus/templates/focus-lab/model.html +16 -0
- package/project-templates/threejs/skills/playable-focus/templates/focus-lab/particle.html +38 -0
- package/project-templates/threejs/skills/playable-focus/templates/focus-lab/shatter.html +47 -0
- package/project-templates/threejs/skills/playable-fx-decompose/SKILL.md +212 -0
- package/project-templates/threejs/skills/playable-fx-decompose/examples.md +89 -0
- package/project-templates/threejs/skills/playable-fx-decompose/reference.md +201 -0
- package/project-templates/threejs/skills/playable-fx-decompose/requirements.txt +2 -0
- package/project-templates/threejs/skills/playable-fx-decompose/scripts/build-blank-tile-crack.py +192 -0
- package/project-templates/threejs/skills/playable-fx-decompose/scripts/fix-shard-debris-frames.py +60 -0
- package/project-templates/threejs/skills/playable-fx-decompose/scripts/generate-shard-debris.py +276 -0
- package/project-templates/threejs/skills/playable-fx-peak/SKILL.md +237 -0
- package/project-templates/threejs/skills/playable-fx-peak/requirements.txt +2 -0
- package/project-templates/threejs/skills/playable-fx-peak/scripts/fix-frame-edges.py +70 -0
- package/project-templates/threejs/skills/playable-fx-peak/scripts/repack-frame-sequence.py +526 -0
- package/project-templates/threejs/skills/playable-fx-peak/scripts/validate-frame-anchors.py +130 -0
- package/project-templates/threejs/skills/playable-placeholder/SKILL.md +239 -0
- package/project-templates/threejs/skills/playable-record/SKILL.md +166 -0
- package/project-templates/threejs/skills/playable-record/scripts/lib/build-artifact.mjs +92 -0
- package/project-templates/threejs/skills/playable-record/scripts/lib/dev-server.mjs +104 -0
- package/project-templates/threejs/skills/playable-record/scripts/lib/record-audio-bridge.js +141 -0
- package/project-templates/threejs/skills/playable-record/scripts/lib/slice-structure-verify.mjs +199 -0
- package/project-templates/threejs/skills/playable-record/scripts/record-playable.mjs +583 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-build.mjs +185 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-contract.mjs +261 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-firstwin.mjs +398 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-fusion.mjs +320 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-lifecycle.mjs +78 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-slice-artist.mjs +53 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-slice-ta.mjs +53 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-slice.mjs +142 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-visual-ring.mjs +250 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-visual-ring1.mjs +190 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-vlm-video.mjs +227 -0
- package/project-templates/threejs/skills/playable-validate/SKILL.md +260 -0
- package/project-templates/threejs/skills/playable-validate/references/checklist-detail.md +36 -0
- package/project-templates/threejs/skills/playable-validate/references/single-html-bundle.md +76 -0
- package/project-templates/threejs/skills/playable-validate/validation-rules.md +200 -0
- package/project-templates/threejs/skills/playable-verify-ui/SKILL.md +295 -0
- package/project-templates/threejs/skills/playable-verify-ui/examples/asset-manifest.example.json +36 -0
- package/project-templates/threejs/skills/playable-verify-ui/examples/mahjong-match.profile.yaml +334 -0
- package/project-templates/threejs/skills/playable-verify-ui/profiles/template.profile.yaml +84 -0
- package/project-templates/threejs/skills/playable-verify-ui/reference.md +165 -0
- package/project-templates/threejs/skills/playable-verify-ui/references/phaser-patterns.md +67 -0
- package/project-templates/threejs/skills/playable-verify-ui/references/scaling-decision-tree.md +51 -0
- package/project-templates/threejs/skills/playable-verify-ui/requirements.txt +7 -0
- package/project-templates/threejs/skills/playable-verify-ui/schema/asset-manifest.schema.json +68 -0
- package/project-templates/threejs/skills/playable-verify-ui/schema/playable-ui-profile.schema.json +171 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/asset_manifest.py +231 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/__init__.py +1 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/config_expr.js +218 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/node_utils.js +51 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/profile_loader.py +59 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/report.py +106 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/runtime_contract.js +116 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/measure_frame_content.py +77 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/run_all.py +265 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_asset_sizes.py +77 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_assets_present.py +62 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_atlas_budget.py +84 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_atlas_frames.py +79 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_bg_clean.py +365 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_doc_asset_sync.py +90 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_fetch_antipatterns.py +59 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_game_config_load.js +54 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_hardcoded_layout.js +64 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_layout_regions.js +110 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_profile_schema.py +37 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_ring1_visual.py +211 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_runtime_contract.js +58 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_script_load_order.js +73 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_slice_plan.py +238 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_slice_plan_test.py +125 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_text_overlap.py +333 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_tile_consistency.py +323 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_vision_evidence.py +894 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_vision_evidence_test.py +122 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_visual.py +422 -0
- package/project-templates/threejs/ta-workspace/scripts/.gitkeep +0 -0
- package/project-templates/threejs/templates/artist-log.template.md +182 -0
- package/project-templates/threejs/templates/atom-tree.template.json +133 -0
- package/project-templates/threejs/templates/design-brief.template.md +92 -0
- package/project-templates/threejs/templates/design-lens-checklist.reference.md +117 -0
- package/project-templates/threejs/templates/design-methodology.md +99 -0
- package/project-templates/threejs/templates/design.template.md +50 -0
- package/project-templates/threejs/templates/developer-log.template.md +258 -0
- package/project-templates/threejs/templates/five-axis-framework.md +194 -0
- package/project-templates/threejs/templates/gen-placeholder-audio.template.mjs +63 -0
- package/project-templates/threejs/templates/gen-placeholders.template.mjs +81 -0
- package/project-templates/threejs/templates/intent-clarifications.template.md +58 -0
- package/project-templates/threejs/templates/layout-spec.template.md +198 -0
- package/project-templates/threejs/templates/plan.template.md +80 -0
- package/project-templates/threejs/templates/project-state.template.md +136 -0
- package/project-templates/threejs/templates/review-report.template.md +275 -0
- package/project-templates/threejs/templates/style-exploration.template.md +93 -0
- package/project-templates/threejs/templates/ta-log.template.md +394 -0
- package/project-templates/threejs/tsconfig.json +20 -0
- package/project-templates/threejs/vite.config.ts +27 -0
- package/dist/atom-plan/validate-atom-plan.js +0 -298
- package/project-template/.claude/agents/designer.md +0 -124
- package/project-template/.claude/agents/pm.md +0 -166
- package/project-template/.claude/agents/refs/designer-style-exploration-flow.md +0 -67
- package/project-template/.claude/agents/refs/pm-workflow-detail.md +0 -567
- package/project-template/.claude/hooks/validate-atom-plan.mjs +0 -224
- package/project-template/.claude/skills/playcraft-workflow/SKILL.md +0 -485
- package/project-template/docs/team/atom-plan-format.md +0 -173
- package/project-template/templates/atom-plan.template.json +0 -44
- package/project-template/templates/atom-plan.template.md +0 -108
- /package/dist/{atom-plan → asr}/validate-asr-coverage.js +0 -0
- /package/{project-template → engine-packs/phaser}/game/config/.gitkeep +0 -0
- /package/{project-template → engine-packs/phaser}/game/gameplay/.gitkeep +0 -0
- /package/{project-template → engine-packs/phaser}/game/scenes/.gitkeep +0 -0
- /package/project-template/.claude/agents/refs/{designer-art-style-catalog.md → artist-art-style-catalog.md} +0 -0
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# {Game Name} — Ring 1 Core Gameplay Contract
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
Ring 1 only. This file is the single Game Designer deliverable for the first
|
|
5
|
+
ring. It defines what the player can do, why the core loop is fun, how the
|
|
6
|
+
game starts at HOOK, and how the first level is guaranteed winnable.
|
|
7
|
+
|
|
8
|
+
Do not add layout-spec, production assets, CTA (Call to Action, 行动召唤)
|
|
9
|
+
polish, ASR (Asset State Reference, 资产状态参考), full MP4 (MPEG-4 Part 14,
|
|
10
|
+
视频容器格式), or multi-level progression here. Those are disclosed by
|
|
11
|
+
state:get in later rings.
|
|
12
|
+
-->
|
|
13
|
+
|
|
14
|
+
**Date**: {YYYY-MM-DD}
|
|
15
|
+
**Engine**: {phaser / threejs / undecided}
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 1. Player Promise
|
|
20
|
+
|
|
21
|
+
{Describe the playable in 3-5 sentences from the player's point of view. Focus on what the player sees, what they can do, and the first satisfying outcome.}
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 2. Core Loop
|
|
26
|
+
|
|
27
|
+
### 2.1 One Player-Available Action Chain
|
|
28
|
+
|
|
29
|
+
> **Player sees**: {what object / board / target is visible}
|
|
30
|
+
> **Player does**: {tap / drag / aim / choose}
|
|
31
|
+
> **Game responds**: {immediate feedback and state change}
|
|
32
|
+
> **Next decision**: {what new information lets the player act again}
|
|
33
|
+
|
|
34
|
+
### 2.2 Loop Evolution
|
|
35
|
+
|
|
36
|
+
{Describe what changes after 3-5 successful actions: more confidence, combo payoff, clearer goal, or rising tension.}
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 3. Core Rules
|
|
41
|
+
|
|
42
|
+
### 3.1 Valid Actions
|
|
43
|
+
|
|
44
|
+
- {Action}: valid when {condition}; result is {state change / feedback}.
|
|
45
|
+
|
|
46
|
+
### 3.2 Invalid Actions
|
|
47
|
+
|
|
48
|
+
- {Invalid action}: game responds with {non-blocking feedback}; the first-level win path remains available.
|
|
49
|
+
|
|
50
|
+
### 3.3 Win / Lose
|
|
51
|
+
|
|
52
|
+
- **Win**: {condition}; player reaches `ENDCARD`.
|
|
53
|
+
- **Lose**: {condition, or "not present in first level"}.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 4. First-Level Win Strategy
|
|
58
|
+
|
|
59
|
+
{Explain the exact mechanism that makes the first level winnable: constrained setup, guided target, simplified rules, generous timing, or locked failure path. Do not only write "guaranteed win".}
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## 5. Ring 1 HOOK Entry
|
|
64
|
+
|
|
65
|
+
{Describe the starting HOOK state that is visible immediately when the game loads. It should be enough for `verify:lifecycle` to observe `HOOK`, then for `autoPlay()` to advance through player-reachable actions to `ENDCARD`.}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Intent Clarifications
|
|
2
|
+
|
|
3
|
+
> **Living Document**: Agent 间异步澄清的共享空间。
|
|
4
|
+
> 所有 Agent 可读;提问 Agent 和目标 Agent 可写。
|
|
5
|
+
> 不阻塞流水线 — 提问 Agent 先用合理推断继续,回答到达后评估是否调整。
|
|
6
|
+
|
|
7
|
+
## Open Questions
|
|
8
|
+
|
|
9
|
+
| # | From | To | Atom/Topic | Question | Raised At | Status |
|
|
10
|
+
| ----- | -------------- | ---------------- | -------------------- | --------------------- | -------------- | ------ |
|
|
11
|
+
| {{n}} | {{agent_name}} | {{target_agent}} | {{atom_id_or_topic}} | {{specific_question}} | {{stage_name}} | open |
|
|
12
|
+
|
|
13
|
+
<!--
|
|
14
|
+
Status values:
|
|
15
|
+
open — 等待目标 Agent 回答
|
|
16
|
+
pending — 目标 Agent 已看到,正在处理
|
|
17
|
+
answered — 目标 Agent 已回答,提问 Agent 尚未确认
|
|
18
|
+
resolved — 双方达成一致,已移入 Resolved 表
|
|
19
|
+
|
|
20
|
+
Rules:
|
|
21
|
+
- 提问必须具体,不能是"风格不对"这种模糊描述
|
|
22
|
+
- 必须引用具体文件路径或 atomId,方便目标 Agent 定位
|
|
23
|
+
- Confidence = low 的风格解读问题必须写入此表
|
|
24
|
+
- Developer 发现故事板与 layout-spec 坐标不一致时,必须向 Game Designer 提问
|
|
25
|
+
-->
|
|
26
|
+
|
|
27
|
+
## Resolved
|
|
28
|
+
|
|
29
|
+
| # | From | To | Question Summary | Answer | Resolution | Closed By |
|
|
30
|
+
| ----- | -------------- | ---------------- | -------------------- | --------------- | ----------------------- | -------------- |
|
|
31
|
+
| {{n}} | {{agent_name}} | {{target_agent}} | {{one_line_summary}} | {{answer_text}} | {{how_it_was_resolved}} | {{agent_name}} |
|
|
32
|
+
|
|
33
|
+
<!--
|
|
34
|
+
Resolution examples:
|
|
35
|
+
- "已补充到 artist-log.md Style Intent Notes"
|
|
36
|
+
- "已更新 layout-spec.md zones 坐标"
|
|
37
|
+
- "Game Designer 裁决:以故事板为准,layout-spec 将修正"
|
|
38
|
+
- "双方同意保持现状,偏差在可接受范围"
|
|
39
|
+
-->
|
|
40
|
+
|
|
41
|
+
## Metrics
|
|
42
|
+
|
|
43
|
+
| Metric | Value |
|
|
44
|
+
| ---------------------- | --------- |
|
|
45
|
+
| Total questions raised | {{count}} |
|
|
46
|
+
| Unresolved | {{count}} |
|
|
47
|
+
| By Artist | {{count}} |
|
|
48
|
+
| By TA | {{count}} |
|
|
49
|
+
| By Developer | {{count}} |
|
|
50
|
+
| By Game Designer | {{count}} |
|
|
51
|
+
| By Reviewer | {{count}} |
|
|
52
|
+
|
|
53
|
+
<!--
|
|
54
|
+
Game Designer monitors this table:
|
|
55
|
+
- If single Agent receives >3 questions → intent transmission fault, record in DAG Revisions
|
|
56
|
+
- If unresolved >3 at any time → Game Designer must intervene and assign priority
|
|
57
|
+
- If Reviewer finds unresolved questions at review stage → deduct Intent Transmission score
|
|
58
|
+
-->
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# PlayCraft Pipeline Overview (growth-rings-v1)
|
|
2
|
+
|
|
3
|
+
> **Workflow spec**: `growth-rings-v1` — supersedes waterfall stages (`pm → storyboard → development → …`).
|
|
4
|
+
|
|
5
|
+
## Slice-axis dispatch (harness v1)
|
|
6
|
+
|
|
7
|
+
When `docs/project-state.json` has an **active slice** (`sliceState.activeSliceId` ≠ `none`):
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
orchestrator → state:get dispatchPacket → invoke role(doWhat, flow, sliceId) → verify:slice → slice:set → STOP
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
- **Orchestrator** is the sole dispatcher; `state:get` `currentAction` / `recommendedNextAction` are slice-first (not "Ring N build").
|
|
14
|
+
- **Ring** = outer budget, non-regression boundary, convergence, and user Ring Gate — not subagent daily axis.
|
|
15
|
+
- **Legacy fallback**: empty slice queue → ring:loop handoff matrix below still applies.
|
|
16
|
+
|
|
17
|
+
## Growth rings
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
Ring 1 playable seed → semantic spine clarify → [temporary ref-flow + init-template + verify:contract + verify:lifecycle] → build → verify → Ring Gate
|
|
21
|
+
Ring 2 gameplay skeleton + layout intent clarify → build → verify → Ring Gate
|
|
22
|
+
Ring 3 Hook/CTA + ad wrapper + style context clarify → build → verify → Ring Gate
|
|
23
|
+
Ring 4 production assets + integration clarify → build → verify → Ring Gate → done
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Engine scaffold (ring 1 only)
|
|
27
|
+
|
|
28
|
+
| Step | Command | Owner |
|
|
29
|
+
| ----------------------- | ------------------------------------------------ | --------------------------------------------------------------------- |
|
|
30
|
+
| Atom-tree metadata | `playcraft skills init-atom-tree --intent "..."` | temporary ref-flow subagent |
|
|
31
|
+
| Engine `game/` skeleton | `playcraft remix init-template --from-atom-tree` | Orchestrator (legacy: before first `@developer` in ring 1 build loop) |
|
|
32
|
+
| Contract probe | `npm run verify:contract` | Orchestrator gate, then Developer |
|
|
33
|
+
| Lifecycle probe | `npm run verify:lifecycle` | Orchestrator gate, then Developer |
|
|
34
|
+
| Placeholder probe | `npm run verify:placeholders` | Developer |
|
|
35
|
+
|
|
36
|
+
Supported adapters (v1): **phaser**, **threejs**. Unified harness surface: **`window.__playable`**.
|
|
37
|
+
|
|
38
|
+
## Role × loop matrix
|
|
39
|
+
|
|
40
|
+
| Ring | clarify | build | verify |
|
|
41
|
+
| ---- | ------------------------------------------------------------ | ------------------------------------------ | ---------------------------------------------------------------- |
|
|
42
|
+
| 1 | Game Designer playable seed → temporary ref-flow selector | Developer (semantic placeholder spine) | script-owned `ring:gate` |
|
|
43
|
+
| 2 | Game Designer (periphery + layout intent) → ref/plan context | Developer (gameplay skeleton) | Reviewer + `verify:ui` |
|
|
44
|
+
| 3 | Game Designer Hook/CTA intent + Artist MC/ASR context | Developer (ad wrapper + style integration) | Reviewer + `playable_validate` |
|
|
45
|
+
| 4 | Spec-gap only | Artist W1 → TA W2 → Developer | Reviewer `ui_diff` + `verify:visual` + `verify:atom-conformance` |
|
|
46
|
+
|
|
47
|
+
## Objective DoD (ring:gate)
|
|
48
|
+
|
|
49
|
+
| Ring | Script verifiers | Review verifiers |
|
|
50
|
+
| ---- | ------------------------------------------------------------------------------- | -------------------------------- |
|
|
51
|
+
| 1 | `verify:contract`, `verify:lifecycle`, `verify:firstwin`, `verify:placeholders` | script-owned |
|
|
52
|
+
| 2 | Ring 1 DoD + disclosed UI / MP4 evidence gates | `gameplay_conformance` |
|
|
53
|
+
| 3 | same | + `playable_validate` (hook/CTA) |
|
|
54
|
+
| 4 | + `verify:visual`, `verify:ui:assets`, `verify:atom-conformance` | `ui_diff` evidence |
|
|
55
|
+
|
|
56
|
+
## Orchestrator decision shortcuts
|
|
57
|
+
|
|
58
|
+
1. Every turn: `npm run workflow:doctor` (optional `--strict` in CI)
|
|
59
|
+
2. Sub-agent STOP → read `contextPacket` + routing handoff → execute `next_orchestrator_action` only
|
|
60
|
+
3. **Legacy ring 1 scaffold** (when `dispatchPacket` is null): ref-flow selection + `init-template --from-atom-tree` + `verify:contract` + `verify:lifecycle` before `@developer`
|
|
61
|
+
4. Before Ring Gate: `npm run ring:gate -- --iteration N` must pass
|
|
62
|
+
5. Ring Gate pass → archive `archivedRings` + ring context snapshot, then `iteration+1`, `loop: clarify`
|
|
63
|
+
6. `done` = user accepts devUrl at ring 4 Ring Gate — not `playcraft build`
|
|
64
|
+
|
|
65
|
+
## Key docs
|
|
66
|
+
|
|
67
|
+
- [CLAUDE.md](../CLAUDE.md) — orchestration protocol
|
|
68
|
+
- [docs/team/collaboration.md](team/collaboration.md) — Ring Gate Protocol, handoff
|
|
69
|
+
- [docs/team/agent-runtime-matrix.md](team/agent-runtime-matrix.md) — fake-invoke matrix
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
# Project State
|
|
2
|
+
|
|
3
|
+
> **Agent entry**: run `npm run state:get` first. Use its summary (`iteration`, `loop`, `nextCommands`, required/deferred files). Do **not** read this entire file during Ring 1 — the handoff YAML block below is the machine source of truth.
|
|
4
|
+
|
|
5
|
+
## Workflow spec
|
|
6
|
+
|
|
7
|
+
| Field | Value |
|
|
8
|
+
| ----------------------- | --------------------------------------------------------------------- |
|
|
9
|
+
| **templateVersion** | `0.3.2-alpha.0` |
|
|
10
|
+
| **workflowSpecVersion** | `growth-rings-v1` |
|
|
11
|
+
| **Template Changelog** | [CHANGELOG.md](../CHANGELOG.md) |
|
|
12
|
+
| **Workflow Changelog** | [docs/team/workflow-changelog.md](../docs/team/workflow-changelog.md) |
|
|
13
|
+
|
|
14
|
+
## Ring Gate Scope
|
|
15
|
+
|
|
16
|
+
| Field | Value |
|
|
17
|
+
| ---------------- | --------------------------------------------------------------------------------------------------------- |
|
|
18
|
+
| ringGatePolicy | `ring gate checks objective DoD verifiers + non-regression of prior rings + user-decision readiness only` |
|
|
19
|
+
| ringGateExcludes | `subjective quality judgment, gameplay fun, final visual taste, user preference choice` |
|
|
20
|
+
|
|
21
|
+
## Settings
|
|
22
|
+
|
|
23
|
+
| Field | Value | Description |
|
|
24
|
+
| ---------------------- | ------- | -------------------------------------------------------------------------------------------- |
|
|
25
|
+
| **designerAutoDecide** | `false` | When `true`, Game Designer may self-decide simple/obvious questions without asking the user. |
|
|
26
|
+
|
|
27
|
+
<!--
|
|
28
|
+
designerAutoDecide:
|
|
29
|
+
false (default) = Designer asks the user every brainstorm question via AskUserQuestion.
|
|
30
|
+
true = Designer may auto-decide questions that have an obvious best answer based on
|
|
31
|
+
genre convention, research, or hard constraints. Auto-decisions are logged in
|
|
32
|
+
design-brief.md as [AGENT-AUTO] with reasoning. The user can override any
|
|
33
|
+
auto-decision in subsequent rounds.
|
|
34
|
+
|
|
35
|
+
Only affects brainstorm questions. Ring Gate confirmations remain orchestrator-only regardless.
|
|
36
|
+
-->
|
|
37
|
+
|
|
38
|
+
<!--
|
|
39
|
+
growth-rings-v1: Four growth rings climb the atom-tree from engine root upward.
|
|
40
|
+
Each ring runs clarify → build → verify inner loops with full role collaboration.
|
|
41
|
+
Objective DoD verifiers replace pre-development document packages.
|
|
42
|
+
-->
|
|
43
|
+
|
|
44
|
+
## User Intent
|
|
45
|
+
|
|
46
|
+
> {{user_intent — ≤2 sentences; do NOT restate Style Direction or five-axis tables from design-brief}}
|
|
47
|
+
|
|
48
|
+
## Current Iteration
|
|
49
|
+
|
|
50
|
+
> **Human-readable view.** The machine source of truth is the `## Agent handoff` YAML block below (`iteration:` + `loop:` + `ringGate:` + `ringDoD:`). `workflow-doctor` and agents read that block; keep this prose in sync for humans.
|
|
51
|
+
|
|
52
|
+
**Iteration 1** — engine-root + core gameplay (placeholder art)
|
|
53
|
+
|
|
54
|
+
`1 (engine-root → core gameplay)` → `2 (gameplay + periphery)` → `3 (playable ad hook/CTA)` → `4 (production + architecture)` → `done`
|
|
55
|
+
|
|
56
|
+
Each iteration runs inner loops: `clarify` → `build` → `verify` → **Ring Gate** (user acceptance) → next iteration.
|
|
57
|
+
|
|
58
|
+
<!-- Iteration definitions: see CLAUDE.md § Growth-Ring Model -->
|
|
59
|
+
|
|
60
|
+
## Ring DoD (current iteration)
|
|
61
|
+
|
|
62
|
+
> Objective Definition-of-Done for the **current** growth ring. Orchestrator runs `npm run ring:gate -- --iteration N` to update verifier status.
|
|
63
|
+
> **Human-readable view.** Machine source of truth is `ringDoD:` in the `## Agent handoff` YAML block.
|
|
64
|
+
|
|
65
|
+
| Check | Status | Verifier | Notes |
|
|
66
|
+
| ------------- | ------- | ----------------------------- | ------------------------------------------------------------------ |
|
|
67
|
+
| contract | pending | `npm run verify:contract` | Engine boots; neutral runtime contract wired (`window.__playable`) |
|
|
68
|
+
| lifecycle | pending | `npm run verify:lifecycle` | Ring 1: starts at HOOK and autoPlay reaches ENDCARD without MP4 |
|
|
69
|
+
| firstLevelWin | pending | `npm run verify:firstwin` | Ring 1: headless autoPlay reaches ENDCARD (first level winnable) |
|
|
70
|
+
| placeholders | pending | `npm run verify:placeholders` | Ring 1: semantic placeholder files exist for loaded asset paths |
|
|
71
|
+
|
|
72
|
+
> Future-ring DoD checks are hidden at Ring 1. Run `npm run state:get` after each loop/ring transition to see the active verifier set.
|
|
73
|
+
|
|
74
|
+
## Ring Gate
|
|
75
|
+
|
|
76
|
+
> Only the **orchestrator** runs `AskUserQuestion` toward the user. Sub-agents set `ringGate: pending` and STOP.
|
|
77
|
+
> One Ring Gate per iteration replaces the old six waterfall gates.
|
|
78
|
+
|
|
79
|
+
| Field | Value | Notes |
|
|
80
|
+
| ---------- | ---------- | --------------------------------------------------------------------------- |
|
|
81
|
+
| ringGate | pending | Orchestrator confirms after all ring DoD checks pass + user plays at devUrl |
|
|
82
|
+
| iteration | {{1..4}} | Current growth ring |
|
|
83
|
+
| canAskUser | {{yes/no}} | Set by `ring:gate` runner — only `yes` when all DoD checks pass |
|
|
84
|
+
|
|
85
|
+
## Agent handoff
|
|
86
|
+
|
|
87
|
+
> Sub-agents and orchestrator **must** read/write this block before STOP or invoke. See `docs/team/collaboration.md` § Agent Handoff.
|
|
88
|
+
> This block is the **single machine-readable source of truth** for `iteration`, `loop`, `ringGate`, and `ringDoD`.
|
|
89
|
+
|
|
90
|
+
```yaml
|
|
91
|
+
iteration: 1
|
|
92
|
+
ringGoal: engine-root + core gameplay (placeholder art)
|
|
93
|
+
loop: clarify
|
|
94
|
+
subagent: none
|
|
95
|
+
subagent_stop: false
|
|
96
|
+
waiting_for: orchestrator
|
|
97
|
+
ringGate: pending
|
|
98
|
+
ringDoD: { contract: pending, lifecycle: pending, firstLevelWin: pending, placeholders: pending }
|
|
99
|
+
archivedRings: {}
|
|
100
|
+
next_orchestrator_action: null
|
|
101
|
+
last_completed_by: null
|
|
102
|
+
block_reason: null
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Handoff Context
|
|
106
|
+
|
|
107
|
+
> Structured shared working memory. Machine source of truth is `handoffContext` in `docs/project-state.json`; agents read it through `npm run state:get -- --json contextPacket`.
|
|
108
|
+
|
|
109
|
+
| Area | Value |
|
|
110
|
+
| --------------------------- | ------------------------------------------------------ |
|
|
111
|
+
| ring.summary | Ring 1 starts as a semantic placeholder playable demo. |
|
|
112
|
+
| lastRole.role | none |
|
|
113
|
+
| lastRole.summary | No sub-agent has completed work yet. |
|
|
114
|
+
| nextRole.role | orchestrator |
|
|
115
|
+
| nextRole.mustKnow | Run state:get and follow currentAction / nextCommands. |
|
|
116
|
+
| shared.engine | unset |
|
|
117
|
+
| shared.coreAction | unset |
|
|
118
|
+
| shared.semanticPlaceholders | none |
|
|
119
|
+
| openQuestions | none |
|
|
120
|
+
|
|
121
|
+
<!--
|
|
122
|
+
Examples (copy structure on STOP — do not leave nulls):
|
|
123
|
+
|
|
124
|
+
Slice-axis Designer STOP (seed queue):
|
|
125
|
+
subagent: game-designer
|
|
126
|
+
subagent_stop: true
|
|
127
|
+
waiting_for: orchestrator
|
|
128
|
+
loop: clarify
|
|
129
|
+
next_orchestrator_action: "Invoke @developer per dispatchPacket (slice core-action-feedback-v1)"
|
|
130
|
+
last_completed_by: game-designer
|
|
131
|
+
|
|
132
|
+
Slice-axis Developer STOP (after verify:slice + slice:set verified):
|
|
133
|
+
subagent: developer
|
|
134
|
+
subagent_stop: true
|
|
135
|
+
waiting_for: orchestrator
|
|
136
|
+
loop: build
|
|
137
|
+
next_orchestrator_action: "Invoke @developer per dispatchPacket for next pending slice, or npm run ring:gate when queue drained"
|
|
138
|
+
last_completed_by: developer
|
|
139
|
+
|
|
140
|
+
Ring 1 clarify STOP (Designer — legacy, no sliceState):
|
|
141
|
+
subagent: game-designer
|
|
142
|
+
subagent_stop: true
|
|
143
|
+
waiting_for: orchestrator
|
|
144
|
+
loop: clarify
|
|
145
|
+
next_orchestrator_action: "Spawn temporary ref-flow atom-selection subagent for ring 1 atom-tree selection"
|
|
146
|
+
last_completed_by: game-designer
|
|
147
|
+
|
|
148
|
+
Ring 1 atom-tree STOP (temporary ref-flow selector):
|
|
149
|
+
subagent: skill-selector
|
|
150
|
+
subagent_stop: true
|
|
151
|
+
waiting_for: orchestrator
|
|
152
|
+
loop: clarify
|
|
153
|
+
next_orchestrator_action: "Run scaffold gate, then invoke @developer (legacy ring 1 build loop, or dispatchPacket when slice queue exists)"
|
|
154
|
+
last_completed_by: skill-selector
|
|
155
|
+
|
|
156
|
+
Ring 1 build STOP (Developer):
|
|
157
|
+
subagent: developer
|
|
158
|
+
subagent_stop: true
|
|
159
|
+
waiting_for: orchestrator
|
|
160
|
+
loop: build
|
|
161
|
+
next_orchestrator_action: "npm run ring:gate -- --iteration 1"
|
|
162
|
+
last_completed_by: developer
|
|
163
|
+
|
|
164
|
+
Ring 1 verify (orchestrator — no Reviewer invoke):
|
|
165
|
+
subagent: none
|
|
166
|
+
subagent_stop: true
|
|
167
|
+
waiting_for: orchestrator
|
|
168
|
+
loop: verify
|
|
169
|
+
next_orchestrator_action: "npm run ring:gate -- --iteration 1"
|
|
170
|
+
last_completed_by: developer
|
|
171
|
+
|
|
172
|
+
Ring 2+ verify STOP (Reviewer — after load_check pass):
|
|
173
|
+
|
|
174
|
+
Orchestrator after ring:gate pass (ringGateCanAskUser: yes):
|
|
175
|
+
subagent: none
|
|
176
|
+
subagent_stop: true
|
|
177
|
+
waiting_for: user_gate
|
|
178
|
+
loop: verify
|
|
179
|
+
next_orchestrator_action: "Run Ring Gate AskUserQuestion for iteration 1"
|
|
180
|
+
last_completed_by: orchestrator
|
|
181
|
+
|
|
182
|
+
Ring Gate pass → iteration 2:
|
|
183
|
+
iteration: 2
|
|
184
|
+
ringGoal: gameplay + periphery (HUD / flow skeleton)
|
|
185
|
+
loop: clarify
|
|
186
|
+
ringGate: pending
|
|
187
|
+
ringDoD: resolved by state:get / ring-config for the active iteration
|
|
188
|
+
archivedRings: { 1: { contract: passed, lifecycle: passed, firstLevelWin: passed } }
|
|
189
|
+
-->
|
|
190
|
+
|
|
191
|
+
<!--
|
|
192
|
+
Deferred human tables (Ring Gate Runner, Archived Rings, Dev Preview, Progress Checkpoint, …)
|
|
193
|
+
are updated by npm run state:set / ring:gate. Full field reference: docs/team/collaboration.md
|
|
194
|
+
-->
|
|
195
|
+
|
|
196
|
+
## File Index (current ring)
|
|
197
|
+
|
|
198
|
+
> Current-ring files only. Future Ring files stay hidden until `state:get` discloses them.
|
|
199
|
+
|
|
200
|
+
### Current Package (Ring 1 — engine root + core gameplay)
|
|
201
|
+
|
|
202
|
+
| File | Description | Status |
|
|
203
|
+
| ----------------------------------------- | ------------------------------------------------------- | ---------- |
|
|
204
|
+
| [DESIGN.md](docs/DESIGN.md) | Player experience contract: core loop + first-level win | {{status}} |
|
|
205
|
+
| [developer-log.md](logs/developer-log.md) | Developer work log + devUrl | {{status}} |
|
|
206
|
+
| `game/gameplay/` | PGS + state machine | {{status}} |
|
|
207
|
+
| `game/config/` | Level configuration | {{status}} |
|
|
208
|
+
| `game/scenes/` | Scene definitions | {{status}} |
|
|
209
|
+
| `game/index.html` | Entry point | {{status}} |
|
|
210
|
+
|
|
211
|
+
> Hidden until later Rings: `docs/design-brief.md`, `docs/layout-spec.md`, `docs/implementation-plan.md`, `docs/style-exploration.md`, `logs/artist-log.md`, `logs/ta-log.md`, `logs/review-report.md`, production pipeline.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Scaffold Manifest
|
|
2
|
+
|
|
3
|
+
| Field | Value |
|
|
4
|
+
| --------------- | ------------------------ |
|
|
5
|
+
| adapter | phaser |
|
|
6
|
+
| appliedAt | 2026-06-17T06:17:58.177Z |
|
|
7
|
+
| mode | bake |
|
|
8
|
+
| runtimeContract | window.\_\_playable |
|
|
9
|
+
|
|
10
|
+
Applied by `playcraft remix init-template`.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Agent Conduct — MUST / NEVER
|
|
2
|
+
|
|
3
|
+
> Single source for enforceable behavior. When this conflicts with workflow shortcuts, **this wins** (except where an agent Goals § Core responsibilities explicitly overrides for that role).
|
|
4
|
+
>
|
|
5
|
+
> Ring Gate flow: [collaboration.md § Ring Gate Protocol](collaboration.md#ring-gate-protocol-orchestrator-only). STOP fields: [§ STOP sync checklist](collaboration.md#stop-sync-checklist). Hook enforcement: `.claude/hooks/validate-workflow-stop.mjs`.
|
|
6
|
+
|
|
7
|
+
## Invoke protocol (all sub-agents)
|
|
8
|
+
|
|
9
|
+
On every invoke, in order:
|
|
10
|
+
|
|
11
|
+
1. Run `npm run state:get` → read `contextPacket` first, then the handoff summary (routing truth — not Progress Checkpoint alone). `docs/project-state.md` is a generated view; never open or hand-edit it.
|
|
12
|
+
2. Read **this role's L1 role card** in `.claude/agents/<role>.md` to understand role ownership, boundaries, and current workflow interface.
|
|
13
|
+
3. Read the specific workflow / `refs/` / SKILL documents **only when** the current task or workflow interface says so — do not load long workflow docs by default.
|
|
14
|
+
4. On STOP: complete [§ STOP sync checklist](collaboration.md#stop-sync-checklist).
|
|
15
|
+
|
|
16
|
+
## All roles (including Orchestrator)
|
|
17
|
+
|
|
18
|
+
| | Rule |
|
|
19
|
+
| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
20
|
+
| **MUST** | Run `npm run state:get` before any work (never open the generated `docs/project-state.md`); start from `contextPacket`, then follow required files |
|
|
21
|
+
| **MUST** | Append a Progress Checkpoint when finishing a major step via `npm run state:set -- --checkpoint "…" --by <role>` |
|
|
22
|
+
| **MUST** | On STOP: write `handoffContext` for the next role, then `npm run state:set -- subagent_stop=true next_orchestrator_action="…"` (context + routing required) |
|
|
23
|
+
| **MUST NOT** | Change `layout-spec.md` `assetMapping` paths after ring 4 (`assetMappingLocked: true`) without Game Designer + user-approved contract change |
|
|
24
|
+
| **MUST NOT** | Treat `playcraft build` as required for `done` — endpoint is **user acceptance at devUrl** |
|
|
25
|
+
| **MUST NOT** | Ask the **user** to run `npm run dev` (Ring Gate = open orchestrator-provided link only) |
|
|
26
|
+
|
|
27
|
+
## Orchestrator only
|
|
28
|
+
|
|
29
|
+
| | Rule |
|
|
30
|
+
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
31
|
+
| **MUST** | Be the **only** role that uses `AskUserQuestion` for **Ring Gate** confirmations (one per growth ring) |
|
|
32
|
+
| **MUST** | After any sub-agent STOP, run `npm run state:get` to read `contextPacket` and routing handoff before spawn / resume / Ring Gate |
|
|
33
|
+
| **MUST** | After any sub-agent STOP, verify: `handoffContext` complete, ring DoD evidence complete, logs filled, required preflight done |
|
|
34
|
+
| **MUST** | If `waiting_for: user_gate` and `subagent_stop: true` and `ringGateCanAskUser: yes`, run **only** Ring Gate (`AskUserQuestion`) — **do not** invoke sub-agents |
|
|
35
|
+
| **MUST** | If `subagent_stop: true` and `waiting_for: orchestrator`, execute **only** `next_orchestrator_action` |
|
|
36
|
+
| **MUST** | Before invoke: reset handoff (`subagent_stop: false`, `waiting_for: none`, set `subagent` to target role) |
|
|
37
|
+
| **MUST** | Dispatch = WHAT + skill refs + constraints only; do NOT write detailed production steps for sub-agents |
|
|
38
|
+
| **MUST** | Before Ring Gate: run `npm run ring:gate -- --iteration N` — do **not** ask user until the script returns pass |
|
|
39
|
+
| **MUST** | Before **ring 1 `loop: build`**: ensure `playcraft remix init-template --from-atom-tree` has run, `.playcraft-engine` matches `meta.engineDecision.adapter`, and `npm run verify:contract` passes |
|
|
40
|
+
| **MUST** | After ring 1 Game Designer STOP, spawn a temporary ref-flow atom-selection subagent before scaffold; do not select atoms inline as orchestrator |
|
|
41
|
+
| **MUST** | Archive Ring Gate snapshots through `ring:gate` / state helpers so the next ring inherits stable decisions, not prior-ring process noise |
|
|
42
|
+
| **MUST NOT** | Role-play all five agents in one session when sub-agent invoke is available |
|
|
43
|
+
| **MUST NOT** | Advance `iteration` without archiving prior ring in `archivedRings` (non-regression) |
|
|
44
|
+
| **MUST NOT** | Invoke `@technical-artist` before ring 4 Artist Wave 1 is `done` |
|
|
45
|
+
| **MUST NOT** | Advance `iteration` when a sub-agent could do it — **orchestrator owns** `iteration` / `loop` transitions |
|
|
46
|
+
| **MUST NOT** | Advance to next iteration if post-STOP verification fails (required package, logs/evidence, Skill Preflight) |
|
|
47
|
+
|
|
48
|
+
## Sub-agents only (Game Designer, Artist, TA, Developer, Reviewer)
|
|
49
|
+
|
|
50
|
+
| | Rule |
|
|
51
|
+
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
52
|
+
| **MUST NOT** | Use `AskUserQuestion` for Ring Gate choices or final confirmations (Ring Gates remain orchestrator-only) |
|
|
53
|
+
| **EXCEPT** | Game Designer MAY use `AskUserQuestion` for gameplay brainstorm/clarification during `loop: clarify` |
|
|
54
|
+
| **MUST** | On verify-loop completion: sync `handoffContext` verdict + `ringGate: pending` + handoff (`waiting_for: orchestrator`, `next_orchestrator_action: npm run ring:gate -- --iteration N`) → **STOP** |
|
|
55
|
+
| **MUST** | Run Spec Quick-Check within 30s: TA when starting ring 4 build; Developer when starting any `loop: build` |
|
|
56
|
+
| **MAY** | Append concise downstream notes to `atom-tree.md` when actual reading/usage differs from the initial selection |
|
|
57
|
+
| **MUST** | Check `atom-tree.json` → `mediaGroups` for reusable assets before generating from scratch (Artist/TA) |
|
|
58
|
+
| **MUST** | Complete Skill Preflight (read relevant platform Skills) before production — TA: `ta-log § Skill Preflight`; Developer: `developer-log § Skill Preflight`; Artist: `artist-log § Skill Preflight` |
|
|
59
|
+
| **MUST NOT** | Continue producing while `subagent_stop: true` and `waiting_for: orchestrator` (resume only when orchestrator clears handoff) |
|
|
60
|
+
| **MUST NOT** | Change `iteration` or `loop` (orchestrator only) |
|
|
61
|
+
| **MUST NOT** | Skip required logs (`artist-log`, `ta-log`, `developer-log`, `review-report`) |
|
|
62
|
+
| **MUST NOT** | Ignore `mediaGroups` matches and generate from scratch when a pre-matched asset exists — link/reuse first, skip only with documented reason |
|
|
63
|
+
| **MUST** | Complete [STOP sync checklist](collaboration.md#stop-sync-checklist) on every STOP, including structured `handoffContext` |
|
|
64
|
+
|
|
65
|
+
## Tool Surface Policy
|
|
66
|
+
|
|
67
|
+
Role cards should list only the tools that role actually owns. Long command catalogs belong in role refs or Skills. If a command family moves to a specialist role, remove it from upstream roles instead of duplicating it.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Agent Runtime Matrix
|
|
2
|
+
|
|
3
|
+
> **Workflow spec**: `growth-rings-v1` — four growth rings, each with inner loops `clarify → build → verify → Ring Gate`. Legacy waterfall stages (`pm`, `storyboard`, `planning`, `development`, …) are **removed**.
|
|
4
|
+
|
|
5
|
+
Fake-invoke reference: `(iteration, loop, contextPacket + handoff snapshot) → expected behavior / forbidden behavior`.
|
|
6
|
+
|
|
7
|
+
See also: [agent-conduct.md](agent-conduct.md), [collaboration.md](collaboration.md) § Agent Handoff.
|
|
8
|
+
|
|
9
|
+
## Game Designer
|
|
10
|
+
|
|
11
|
+
| iteration | loop | handoff | Expected | Forbidden |
|
|
12
|
+
| --------- | --------------------- | --------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
|
|
13
|
+
| 1 | clarify | no prior seed | design-brief discovery + DESIGN seed + seed developer slice queue in sliceState → STOP | Full layout/style/CTA/plan/atom graph in ring 1; over-questioning; reverse-engineering hooks/gates |
|
|
14
|
+
| 2 | clarify | ring 1 archived | Add gameplay periphery + layout intent context; deepen only disclosed contracts → STOP | Rewriting the seed or loading production docs |
|
|
15
|
+
| 3 | clarify | ring 2 archived | Add Hook/CTA (Call To Action, 行动号召) intent and hand off style/storyboard context | Starting production asset generation |
|
|
16
|
+
| 4 | clarify/build routing | spec gap only | Resolve contract gaps only when routed | Re-opening core gameplay without an explicit blocker |
|
|
17
|
+
| any | — | `subagent_stop: true` | Reply **Already STOPPED** | Rewrite other agents' logs |
|
|
18
|
+
|
|
19
|
+
## Temporary Ref-flow Atom Selection
|
|
20
|
+
|
|
21
|
+
| iteration | loop | handoff | Expected | Forbidden |
|
|
22
|
+
| --------- | ------- | -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- |
|
|
23
|
+
| 1 | clarify | after Game Designer | Create compact `docs/atom-tree.json`; select engine + best gameplay trunk; validate; write engine/atoms handoff context; STOP to scaffold | Asking user; editing DESIGN/game; full product tree or planning |
|
|
24
|
+
| 2+ | clarify | when explicitly sent | Deepen atom reading + implementation context from disclosed specs | Filling execution status fields or replacing runtime owner work |
|
|
25
|
+
|
|
26
|
+
## Developer
|
|
27
|
+
|
|
28
|
+
| iteration | loop | handoff | Expected | Forbidden |
|
|
29
|
+
| --------- | ------ | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
30
|
+
| any | build | contextPacket | Skills auto-linked on atom-tree save (no manual `skills link`) → fill § Skill Preflight → load `playable-placeholder` skill → Tier 1 link → Tier 2 `placeholder:gen` + `placeholder:gen-audio` → Tier 3 fallback → `verify:placeholders` pass → keep one-click clear debug button (`?debug=1`) wired → `devStatus: ready` + `devUrl?debug=1` + feature status/validation/blockers in `handoffContext` → STOP | Code-draw instead of placeholder; editing `game/**` before § Skill Preflight filled (PreToolUse gate blocks it); removing the `?debug=1` clear button; devUrl without `?debug=1`; AI art/audio; visual polish |
|
|
31
|
+
| 1 | build | seed + compact atom-tree | Engine root + semantic placeholder playable spine; run `verify:contract` + `verify:lifecycle` + `verify:firstwin` (also enforces the `?debug=1` one-click clear button) + `verify:placeholders`; minimal docs only → STOP → `ring:gate` | Require layout-spec / implementation-plan; invoke Reviewer; build full game shell |
|
|
32
|
+
| 2 | build | layout/plan disclosed | Expand complete gameplay skeleton from layout intent + implementation context | Production visual polish or ad wrapping |
|
|
33
|
+
| 3 | build | Hook/CTA disclosed | Integrate Hook/CTA and ad packaging skeleton | Bulk production assets |
|
|
34
|
+
| 4 | build | TA Wave 2 done | Wire all TA assets: `TILE_KEYS`, loaders, bg layer; `verify:asset-code-sync` → STOP → `@reviewer ui_diff` | Skip TA deliverables; invoke ui_diff before integration |
|
|
35
|
+
| any | verify | — | **Do not run** — Developer does not own verify loop | Run Reviewer modes |
|
|
36
|
+
|
|
37
|
+
## Artist
|
|
38
|
+
|
|
39
|
+
| iteration | loop | handoff | Expected | Forbidden |
|
|
40
|
+
| --------- | ------ | ----------------- | ---------------------------------------------------------------------------------------------------------------------- | --------------------- |
|
|
41
|
+
| 1–2 | build | — | No formal visual production; only placeholder-support notes when explicitly routed → STOP | ASR production |
|
|
42
|
+
| 3 | build | Hook/CTA intent | Style + MC (Master Composite, 主合成图) / ASR (Asset State Reference, 资产状态参考表) context → Skill Preflight → STOP | Production-grade PNGs |
|
|
43
|
+
| 3 | verify | ASR context | ASR coverage validation (ring 3 verify) → STOP | Modify `game/` |
|
|
44
|
+
| 4 | build | production wave 1 | Audio + digit strip + production handoff context (Wave 1) → STOP | TA bulk production |
|
|
45
|
+
|
|
46
|
+
## Technical Artist
|
|
47
|
+
|
|
48
|
+
| iteration | loop | handoff | Expected | Forbidden |
|
|
49
|
+
| --------- | ------ | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- |
|
|
50
|
+
| 4 | build | Artist Wave 1 done | Upstream Intake + Production Plan + bulk assets + production manifest / assetMapping fulfilment / compliance context → STOP → **`Invoke @developer (Ring 4 production integration)`** | Before Artist Wave 1; STOP → `@reviewer ui_diff` directly |
|
|
51
|
+
| 4 | verify | routed findings | Fix `ui_diff` routed items → STOP | Modify unrelated `game/` systems |
|
|
52
|
+
|
|
53
|
+
## Reviewer
|
|
54
|
+
|
|
55
|
+
| iteration | loop | handoff | Expected | Forbidden |
|
|
56
|
+
| --------- | ------ | ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- |
|
|
57
|
+
| any | verify | `devStatus: ready` | ring 2+: `gameplay_conformance` (fill `gameplayConformance: pass/fail` — review-backed DoD gate) + `load_check` + structured verdict context → STOP | Judge subjective fun; ring 1 verify (script-owned) |
|
|
58
|
+
| 3+ | verify | — | `playable_validate` for hook/CTA → STOP | Modify production files |
|
|
59
|
+
| 4 | verify | TA + **developer integration** done | `ui_diff`: Read screenshots + Structured Visual Rubric; `uiDiff` pass/fail → STOP | Advance `iteration`; pass on size tables only |
|
|
60
|
+
|
|
61
|
+
## Orchestrator
|
|
62
|
+
|
|
63
|
+
| handoff | Expected | Forbidden |
|
|
64
|
+
| ---------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
|
|
65
|
+
| `waiting_for: user_gate` + `subagent_stop: true` + `ringGateCanAskUser: yes` | Run **only** Ring Gate `AskUserQuestion` | Invoke sub-agent / run `ring:gate` first |
|
|
66
|
+
| `subagent_stop: true` + `waiting_for: orchestrator` | Execute **only** `next_orchestrator_action` | Skip handoff read |
|
|
67
|
+
| Before Ring Gate | `npm run ring:gate -- --iteration N` must pass | Ask user before ring:gate |
|
|
68
|
+
| Ring 1 → build | atom-selection STOP + `init-template --from-atom-tree` + `verify:contract` + `verify:lifecycle` + marker match | Invoke `@developer` early |
|
|
69
|
+
| Ring Gate pass | Archive ring in `archivedRings`, `iteration+1`, `loop: clarify` | Skip non-regression archive |
|
|
70
|
+
|
|
71
|
+
## Post-STOP verification (before iteration advance)
|
|
72
|
+
|
|
73
|
+
| 验证项 | 方法 | 失败处理 |
|
|
74
|
+
| ----------------- | ------------------------------------------------------- | ------------------- |
|
|
75
|
+
| Ring DoD complete | `npm run ring:gate -- --iteration N` exit 0 | Re-invoke agents |
|
|
76
|
+
| Non-regression | `archivedRings` contains all prior rings | Do not advance |
|
|
77
|
+
| `devStatus` ready | `devUrl` present (with `?debug=1`), `devBlockers` empty | Re-invoke developer |
|
|
78
|
+
| Handoff coherence | `next_orchestrator_action` matches iteration/loop | Re-invoke |
|
|
79
|
+
|
|
80
|
+
See [`agent-conduct.md`](agent-conduct.md) § Orchestrator only for the full MUST/NEVER list.
|