@playcraft/cli 0.0.44 → 0.0.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/atom-tree/build-skeleton.js +180 -0
- package/dist/atom-tree/fusion-hints.js +86 -0
- package/dist/atom-tree/selection.js +402 -0
- package/dist/commands/build-all.js +33 -5
- package/dist/commands/build.js +7 -1
- package/dist/commands/create.js +774 -50
- package/dist/commands/image.js +11 -0
- package/dist/commands/prad.js +61 -0
- package/dist/commands/remix.js +20 -0
- package/dist/commands/skills.js +961 -185
- package/dist/commands/tools-detect.js +56 -0
- package/dist/commands/tools-generation.js +21 -0
- package/dist/commands/tools-video-review.js +100 -0
- package/dist/commands/tools.js +4 -0
- package/dist/index.js +2 -0
- package/dist/prad/atom-ref.js +23 -0
- package/dist/prad/check.js +377 -0
- package/dist/prad/check.test.js +49 -0
- package/dist/prad/explain.js +109 -0
- package/dist/prad/load-spec.js +23 -0
- package/dist/prad/paths.js +83 -0
- package/dist/prad/skills-index.js +60 -0
- package/dist/remix/init-template.js +80 -0
- package/dist/scaffold/compose.js +211 -0
- package/engine-packs/phaser/game/adapters/phaser.ts +52 -0
- package/engine-packs/phaser/game/config/game-config.ts +46 -0
- package/engine-packs/phaser/game/contract/publish.ts +141 -0
- package/engine-packs/phaser/game/contract/types.ts +34 -0
- package/engine-packs/phaser/game/index.ts +81 -0
- package/engine-packs/phaser/game/runtime-contract.ts +28 -0
- package/engine-packs/phaser/manifest.json +1 -0
- package/engine-packs/phaser/package.deps.json +1 -0
- package/engine-packs/threejs/game/config/.gitkeep +0 -0
- package/engine-packs/threejs/game/config/game-config.ts +46 -0
- package/engine-packs/threejs/game/contract/publish.ts +141 -0
- package/engine-packs/threejs/game/contract/types.ts +34 -0
- package/engine-packs/threejs/game/gameplay/.gitkeep +0 -0
- package/engine-packs/threejs/game/index.ts +76 -0
- package/engine-packs/threejs/game/runtime-contract.ts +15 -0
- package/engine-packs/threejs/game/scenes/.gitkeep +0 -0
- package/engine-packs/threejs/manifest.json +1 -0
- package/engine-packs/threejs/package.deps.json +8 -0
- package/package.json +18 -4
- package/project-template/.claude/agents/artist.md +101 -0
- package/project-template/.claude/agents/developer.md +90 -93
- package/project-template/.claude/agents/game-designer.md +192 -0
- package/project-template/.claude/agents/refs/README.md +57 -51
- package/project-template/.claude/agents/refs/{designer-color-audio-recipes.md → artist-color-audio-recipes.md} +2 -2
- package/project-template/.claude/agents/refs/{designer-deliverable-spec.md → artist-deliverable-spec.md} +57 -57
- package/project-template/.claude/agents/refs/{designer-dimension-axis.md → artist-dimension-axis.md} +5 -5
- package/project-template/.claude/agents/refs/{designer-handoff-v2-checklist.md → artist-handoff-v2-checklist.md} +15 -15
- package/project-template/.claude/agents/refs/artist-legacy-fallback.md +14 -0
- package/project-template/.claude/agents/refs/{designer-master-composite-recipes.md → artist-master-composite-recipes.md} +3 -3
- package/project-template/.claude/agents/refs/artist-style-exploration-flow.md +55 -0
- package/project-template/.claude/agents/refs/developer-dev-handoff.md +83 -40
- package/project-template/.claude/agents/refs/developer-impl-cookbook.md +365 -67
- package/project-template/.claude/agents/refs/developer-legacy-fallback.md +15 -0
- package/project-template/.claude/agents/refs/developer-phase1-flow.md +131 -85
- package/project-template/.claude/agents/refs/framework-5-component-filter.md +252 -0
- package/project-template/.claude/agents/refs/framework-game-feel-juice.md +266 -0
- package/project-template/.claude/agents/refs/framework-mda.md +147 -0
- package/project-template/.claude/agents/refs/game-designer-gameplay-sufficiency.md +123 -0
- package/project-template/.claude/agents/refs/game-designer-legacy-fallback.md +15 -0
- package/project-template/.claude/agents/refs/game-designer-workflow-detail.md +69 -0
- package/project-template/.claude/agents/refs/implementation-plan-guide.md +316 -0
- package/project-template/.claude/agents/refs/reviewer-convergence-eval.md +247 -33
- package/project-template/.claude/agents/refs/reviewer-legacy-fallback.md +14 -0
- package/project-template/.claude/agents/refs/skill-selector-guide.md +465 -0
- package/project-template/.claude/agents/refs/skill-value-layers.md +145 -0
- package/project-template/.claude/agents/refs/storyboard-generation-guide.md +110 -0
- package/project-template/.claude/agents/refs/ta-atlas-deliverable-standard.md +4 -4
- package/project-template/.claude/agents/refs/ta-pipeline-cookbook.md +101 -104
- package/project-template/.claude/agents/refs/technical-artist-legacy-fallback.md +14 -0
- package/project-template/.claude/agents/reviewer.md +81 -95
- package/project-template/.claude/agents/technical-artist.md +71 -95
- package/project-template/.claude/hooks/README.md +83 -35
- package/project-template/.claude/hooks/asr-coverage-validate.mjs +19 -19
- package/project-template/.claude/hooks/block-developer-preflight.mjs +185 -0
- package/project-template/.claude/hooks/block-ring1-tasklist.mjs +95 -0
- package/project-template/.claude/hooks/gate-dispatcher.mjs +78 -0
- package/project-template/.claude/hooks/gate-runner.mjs +557 -0
- package/project-template/.claude/hooks/gate.mjs +170 -0
- package/project-template/.claude/hooks/snapshot-milestone.mjs +246 -0
- package/project-template/.claude/hooks/user-prompt.mjs +193 -0
- package/project-template/.claude/hooks/validate-atom-tree-selection.mjs +281 -0
- package/project-template/.claude/hooks/validate-workflow-stop.mjs +1535 -95
- package/project-template/.claude/settings.json +54 -9
- package/project-template/.claude/skills/brainstorming/SKILL.md +161 -0
- package/project-template/.claude/skills/brainstorming/scripts/frame-template.html +270 -0
- package/project-template/.claude/skills/brainstorming/scripts/helper.js +177 -0
- package/project-template/.claude/skills/brainstorming/scripts/server.cjs +354 -0
- package/project-template/.claude/skills/brainstorming/scripts/start-server.sh +148 -0
- package/project-template/.claude/skills/brainstorming/scripts/stop-server.sh +56 -0
- package/project-template/.claude/skills/brainstorming/scripts/wait-for-selection.sh +62 -0
- package/project-template/.claude/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
- package/project-template/.claude/skills/brainstorming/visual-companion.md +309 -0
- package/project-template/.claude/skills/playcraft-ad-psychology/SKILL.md +3 -3
- package/project-template/.claude/skills/playcraft-art-style-guide/SKILL.md +3 -3
- package/project-template/.claude/skills/playcraft-asset-state-sheet/SKILL.md +35 -25
- package/project-template/.claude/skills/playcraft-audio-generation/SKILL.md +15 -15
- package/project-template/.claude/skills/playcraft-build-optimizer/SKILL.md +5 -5
- package/project-template/.claude/skills/playcraft-image-generation/SKILL.md +5 -5
- package/project-template/.claude/skills/playcraft-image-generation/reference/compare-style.template.mjs +5 -5
- package/project-template/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +116 -27
- package/project-template/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +1 -1
- package/project-template/.claude/skills/playcraft-image-processing/SKILL.md +219 -0
- package/project-template/.claude/skills/playcraft-playable-optimization/SKILL.md +161 -0
- package/project-template/.claude/skills/playcraft-research/SKILL.md +24 -21
- package/project-template/.claude/skills/playcraft-skill-recommender/SKILL.md +331 -0
- package/project-template/.claude/skills/playcraft-sprite-generation/SKILL.md +48 -48
- package/project-template/.claude/skills/playcraft-sprite-remix/SKILL.md +158 -0
- package/project-template/.claude/skills/playcraft-sprite-sheet/SKILL.md +100 -0
- package/project-template/.claude/skills/playcraft-storyboard/SKILL.md +4 -4
- package/project-template/.claude/skills/playcraft-style-qa/SKILL.md +45 -45
- package/project-template/.claude/skills/playcraft-text-rendering/SKILL.md +27 -27
- package/project-template/.claude/skills/session-analyzer/SKILL.md +386 -0
- package/project-template/.claude/skills/session-analyzer/scripts/execution-breakdown.mjs +182 -0
- package/project-template/.claude/skills/session-analyzer/scripts/find-turns.mjs +72 -0
- package/project-template/.claude/skills/session-analyzer/scripts/heavy-output.mjs +121 -0
- package/project-template/.claude/skills/session-analyzer/scripts/resolve-session.mjs +103 -0
- package/project-template/.claude/skills/session-analyzer/scripts/subagent-stats.mjs +127 -0
- package/project-template/.claude/skills/session-analyzer/scripts/subagent-tool-timeline.mjs +106 -0
- package/project-template/.claude/skills/session-analyzer/scripts/time-gaps.mjs +128 -0
- package/project-template/.claude/skills/session-analyzer/scripts/turn-timeline.mjs +67 -0
- package/project-template/.claude/snapshot.mjs +350 -0
- package/project-template/.codebuddy/settings.json +53 -0
- package/project-template/.cursor/hooks.json +1 -1
- package/project-template/.cursor/rules/playcraft-orchestrator.mdc +91 -86
- package/project-template/.cursor/rules/playcraft-subagent-boundary.mdc +16 -5
- package/project-template/CHANGELOG.md +105 -0
- package/project-template/CLAUDE.md +58 -254
- package/project-template/docs/DESIGN.md +65 -0
- package/project-template/docs/intent-clarifications.md +58 -0
- package/project-template/docs/pipeline-overview.md +69 -0
- package/project-template/docs/project-state.md +211 -0
- package/project-template/docs/team/agent-conduct.md +51 -105
- package/project-template/docs/team/agent-runtime-matrix.md +60 -74
- package/project-template/docs/team/atom-tree-format.md +169 -0
- package/project-template/docs/team/collaboration.md +319 -225
- package/project-template/docs/team/core-model.md +80 -46
- package/project-template/docs/team/game-designer-migration-todo.md +8 -0
- package/project-template/docs/team/harness-legacy-deprecation.md +23 -0
- package/project-template/docs/team/platform-capabilities.md +16 -13
- package/project-template/docs/team/workflow-changelog.md +95 -23
- package/project-template/docs/team/workflow-consistency-checklist.md +93 -45
- package/project-template/focus-lab/.gitkeep +0 -0
- package/project-template/game/.playcraft-scaffold-pending +0 -0
- package/project-template/game/index.ts +18 -0
- package/project-template/globals.d.ts +51 -0
- package/project-template/index.css +34 -0
- package/project-template/index.html +18 -0
- package/project-template/main.ts +9 -0
- package/project-template/package.json +79 -0
- package/project-template/skills/README.md +52 -0
- package/project-template/skills/_shared/agent-prep.md +136 -0
- package/project-template/skills/_shared/requirements.txt +1 -0
- package/project-template/skills/_shared/scripts/__pycache__/placeholder_audio_lib.cpython-311.pyc +0 -0
- package/project-template/skills/_shared/scripts/__pycache__/placeholder_lib.cpython-311.pyc +0 -0
- package/project-template/skills/_shared/scripts/build-evidence-gate.mjs +87 -0
- package/project-template/skills/_shared/scripts/context-budget.mjs +215 -0
- package/project-template/skills/_shared/scripts/create-playable.mjs +140 -0
- package/project-template/skills/_shared/scripts/dev-start.mjs +151 -0
- package/project-template/skills/_shared/scripts/disclosure-config.mjs +480 -0
- package/project-template/skills/_shared/scripts/ensure-project.mjs +532 -0
- package/project-template/skills/_shared/scripts/gen-placeholder-audio.py +345 -0
- package/project-template/skills/_shared/scripts/gen-placeholder.py +244 -0
- package/project-template/skills/_shared/scripts/harness-smoke.mjs +257 -0
- package/project-template/skills/_shared/scripts/lib/validator-artifacts.mjs +129 -0
- package/project-template/skills/_shared/scripts/placeholder-pack-sheet.mjs +67 -0
- package/project-template/skills/_shared/scripts/placeholder_audio_lib.py +142 -0
- package/project-template/skills/_shared/scripts/placeholder_lib.py +993 -0
- package/project-template/skills/_shared/scripts/render-project-state.mjs +278 -0
- package/project-template/skills/_shared/scripts/ring-config.mjs +252 -0
- package/project-template/skills/_shared/scripts/skills-check.mjs +176 -0
- package/project-template/skills/_shared/scripts/slice-set.mjs +77 -0
- package/project-template/skills/_shared/scripts/state-advance-ring.mjs +63 -0
- package/project-template/skills/_shared/scripts/state-get.mjs +215 -0
- package/project-template/skills/_shared/scripts/state-handoff.mjs +120 -0
- package/project-template/skills/_shared/scripts/state-set.mjs +113 -0
- package/project-template/skills/_shared/scripts/state-store.mjs +893 -0
- package/project-template/skills/_shared/scripts/sync-template-skills.mjs +112 -0
- package/project-template/skills/_shared/scripts/verify-asset-code-sync.mjs +265 -0
- package/project-template/skills/_shared/scripts/verify-atom-conformance.mjs +181 -0
- package/project-template/skills/_shared/scripts/verify-env.mjs +285 -0
- package/project-template/skills/_shared/scripts/verify-placeholders.mjs +161 -0
- package/project-template/skills/_shared/scripts/workflow-doctor.mjs +348 -0
- package/project-template/skills/playable-animate/SKILL.md +52 -0
- package/project-template/skills/playable-animate/agents/openai.yaml +4 -0
- package/project-template/skills/playable-animate/references/board-refresh.md +30 -0
- package/project-template/skills/playable-animate/references/diagnosis-checklist.md +25 -0
- package/project-template/skills/playable-animate/references/entrance-sequencing.md +33 -0
- package/project-template/skills/playable-animate/references/interaction-timing.md +23 -0
- package/project-template/skills/playable-art/SKILL.md +203 -0
- package/project-template/skills/playable-art/agents/openai.yaml +4 -0
- package/project-template/skills/playable-art/references/alpha-postprocess.md +46 -0
- package/project-template/skills/playable-art/references/cta-art-spec.md +59 -0
- package/project-template/skills/playable-art/references/layout-proportions.md +30 -0
- package/project-template/skills/playable-art/references/prompt-patterns.md +83 -0
- package/project-template/skills/playable-art/references/reference-comparison.md +30 -0
- package/project-template/skills/playable-art/references/sheet-import-v2.md +91 -0
- package/project-template/skills/playable-art/scripts/__pycache__/import-gpt-art-sheets-v2.cpython-311.pyc +0 -0
- package/project-template/skills/playable-art/scripts/__pycache__/import_gpt_art_pipeline.cpython-311.pyc +0 -0
- package/project-template/skills/playable-art/scripts/__pycache__/review-processed-assets.cpython-311.pyc +0 -0
- package/project-template/skills/playable-art/scripts/build-atlas.py +332 -0
- package/project-template/skills/playable-art/scripts/chroma-key.py +50 -0
- package/project-template/skills/playable-art/scripts/extract-alpha-split.py +65 -0
- package/project-template/skills/playable-art/scripts/extract-dual-bg-alpha.py +118 -0
- package/project-template/skills/playable-art/scripts/import-gpt-art-sheets-v2.py +403 -0
- package/project-template/skills/playable-art/scripts/import-gpt-art-sheets.py +280 -0
- package/project-template/skills/playable-art/scripts/import-gpt-tile-sheet.py +114 -0
- package/project-template/skills/playable-art/scripts/import_gpt_art_pipeline.py +321 -0
- package/project-template/skills/playable-art/scripts/import_gpt_art_sheets_v2_test.py +126 -0
- package/project-template/skills/playable-art/scripts/placeholder_common.py +98 -0
- package/project-template/skills/playable-art/scripts/remove-bg.py +91 -0
- package/project-template/skills/playable-art/scripts/review-processed-assets.py +468 -0
- package/project-template/skills/playable-art/scripts/review_processed_assets_test.py +116 -0
- package/project-template/skills/playable-art/scripts/verify-alpha-clean.py +105 -0
- package/project-template/skills/playable-debug/SKILL.md +116 -0
- package/project-template/skills/playable-debug/agents/openai.yaml +4 -0
- package/project-template/skills/playable-debug/references/debug-config.md +40 -0
- package/project-template/skills/playable-focus/SKILL.md +148 -0
- package/project-template/skills/playable-focus/scripts/bootstrap-playground.mjs +84 -0
- package/project-template/skills/playable-focus/scripts/extract-focus-frames.mjs +87 -0
- package/project-template/skills/playable-focus/scripts/generate-focus-reports.mjs +121 -0
- package/project-template/skills/playable-focus/scripts/playground.mjs +390 -0
- package/project-template/skills/playable-focus/templates/focus-lab/frame.html +39 -0
- package/project-template/skills/playable-focus/templates/focus-lab/harness/clean-stage.js +114 -0
- package/project-template/skills/playable-focus/templates/focus-lab/harness/frame-lab-scene.js +94 -0
- package/project-template/skills/playable-focus/templates/focus-lab/harness/particle-lab-scene.js +224 -0
- package/project-template/skills/playable-focus/templates/focus-lab/model.html +16 -0
- package/project-template/skills/playable-focus/templates/focus-lab/particle.html +38 -0
- package/project-template/skills/playable-focus/templates/focus-lab/shatter.html +47 -0
- package/project-template/skills/playable-focus/templates/playground/registry.template.json +55 -0
- package/project-template/skills/playable-focus/templates/playground/vfx-catalog.template.json +280 -0
- package/project-template/skills/playable-fx-decompose/SKILL.md +212 -0
- package/project-template/skills/playable-fx-decompose/examples.md +89 -0
- package/project-template/skills/playable-fx-decompose/reference.md +201 -0
- package/project-template/skills/playable-fx-decompose/requirements.txt +2 -0
- package/project-template/skills/playable-fx-decompose/scripts/build-blank-tile-crack.py +192 -0
- package/project-template/skills/playable-fx-decompose/scripts/fix-shard-debris-frames.py +60 -0
- package/project-template/skills/playable-fx-decompose/scripts/generate-shard-debris.py +276 -0
- package/project-template/skills/playable-fx-peak/SKILL.md +237 -0
- package/project-template/skills/playable-fx-peak/requirements.txt +2 -0
- package/project-template/skills/playable-fx-peak/scripts/fix-frame-edges.py +70 -0
- package/project-template/skills/playable-fx-peak/scripts/repack-frame-sequence.py +526 -0
- package/project-template/skills/playable-fx-peak/scripts/validate-frame-anchors.py +130 -0
- package/project-template/skills/playable-placeholder/SKILL.md +239 -0
- package/project-template/skills/playable-record/SKILL.md +166 -0
- package/project-template/skills/playable-record/scripts/lib/build-artifact.mjs +92 -0
- package/project-template/skills/playable-record/scripts/lib/dev-server.mjs +104 -0
- package/project-template/skills/playable-record/scripts/lib/record-audio-bridge.js +141 -0
- package/project-template/skills/playable-record/scripts/lib/slice-structure-verify.mjs +199 -0
- package/project-template/skills/playable-record/scripts/record-playable.mjs +583 -0
- package/project-template/skills/playable-record/scripts/verify-build.mjs +185 -0
- package/project-template/skills/playable-record/scripts/verify-contract.mjs +261 -0
- package/project-template/skills/playable-record/scripts/verify-firstwin.mjs +398 -0
- package/project-template/skills/playable-record/scripts/verify-fusion.mjs +320 -0
- package/project-template/skills/playable-record/scripts/verify-lifecycle.mjs +78 -0
- package/project-template/skills/playable-record/scripts/verify-slice-artist.mjs +53 -0
- package/project-template/skills/playable-record/scripts/verify-slice-ta.mjs +53 -0
- package/project-template/skills/playable-record/scripts/verify-slice.mjs +142 -0
- package/project-template/skills/playable-record/scripts/verify-visual-ring.mjs +250 -0
- package/project-template/skills/playable-record/scripts/verify-visual-ring1.mjs +190 -0
- package/project-template/skills/playable-record/scripts/verify-vlm-video.mjs +227 -0
- package/project-template/skills/playable-validate/SKILL.md +260 -0
- package/project-template/skills/playable-validate/references/checklist-detail.md +36 -0
- package/project-template/skills/playable-validate/references/single-html-bundle.md +76 -0
- package/project-template/skills/playable-validate/validation-rules.md +200 -0
- package/project-template/skills/playable-verify-ui/SKILL.md +295 -0
- package/project-template/skills/playable-verify-ui/examples/asset-manifest.example.json +36 -0
- package/project-template/skills/playable-verify-ui/examples/mahjong-match.profile.yaml +334 -0
- package/project-template/skills/playable-verify-ui/profiles/template.profile.yaml +84 -0
- package/project-template/skills/playable-verify-ui/reference.md +165 -0
- package/project-template/skills/playable-verify-ui/references/phaser-patterns.md +67 -0
- package/project-template/skills/playable-verify-ui/references/scaling-decision-tree.md +51 -0
- package/project-template/skills/playable-verify-ui/requirements.txt +7 -0
- package/project-template/skills/playable-verify-ui/schema/asset-manifest.schema.json +68 -0
- package/project-template/skills/playable-verify-ui/schema/playable-ui-profile.schema.json +171 -0
- package/project-template/skills/playable-verify-ui/scripts/__pycache__/asset_manifest.cpython-311.pyc +0 -0
- package/project-template/skills/playable-verify-ui/scripts/__pycache__/verify_slice_plan.cpython-311.pyc +0 -0
- package/project-template/skills/playable-verify-ui/scripts/__pycache__/verify_vision_evidence.cpython-311.pyc +0 -0
- package/project-template/skills/playable-verify-ui/scripts/asset_manifest.py +231 -0
- package/project-template/skills/playable-verify-ui/scripts/lib/__init__.py +1 -0
- package/project-template/skills/playable-verify-ui/scripts/lib/config_expr.js +218 -0
- package/project-template/skills/playable-verify-ui/scripts/lib/node_utils.js +51 -0
- package/project-template/skills/playable-verify-ui/scripts/lib/profile_loader.py +59 -0
- package/project-template/skills/playable-verify-ui/scripts/lib/report.py +106 -0
- package/project-template/skills/playable-verify-ui/scripts/lib/runtime_contract.js +116 -0
- package/project-template/skills/playable-verify-ui/scripts/measure_frame_content.py +77 -0
- package/project-template/skills/playable-verify-ui/scripts/run_all.py +265 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_asset_sizes.py +77 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_assets_present.py +62 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_atlas_budget.py +84 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_atlas_frames.py +79 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_bg_clean.py +365 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_doc_asset_sync.py +90 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_fetch_antipatterns.py +59 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_game_config_load.js +54 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_hardcoded_layout.js +64 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_layout_regions.js +110 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_profile_schema.py +37 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_ring1_visual.py +211 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_runtime_contract.js +58 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_script_load_order.js +73 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_slice_plan.py +238 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_slice_plan_test.py +125 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_text_overlap.py +333 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_tile_consistency.py +323 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_vision_evidence.py +894 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_vision_evidence_test.py +122 -0
- package/project-template/skills/playable-verify-ui/scripts/verify_visual.py +422 -0
- package/project-template/templates/{designer-log.template.md → artist-log.template.md} +26 -31
- package/project-template/templates/atom-tree.template.json +133 -0
- package/project-template/templates/design-brief.template.md +59 -162
- package/project-template/templates/design-lens-checklist.reference.md +14 -14
- package/project-template/templates/design-methodology.md +25 -25
- package/project-template/templates/design.template.md +50 -0
- package/project-template/templates/developer-log.template.md +187 -63
- package/project-template/templates/five-axis-framework.md +89 -44
- package/project-template/templates/gen-placeholder-audio.template.mjs +63 -0
- package/project-template/templates/gen-placeholders.template.mjs +81 -0
- package/project-template/templates/intent-clarifications.template.md +7 -7
- package/project-template/templates/layout-spec.template.md +32 -20
- package/project-template/templates/plan.template.md +80 -0
- package/project-template/templates/project-state.template.md +90 -191
- package/project-template/templates/review-report.template.md +208 -24
- package/project-template/templates/style-exploration.template.md +8 -8
- package/project-template/templates/ta-log.template.md +58 -35
- package/project-template/tsconfig.json +20 -0
- package/project-template/vite.config.ts +27 -0
- package/project-templates/phaser/.claude/agents/artist.md +101 -0
- package/project-templates/phaser/.claude/agents/developer.md +123 -0
- package/project-templates/phaser/.claude/agents/game-designer.md +192 -0
- package/project-templates/phaser/.claude/agents/refs/README.md +77 -0
- package/project-templates/phaser/.claude/agents/refs/artist-art-style-catalog.md +533 -0
- package/project-templates/phaser/.claude/agents/refs/artist-color-audio-recipes.md +153 -0
- package/project-templates/phaser/.claude/agents/refs/artist-deliverable-spec.md +230 -0
- package/project-templates/phaser/.claude/agents/refs/artist-dimension-axis.md +27 -0
- package/project-templates/phaser/.claude/agents/refs/artist-handoff-v2-checklist.md +76 -0
- package/project-templates/phaser/.claude/agents/refs/artist-legacy-fallback.md +14 -0
- package/project-templates/phaser/.claude/agents/refs/artist-master-composite-recipes.md +208 -0
- package/project-templates/phaser/.claude/agents/refs/artist-style-exploration-flow.md +55 -0
- package/project-templates/phaser/.claude/agents/refs/developer-dev-handoff.md +152 -0
- package/project-templates/phaser/.claude/agents/refs/developer-impl-cookbook.md +432 -0
- package/project-templates/phaser/.claude/agents/refs/developer-legacy-fallback.md +15 -0
- package/project-templates/phaser/.claude/agents/refs/developer-phase1-flow.md +404 -0
- package/project-templates/phaser/.claude/agents/refs/framework-5-component-filter.md +252 -0
- package/project-templates/phaser/.claude/agents/refs/framework-game-feel-juice.md +266 -0
- package/project-templates/phaser/.claude/agents/refs/framework-mda.md +147 -0
- package/project-templates/phaser/.claude/agents/refs/game-designer-gameplay-sufficiency.md +123 -0
- package/project-templates/phaser/.claude/agents/refs/game-designer-legacy-fallback.md +15 -0
- package/project-templates/phaser/.claude/agents/refs/game-designer-workflow-detail.md +69 -0
- package/project-templates/phaser/.claude/agents/refs/implementation-plan-guide.md +309 -0
- package/project-templates/phaser/.claude/agents/refs/reviewer-convergence-eval.md +350 -0
- package/project-templates/phaser/.claude/agents/refs/reviewer-legacy-fallback.md +14 -0
- package/project-templates/phaser/.claude/agents/refs/reviewer-six-dimension-eval.md +6 -0
- package/project-templates/phaser/.claude/agents/refs/skill-selector-guide.md +465 -0
- package/project-templates/phaser/.claude/agents/refs/skill-value-layers.md +145 -0
- package/project-templates/phaser/.claude/agents/refs/storyboard-generation-guide.md +110 -0
- package/project-templates/phaser/.claude/agents/refs/ta-3d-flip-recipe.md +88 -0
- package/project-templates/phaser/.claude/agents/refs/ta-atlas-deliverable-standard.md +67 -0
- package/project-templates/phaser/.claude/agents/refs/ta-batch-pipeline-recipes.md +120 -0
- package/project-templates/phaser/.claude/agents/refs/ta-image-generation-detail.md +300 -0
- package/project-templates/phaser/.claude/agents/refs/ta-image-ops-reference.md +495 -0
- package/project-templates/phaser/.claude/agents/refs/ta-pipeline-cookbook.md +1141 -0
- package/project-templates/phaser/.claude/agents/refs/ta-tools-reference.md +111 -0
- package/project-templates/phaser/.claude/agents/refs/ta-vfx-preset-catalog.md +365 -0
- package/project-templates/phaser/.claude/agents/refs/technical-artist-legacy-fallback.md +14 -0
- package/project-templates/phaser/.claude/agents/reviewer.md +116 -0
- package/project-templates/phaser/.claude/agents/technical-artist.md +100 -0
- package/project-templates/phaser/.claude/hooks/README.md +120 -0
- package/project-templates/phaser/.claude/hooks/asr-coverage-validate.mjs +381 -0
- package/project-templates/phaser/.claude/hooks/block-developer-preflight.mjs +185 -0
- package/project-templates/phaser/.claude/hooks/block-ring1-tasklist.mjs +95 -0
- package/project-templates/phaser/.claude/hooks/gate-dispatcher.mjs +78 -0
- package/project-templates/phaser/.claude/hooks/gate-runner.mjs +557 -0
- package/project-templates/phaser/.claude/hooks/gate.mjs +171 -0
- package/project-templates/phaser/.claude/hooks/snapshot-milestone.mjs +247 -0
- package/project-templates/phaser/.claude/hooks/user-prompt.mjs +194 -0
- package/project-templates/phaser/.claude/hooks/validate-atom-tree-selection.mjs +281 -0
- package/project-templates/phaser/.claude/hooks/validate-workflow-stop.mjs +1889 -0
- package/project-templates/phaser/.claude/settings.json +81 -0
- package/project-templates/phaser/.claude/skills/brainstorming/SKILL.md +161 -0
- package/project-templates/phaser/.claude/skills/brainstorming/scripts/frame-template.html +270 -0
- package/project-templates/phaser/.claude/skills/brainstorming/scripts/helper.js +177 -0
- package/project-templates/phaser/.claude/skills/brainstorming/scripts/server.cjs +354 -0
- package/project-templates/phaser/.claude/skills/brainstorming/scripts/start-server.sh +148 -0
- package/project-templates/phaser/.claude/skills/brainstorming/scripts/stop-server.sh +56 -0
- package/project-templates/phaser/.claude/skills/brainstorming/scripts/wait-for-selection.sh +62 -0
- package/project-templates/phaser/.claude/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
- package/project-templates/phaser/.claude/skills/brainstorming/visual-companion.md +309 -0
- package/project-templates/phaser/.claude/skills/playcraft-ad-psychology/SKILL.md +182 -0
- package/project-templates/phaser/.claude/skills/playcraft-art-style-guide/SKILL.md +123 -0
- package/project-templates/phaser/.claude/skills/playcraft-asset-state-sheet/SKILL.md +205 -0
- package/project-templates/phaser/.claude/skills/playcraft-audio-generation/SKILL.md +280 -0
- package/project-templates/phaser/.claude/skills/playcraft-batch-pipeline/SKILL.md +184 -0
- package/project-templates/phaser/.claude/skills/playcraft-build-optimizer/SKILL.md +306 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/SKILL.md +298 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/build-sprite-sheet.template.mjs +123 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/compare-style.template.mjs +254 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +324 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +97 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/gen-edit-variants.template.mjs +118 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +137 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +397 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/validate-sprite-sheet.template.mjs +296 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-ops/SKILL.md +122 -0
- package/project-templates/phaser/.claude/skills/playcraft-image-processing/SKILL.md +219 -0
- package/project-templates/phaser/.claude/skills/playcraft-masking/SKILL.md +373 -0
- package/project-templates/phaser/.claude/skills/playcraft-playable-optimization/SKILL.md +161 -0
- package/project-templates/phaser/.claude/skills/playcraft-research/SKILL.md +215 -0
- package/project-templates/phaser/.claude/skills/playcraft-skill-recommender/SKILL.md +331 -0
- package/project-templates/phaser/.claude/skills/playcraft-sprite-generation/SKILL.md +423 -0
- package/project-templates/phaser/.claude/skills/playcraft-sprite-remix/SKILL.md +158 -0
- package/project-templates/phaser/.claude/skills/playcraft-sprite-sheet/SKILL.md +100 -0
- package/project-templates/phaser/.claude/skills/playcraft-storyboard/SKILL.md +167 -0
- package/project-templates/phaser/.claude/skills/playcraft-style-qa/SKILL.md +270 -0
- package/project-templates/phaser/.claude/skills/playcraft-text-rendering/SKILL.md +236 -0
- package/project-templates/phaser/.claude/skills/playcraft-vfx-animation/SKILL.md +130 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/SKILL.md +390 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/element-attributes.md +23 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/playwright-tests.md +39 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/request-mocking.md +87 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/running-code.md +240 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/session-management.md +226 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/spec-driven-testing.md +308 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/storage-state.md +275 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/test-generation.md +134 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/tracing.md +142 -0
- package/project-templates/phaser/.claude/skills/playwright-cli/references/video-recording.md +153 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/SKILL.md +386 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/execution-breakdown.mjs +182 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/find-turns.mjs +72 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/heavy-output.mjs +121 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/resolve-session.mjs +103 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/subagent-stats.mjs +127 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/subagent-tool-timeline.mjs +106 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/time-gaps.mjs +128 -0
- package/project-templates/phaser/.claude/skills/session-analyzer/scripts/turn-timeline.mjs +67 -0
- package/project-templates/phaser/.claude/snapshot.mjs +257 -0
- package/project-templates/phaser/.cursor/hooks.json +17 -0
- package/project-templates/phaser/.cursor/rules/playcraft-orchestrator.mdc +142 -0
- package/project-templates/phaser/.cursor/rules/playcraft-subagent-boundary.mdc +29 -0
- package/project-templates/phaser/.playcraft-engine +1 -0
- package/project-templates/phaser/CHANGELOG.md +105 -0
- package/project-templates/phaser/CLAUDE.md +84 -0
- package/project-templates/phaser/assets/audio/bgm/.gitkeep +0 -0
- package/project-templates/phaser/assets/audio/sfx/.gitkeep +0 -0
- package/project-templates/phaser/assets/bundles/.gitkeep +0 -0
- package/project-templates/phaser/assets/images/bg/.gitkeep +0 -0
- package/project-templates/phaser/assets/images/reference/.gitkeep +0 -0
- package/project-templates/phaser/assets/images/storyboard/.gitkeep +0 -0
- package/project-templates/phaser/assets/images/tiles/.gitkeep +0 -0
- package/project-templates/phaser/assets/images/ui/.gitkeep +0 -0
- package/project-templates/phaser/assets/images/vfx/.gitkeep +0 -0
- package/project-templates/phaser/assets/models/.gitkeep +0 -0
- package/project-templates/phaser/docs/DESIGN.md +65 -0
- package/project-templates/phaser/docs/intent-clarifications.md +58 -0
- package/project-templates/phaser/docs/pipeline-overview.md +69 -0
- package/project-templates/phaser/docs/project-state.md +211 -0
- package/project-templates/phaser/docs/scaffold-manifest.md +10 -0
- package/project-templates/phaser/docs/team/agent-conduct.md +67 -0
- package/project-templates/phaser/docs/team/agent-runtime-matrix.md +80 -0
- package/project-templates/phaser/docs/team/atom-tree-format.md +114 -0
- package/project-templates/phaser/docs/team/collaboration.md +391 -0
- package/project-templates/phaser/docs/team/core-model.md +85 -0
- package/project-templates/phaser/docs/team/game-designer-migration-todo.md +8 -0
- package/project-templates/phaser/docs/team/harness-legacy-deprecation.md +23 -0
- package/project-templates/phaser/docs/team/platform-capabilities.md +18 -0
- package/project-templates/phaser/docs/team/workflow-changelog.md +137 -0
- package/project-templates/phaser/docs/team/workflow-consistency-checklist.md +240 -0
- package/project-templates/phaser/focus-lab/.gitkeep +0 -0
- package/project-templates/phaser/game/adapters/phaser.ts +52 -0
- package/project-templates/phaser/game/config/.gitkeep +0 -0
- package/project-templates/phaser/game/config/game-config.ts +46 -0
- package/project-templates/phaser/game/contract/publish.ts +141 -0
- package/project-templates/phaser/game/contract/types.ts +34 -0
- package/project-templates/phaser/game/gameplay/.gitkeep +0 -0
- package/project-templates/phaser/game/index.ts +81 -0
- package/project-templates/phaser/game/runtime-contract.ts +28 -0
- package/project-templates/phaser/game/scenes/.gitkeep +0 -0
- package/project-templates/phaser/globals.d.ts +51 -0
- package/project-templates/phaser/index.css +34 -0
- package/project-templates/phaser/index.html +18 -0
- package/project-templates/phaser/main.ts +9 -0
- package/project-templates/phaser/package.json +79 -0
- package/project-templates/phaser/skills/README.md +52 -0
- package/project-templates/phaser/skills/_shared/agent-prep.md +136 -0
- package/project-templates/phaser/skills/_shared/requirements.txt +1 -0
- package/project-templates/phaser/skills/_shared/scripts/build-evidence-gate.mjs +87 -0
- package/project-templates/phaser/skills/_shared/scripts/context-budget.mjs +215 -0
- package/project-templates/phaser/skills/_shared/scripts/create-playable.mjs +140 -0
- package/project-templates/phaser/skills/_shared/scripts/dev-start.mjs +151 -0
- package/project-templates/phaser/skills/_shared/scripts/disclosure-config.mjs +480 -0
- package/project-templates/phaser/skills/_shared/scripts/ensure-project.mjs +532 -0
- package/project-templates/phaser/skills/_shared/scripts/gen-placeholder-audio.py +345 -0
- package/project-templates/phaser/skills/_shared/scripts/gen-placeholder.py +244 -0
- package/project-templates/phaser/skills/_shared/scripts/harness-smoke.mjs +257 -0
- package/project-templates/phaser/skills/_shared/scripts/lib/validator-artifacts.mjs +129 -0
- package/project-templates/phaser/skills/_shared/scripts/placeholder-pack-sheet.mjs +67 -0
- package/project-templates/phaser/skills/_shared/scripts/placeholder_audio_lib.py +142 -0
- package/project-templates/phaser/skills/_shared/scripts/placeholder_lib.py +993 -0
- package/project-templates/phaser/skills/_shared/scripts/render-project-state.mjs +278 -0
- package/project-templates/phaser/skills/_shared/scripts/ring-config.mjs +252 -0
- package/project-templates/phaser/skills/_shared/scripts/skills-check.mjs +176 -0
- package/project-templates/phaser/skills/_shared/scripts/slice-set.mjs +77 -0
- package/project-templates/phaser/skills/_shared/scripts/state-advance-ring.mjs +63 -0
- package/project-templates/phaser/skills/_shared/scripts/state-get.mjs +215 -0
- package/project-templates/phaser/skills/_shared/scripts/state-handoff.mjs +120 -0
- package/project-templates/phaser/skills/_shared/scripts/state-set.mjs +113 -0
- package/project-templates/phaser/skills/_shared/scripts/state-store.mjs +893 -0
- package/project-templates/phaser/skills/_shared/scripts/sync-template-skills.mjs +112 -0
- package/project-templates/phaser/skills/_shared/scripts/verify-asset-code-sync.mjs +265 -0
- package/project-templates/phaser/skills/_shared/scripts/verify-atom-conformance.mjs +181 -0
- package/project-templates/phaser/skills/_shared/scripts/verify-env.mjs +285 -0
- package/project-templates/phaser/skills/_shared/scripts/verify-placeholders.mjs +161 -0
- package/project-templates/phaser/skills/_shared/scripts/workflow-doctor.mjs +348 -0
- package/project-templates/phaser/skills/playable-animate/SKILL.md +52 -0
- package/project-templates/phaser/skills/playable-animate/agents/openai.yaml +4 -0
- package/project-templates/phaser/skills/playable-animate/references/board-refresh.md +30 -0
- package/project-templates/phaser/skills/playable-animate/references/diagnosis-checklist.md +25 -0
- package/project-templates/phaser/skills/playable-animate/references/entrance-sequencing.md +33 -0
- package/project-templates/phaser/skills/playable-animate/references/interaction-timing.md +23 -0
- package/project-templates/phaser/skills/playable-art/SKILL.md +203 -0
- package/project-templates/phaser/skills/playable-art/agents/openai.yaml +4 -0
- package/project-templates/phaser/skills/playable-art/references/alpha-postprocess.md +46 -0
- package/project-templates/phaser/skills/playable-art/references/cta-art-spec.md +59 -0
- package/project-templates/phaser/skills/playable-art/references/layout-proportions.md +30 -0
- package/project-templates/phaser/skills/playable-art/references/prompt-patterns.md +83 -0
- package/project-templates/phaser/skills/playable-art/references/reference-comparison.md +30 -0
- package/project-templates/phaser/skills/playable-art/references/sheet-import-v2.md +91 -0
- package/project-templates/phaser/skills/playable-art/scripts/build-atlas.py +332 -0
- package/project-templates/phaser/skills/playable-art/scripts/chroma-key.py +50 -0
- package/project-templates/phaser/skills/playable-art/scripts/extract-alpha-split.py +65 -0
- package/project-templates/phaser/skills/playable-art/scripts/extract-dual-bg-alpha.py +118 -0
- package/project-templates/phaser/skills/playable-art/scripts/import-gpt-art-sheets-v2.py +403 -0
- package/project-templates/phaser/skills/playable-art/scripts/import-gpt-art-sheets.py +280 -0
- package/project-templates/phaser/skills/playable-art/scripts/import-gpt-tile-sheet.py +114 -0
- package/project-templates/phaser/skills/playable-art/scripts/import_gpt_art_pipeline.py +321 -0
- package/project-templates/phaser/skills/playable-art/scripts/import_gpt_art_sheets_v2_test.py +126 -0
- package/project-templates/phaser/skills/playable-art/scripts/placeholder_common.py +98 -0
- package/project-templates/phaser/skills/playable-art/scripts/remove-bg.py +91 -0
- package/project-templates/phaser/skills/playable-art/scripts/review-processed-assets.py +468 -0
- package/project-templates/phaser/skills/playable-art/scripts/review_processed_assets_test.py +116 -0
- package/project-templates/phaser/skills/playable-art/scripts/verify-alpha-clean.py +105 -0
- package/project-templates/phaser/skills/playable-debug/SKILL.md +116 -0
- package/project-templates/phaser/skills/playable-debug/agents/openai.yaml +4 -0
- package/project-templates/phaser/skills/playable-debug/references/debug-config.md +40 -0
- package/project-templates/phaser/skills/playable-focus/SKILL.md +148 -0
- package/project-templates/phaser/skills/playable-focus/scripts/bootstrap-playground.mjs +84 -0
- package/project-templates/phaser/skills/playable-focus/scripts/extract-focus-frames.mjs +87 -0
- package/project-templates/phaser/skills/playable-focus/scripts/generate-focus-reports.mjs +121 -0
- package/project-templates/phaser/skills/playable-focus/scripts/playground.mjs +390 -0
- package/project-templates/phaser/skills/playable-focus/templates/focus-lab/frame.html +39 -0
- package/project-templates/phaser/skills/playable-focus/templates/focus-lab/harness/clean-stage.js +114 -0
- package/project-templates/phaser/skills/playable-focus/templates/focus-lab/harness/frame-lab-scene.js +94 -0
- package/project-templates/phaser/skills/playable-focus/templates/focus-lab/harness/particle-lab-scene.js +224 -0
- package/project-templates/phaser/skills/playable-focus/templates/focus-lab/model.html +16 -0
- package/project-templates/phaser/skills/playable-focus/templates/focus-lab/particle.html +38 -0
- package/project-templates/phaser/skills/playable-focus/templates/focus-lab/shatter.html +47 -0
- package/project-templates/phaser/skills/playable-fx-decompose/SKILL.md +212 -0
- package/project-templates/phaser/skills/playable-fx-decompose/examples.md +89 -0
- package/project-templates/phaser/skills/playable-fx-decompose/reference.md +201 -0
- package/project-templates/phaser/skills/playable-fx-decompose/requirements.txt +2 -0
- package/project-templates/phaser/skills/playable-fx-decompose/scripts/build-blank-tile-crack.py +192 -0
- package/project-templates/phaser/skills/playable-fx-decompose/scripts/fix-shard-debris-frames.py +60 -0
- package/project-templates/phaser/skills/playable-fx-decompose/scripts/generate-shard-debris.py +276 -0
- package/project-templates/phaser/skills/playable-fx-peak/SKILL.md +237 -0
- package/project-templates/phaser/skills/playable-fx-peak/requirements.txt +2 -0
- package/project-templates/phaser/skills/playable-fx-peak/scripts/fix-frame-edges.py +70 -0
- package/project-templates/phaser/skills/playable-fx-peak/scripts/repack-frame-sequence.py +526 -0
- package/project-templates/phaser/skills/playable-fx-peak/scripts/validate-frame-anchors.py +130 -0
- package/project-templates/phaser/skills/playable-placeholder/SKILL.md +239 -0
- package/project-templates/phaser/skills/playable-record/SKILL.md +166 -0
- package/project-templates/phaser/skills/playable-record/scripts/lib/build-artifact.mjs +92 -0
- package/project-templates/phaser/skills/playable-record/scripts/lib/dev-server.mjs +104 -0
- package/project-templates/phaser/skills/playable-record/scripts/lib/record-audio-bridge.js +141 -0
- package/project-templates/phaser/skills/playable-record/scripts/lib/slice-structure-verify.mjs +199 -0
- package/project-templates/phaser/skills/playable-record/scripts/record-playable.mjs +583 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-build.mjs +185 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-contract.mjs +261 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-firstwin.mjs +398 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-fusion.mjs +320 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-lifecycle.mjs +78 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-slice-artist.mjs +53 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-slice-ta.mjs +53 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-slice.mjs +142 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-visual-ring.mjs +250 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-visual-ring1.mjs +190 -0
- package/project-templates/phaser/skills/playable-record/scripts/verify-vlm-video.mjs +227 -0
- package/project-templates/phaser/skills/playable-validate/SKILL.md +260 -0
- package/project-templates/phaser/skills/playable-validate/references/checklist-detail.md +36 -0
- package/project-templates/phaser/skills/playable-validate/references/single-html-bundle.md +76 -0
- package/project-templates/phaser/skills/playable-validate/validation-rules.md +200 -0
- package/project-templates/phaser/skills/playable-verify-ui/SKILL.md +295 -0
- package/project-templates/phaser/skills/playable-verify-ui/examples/asset-manifest.example.json +36 -0
- package/project-templates/phaser/skills/playable-verify-ui/examples/mahjong-match.profile.yaml +334 -0
- package/project-templates/phaser/skills/playable-verify-ui/profiles/template.profile.yaml +84 -0
- package/project-templates/phaser/skills/playable-verify-ui/reference.md +165 -0
- package/project-templates/phaser/skills/playable-verify-ui/references/phaser-patterns.md +67 -0
- package/project-templates/phaser/skills/playable-verify-ui/references/scaling-decision-tree.md +51 -0
- package/project-templates/phaser/skills/playable-verify-ui/requirements.txt +7 -0
- package/project-templates/phaser/skills/playable-verify-ui/schema/asset-manifest.schema.json +68 -0
- package/project-templates/phaser/skills/playable-verify-ui/schema/playable-ui-profile.schema.json +171 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/asset_manifest.py +231 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/__init__.py +1 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/config_expr.js +218 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/node_utils.js +51 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/profile_loader.py +59 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/report.py +106 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/lib/runtime_contract.js +116 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/measure_frame_content.py +77 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/run_all.py +265 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_asset_sizes.py +77 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_assets_present.py +62 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_atlas_budget.py +84 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_atlas_frames.py +79 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_bg_clean.py +365 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_doc_asset_sync.py +90 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_fetch_antipatterns.py +59 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_game_config_load.js +54 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_hardcoded_layout.js +64 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_layout_regions.js +110 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_profile_schema.py +37 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_ring1_visual.py +211 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_runtime_contract.js +58 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_script_load_order.js +73 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_slice_plan.py +238 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_slice_plan_test.py +125 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_text_overlap.py +333 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_tile_consistency.py +323 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_vision_evidence.py +894 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_vision_evidence_test.py +122 -0
- package/project-templates/phaser/skills/playable-verify-ui/scripts/verify_visual.py +422 -0
- package/project-templates/phaser/ta-workspace/scripts/.gitkeep +0 -0
- package/project-templates/phaser/templates/artist-log.template.md +182 -0
- package/project-templates/phaser/templates/atom-tree.template.json +133 -0
- package/project-templates/phaser/templates/design-brief.template.md +92 -0
- package/project-templates/phaser/templates/design-lens-checklist.reference.md +117 -0
- package/project-templates/phaser/templates/design-methodology.md +99 -0
- package/project-templates/phaser/templates/design.template.md +50 -0
- package/project-templates/phaser/templates/developer-log.template.md +258 -0
- package/project-templates/phaser/templates/five-axis-framework.md +194 -0
- package/project-templates/phaser/templates/gen-placeholder-audio.template.mjs +63 -0
- package/project-templates/phaser/templates/gen-placeholders.template.mjs +81 -0
- package/project-templates/phaser/templates/intent-clarifications.template.md +58 -0
- package/project-templates/phaser/templates/layout-spec.template.md +198 -0
- package/project-templates/phaser/templates/plan.template.md +80 -0
- package/project-templates/phaser/templates/project-state.template.md +136 -0
- package/project-templates/phaser/templates/review-report.template.md +275 -0
- package/project-templates/phaser/templates/style-exploration.template.md +93 -0
- package/project-templates/phaser/templates/ta-log.template.md +394 -0
- package/project-templates/phaser/tsconfig.json +20 -0
- package/project-templates/phaser/vite.config.ts +27 -0
- package/project-templates/threejs/.claude/agents/artist.md +101 -0
- package/project-templates/threejs/.claude/agents/developer.md +123 -0
- package/project-templates/threejs/.claude/agents/game-designer.md +192 -0
- package/project-templates/threejs/.claude/agents/refs/README.md +77 -0
- package/project-templates/threejs/.claude/agents/refs/artist-art-style-catalog.md +533 -0
- package/project-templates/threejs/.claude/agents/refs/artist-color-audio-recipes.md +153 -0
- package/project-templates/threejs/.claude/agents/refs/artist-deliverable-spec.md +230 -0
- package/project-templates/threejs/.claude/agents/refs/artist-dimension-axis.md +27 -0
- package/project-templates/threejs/.claude/agents/refs/artist-handoff-v2-checklist.md +76 -0
- package/project-templates/threejs/.claude/agents/refs/artist-legacy-fallback.md +14 -0
- package/project-templates/threejs/.claude/agents/refs/artist-master-composite-recipes.md +208 -0
- package/project-templates/threejs/.claude/agents/refs/artist-style-exploration-flow.md +55 -0
- package/project-templates/threejs/.claude/agents/refs/developer-dev-handoff.md +152 -0
- package/project-templates/threejs/.claude/agents/refs/developer-impl-cookbook.md +432 -0
- package/project-templates/threejs/.claude/agents/refs/developer-legacy-fallback.md +15 -0
- package/project-templates/threejs/.claude/agents/refs/developer-phase1-flow.md +404 -0
- package/project-templates/threejs/.claude/agents/refs/framework-5-component-filter.md +252 -0
- package/project-templates/threejs/.claude/agents/refs/framework-game-feel-juice.md +266 -0
- package/project-templates/threejs/.claude/agents/refs/framework-mda.md +147 -0
- package/project-templates/threejs/.claude/agents/refs/game-designer-gameplay-sufficiency.md +123 -0
- package/project-templates/threejs/.claude/agents/refs/game-designer-legacy-fallback.md +15 -0
- package/project-templates/threejs/.claude/agents/refs/game-designer-workflow-detail.md +69 -0
- package/project-templates/threejs/.claude/agents/refs/implementation-plan-guide.md +309 -0
- package/project-templates/threejs/.claude/agents/refs/reviewer-convergence-eval.md +350 -0
- package/project-templates/threejs/.claude/agents/refs/reviewer-legacy-fallback.md +14 -0
- package/project-templates/threejs/.claude/agents/refs/reviewer-six-dimension-eval.md +6 -0
- package/project-templates/threejs/.claude/agents/refs/skill-selector-guide.md +465 -0
- package/project-templates/threejs/.claude/agents/refs/skill-value-layers.md +145 -0
- package/project-templates/threejs/.claude/agents/refs/storyboard-generation-guide.md +110 -0
- package/project-templates/threejs/.claude/agents/refs/ta-3d-flip-recipe.md +88 -0
- package/project-templates/threejs/.claude/agents/refs/ta-atlas-deliverable-standard.md +67 -0
- package/project-templates/threejs/.claude/agents/refs/ta-batch-pipeline-recipes.md +120 -0
- package/project-templates/threejs/.claude/agents/refs/ta-image-generation-detail.md +300 -0
- package/project-templates/threejs/.claude/agents/refs/ta-image-ops-reference.md +495 -0
- package/project-templates/threejs/.claude/agents/refs/ta-pipeline-cookbook.md +1141 -0
- package/project-templates/threejs/.claude/agents/refs/ta-tools-reference.md +111 -0
- package/project-templates/threejs/.claude/agents/refs/ta-vfx-preset-catalog.md +365 -0
- package/project-templates/threejs/.claude/agents/refs/technical-artist-legacy-fallback.md +14 -0
- package/project-templates/threejs/.claude/agents/reviewer.md +116 -0
- package/project-templates/threejs/.claude/agents/technical-artist.md +100 -0
- package/project-templates/threejs/.claude/hooks/README.md +120 -0
- package/project-templates/threejs/.claude/hooks/asr-coverage-validate.mjs +381 -0
- package/project-templates/threejs/.claude/hooks/block-developer-preflight.mjs +185 -0
- package/project-templates/threejs/.claude/hooks/block-ring1-tasklist.mjs +95 -0
- package/project-templates/threejs/.claude/hooks/gate-dispatcher.mjs +78 -0
- package/project-templates/threejs/.claude/hooks/gate-runner.mjs +557 -0
- package/project-templates/threejs/.claude/hooks/gate.mjs +171 -0
- package/project-templates/threejs/.claude/hooks/snapshot-milestone.mjs +247 -0
- package/project-templates/threejs/.claude/hooks/user-prompt.mjs +194 -0
- package/project-templates/threejs/.claude/hooks/validate-atom-tree-selection.mjs +281 -0
- package/project-templates/threejs/.claude/hooks/validate-workflow-stop.mjs +1889 -0
- package/project-templates/threejs/.claude/settings.json +81 -0
- package/project-templates/threejs/.claude/skills/brainstorming/SKILL.md +161 -0
- package/project-templates/threejs/.claude/skills/brainstorming/scripts/frame-template.html +270 -0
- package/project-templates/threejs/.claude/skills/brainstorming/scripts/helper.js +177 -0
- package/project-templates/threejs/.claude/skills/brainstorming/scripts/server.cjs +354 -0
- package/project-templates/threejs/.claude/skills/brainstorming/scripts/start-server.sh +148 -0
- package/project-templates/threejs/.claude/skills/brainstorming/scripts/stop-server.sh +56 -0
- package/project-templates/threejs/.claude/skills/brainstorming/scripts/wait-for-selection.sh +62 -0
- package/project-templates/threejs/.claude/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
- package/project-templates/threejs/.claude/skills/brainstorming/visual-companion.md +309 -0
- package/project-templates/threejs/.claude/skills/playcraft-ad-psychology/SKILL.md +182 -0
- package/project-templates/threejs/.claude/skills/playcraft-art-style-guide/SKILL.md +123 -0
- package/project-templates/threejs/.claude/skills/playcraft-asset-state-sheet/SKILL.md +205 -0
- package/project-templates/threejs/.claude/skills/playcraft-audio-generation/SKILL.md +280 -0
- package/project-templates/threejs/.claude/skills/playcraft-batch-pipeline/SKILL.md +184 -0
- package/project-templates/threejs/.claude/skills/playcraft-build-optimizer/SKILL.md +306 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/SKILL.md +298 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/build-sprite-sheet.template.mjs +123 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/compare-style.template.mjs +254 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +324 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +97 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/gen-edit-variants.template.mjs +118 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +137 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +397 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/validate-sprite-sheet.template.mjs +296 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-ops/SKILL.md +122 -0
- package/project-templates/threejs/.claude/skills/playcraft-image-processing/SKILL.md +219 -0
- package/project-templates/threejs/.claude/skills/playcraft-masking/SKILL.md +373 -0
- package/project-templates/threejs/.claude/skills/playcraft-playable-optimization/SKILL.md +161 -0
- package/project-templates/threejs/.claude/skills/playcraft-research/SKILL.md +215 -0
- package/project-templates/threejs/.claude/skills/playcraft-skill-recommender/SKILL.md +331 -0
- package/project-templates/threejs/.claude/skills/playcraft-sprite-generation/SKILL.md +423 -0
- package/project-templates/threejs/.claude/skills/playcraft-sprite-remix/SKILL.md +158 -0
- package/project-templates/threejs/.claude/skills/playcraft-sprite-sheet/SKILL.md +100 -0
- package/project-templates/threejs/.claude/skills/playcraft-storyboard/SKILL.md +167 -0
- package/project-templates/threejs/.claude/skills/playcraft-style-qa/SKILL.md +270 -0
- package/project-templates/threejs/.claude/skills/playcraft-text-rendering/SKILL.md +236 -0
- package/project-templates/threejs/.claude/skills/playcraft-vfx-animation/SKILL.md +130 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/SKILL.md +390 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/element-attributes.md +23 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/playwright-tests.md +39 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/request-mocking.md +87 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/running-code.md +240 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/session-management.md +226 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/spec-driven-testing.md +308 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/storage-state.md +275 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/test-generation.md +134 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/tracing.md +142 -0
- package/project-templates/threejs/.claude/skills/playwright-cli/references/video-recording.md +153 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/SKILL.md +386 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/execution-breakdown.mjs +182 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/find-turns.mjs +72 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/heavy-output.mjs +121 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/resolve-session.mjs +103 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/subagent-stats.mjs +127 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/subagent-tool-timeline.mjs +106 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/time-gaps.mjs +128 -0
- package/project-templates/threejs/.claude/skills/session-analyzer/scripts/turn-timeline.mjs +67 -0
- package/project-templates/threejs/.claude/snapshot.mjs +257 -0
- package/project-templates/threejs/.cursor/hooks.json +17 -0
- package/project-templates/threejs/.cursor/rules/playcraft-orchestrator.mdc +142 -0
- package/project-templates/threejs/.cursor/rules/playcraft-subagent-boundary.mdc +29 -0
- package/project-templates/threejs/.playcraft-engine +1 -0
- package/project-templates/threejs/CHANGELOG.md +105 -0
- package/project-templates/threejs/CLAUDE.md +84 -0
- package/project-templates/threejs/assets/audio/bgm/.gitkeep +0 -0
- package/project-templates/threejs/assets/audio/sfx/.gitkeep +0 -0
- package/project-templates/threejs/assets/bundles/.gitkeep +0 -0
- package/project-templates/threejs/assets/images/bg/.gitkeep +0 -0
- package/project-templates/threejs/assets/images/reference/.gitkeep +0 -0
- package/project-templates/threejs/assets/images/storyboard/.gitkeep +0 -0
- package/project-templates/threejs/assets/images/tiles/.gitkeep +0 -0
- package/project-templates/threejs/assets/images/ui/.gitkeep +0 -0
- package/project-templates/threejs/assets/images/vfx/.gitkeep +0 -0
- package/project-templates/threejs/assets/models/.gitkeep +0 -0
- package/project-templates/threejs/docs/DESIGN.md +65 -0
- package/project-templates/threejs/docs/intent-clarifications.md +58 -0
- package/project-templates/threejs/docs/pipeline-overview.md +69 -0
- package/project-templates/threejs/docs/project-state.md +211 -0
- package/project-templates/threejs/docs/scaffold-manifest.md +10 -0
- package/project-templates/threejs/docs/team/agent-conduct.md +67 -0
- package/project-templates/threejs/docs/team/agent-runtime-matrix.md +80 -0
- package/project-templates/threejs/docs/team/atom-tree-format.md +114 -0
- package/project-templates/threejs/docs/team/collaboration.md +391 -0
- package/project-templates/threejs/docs/team/core-model.md +85 -0
- package/project-templates/threejs/docs/team/game-designer-migration-todo.md +8 -0
- package/project-templates/threejs/docs/team/harness-legacy-deprecation.md +23 -0
- package/project-templates/threejs/docs/team/platform-capabilities.md +18 -0
- package/project-templates/threejs/docs/team/workflow-changelog.md +137 -0
- package/project-templates/threejs/docs/team/workflow-consistency-checklist.md +240 -0
- package/project-templates/threejs/focus-lab/.gitkeep +0 -0
- package/project-templates/threejs/game/config/.gitkeep +0 -0
- package/project-templates/threejs/game/config/game-config.ts +46 -0
- package/project-templates/threejs/game/contract/publish.ts +141 -0
- package/project-templates/threejs/game/contract/types.ts +34 -0
- package/project-templates/threejs/game/gameplay/.gitkeep +0 -0
- package/project-templates/threejs/game/index.ts +76 -0
- package/project-templates/threejs/game/runtime-contract.ts +15 -0
- package/project-templates/threejs/game/scenes/.gitkeep +0 -0
- package/project-templates/threejs/globals.d.ts +51 -0
- package/project-templates/threejs/index.css +34 -0
- package/project-templates/threejs/index.html +18 -0
- package/project-templates/threejs/main.ts +9 -0
- package/project-templates/threejs/package.json +79 -0
- package/project-templates/threejs/skills/README.md +52 -0
- package/project-templates/threejs/skills/_shared/agent-prep.md +136 -0
- package/project-templates/threejs/skills/_shared/requirements.txt +1 -0
- package/project-templates/threejs/skills/_shared/scripts/build-evidence-gate.mjs +87 -0
- package/project-templates/threejs/skills/_shared/scripts/context-budget.mjs +215 -0
- package/project-templates/threejs/skills/_shared/scripts/create-playable.mjs +140 -0
- package/project-templates/threejs/skills/_shared/scripts/dev-start.mjs +151 -0
- package/project-templates/threejs/skills/_shared/scripts/disclosure-config.mjs +480 -0
- package/project-templates/threejs/skills/_shared/scripts/ensure-project.mjs +532 -0
- package/project-templates/threejs/skills/_shared/scripts/gen-placeholder-audio.py +345 -0
- package/project-templates/threejs/skills/_shared/scripts/gen-placeholder.py +244 -0
- package/project-templates/threejs/skills/_shared/scripts/harness-smoke.mjs +257 -0
- package/project-templates/threejs/skills/_shared/scripts/lib/validator-artifacts.mjs +129 -0
- package/project-templates/threejs/skills/_shared/scripts/placeholder-pack-sheet.mjs +67 -0
- package/project-templates/threejs/skills/_shared/scripts/placeholder_audio_lib.py +142 -0
- package/project-templates/threejs/skills/_shared/scripts/placeholder_lib.py +993 -0
- package/project-templates/threejs/skills/_shared/scripts/render-project-state.mjs +278 -0
- package/project-templates/threejs/skills/_shared/scripts/ring-config.mjs +252 -0
- package/project-templates/threejs/skills/_shared/scripts/skills-check.mjs +176 -0
- package/project-templates/threejs/skills/_shared/scripts/slice-set.mjs +77 -0
- package/project-templates/threejs/skills/_shared/scripts/state-advance-ring.mjs +63 -0
- package/project-templates/threejs/skills/_shared/scripts/state-get.mjs +215 -0
- package/project-templates/threejs/skills/_shared/scripts/state-handoff.mjs +120 -0
- package/project-templates/threejs/skills/_shared/scripts/state-set.mjs +113 -0
- package/project-templates/threejs/skills/_shared/scripts/state-store.mjs +893 -0
- package/project-templates/threejs/skills/_shared/scripts/sync-template-skills.mjs +112 -0
- package/project-templates/threejs/skills/_shared/scripts/verify-asset-code-sync.mjs +265 -0
- package/project-templates/threejs/skills/_shared/scripts/verify-atom-conformance.mjs +181 -0
- package/project-templates/threejs/skills/_shared/scripts/verify-env.mjs +285 -0
- package/project-templates/threejs/skills/_shared/scripts/verify-placeholders.mjs +161 -0
- package/project-templates/threejs/skills/_shared/scripts/workflow-doctor.mjs +348 -0
- package/project-templates/threejs/skills/playable-animate/SKILL.md +52 -0
- package/project-templates/threejs/skills/playable-animate/agents/openai.yaml +4 -0
- package/project-templates/threejs/skills/playable-animate/references/board-refresh.md +30 -0
- package/project-templates/threejs/skills/playable-animate/references/diagnosis-checklist.md +25 -0
- package/project-templates/threejs/skills/playable-animate/references/entrance-sequencing.md +33 -0
- package/project-templates/threejs/skills/playable-animate/references/interaction-timing.md +23 -0
- package/project-templates/threejs/skills/playable-art/SKILL.md +203 -0
- package/project-templates/threejs/skills/playable-art/agents/openai.yaml +4 -0
- package/project-templates/threejs/skills/playable-art/references/alpha-postprocess.md +46 -0
- package/project-templates/threejs/skills/playable-art/references/cta-art-spec.md +59 -0
- package/project-templates/threejs/skills/playable-art/references/layout-proportions.md +30 -0
- package/project-templates/threejs/skills/playable-art/references/prompt-patterns.md +83 -0
- package/project-templates/threejs/skills/playable-art/references/reference-comparison.md +30 -0
- package/project-templates/threejs/skills/playable-art/references/sheet-import-v2.md +91 -0
- package/project-templates/threejs/skills/playable-art/scripts/build-atlas.py +332 -0
- package/project-templates/threejs/skills/playable-art/scripts/chroma-key.py +50 -0
- package/project-templates/threejs/skills/playable-art/scripts/extract-alpha-split.py +65 -0
- package/project-templates/threejs/skills/playable-art/scripts/extract-dual-bg-alpha.py +118 -0
- package/project-templates/threejs/skills/playable-art/scripts/import-gpt-art-sheets-v2.py +403 -0
- package/project-templates/threejs/skills/playable-art/scripts/import-gpt-art-sheets.py +280 -0
- package/project-templates/threejs/skills/playable-art/scripts/import-gpt-tile-sheet.py +114 -0
- package/project-templates/threejs/skills/playable-art/scripts/import_gpt_art_pipeline.py +321 -0
- package/project-templates/threejs/skills/playable-art/scripts/import_gpt_art_sheets_v2_test.py +126 -0
- package/project-templates/threejs/skills/playable-art/scripts/placeholder_common.py +98 -0
- package/project-templates/threejs/skills/playable-art/scripts/remove-bg.py +91 -0
- package/project-templates/threejs/skills/playable-art/scripts/review-processed-assets.py +468 -0
- package/project-templates/threejs/skills/playable-art/scripts/review_processed_assets_test.py +116 -0
- package/project-templates/threejs/skills/playable-art/scripts/verify-alpha-clean.py +105 -0
- package/project-templates/threejs/skills/playable-debug/SKILL.md +116 -0
- package/project-templates/threejs/skills/playable-debug/agents/openai.yaml +4 -0
- package/project-templates/threejs/skills/playable-debug/references/debug-config.md +40 -0
- package/project-templates/threejs/skills/playable-focus/SKILL.md +148 -0
- package/project-templates/threejs/skills/playable-focus/scripts/bootstrap-playground.mjs +84 -0
- package/project-templates/threejs/skills/playable-focus/scripts/extract-focus-frames.mjs +87 -0
- package/project-templates/threejs/skills/playable-focus/scripts/generate-focus-reports.mjs +121 -0
- package/project-templates/threejs/skills/playable-focus/scripts/playground.mjs +390 -0
- package/project-templates/threejs/skills/playable-focus/templates/focus-lab/frame.html +39 -0
- package/project-templates/threejs/skills/playable-focus/templates/focus-lab/harness/clean-stage.js +114 -0
- package/project-templates/threejs/skills/playable-focus/templates/focus-lab/harness/frame-lab-scene.js +94 -0
- package/project-templates/threejs/skills/playable-focus/templates/focus-lab/harness/particle-lab-scene.js +224 -0
- package/project-templates/threejs/skills/playable-focus/templates/focus-lab/model.html +16 -0
- package/project-templates/threejs/skills/playable-focus/templates/focus-lab/particle.html +38 -0
- package/project-templates/threejs/skills/playable-focus/templates/focus-lab/shatter.html +47 -0
- package/project-templates/threejs/skills/playable-fx-decompose/SKILL.md +212 -0
- package/project-templates/threejs/skills/playable-fx-decompose/examples.md +89 -0
- package/project-templates/threejs/skills/playable-fx-decompose/reference.md +201 -0
- package/project-templates/threejs/skills/playable-fx-decompose/requirements.txt +2 -0
- package/project-templates/threejs/skills/playable-fx-decompose/scripts/build-blank-tile-crack.py +192 -0
- package/project-templates/threejs/skills/playable-fx-decompose/scripts/fix-shard-debris-frames.py +60 -0
- package/project-templates/threejs/skills/playable-fx-decompose/scripts/generate-shard-debris.py +276 -0
- package/project-templates/threejs/skills/playable-fx-peak/SKILL.md +237 -0
- package/project-templates/threejs/skills/playable-fx-peak/requirements.txt +2 -0
- package/project-templates/threejs/skills/playable-fx-peak/scripts/fix-frame-edges.py +70 -0
- package/project-templates/threejs/skills/playable-fx-peak/scripts/repack-frame-sequence.py +526 -0
- package/project-templates/threejs/skills/playable-fx-peak/scripts/validate-frame-anchors.py +130 -0
- package/project-templates/threejs/skills/playable-placeholder/SKILL.md +239 -0
- package/project-templates/threejs/skills/playable-record/SKILL.md +166 -0
- package/project-templates/threejs/skills/playable-record/scripts/lib/build-artifact.mjs +92 -0
- package/project-templates/threejs/skills/playable-record/scripts/lib/dev-server.mjs +104 -0
- package/project-templates/threejs/skills/playable-record/scripts/lib/record-audio-bridge.js +141 -0
- package/project-templates/threejs/skills/playable-record/scripts/lib/slice-structure-verify.mjs +199 -0
- package/project-templates/threejs/skills/playable-record/scripts/record-playable.mjs +583 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-build.mjs +185 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-contract.mjs +261 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-firstwin.mjs +398 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-fusion.mjs +320 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-lifecycle.mjs +78 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-slice-artist.mjs +53 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-slice-ta.mjs +53 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-slice.mjs +142 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-visual-ring.mjs +250 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-visual-ring1.mjs +190 -0
- package/project-templates/threejs/skills/playable-record/scripts/verify-vlm-video.mjs +227 -0
- package/project-templates/threejs/skills/playable-validate/SKILL.md +260 -0
- package/project-templates/threejs/skills/playable-validate/references/checklist-detail.md +36 -0
- package/project-templates/threejs/skills/playable-validate/references/single-html-bundle.md +76 -0
- package/project-templates/threejs/skills/playable-validate/validation-rules.md +200 -0
- package/project-templates/threejs/skills/playable-verify-ui/SKILL.md +295 -0
- package/project-templates/threejs/skills/playable-verify-ui/examples/asset-manifest.example.json +36 -0
- package/project-templates/threejs/skills/playable-verify-ui/examples/mahjong-match.profile.yaml +334 -0
- package/project-templates/threejs/skills/playable-verify-ui/profiles/template.profile.yaml +84 -0
- package/project-templates/threejs/skills/playable-verify-ui/reference.md +165 -0
- package/project-templates/threejs/skills/playable-verify-ui/references/phaser-patterns.md +67 -0
- package/project-templates/threejs/skills/playable-verify-ui/references/scaling-decision-tree.md +51 -0
- package/project-templates/threejs/skills/playable-verify-ui/requirements.txt +7 -0
- package/project-templates/threejs/skills/playable-verify-ui/schema/asset-manifest.schema.json +68 -0
- package/project-templates/threejs/skills/playable-verify-ui/schema/playable-ui-profile.schema.json +171 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/asset_manifest.py +231 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/__init__.py +1 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/config_expr.js +218 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/node_utils.js +51 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/profile_loader.py +59 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/report.py +106 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/lib/runtime_contract.js +116 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/measure_frame_content.py +77 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/run_all.py +265 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_asset_sizes.py +77 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_assets_present.py +62 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_atlas_budget.py +84 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_atlas_frames.py +79 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_bg_clean.py +365 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_doc_asset_sync.py +90 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_fetch_antipatterns.py +59 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_game_config_load.js +54 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_hardcoded_layout.js +64 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_layout_regions.js +110 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_profile_schema.py +37 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_ring1_visual.py +211 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_runtime_contract.js +58 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_script_load_order.js +73 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_slice_plan.py +238 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_slice_plan_test.py +125 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_text_overlap.py +333 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_tile_consistency.py +323 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_vision_evidence.py +894 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_vision_evidence_test.py +122 -0
- package/project-templates/threejs/skills/playable-verify-ui/scripts/verify_visual.py +422 -0
- package/project-templates/threejs/ta-workspace/scripts/.gitkeep +0 -0
- package/project-templates/threejs/templates/artist-log.template.md +182 -0
- package/project-templates/threejs/templates/atom-tree.template.json +133 -0
- package/project-templates/threejs/templates/design-brief.template.md +92 -0
- package/project-templates/threejs/templates/design-lens-checklist.reference.md +117 -0
- package/project-templates/threejs/templates/design-methodology.md +99 -0
- package/project-templates/threejs/templates/design.template.md +50 -0
- package/project-templates/threejs/templates/developer-log.template.md +258 -0
- package/project-templates/threejs/templates/five-axis-framework.md +194 -0
- package/project-templates/threejs/templates/gen-placeholder-audio.template.mjs +63 -0
- package/project-templates/threejs/templates/gen-placeholders.template.mjs +81 -0
- package/project-templates/threejs/templates/intent-clarifications.template.md +58 -0
- package/project-templates/threejs/templates/layout-spec.template.md +198 -0
- package/project-templates/threejs/templates/plan.template.md +80 -0
- package/project-templates/threejs/templates/project-state.template.md +136 -0
- package/project-templates/threejs/templates/review-report.template.md +275 -0
- package/project-templates/threejs/templates/style-exploration.template.md +93 -0
- package/project-templates/threejs/templates/ta-log.template.md +394 -0
- package/project-templates/threejs/tsconfig.json +20 -0
- package/project-templates/threejs/vite.config.ts +27 -0
- package/dist/atom-plan/validate-atom-plan.js +0 -298
- package/project-template/.claude/agents/designer.md +0 -124
- package/project-template/.claude/agents/pm.md +0 -166
- package/project-template/.claude/agents/refs/designer-style-exploration-flow.md +0 -67
- package/project-template/.claude/agents/refs/pm-workflow-detail.md +0 -567
- package/project-template/.claude/hooks/validate-atom-plan.mjs +0 -224
- package/project-template/.claude/skills/playcraft-workflow/SKILL.md +0 -485
- package/project-template/docs/team/atom-plan-format.md +0 -173
- package/project-template/templates/atom-plan.template.json +0 -44
- package/project-template/templates/atom-plan.template.md +0 -108
- /package/dist/{atom-plan → asr}/validate-asr-coverage.js +0 -0
- /package/{project-template → engine-packs/phaser}/game/config/.gitkeep +0 -0
- /package/{project-template → engine-packs/phaser}/game/gameplay/.gitkeep +0 -0
- /package/{project-template → engine-packs/phaser}/game/scenes/.gitkeep +0 -0
- /package/project-template/.claude/agents/refs/{designer-art-style-catalog.md → artist-art-style-catalog.md} +0 -0
|
@@ -0,0 +1,465 @@
|
|
|
1
|
+
# Atom Selection Guide
|
|
2
|
+
|
|
3
|
+
> Purpose: guide a temporary ref-flow atom-selection subagent to produce `docs/atom-tree.json` and optional `docs/atom-tree.md` as a compact atom-tree package.
|
|
4
|
+
>
|
|
5
|
+
> Scope: selection and reading guidance only. This guide does not define implementation steps, feature plans, or runtime orchestration.
|
|
6
|
+
>
|
|
7
|
+
> **Stage**: In **ring 1**, this subagent runs after Game Designer STOP and before engine scaffold. It produces only the minimal selection package needed for scaffold + Developer. In **ring 2+**, it may deepen the reading guide once layout/periphery specs are disclosed.
|
|
8
|
+
|
|
9
|
+
## Objective
|
|
10
|
+
|
|
11
|
+
Build an atom-tree contract that starts from the gameplay Skill closest to the current design.
|
|
12
|
+
|
|
13
|
+
- `docs/atom-tree.json` is the **single structured contract**: `meta.skillsMatch` snapshot + selected `meta.selectedAtoms` + ring gates + optional product tree.
|
|
14
|
+
- `docs/atom-tree.md` is an optional **human-readable guide** generated from JSON: which Skill acts as the gameplay trunk, which imports matter, how each role slot was resolved, and where true misses remain.
|
|
15
|
+
- Treat `meta.skillsMatch.items[].role` and `meta.skillsMatch.mediaGroups[].role` as **chain-building hints**: they help you infer what each Skill mainly supplies, which semantic slots the trunk depends on, and which provider candidates are most likely relevant.
|
|
16
|
+
|
|
17
|
+
## Inputs
|
|
18
|
+
|
|
19
|
+
Read these before writing:
|
|
20
|
+
|
|
21
|
+
| File | Why it matters |
|
|
22
|
+
| ------------------------------- | ---------------------------------------------------------------------------------- |
|
|
23
|
+
| `docs/DESIGN.md` | Consolidated player-experience direction |
|
|
24
|
+
| `docs/design-brief.md` | Ring 2+ only: deeper gameplay/style/periphery choices |
|
|
25
|
+
| `docs/atom-tree.json` | Existing `skillsMatch` snapshot + selected `meta.selectedAtoms` list when revising |
|
|
26
|
+
| `docs/team/atom-tree-format.md` | Output contract for `atom-tree.json` and `atom-tree.md` |
|
|
27
|
+
|
|
28
|
+
## CLI Reference
|
|
29
|
+
|
|
30
|
+
Use these commands in this flow:
|
|
31
|
+
|
|
32
|
+
| Command | Purpose |
|
|
33
|
+
| ------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
|
|
34
|
+
| `playcraft skills init-atom-tree --intent "<keywords>"` | Create `docs/atom-tree.json` with `skillsMatch` pre-filled |
|
|
35
|
+
| `playcraft remix init-template --from-atom-tree` | Apply engine scaffold (`game/` + `.playcraft-engine`) from `meta.engineDecision.adapter` — **orchestrator runs after selector STOP** |
|
|
36
|
+
| `playcraft skills filter --role "<role>" --json` | Find providers for a specific semantic role |
|
|
37
|
+
| `playcraft skills read "<skillRef>"` | Deep-read trunk candidates and strong adjacent references |
|
|
38
|
+
| `playcraft skills validate-atom-tree-selection` | Validate the JSON contract before STOP |
|
|
39
|
+
| `playcraft skills link --from-atom-tree --prune` | Link selected skills for downstream readers |
|
|
40
|
+
| `playcraft skills gen-atom-tree-md [--force]` | Generate an initial `atom-tree.md` skeleton that you may refine |
|
|
41
|
+
|
|
42
|
+
## Core Rules
|
|
43
|
+
|
|
44
|
+
1. Select for relevance, not completeness.
|
|
45
|
+
2. Work **trunk-first**: start from the gameplay Skill closest to the actual design, then expand outward.
|
|
46
|
+
3. Keep `meta.selectedAtoms` compact: it remains a **string list of selected skill refs only**.
|
|
47
|
+
4. Put reading notes, import interpretation, role decisions, and misses in `docs/atom-tree.md`; keep execution status and production logs outside JSON.
|
|
48
|
+
5. `atom-tree.md` may narrate a gameplay assembly link, but it must not become an execution DAG or implementation plan.
|
|
49
|
+
6. Treat role filling as an explicit decision: `use`, `skip`, or `miss` are all valid outcomes.
|
|
50
|
+
7. If no good fit exists, say so explicitly in `Gaps` instead of forcing a weak match.
|
|
51
|
+
8. Preserve `Level 0-4` reuse language from `creating-playable-games`.
|
|
52
|
+
|
|
53
|
+
## Ring 1 Workflow
|
|
54
|
+
|
|
55
|
+
Ring 1 is selection, not planning. The output should let scaffold choose the adapter and let Developer read a few strong Skill references. Stop before the tree turns into a feature plan.
|
|
56
|
+
|
|
57
|
+
1. Read `DESIGN.md` and extract compact keywords.
|
|
58
|
+
2. Run `playcraft skills init-atom-tree --intent "<keywords>" --project-dir .`.
|
|
59
|
+
3. Choose `meta.selectedAtoms`: engine atom + best gameplay trunk + at most two strong adjacent atoms.
|
|
60
|
+
4. If the match is weak, keep the best useful precedent or only the engine atom, and record the miss in `docs/atom-tree.md` if generated.
|
|
61
|
+
5. Run `playcraft skills validate-atom-tree-selection --project-dir .`.
|
|
62
|
+
6. STOP to orchestrator. Do not run `init-template`; scaffold is orchestrator-owned.
|
|
63
|
+
|
|
64
|
+
Do not search peripheral systems in ring 1 unless `DESIGN.md` makes them part of the first playable spine. Collection counters, wrappers, full tutorial flow, hook/CTA packaging, and production assets are ring 2+ disclosure.
|
|
65
|
+
|
|
66
|
+
## Ring 2+ Deepening Workflow
|
|
67
|
+
|
|
68
|
+
### Step 1: Read the design direction
|
|
69
|
+
|
|
70
|
+
Extract:
|
|
71
|
+
|
|
72
|
+
- core gameplay pattern
|
|
73
|
+
- important mechanic variants
|
|
74
|
+
- style and tone constraints
|
|
75
|
+
- obvious no-fit areas
|
|
76
|
+
- **peripheral systems and wrapping** — systems that emerge from tutorial, progression, or packaging needs rather than the core mechanic itself (e.g. collection counters, level/stage structure, unlock progression, scene transitions, themed wrapper logic). These are often described in DESIGN.md under dimensions like "Tutorial and Onboarding", "Peripheral Systems", or "Wrapping / Packaging".
|
|
77
|
+
|
|
78
|
+
> **Why this matters**: The `init-atom-tree --intent` keywords typically cover only the core mechanic (e.g. "mahjong,tile,match"). Peripheral systems like "collection progress", "level structure", or "stage transitions" use different vocabulary and will NOT appear in the initial `skillsMatch` unless you search for them separately. Failing to search means these systems default to "custom implementation" even when reusable Skills exist.
|
|
79
|
+
|
|
80
|
+
### Step 2: Initialize or refresh `atom-tree.json`
|
|
81
|
+
|
|
82
|
+
Use:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
playcraft skills init-atom-tree --intent "<gameplayType>,<mechanic>,<keywords>" --project-dir .
|
|
86
|
+
# Example: playcraft skills init-atom-tree --intent "mahjong,tile,match,stacking,puzzle"
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
**Orchestrator next step (ring 1, before Developer build)** — not part of ref-flow selection, but required for a runnable engine skeleton:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
playcraft remix init-template --from-atom-tree
|
|
93
|
+
npm install && npm run verify:contract
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
This should give you a valid `docs/atom-tree.json` shape with:
|
|
97
|
+
|
|
98
|
+
- `meta.skillsMatch`
|
|
99
|
+
- `meta.selectedAtoms`
|
|
100
|
+
- `selectionRevisions[]`
|
|
101
|
+
|
|
102
|
+
Open the JSON and review:
|
|
103
|
+
|
|
104
|
+
- `meta.skillsMatch.items[]` — which skills matched, why they matched, and which `role[]` tags hint at their likely place in the chain
|
|
105
|
+
- `meta.skillsMatch.mediaGroups[]` — reusable provider candidates grouped by semantic role, including each candidate's `role[]`
|
|
106
|
+
- existing `meta.selectedAtoms` — only if this is a revision pass
|
|
107
|
+
|
|
108
|
+
**Important**:
|
|
109
|
+
|
|
110
|
+
- `meta.selectedAtoms` stays a compact string array of selected `skillRef` values only.
|
|
111
|
+
- Do **not** encode execution status, role assignment, or produced file logs into `docs/atom-tree.json`.
|
|
112
|
+
- Use `role[]` as a selection and reading hint, not as an unquestioned truth source; always confirm against the actual Skill content.
|
|
113
|
+
- The human reading guide belongs in `docs/atom-tree.md`.
|
|
114
|
+
|
|
115
|
+
### Step 2.5: Choose the gameplay trunk
|
|
116
|
+
|
|
117
|
+
Pick the Skill that is **closest to the actual game direction**, not merely the highest-scoring generic match.
|
|
118
|
+
|
|
119
|
+
Check:
|
|
120
|
+
|
|
121
|
+
- is the core loop aligned?
|
|
122
|
+
- is the interaction pattern aligned?
|
|
123
|
+
- is the progression / failure pressure aligned?
|
|
124
|
+
- do its `role[]` tags suggest it is truly a gameplay trunk / gameplay-rule precedent rather than only a themed asset or helper?
|
|
125
|
+
- is it a real gameplay precedent, or only a theme / asset similarity?
|
|
126
|
+
|
|
127
|
+
The chosen trunk should become the anchor for the whole atom-tree.
|
|
128
|
+
|
|
129
|
+
If no gameplay Skill is truly strong:
|
|
130
|
+
|
|
131
|
+
- pick the best partial precedent only if it still helps reading
|
|
132
|
+
- record the mismatch clearly in `Selected Gameplay Trunk` and `Gaps`
|
|
133
|
+
|
|
134
|
+
### Step 3: Deep-read the trunk and adjacent strong candidates
|
|
135
|
+
|
|
136
|
+
Use:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
playcraft skills read "<skillRef>"
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Deep-read only the trunk and the nearby candidates that may materially help downstream readers.
|
|
143
|
+
|
|
144
|
+
For each strong candidate, extract:
|
|
145
|
+
|
|
146
|
+
- what the Skill is mainly for
|
|
147
|
+
- what to read first
|
|
148
|
+
- which imports or adjacent refs matter
|
|
149
|
+
- how its `role[]` helps explain where it sits in the trunk chain
|
|
150
|
+
- the single most important limitation or caveat
|
|
151
|
+
|
|
152
|
+
For the gameplay trunk specifically, identify:
|
|
153
|
+
|
|
154
|
+
- **hard deps** — actual imported units / components / infra worth reading alongside it
|
|
155
|
+
- **soft roles** — replaceable semantic slots such as `bgMusic`, `tileTextureSet`, `tutorialOverlay`, or similar role-driven providers
|
|
156
|
+
- **role evidence** — which `role[]` tags on the trunk, adjacent matches, or media candidates help you hypothesize the chain before confirming with actual reads
|
|
157
|
+
|
|
158
|
+
Do not write implementation steps here. You are building a reading map.
|
|
159
|
+
|
|
160
|
+
### Step 4: Resolve hard deps and role slots
|
|
161
|
+
|
|
162
|
+
Use a **role-guided, read-confirmed** process:
|
|
163
|
+
|
|
164
|
+
1. Start from the trunk's real imports / scaffold notes / adjacent refs.
|
|
165
|
+
2. Use `meta.skillsMatch.items[].role` to spot nearby Skills that likely act as infra, component, UI, audio, or helper precedents.
|
|
166
|
+
3. Use `meta.skillsMatch.mediaGroups[].role` to spot likely providers for replaceable slots.
|
|
167
|
+
4. Confirm the candidate by reading the actual Skill before treating it as selected or resolved.
|
|
168
|
+
|
|
169
|
+
For each dependency or slot discovered from the trunk:
|
|
170
|
+
|
|
171
|
+
1. **Hard dep**
|
|
172
|
+
- If it is a real reusable precedent, include the referenced Skill in `meta.selectedAtoms`
|
|
173
|
+
- If it is infra with little standalone reading value, mention it in `Gameplay Assembly Link` without bloating `meta.selectedAtoms`
|
|
174
|
+
- If `role[]` suggests relevance but the actual Skill does not support the chain, drop it and note the mismatch mentally rather than forcing it in
|
|
175
|
+
|
|
176
|
+
2. **Soft role**
|
|
177
|
+
- Review `meta.skillsMatch.mediaGroups[]`
|
|
178
|
+
- Prefer candidates whose `role[]` clearly matches the semantic slot you are resolving
|
|
179
|
+
- If needed, search alternatives with:
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
playcraft skills filter --role bgMusic --json
|
|
183
|
+
playcraft skills filter --role tileTextureSet --json
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
- Confirm the substitute declares the same role before selecting it
|
|
187
|
+
|
|
188
|
+
3. **No fit**
|
|
189
|
+
- Record a real `miss`
|
|
190
|
+
- Do not force a weak candidate just to fill the slot
|
|
191
|
+
|
|
192
|
+
### Step 4.5: Use `role[]` to explain the chain, not replace reading
|
|
193
|
+
|
|
194
|
+
`role[]` is especially useful when several matched Skills are all "somewhat relevant" and you need to explain why one stays in the shortlist while another does not.
|
|
195
|
+
|
|
196
|
+
Use it to answer:
|
|
197
|
+
|
|
198
|
+
- which candidate looks like the **gameplay trunk**?
|
|
199
|
+
- which candidate looks like a **hard dep / adjacent unit**?
|
|
200
|
+
- which candidate looks like a **replaceable provider** for a semantic slot?
|
|
201
|
+
- which candidate only shares theme, but not the right role in the chain?
|
|
202
|
+
|
|
203
|
+
When `role[]` conflicts with what the Skill actually contains:
|
|
204
|
+
|
|
205
|
+
- trust the actual Skill content
|
|
206
|
+
- keep the misleading candidate out of `meta.selectedAtoms`
|
|
207
|
+
- mention the real miss or weaker fit in `Role Resolution` / `Gaps` when useful
|
|
208
|
+
|
|
209
|
+
### Step 4.6: Supplementary search for peripheral systems and wrapping
|
|
210
|
+
|
|
211
|
+
After resolving the trunk's direct deps and roles, revisit the peripheral systems and wrapping layers identified in Step 1. These often use different keywords from the core mechanic and are missed by the initial `init-atom-tree --intent`.
|
|
212
|
+
|
|
213
|
+
For each peripheral system or wrapper identified (e.g. "collection progress", "level/stage structure", "scene transitions", "unlock logic"):
|
|
214
|
+
|
|
215
|
+
1. Run a targeted search:
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
playcraft skills match --intent "collect,progress,counter,hud"
|
|
219
|
+
playcraft skills match --intent "level,stage,tutorial-scene,progression"
|
|
220
|
+
playcraft skills filter --role progressUI --json
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
2. Review results. If a Skill provides a reusable pattern for the peripheral system:
|
|
224
|
+
- Deep-read it with `playcraft skills read "<skillRef>"`
|
|
225
|
+
- Decide `use` / `skip` / `miss` as with any other role slot
|
|
226
|
+
- If `use`, add to `meta.selectedAtoms` and document in `Gameplay Assembly Link`
|
|
227
|
+
|
|
228
|
+
3. If no Skill matches, record it as a confirmed `miss` in Gaps with a note that a supplementary search was performed.
|
|
229
|
+
|
|
230
|
+
**Key principle**: Do not assume peripheral systems are always custom. A "collection counter" might have a reusable HUD skill; a "level structure" might have a scene-management skill; a "stage transition" might have an animation skill. Search first, then decide.
|
|
231
|
+
|
|
232
|
+
### Step 5: Assign `reuseLevel`
|
|
233
|
+
|
|
234
|
+
Use `Level 0-4` as reference strength:
|
|
235
|
+
|
|
236
|
+
| Level | Meaning |
|
|
237
|
+
| --------- | -------------------------------------------- |
|
|
238
|
+
| `Level 4` | Direct precedent; highly aligned |
|
|
239
|
+
| `Level 3` | Strong precedent with some adaptation needed |
|
|
240
|
+
| `Level 2` | Useful skeleton or pattern |
|
|
241
|
+
| `Level 1` | Local idea/reference only |
|
|
242
|
+
| `Level 0` | No useful precedent |
|
|
243
|
+
|
|
244
|
+
Use this scale in `atom-tree.md` notes and summary tables.
|
|
245
|
+
|
|
246
|
+
### Step 6: Write the selected `meta.selectedAtoms` list
|
|
247
|
+
|
|
248
|
+
Keep `docs/atom-tree.json` minimal and opinionated.
|
|
249
|
+
|
|
250
|
+
Use this shape:
|
|
251
|
+
|
|
252
|
+
```json
|
|
253
|
+
{
|
|
254
|
+
"atoms": ["selected-gameplay-skill", "selected-adjacent-skill", "selected-role-provider"]
|
|
255
|
+
}
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
Rules:
|
|
259
|
+
|
|
260
|
+
- include the gameplay trunk first when it is a true selected precedent
|
|
261
|
+
- include only selected `skillRef` strings
|
|
262
|
+
- keep the list small and high-signal
|
|
263
|
+
- do not add role-resolution objects, dependency edges, or reading notes to JSON
|
|
264
|
+
|
|
265
|
+
### Step 7: Generate and complete `docs/atom-tree.md`
|
|
266
|
+
|
|
267
|
+
Use the CLI skeleton if helpful:
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
playcraft skills gen-atom-tree-md [--force]
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
Treat the generated file as a starter only. The final markdown must reflect the real trunk-first reading guide.
|
|
274
|
+
|
|
275
|
+
### Step 7.1: Required sections in `atom-tree.md`
|
|
276
|
+
|
|
277
|
+
1. `Acceptance Criteria`
|
|
278
|
+
2. `Selected Gameplay Trunk`
|
|
279
|
+
3. `Gameplay Assembly Link`
|
|
280
|
+
4. `Selected Atoms Summary`
|
|
281
|
+
5. `Selected Skill Notes`
|
|
282
|
+
6. `Role Resolution`
|
|
283
|
+
7. `Gaps`
|
|
284
|
+
|
|
285
|
+
## Section Contract
|
|
286
|
+
|
|
287
|
+
### 1. `Acceptance Criteria`
|
|
288
|
+
|
|
289
|
+
Use:
|
|
290
|
+
|
|
291
|
+
| itemId | Criteria |
|
|
292
|
+
| ------ | -------- |
|
|
293
|
+
|
|
294
|
+
Rules:
|
|
295
|
+
|
|
296
|
+
- one short semantic line per item
|
|
297
|
+
- no implementation steps
|
|
298
|
+
- no repeated long-form spec
|
|
299
|
+
|
|
300
|
+
### 2. `Selected Gameplay Trunk`
|
|
301
|
+
|
|
302
|
+
Use:
|
|
303
|
+
|
|
304
|
+
| trunk | whyClosest | readFirst | keyImportsOrRoles |
|
|
305
|
+
| ----- | ---------- | --------- | ----------------- |
|
|
306
|
+
|
|
307
|
+
Rules:
|
|
308
|
+
|
|
309
|
+
- exactly one primary trunk when a real gameplay precedent exists
|
|
310
|
+
- if the fit is partial, say so directly
|
|
311
|
+
- `keyImportsOrRoles` should stay compact; the full explanation belongs below in `Gameplay Assembly Link`
|
|
312
|
+
|
|
313
|
+
### 3. `Gameplay Assembly Link`
|
|
314
|
+
|
|
315
|
+
Use:
|
|
316
|
+
|
|
317
|
+
| from | relation | requiredBy | selected | decision | why | readFirst |
|
|
318
|
+
| ---- | -------- | ---------- | -------- | -------- | --- | --------- |
|
|
319
|
+
|
|
320
|
+
`relation` should be one of:
|
|
321
|
+
|
|
322
|
+
- `trunk`
|
|
323
|
+
- `hard dep`
|
|
324
|
+
- `role`
|
|
325
|
+
|
|
326
|
+
Rules:
|
|
327
|
+
|
|
328
|
+
- narrate one readable gameplay organization chain starting from the selected trunk
|
|
329
|
+
- `selected` may be `—` when the slot is a true miss
|
|
330
|
+
- `decision` should be `use`, `skip`, or `miss`
|
|
331
|
+
- use `role[]` evidence to explain why a node belongs in the chain when that evidence is helpful, but do not rely on role labels alone
|
|
332
|
+
- keep this as a **reading / organization view**, not an execution sequence
|
|
333
|
+
- this link lives in `docs/atom-tree.md` only; do not mirror it into JSON
|
|
334
|
+
|
|
335
|
+
### 4. `Selected Atoms Summary`
|
|
336
|
+
|
|
337
|
+
Use:
|
|
338
|
+
|
|
339
|
+
| atom | useFor | whySelected | readFirst | linkOrScaffoldHint |
|
|
340
|
+
| ---- | ------ | ----------- | --------- | ------------------ |
|
|
341
|
+
|
|
342
|
+
Rules:
|
|
343
|
+
|
|
344
|
+
- `atom` must come from `meta.selectedAtoms`
|
|
345
|
+
- `useFor` should describe the main downstream value
|
|
346
|
+
- `whySelected` should explain why it survived the shortlist
|
|
347
|
+
- `linkOrScaffoldHint` should remain short and practical
|
|
348
|
+
|
|
349
|
+
### 5. `Selected Skill Notes`
|
|
350
|
+
|
|
351
|
+
Use:
|
|
352
|
+
|
|
353
|
+
```markdown
|
|
354
|
+
### {atom}
|
|
355
|
+
|
|
356
|
+
- Main Value: ...
|
|
357
|
+
- Read First: ...
|
|
358
|
+
- Key Files / Refs: ...
|
|
359
|
+
- Watch Out: ...
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
Rules:
|
|
363
|
+
|
|
364
|
+
- keep it short
|
|
365
|
+
- guide reading, do not prescribe implementation
|
|
366
|
+
- focus on practical reuse signal and real reference value
|
|
367
|
+
|
|
368
|
+
### 6. `Role Resolution`
|
|
369
|
+
|
|
370
|
+
Use:
|
|
371
|
+
|
|
372
|
+
| role | selectedProvider | decision | source | why | notes |
|
|
373
|
+
| ---- | ---------------- | -------- | ------ | --- | ----- |
|
|
374
|
+
|
|
375
|
+
Rules:
|
|
376
|
+
|
|
377
|
+
- one row per role that materially matters to the chosen gameplay trunk
|
|
378
|
+
- prefer role names that already appear in `skillsMatch.matches[].role` or `skillsMatch.mediaGroups[].role` when they are semantically correct
|
|
379
|
+
- `decision` should be `use`, `skip`, or `miss`
|
|
380
|
+
- `source` may point to `mediaGroups`, `filter --role`, a direct import context, or a matched Skill whose `role[]` helped identify the slot
|
|
381
|
+
- when no provider fits, leave `selectedProvider` as `—` and mark `miss`
|
|
382
|
+
|
|
383
|
+
### 7. `Gaps`
|
|
384
|
+
|
|
385
|
+
Use:
|
|
386
|
+
|
|
387
|
+
| need | whyMissing | impact |
|
|
388
|
+
| ---- | ---------- | ------ |
|
|
389
|
+
|
|
390
|
+
Rules:
|
|
391
|
+
|
|
392
|
+
- list only true gaps
|
|
393
|
+
- prefer precise misses over vague uncertainty
|
|
394
|
+
- do not pad this section
|
|
395
|
+
|
|
396
|
+
## Output Quality Bar
|
|
397
|
+
|
|
398
|
+
Good output should feel like a fast reading guide that tells the next reader:
|
|
399
|
+
|
|
400
|
+
- which Skill is the gameplay trunk
|
|
401
|
+
- how the important adjacent Skills organize around it
|
|
402
|
+
- which role slots were actually resolved
|
|
403
|
+
- where the real misses are
|
|
404
|
+
|
|
405
|
+
Bad output:
|
|
406
|
+
|
|
407
|
+
- copies full Skill docs
|
|
408
|
+
- turns into implementation planning
|
|
409
|
+
- writes a dependency graph into JSON
|
|
410
|
+
- lists skills without explaining why they matter
|
|
411
|
+
- floods the file with weak candidates
|
|
412
|
+
|
|
413
|
+
## Writing the Gameplay Assembly Link
|
|
414
|
+
|
|
415
|
+
Use this mental model:
|
|
416
|
+
|
|
417
|
+
```text
|
|
418
|
+
gameplay trunk
|
|
419
|
+
├── hard deps ← real imported units / adjacent components worth reading
|
|
420
|
+
├── soft roles ← replaceable slots resolved by provider choice or miss
|
|
421
|
+
└── downstream refs ← UI / VFX / audio / helper references that improve reuse
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
### How to build the link
|
|
425
|
+
|
|
426
|
+
1. Start from the selected gameplay trunk.
|
|
427
|
+
2. Inspect its imports / scaffold notes / adjacent refs.
|
|
428
|
+
3. Use `role[]` on matched Skills and media candidates to propose likely hard deps and soft slots.
|
|
429
|
+
4. Separate **hard deps** from **soft roles**.
|
|
430
|
+
5. For each role, record `use`, `skip`, or `miss`.
|
|
431
|
+
6. Keep only the selected, high-value Skills in `meta.selectedAtoms`.
|
|
432
|
+
7. Write the full organization story in `Gameplay Assembly Link` and `Role Resolution`.
|
|
433
|
+
|
|
434
|
+
### Completeness checklist
|
|
435
|
+
|
|
436
|
+
```text
|
|
437
|
+
□ Gameplay trunk is explicitly named
|
|
438
|
+
□ Every selected adjacent Skill has a clear reason to stay in meta.selectedAtoms
|
|
439
|
+
□ Every material role is resolved as use / skip / miss
|
|
440
|
+
□ True misses are recorded in Gaps
|
|
441
|
+
□ atom-tree.md explains how the selected Skills organize the game
|
|
442
|
+
□ atom-tree.json remains a compact string list, not a graph
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
## Step 8: Validate and link (mandatory final step)
|
|
446
|
+
|
|
447
|
+
After writing `atom-tree.json` + `atom-tree.md`, run these two commands in order:
|
|
448
|
+
|
|
449
|
+
```bash
|
|
450
|
+
# 1. Validate — confirms the JSON contract is still valid
|
|
451
|
+
playcraft skills validate-atom-tree-selection
|
|
452
|
+
|
|
453
|
+
# 2. Link — symlinks selected skills into .claude/skills/ so downstream agents can read them locally
|
|
454
|
+
playcraft skills link --from-atom-tree --prune
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
**Do not STOP until both commands succeed.** If validate fails, fix the JSON and retry. If link fails, check the error and resolve it.
|
|
458
|
+
|
|
459
|
+
**Validation reminder**:
|
|
460
|
+
|
|
461
|
+
- `meta.selectedAtoms` should contain selected `skillRef` strings only
|
|
462
|
+
- `skillsMatch` should remain the broader match context
|
|
463
|
+
- the gameplay organization link should exist in `docs/atom-tree.md`, not in JSON
|
|
464
|
+
|
|
465
|
+
**Verification:** After link completes, confirm `.claude/skills/.playcraft-dag-links.json` exists. This file proves the batch link was executed.
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# Skill 内容四层价值模型
|
|
2
|
+
|
|
3
|
+
> **读者**:Developer / TA / Game Designer — 任何需要读取和使用 Skill 的 Agent。
|
|
4
|
+
> **用途**:理解一个 Skill 提供了哪些可复用价值、怎么用、什么不能做。
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Skill 类型速查
|
|
9
|
+
|
|
10
|
+
PlayCraft Skill 库按后缀分类,不同类型提供不同维度的复用价值:
|
|
11
|
+
|
|
12
|
+
| Skill 后缀 | 类型 | 核心价值 | 提供的复用内容 |
|
|
13
|
+
| -------------- | ------------ | ---------------------------------- | ------------------------------------------------------------------------------------------------------------- |
|
|
14
|
+
| `.aigameplay` | 核心玩法规则 | 完整的 PGS 规则定义 + reducer 接口 | `ref/pgs-schema.json`(规则骨架)、`ref/reducer.template.ts`(接口约束)、testCases(验证用例)、分步函数签名 |
|
|
15
|
+
| `.aicomponent` | 可复用组件 | 独立的代码模块 + 集成契约 | `ref/` 中的源码、Adapter(Provides/Requires/Consumed by)、Key API 签名、配置参数、使用示例 |
|
|
16
|
+
| `.aiconfig` | 配置/数据 | 数据结构、难度曲线、平台配置 | 配置 schema、默认参数、生成器逻辑 |
|
|
17
|
+
| `.aiimage` | 图像资产 | 图像生成 prompt + 风格参考 | prompt 模板、风格约束、后处理参数 |
|
|
18
|
+
| `.aiaudio` | 音频资产 | 音频生成 prompt + 处理参数 | 音效/BGM prompt、时长参数、循环设置 |
|
|
19
|
+
| `.aivalidator` | 验证/测试 | 自动化质量检查逻辑 | 检查规则、通过标准、边界条件 |
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 四层价值模型
|
|
24
|
+
|
|
25
|
+
每个 Skill 提供的复用价值分布在四个层级上。下游 Agent 读取 Skill 时必须按这四个层级结构化提取信息:
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
┌─────────────────────────────────────────────────────┐
|
|
29
|
+
│ L4 · Scaffold 可直接复用的代码 最高价值 │
|
|
30
|
+
│ → ref/ 源码、类实现、完整模块代码 │
|
|
31
|
+
│ → 使用方式:scaffold 后直接 import 使用 │
|
|
32
|
+
│ → 有现成的就直接用,比自己从零写更快更稳 │
|
|
33
|
+
├─────────────────────────────────────────────────────┤
|
|
34
|
+
│ L3 · Assets 预制资产 高价值 │
|
|
35
|
+
│ → mediaGroups 图片/音频/3D 模型 │
|
|
36
|
+
│ → 使用方式:playcraft skills link 后做后处理 │
|
|
37
|
+
│ → 约束:存在匹配项时必须 link,不得无视后从零生成 │
|
|
38
|
+
├─────────────────────────────────────────────────────┤
|
|
39
|
+
│ L2 · Recipe AI 可再生产的模板/参数 中价值 │
|
|
40
|
+
│ → prompt 模板、生成参数、配置范例 │
|
|
41
|
+
│ → 使用方式:作为 AI 生产的输入指导,按参数生成 │
|
|
42
|
+
│ → 约束:不可脱离 Recipe 约束自由发挥 │
|
|
43
|
+
├─────────────────────────────────────────────────────┤
|
|
44
|
+
│ L1 · Reference 设计参考信息 基础价值 │
|
|
45
|
+
│ → 布局坐标、状态机设计、规则逻辑、API 设计模式 │
|
|
46
|
+
│ → 使用方式:作为实现的蓝图参考,非直接代码复用 │
|
|
47
|
+
│ → 约束:借鉴思路但不可照搬不适用的部分 │
|
|
48
|
+
└─────────────────────────────────────────────────────┘
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 每个 Skill 的结构化字段
|
|
54
|
+
|
|
55
|
+
下游 Agent 读取 SKILL.md 时,必须关注以下标准字段:
|
|
56
|
+
|
|
57
|
+
| SKILL.md 字段 | 含义 | 谁最关注 | 提取内容 |
|
|
58
|
+
| ------------------------------- | ----------------------------------------------------- | ------------------- | ------------------------------------------------ |
|
|
59
|
+
| **Recipe** | 产出物 + 参考文件 + 核心约束 + 变体 fork 指引 | Developer, TA | 做什么、产出什么、fork 变体方式 |
|
|
60
|
+
| **Result** | 最终产物文件 + 格式 + 验证方式 | Developer | 做到什么算完成 |
|
|
61
|
+
| **Binding** | 绑定角色 + 挂载目标路径 + 接口契约 | Developer | 代码应该放在哪、接口是什么 |
|
|
62
|
+
| **Scaffold** | scaffold 的目标路径 + 源路径 | Developer | `playcraft skills scaffold` 的产出位置 |
|
|
63
|
+
| **Adapter** | Provides / Requires / Consumed by / Integration point | Developer | 模块依赖图、集成入口 |
|
|
64
|
+
| **Imports** | 硬依赖 / 软槽位依赖 | Developer, TA | 必须加载的外部模块 + 可替换的资源 |
|
|
65
|
+
| **Key API / 关键接口** | TypeScript 接口签名、方法列表 | Developer | 构造参数、方法名、返回值类型 |
|
|
66
|
+
| **配置** | 可配置参数 + 默认值 | Developer, TA | 哪些行为可通过 config 修改 |
|
|
67
|
+
| **使用示例** | 代码示例 | Developer | 最小可用调用链 |
|
|
68
|
+
| **渲染集成** (仅 `.aigameplay`) | 逻辑与动画分离原则、分步函数列表 | Developer | 禁止 dispatch() 全量重建,必须用分步函数驱动动画 |
|
|
69
|
+
| **Skill Definition** | 工具列表 + prompt_extension | Orchestrator, Agent | AI 执行时的工具和指令扩展 |
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Skill 读取三层次(必须遵守)
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
Level 1 · SKILL.md 设计文档 — 了解"这个 Skill 是什么、提供什么"
|
|
77
|
+
Level 2 · ref/ 源码 — 提取真实类签名、事件名、config 结构(BINDING AUTHORITY)
|
|
78
|
+
Level 3 · assets/ 实际文件 — 确认 frame 名、文件路径、资源尺寸
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**铁律**:SKILL.md 和源码可能有出入 → **以源码为准**。只读 SKILL.md 不算理解 Skill;不读源码就集成的代码必出 bug。
|
|
82
|
+
|
|
83
|
+
### Developer 的读取倾向(L1–L4 通用)
|
|
84
|
+
|
|
85
|
+
无论 skillRef 对应哪个复用层级,Developer 的底层姿态是一致的:**先读代码,再实践**。
|
|
86
|
+
|
|
87
|
+
| 层级 | 标签 | SKILL.md 告诉你 | ref/ 源码告诉你 | 落地方式 |
|
|
88
|
+
| ------------ | ------------- | ----------------------------------- | -------------------------------------------------- | -------------------------------------- |
|
|
89
|
+
| L4 Scaffold | `scaffold` | 能力入口、产出物、scaffold 目标路径 | **构造参数、方法签名、事件名**(与文档可能有出入) | scaffold import 后按源码接口集成 |
|
|
90
|
+
| L3 Assets | `mediaGroups` | 用法、Binding 挂载点 | **frame 名、路径格式、atlas 结构** | 文件已由 ref-flow link,按源码确认绑定 |
|
|
91
|
+
| L2 Recipe | `reference` | 状态机结构、事件模型 | **实际数据流、dispatch 约束、分步函数签名** | 借鉴核心架构,替换业务逻辑 |
|
|
92
|
+
| L1 Reference | `design-only` | API 设计思路、算法概要 | **实际接口约束、边界条件** | 借鉴思路,不照搬不适用部分 |
|
|
93
|
+
|
|
94
|
+
> L4 也要读源码——scaffold 进来的类其构造参数可能与文档不一致。这不是"勤快程度"问题,是正确性问题。
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Skill 库层次结构(从 abstraction-methodology)
|
|
99
|
+
|
|
100
|
+
PlayCraft Skill 库采用分层架构,每一层有独立的权威边界:
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
engine ← 引擎基础设施(框架适配、布局系统、场景管理、状态管理)
|
|
104
|
+
asset ← 资源层(可替换资源族:音频/配置/图片,无行为权威)
|
|
105
|
+
gameplay ← 玩法真理层:规则、状态、合法操作、数据结构、算法
|
|
106
|
+
├── gameplay-rule (核心玩法规则:胜负判定、进度、实体调度)
|
|
107
|
+
├── gameplay-data (数据抽象:类型定义、关卡格式、配置 schema)
|
|
108
|
+
├── gameplay-system (补充子系统:货币、等级、提示、undo)
|
|
109
|
+
└── gameplay-entity (实体定义:自治游戏对象,组件/状态机/物理)
|
|
110
|
+
visual ← 非 UI 世界视觉:对象外观、场景合成、VFX 映射
|
|
111
|
+
ui ← 屏幕空间 UI:引导、转场、HUD、结果面板
|
|
112
|
+
misc ← 图外:验证器、质量闸门、测试脚本
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
**关键关系**:
|
|
116
|
+
|
|
117
|
+
- `gameplay` 拥有玩法真理,不依赖 `visual` 也可逻辑完整
|
|
118
|
+
- `visual` 和 `ui` 消费 gameplay 状态,不得反向拥有玩法真理
|
|
119
|
+
- `.aigameplay` 内部区分 Entity Layer(数据结构)和 Mechanics Layer(交互规则),下游可只复用 Entity Layer 而替换 Mechanics
|
|
120
|
+
- `.aicomponent` 声明 Adapter(Provides/Requires/Consumed by),形成显式依赖图
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## 复用级别定义
|
|
125
|
+
|
|
126
|
+
在 atom-tree.md 的 `Matched Skills Summary` 中,每个 skillRef 应声明其复用级别:
|
|
127
|
+
|
|
128
|
+
| 复用级别 | 标签 | 含义 | 编码约束 |
|
|
129
|
+
| ------------- | -------------- | ------------------------------------------------------- | ------------------------------------------------ |
|
|
130
|
+
| `scaffold` | L3-L4 直接复用 | Skill 有 ref/ 源码且功能高度匹配,scaffold 后改配置即可 | 主动参考 scaffold 代码,能省去大量从零实现的工作 |
|
|
131
|
+
| `reference` | L2 骨架复用 | 架构匹配但需替换业务逻辑,保留核心设计模式 | 借鉴状态机结构/事件名/数据流等核心模式 |
|
|
132
|
+
| `design-only` | L1 设计参考 | Skill 提供设计灵感但功能差异大,仅借鉴设计思路 | 参考 API 设计/算法/布局/状态机思路 |
|
|
133
|
+
|
|
134
|
+
**原则**:Skill 库的价值在于让你站在已有高质量实现的肩膀上——不是为了合规填表。读了、参考了、产出更好代码就是好的。如果某个 Skill 确实不适用,记录原因后从零实现完全 OK。
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## mediaGroups 使用纪律
|
|
139
|
+
|
|
140
|
+
`skillsMatch.mediaGroups` 包含自动发现的可复用预制资产。下游 Agent 必须:
|
|
141
|
+
|
|
142
|
+
1. **读取** mediaGroups 并对每个 `candidates[]` entry 判断匹配度
|
|
143
|
+
2. **决策**:`use`(直接 link + 后处理)/ `skip`(记录原因)/ `need-production`(需 AI 生成)
|
|
144
|
+
3. **记录**:在 atom-tree.md 的 `mediaGroups Disposition` 表格中填写决策
|
|
145
|
+
4. **禁止**:mediaGroups 中有匹配项却无视、从零生成
|