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