@playcraft/cli 0.1.42 → 0.1.43-beta
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/README.md +62 -3
- package/SKILLS_REGISTRY.md +149 -0
- package/dist/agent/local-backend.js +1 -1
- package/dist/auth/account-activation.js +157 -0
- package/dist/auth/messages.js +30 -0
- package/dist/cli-root-help.js +2 -0
- package/dist/commands/build-all.js +5 -19
- package/dist/commands/build-temp.js +26 -0
- package/dist/commands/build.js +15 -28
- package/dist/commands/create.js +26 -33
- package/dist/commands/image.js +2 -6
- package/dist/commands/login.js +84 -42
- package/dist/commands/platform-skills.generated.js +19 -0
- package/dist/commands/playable.js +53 -0
- package/dist/commands/skills.js +4 -0
- package/dist/commands/tools-3d.js +11 -0
- package/dist/commands/tools-batch.js +87 -0
- package/dist/commands/tools-generation.js +69 -137
- package/dist/commands/tools-utils.js +0 -12
- package/dist/commands/tools.js +2 -2
- package/dist/commands/video.js +122 -0
- package/dist/commands/workspace-runtime.js +54 -0
- package/dist/commands/workspace.js +40 -0
- package/dist/config.js +59 -4
- package/dist/index.js +40 -3
- package/dist/project-skills/builtin-import.js +225 -0
- package/dist/project-skills/commands.js +77 -0
- package/dist/project-skills/lifecycle.js +28 -0
- package/dist/project-skills/local-run.js +112 -0
- package/dist/project-skills/local-store.js +221 -0
- package/dist/project-skills/messages.js +80 -0
- package/dist/project-skills/reconcile.js +62 -0
- package/dist/project-skills/remote-cache.js +51 -0
- package/dist/project-skills/validation.js +19 -0
- package/dist/recording/messages.js +40 -0
- package/dist/recording/project-digest.js +85 -0
- package/dist/recording/recorder.js +293 -0
- package/dist/recording/scenario.js +50 -0
- package/dist/remix/clone.js +2 -0
- package/dist/remix/init-template.js +2 -0
- package/dist/remix/pull.js +2 -0
- package/dist/remix/push.js +21 -1
- package/dist/skill-registry/client.js +345 -0
- package/dist/skill-registry/commands.js +180 -0
- package/dist/skill-registry/evaluation-client.js +156 -0
- package/dist/skill-registry/evaluation-commands.js +174 -0
- package/dist/skill-registry/messages.js +177 -0
- package/dist/skill-registry/package.js +275 -0
- package/dist/skill-registry/platform-package.js +100 -0
- package/dist/utils/agent-api-client.js +210 -30
- package/dist/utils/environment-endpoints.js +17 -0
- package/dist/utils/error-diagnostics.js +20 -0
- package/dist/utils/playcraft-http-client.js +6 -4
- package/dist/utils/tool-operation-journal.js +124 -0
- package/dist/utils/video-evidence-git.js +81 -0
- package/dist/video-replication/client.js +234 -0
- package/dist/video-replication/comparison-evidence.js +149 -0
- package/dist/video-replication/comparison-files.js +57 -0
- package/dist/video-replication/comparison-log.js +72 -0
- package/dist/video-replication/comparison-messages.js +104 -0
- package/dist/video-replication/comparison-output.js +63 -0
- package/dist/video-replication/comparison-preflight.js +66 -0
- package/dist/video-replication/comparison.js +230 -0
- package/dist/video-replication/diagnostics.js +41 -0
- package/dist/video-replication/evidence.js +165 -0
- package/dist/video-replication/media.js +112 -0
- package/dist/video-replication/messages.js +97 -0
- package/dist/workspace/messages.js +67 -0
- package/dist/workspace/transfer-client.js +233 -0
- package/dist/workspace/transfer-errors.js +48 -0
- package/dist/workspace-runtime/codex/app-server.js +1040 -0
- package/dist/workspace-runtime/codex/compact.js +46 -0
- package/dist/workspace-runtime/codex/config-toml.js +107 -0
- package/dist/workspace-runtime/codex/jsonrpc-stdio.js +145 -0
- package/dist/workspace-runtime/codex/launcher-client.js +177 -0
- package/dist/workspace-runtime/codex/loopback.js +146 -0
- package/dist/workspace-runtime/codex/mcp-config.js +39 -0
- package/dist/workspace-runtime/codex/model-broker.js +263 -0
- package/dist/workspace-runtime/codex/native-adapter.js +9 -0
- package/dist/workspace-runtime/codex/permissions.js +70 -0
- package/dist/workspace-runtime/codex/thread-image.js +38 -0
- package/dist/workspace-runtime/codex/ui-instructions.js +4 -0
- package/dist/workspace-runtime/codex/ui-tools.js +186 -0
- package/dist/workspace-runtime/codex/work-mode.js +15 -0
- package/dist/workspace-runtime/main.js +10 -0
- package/dist/workspace-runtime/persistence/journal.js +365 -0
- package/dist/workspace-runtime/persistence/native-subagents.js +162 -0
- package/dist/workspace-runtime/persistence/sqlite-client.js +77 -0
- package/dist/workspace-runtime/persistence/sqlite-worker.js +1161 -0
- package/dist/workspace-runtime/persistence/stopped-execution.js +77 -0
- package/dist/workspace-runtime/previews/output.js +36 -0
- package/dist/workspace-runtime/previews/publish.js +262 -0
- package/dist/workspace-runtime/previews/single-file.js +43 -0
- package/dist/workspace-runtime/processes/managed-writes.js +69 -0
- package/dist/workspace-runtime/production/content-changes.js +36 -0
- package/dist/workspace-runtime/production/contracts.js +19 -0
- package/dist/workspace-runtime/production/controller.js +225 -0
- package/dist/workspace-runtime/production/dependencies.js +60 -0
- package/dist/workspace-runtime/production/native.js +239 -0
- package/dist/workspace-runtime/production/processes.js +102 -0
- package/dist/workspace-runtime/production/save-command.js +35 -0
- package/dist/workspace-runtime/production/source-archive.js +137 -0
- package/dist/workspace-runtime/production/source-copy.js +92 -0
- package/dist/workspace-runtime/production/stages.js +354 -0
- package/dist/workspace-runtime/production/storage.js +75 -0
- package/dist/workspace-runtime/serve.js +281 -0
- package/dist/workspace-runtime/server/auth.js +21 -0
- package/dist/workspace-runtime/server/connectivity.js +201 -0
- package/dist/workspace-runtime/server/desktop-host.js +429 -0
- package/dist/workspace-runtime/server/desktop-preview-config.js +81 -0
- package/dist/workspace-runtime/server/desktop-preview-service.js +157 -0
- package/dist/workspace-runtime/server/desktop-preview-static.js +53 -0
- package/dist/workspace-runtime/server/desktop-preview.js +189 -0
- package/dist/workspace-runtime/server/dispatch.js +1335 -0
- package/dist/workspace-runtime/server/endpoints.js +21 -0
- package/dist/workspace-runtime/server/execution-group.js +90 -0
- package/dist/workspace-runtime/server/http.js +1291 -0
- package/dist/workspace-runtime/server/lock.js +53 -0
- package/dist/workspace-runtime/server/rfb-watch-gate.js +168 -0
- package/dist/workspace-runtime/server/session-restore.js +84 -0
- package/dist/workspace-runtime/server/source-uploader.js +138 -0
- package/dist/workspace-runtime/server/terminal-host.js +366 -0
- package/dist/workspace-runtime/server/types.js +1 -0
- package/dist/workspace-runtime/server/workspace-transfer.js +168 -0
- package/dist/workspace-runtime/workspaces/archive.js +207 -0
- package/dist/workspace-runtime/workspaces/artifact-events.js +55 -0
- package/dist/workspace-runtime/workspaces/artifact-files.js +199 -0
- package/dist/workspace-runtime/workspaces/artifact-receipts.js +89 -0
- package/dist/workspace-runtime/workspaces/artifacts.js +282 -0
- package/dist/workspace-runtime/workspaces/asset-library-import.js +366 -0
- package/dist/workspace-runtime/workspaces/attachment-content.js +73 -0
- package/dist/workspace-runtime/workspaces/attachments.js +185 -0
- package/dist/workspace-runtime/workspaces/batch-commit.js +142 -0
- package/dist/workspace-runtime/workspaces/binary-content.js +65 -0
- package/dist/workspace-runtime/workspaces/binary-write.js +112 -0
- package/dist/workspace-runtime/workspaces/cli-context.js +23 -0
- package/dist/workspace-runtime/workspaces/cli-credentials.js +111 -0
- package/dist/workspace-runtime/workspaces/composer-context.js +147 -0
- package/dist/workspace-runtime/workspaces/context-error.js +2 -0
- package/dist/workspace-runtime/workspaces/dependencies.js +264 -0
- package/dist/workspace-runtime/workspaces/developer-command.js +64 -0
- package/dist/workspace-runtime/workspaces/directories.js +137 -0
- package/dist/workspace-runtime/workspaces/directory-access.js +37 -0
- package/dist/workspace-runtime/workspaces/directory-attachments.js +245 -0
- package/dist/workspace-runtime/workspaces/directory-create.js +57 -0
- package/dist/workspace-runtime/workspaces/directory-maintenance.js +111 -0
- package/dist/workspace-runtime/workspaces/directory-stats.js +49 -0
- package/dist/workspace-runtime/workspaces/disk-snapshot.js +31 -0
- package/dist/workspace-runtime/workspaces/empty-template.js +42 -0
- package/dist/workspace-runtime/workspaces/file-content.js +48 -0
- package/dist/workspace-runtime/workspaces/files-search.js +116 -0
- package/dist/workspace-runtime/workspaces/files.js +150 -0
- package/dist/workspace-runtime/workspaces/git-credential-broker.js +312 -0
- package/dist/workspace-runtime/workspaces/git-credential-helper.js +68 -0
- package/dist/workspace-runtime/workspaces/git-direct-store.js +155 -0
- package/dist/workspace-runtime/workspaces/git.js +670 -0
- package/dist/workspace-runtime/workspaces/instructions.js +56 -0
- package/dist/workspace-runtime/workspaces/json5-edit.js +170 -0
- package/dist/workspace-runtime/workspaces/library-attachments.js +268 -0
- package/dist/workspace-runtime/workspaces/optional-platform-skills.js +14 -0
- package/dist/workspace-runtime/workspaces/parameters.js +272 -0
- package/dist/workspace-runtime/workspaces/prepare.js +278 -0
- package/dist/workspace-runtime/workspaces/registry.js +251 -0
- package/dist/workspace-runtime/workspaces/remix-references.js +301 -0
- package/dist/workspace-runtime/workspaces/revisions.js +31 -0
- package/dist/workspace-runtime/workspaces/session-image.js +104 -0
- package/dist/workspace-runtime/workspaces/shared-git.js +40 -0
- package/dist/workspace-runtime/workspaces/skill-artifact-loader.js +95 -0
- package/dist/workspace-runtime/workspaces/skills.js +191 -0
- package/dist/workspace-runtime/workspaces/transfer-quota.js +69 -0
- package/dist/workspace-runtime/workspaces/transfer.js +471 -0
- package/dist/workspace-runtime/workspaces/turn-changes.js +75 -0
- package/dist/workspace-runtime/workspaces/video-attachments.js +49 -0
- package/package.json +15 -5
- package/project-template/.claude/agents/refs/ta-image-generation-detail.md +123 -67
- package/project-template/.claude/skills/playcraft-image-generation/SKILL.md +63 -135
- package/project-template/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +33 -42
- package/project-template/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +20 -18
- package/project-template/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +7 -6
- package/project-template/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +39 -39
- package/project-template/.claude/skills/playcraft-replica-validation/SKILL.md +25 -0
- package/project-template/.claude/skills/playcraft-replica-validation/references/contracts.md +79 -0
- package/project-template/.claude/skills/playcraft-video-understanding/SKILL.md +29 -0
- package/project-template/.claude/skills/playcraft-video-understanding/references/contracts.md +37 -0
- package/project-template-v2/.claude/agents/artist.md +82 -0
- package/project-template-v2/.claude/agents/developer.md +153 -0
- package/project-template-v2/.claude/agents/game-designer.md +264 -0
- package/project-template-v2/.claude/agents/refs/artist-art-style-catalog.md +533 -0
- package/project-template-v2/.claude/agents/refs/artist-color-audio-recipes.md +153 -0
- package/project-template-v2/.claude/agents/refs/artist-dimension-axis.md +27 -0
- package/project-template-v2/.claude/agents/refs/artist-master-composite-recipes.md +208 -0
- package/project-template-v2/.claude/agents/refs/atom-skill-library.md +81 -0
- package/project-template-v2/.claude/agents/refs/developer-impl-cookbook.md +432 -0
- package/project-template-v2/.claude/agents/refs/framework-5-component-filter.md +252 -0
- package/project-template-v2/.claude/agents/refs/framework-game-feel-juice.md +266 -0
- package/project-template-v2/.claude/agents/refs/framework-mda.md +147 -0
- package/project-template-v2/.claude/agents/refs/game-designer-gameplay-sufficiency.md +123 -0
- package/project-template-v2/.claude/agents/refs/ta-3d-flip-recipe.md +88 -0
- package/project-template-v2/.claude/agents/refs/ta-atlas-deliverable-standard.md +67 -0
- package/project-template-v2/.claude/agents/refs/ta-batch-pipeline-recipes.md +120 -0
- package/project-template-v2/.claude/agents/refs/ta-image-generation-detail.md +300 -0
- package/project-template-v2/.claude/agents/refs/ta-image-ops-reference.md +495 -0
- package/project-template-v2/.claude/agents/refs/ta-pipeline-cookbook.md +1141 -0
- package/project-template-v2/.claude/agents/refs/ta-tools-reference.md +111 -0
- package/project-template-v2/.claude/agents/refs/ta-vfx-preset-catalog.md +365 -0
- package/project-template-v2/.claude/agents/refs/threejs-cannon-pitfalls.md +412 -0
- package/project-template-v2/.claude/agents/reviewer.md +75 -0
- package/project-template-v2/.claude/agents/technical-artist.md +86 -0
- package/project-template-v2/.claude/hooks/snapshot-milestone.mjs +243 -0
- package/project-template-v2/.claude/hooks/user-prompt.mjs +133 -0
- package/project-template-v2/.claude/settings.json +33 -0
- package/project-template-v2/.claude/skills/brainstorming/SKILL.md +161 -0
- package/project-template-v2/.claude/skills/brainstorming/scripts/frame-template.html +270 -0
- package/project-template-v2/.claude/skills/brainstorming/scripts/helper.js +177 -0
- package/project-template-v2/.claude/skills/brainstorming/scripts/server.cjs +354 -0
- package/project-template-v2/.claude/skills/brainstorming/scripts/start-server.sh +148 -0
- package/project-template-v2/.claude/skills/brainstorming/scripts/stop-server.sh +56 -0
- package/project-template-v2/.claude/skills/brainstorming/scripts/wait-for-selection.sh +62 -0
- package/project-template-v2/.claude/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
- package/project-template-v2/.claude/skills/brainstorming/visual-companion.md +309 -0
- package/project-template-v2/.claude/skills/playcraft-ad-psychology/SKILL.md +182 -0
- package/project-template-v2/.claude/skills/playcraft-art-style-guide/SKILL.md +123 -0
- package/project-template-v2/.claude/skills/playcraft-asset-state-sheet/SKILL.md +205 -0
- package/project-template-v2/.claude/skills/playcraft-audio-generation/SKILL.md +280 -0
- package/project-template-v2/.claude/skills/playcraft-batch-pipeline/SKILL.md +184 -0
- package/project-template-v2/.claude/skills/playcraft-build-optimizer/SKILL.md +306 -0
- package/project-template-v2/.claude/skills/playcraft-image-generation/SKILL.md +298 -0
- package/project-template-v2/.claude/skills/playcraft-image-generation/reference/build-sprite-sheet.template.mjs +123 -0
- package/project-template-v2/.claude/skills/playcraft-image-generation/reference/compare-style.template.mjs +254 -0
- package/project-template-v2/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +324 -0
- package/project-template-v2/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +97 -0
- package/project-template-v2/.claude/skills/playcraft-image-generation/reference/gen-edit-variants.template.mjs +118 -0
- package/project-template-v2/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +137 -0
- package/project-template-v2/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +397 -0
- package/project-template-v2/.claude/skills/playcraft-image-generation/reference/validate-sprite-sheet.template.mjs +296 -0
- package/project-template-v2/.claude/skills/playcraft-image-ops/SKILL.md +122 -0
- package/project-template-v2/.claude/skills/playcraft-image-processing/SKILL.md +219 -0
- package/project-template-v2/.claude/skills/playcraft-masking/SKILL.md +373 -0
- package/project-template-v2/.claude/skills/playcraft-playable-optimization/SKILL.md +161 -0
- package/project-template-v2/.claude/skills/playcraft-research/SKILL.md +215 -0
- package/project-template-v2/.claude/skills/playcraft-skill-recommender/SKILL.md +382 -0
- package/project-template-v2/.claude/skills/playcraft-sprite-generation/SKILL.md +423 -0
- package/project-template-v2/.claude/skills/playcraft-sprite-remix/SKILL.md +158 -0
- package/project-template-v2/.claude/skills/playcraft-sprite-sheet/SKILL.md +100 -0
- package/project-template-v2/.claude/skills/playcraft-storyboard/SKILL.md +167 -0
- package/project-template-v2/.claude/skills/playcraft-style-qa/SKILL.md +270 -0
- package/project-template-v2/.claude/skills/playcraft-text-rendering/SKILL.md +236 -0
- package/project-template-v2/.claude/skills/playcraft-vfx-animation/SKILL.md +130 -0
- package/project-template-v2/.claude/skills/playwright-cli/SKILL.md +390 -0
- package/project-template-v2/.claude/skills/playwright-cli/references/element-attributes.md +23 -0
- package/project-template-v2/.claude/skills/playwright-cli/references/playwright-tests.md +39 -0
- package/project-template-v2/.claude/skills/playwright-cli/references/request-mocking.md +87 -0
- package/project-template-v2/.claude/skills/playwright-cli/references/running-code.md +240 -0
- package/project-template-v2/.claude/skills/playwright-cli/references/session-management.md +226 -0
- package/project-template-v2/.claude/skills/playwright-cli/references/spec-driven-testing.md +308 -0
- package/project-template-v2/.claude/skills/playwright-cli/references/storage-state.md +275 -0
- package/project-template-v2/.claude/skills/playwright-cli/references/test-generation.md +134 -0
- package/project-template-v2/.claude/skills/playwright-cli/references/tracing.md +142 -0
- package/project-template-v2/.claude/skills/playwright-cli/references/video-recording.md +153 -0
- package/project-template-v2/.claude/skills/session-analyzer/SKILL.md +386 -0
- package/project-template-v2/.claude/skills/session-analyzer/scripts/execution-breakdown.mjs +182 -0
- package/project-template-v2/.claude/skills/session-analyzer/scripts/find-turns.mjs +72 -0
- package/project-template-v2/.claude/skills/session-analyzer/scripts/heavy-output.mjs +121 -0
- package/project-template-v2/.claude/skills/session-analyzer/scripts/resolve-session.mjs +102 -0
- package/project-template-v2/.claude/skills/session-analyzer/scripts/subagent-stats.mjs +127 -0
- package/project-template-v2/.claude/skills/session-analyzer/scripts/subagent-tool-timeline.mjs +106 -0
- package/project-template-v2/.claude/skills/session-analyzer/scripts/time-gaps.mjs +128 -0
- package/project-template-v2/.claude/skills/session-analyzer/scripts/turn-timeline.mjs +67 -0
- package/project-template-v2/.claude/snapshot.mjs +263 -0
- package/project-template-v2/.playcraft/skills.lock.json +152 -0
- package/project-template-v2/CLAUDE.md +146 -0
- package/project-template-v2/assets/audio/bgm/.gitkeep +0 -0
- package/project-template-v2/assets/audio/sfx/.gitkeep +0 -0
- package/project-template-v2/assets/bundles/.gitkeep +0 -0
- package/project-template-v2/assets/images/bg/.gitkeep +0 -0
- package/project-template-v2/assets/images/reference/.gitkeep +0 -0
- package/project-template-v2/assets/images/storyboard/.gitkeep +0 -0
- package/project-template-v2/assets/images/tiles/.gitkeep +0 -0
- package/project-template-v2/assets/images/ui/.gitkeep +0 -0
- package/project-template-v2/assets/images/vfx/.gitkeep +0 -0
- package/project-template-v2/assets/models/.gitkeep +0 -0
- package/project-template-v2/docs/harness/iteration-1/context-flow.md +254 -0
- package/project-template-v2/docs/harness/iteration-1/generate-flow.md +91 -0
- package/project-template-v2/docs/harness/iteration-1/ideate-flow.md +214 -0
- package/project-template-v2/docs/harness/iteration-1/optimize-flow.md +75 -0
- package/project-template-v2/docs/harness/iteration-1/wrapup-flow.md +63 -0
- package/project-template-v2/docs/harness/iteration-2/context-flow.md +223 -0
- package/project-template-v2/docs/harness/iteration-2/generate-flow.md +129 -0
- package/project-template-v2/docs/harness/iteration-2/ideate-flow.md +267 -0
- package/project-template-v2/docs/harness/iteration-2/optimize-flow.md +164 -0
- package/project-template-v2/docs/harness/iteration-2/wrapup-flow.md +115 -0
- package/project-template-v2/docs/harness/orchestrator-flow.md +364 -0
- package/project-template-v2/docs/project-state.json +60 -0
- package/project-template-v2/docs/project-state.md +72 -0
- package/project-template-v2/docs/standards/README.md +225 -0
- package/project-template-v2/docs/standards/agent-behavior-standards.md +174 -0
- package/project-template-v2/docs/standards/artifacts/design-brief.md +19 -0
- package/project-template-v2/docs/standards/artifacts/design.md +22 -0
- package/project-template-v2/docs/standards/artifacts/game-code.md +41 -0
- package/project-template-v2/docs/standards/artifacts/todo-list.md +41 -0
- package/project-template-v2/docs/standards/iter1-agent-behavior-standards.md +343 -0
- package/project-template-v2/game/index.ts +18 -0
- package/project-template-v2/globals.d.ts +51 -0
- package/project-template-v2/index.css +34 -0
- package/project-template-v2/index.html +18 -0
- package/project-template-v2/main.ts +9 -0
- package/project-template-v2/package.json +46 -0
- package/project-template-v2/skills/_shared/scripts/dispatch-clear.mjs +31 -0
- package/project-template-v2/skills/_shared/scripts/dispatch-set.mjs +86 -0
- package/project-template-v2/skills/_shared/scripts/dod-check.mjs +153 -0
- package/project-template-v2/skills/_shared/scripts/handoff-append.mjs +70 -0
- package/project-template-v2/skills/_shared/scripts/lib/validator-artifacts.mjs +91 -0
- package/project-template-v2/skills/_shared/scripts/pipeline/dod-config.mjs +131 -0
- package/project-template-v2/skills/_shared/scripts/pipeline/index.mjs +80 -0
- package/project-template-v2/skills/_shared/scripts/pipeline/iteration-1-core.mjs +90 -0
- package/project-template-v2/skills/_shared/scripts/pipeline/iteration-2-wrap.mjs +93 -0
- package/project-template-v2/skills/_shared/scripts/pipeline/iteration-3-visual.mjs +23 -0
- package/project-template-v2/skills/_shared/scripts/render-project-state.mjs +230 -0
- package/project-template-v2/skills/_shared/scripts/state-advance-stage.mjs +58 -0
- package/project-template-v2/skills/_shared/scripts/state-get.mjs +339 -0
- package/project-template-v2/skills/_shared/scripts/state-handoff.mjs +39 -0
- package/project-template-v2/skills/_shared/scripts/state-set.mjs +94 -0
- package/project-template-v2/skills/_shared/scripts/state-store.mjs +783 -0
- package/project-template-v2/skills/_shared/scripts/todo-add.mjs +88 -0
- package/project-template-v2/skills/_shared/scripts/todo-get.mjs +130 -0
- package/project-template-v2/skills/_shared/scripts/todo-remove.mjs +33 -0
- package/project-template-v2/skills/_shared/scripts/todo-set.mjs +47 -0
- package/project-template-v2/skills/_shared/scripts/verify-asset-code-sync.mjs +268 -0
- package/project-template-v2/skills/_shared/scripts/verify-env.mjs +285 -0
- package/project-template-v2/skills/_shared/scripts/verify-placeholders.mjs +161 -0
- package/project-template-v2/skills/playable-autoplay/SKILL.md +176 -0
- package/project-template-v2/skills/playable-autoplay/agents/openai.yaml +4 -0
- package/project-template-v2/skills/playable-debug/SKILL.md +116 -0
- package/project-template-v2/skills/playable-debug/agents/openai.yaml +4 -0
- package/project-template-v2/skills/playable-debug/references/debug-config.md +40 -0
- package/project-template-v2/skills/playable-record/SKILL.md +140 -0
- package/project-template-v2/skills/playable-record/scripts/lib/dev-server.mjs +104 -0
- package/project-template-v2/skills/playable-record/scripts/lib/record-audio-bridge.js +141 -0
- package/project-template-v2/skills/playable-record/scripts/record-playable.mjs +425 -0
- package/project-template-v2/skills/playable-record/scripts/verify-contract.mjs +261 -0
- package/project-template-v2/skills/playable-record/scripts/verify-firstwin.mjs +398 -0
- package/project-template-v2/skills/playable-record/scripts/verify-fusion.mjs +322 -0
- package/project-template-v2/skills/playable-record/scripts/verify-lifecycle.mjs +105 -0
- package/project-template-v2/skills/playable-record/scripts/verify-vlm-video.mjs +230 -0
- package/project-template-v2/skills/playable-validate/SKILL.md +61 -0
- package/project-template-v2/skills/playable-validate/validation-rules.md +14 -0
- package/project-template-v2/skills/playable-verify-ui/SKILL.md +63 -0
- package/project-template-v2/skills/playable-verify-ui/scripts/lib/__init__.py +1 -0
- package/project-template-v2/skills/playable-verify-ui/scripts/lib/config_expr.js +218 -0
- package/project-template-v2/skills/playable-verify-ui/scripts/lib/node_utils.js +51 -0
- package/project-template-v2/skills/playable-verify-ui/scripts/lib/profile_loader.py +59 -0
- package/project-template-v2/skills/playable-verify-ui/scripts/lib/report.py +106 -0
- package/project-template-v2/skills/playable-verify-ui/scripts/lib/runtime_contract.js +116 -0
- package/project-template-v2/skills/playable-verify-ui/scripts/verify_fetch_antipatterns.py +59 -0
- package/project-template-v2/skills/playable-verify-ui/scripts/verify_hardcoded_layout.js +64 -0
- package/project-template-v2/skills/playable-verify-ui/scripts/verify_runtime_contract.js +58 -0
- package/project-template-v2/skills/playable-verify-ui/scripts/verify_text_overlap.py +333 -0
- package/project-template-v2/ta-workspace/scripts/.gitkeep +0 -0
- package/project-template-v2/tsconfig.json +20 -0
- package/project-template-v2/vite.config.ts +27 -0
- package/project-templates/batch-locks/phaser.yaml +922 -0
- package/project-templates/batch-locks/threejs.yaml +978 -0
- package/project-templates/empty/AGENTS.md +41 -0
- package/project-templates/empty/gitignore +33 -0
- package/project-templates/phaser/.claude/agents/refs/ta-image-generation-detail.md +59 -59
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/SKILL.md +63 -135
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +33 -42
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +20 -18
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +7 -6
- package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +39 -39
- package/project-templates/threejs/.claude/agents/refs/ta-image-generation-detail.md +59 -59
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/SKILL.md +63 -135
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +33 -42
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +20 -18
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +7 -6
- package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +39 -39
- package/dist/commands/tools-image-context.js +0 -29
- package/dist/utils/image-asset-context.js +0 -228
|
@@ -1,23 +1,21 @@
|
|
|
1
1
|
# Image Generation Prompt Cookbook
|
|
2
2
|
|
|
3
|
-
> 适用于 PlayCraft CLI
|
|
3
|
+
> 适用于 PlayCraft CLI `playcraft tools generate-image`。
|
|
4
4
|
> 所有模型均适用;gpt-image-2 类模型对英文 prompt 理解最准确,优先写英文。
|
|
5
5
|
|
|
6
|
-
透明交付通过 `background: transparent` / `--background transparent` 或目标字段配置表达。用户未明确要求背景且字段没有明确不透明约束时,默认透明,包括卡牌、棋子和面板。下方常规前景模板描述主体、文字、风格、构图与材质;源图背景遵循主文第 2 节:Image 2.5 由后端组装,不追加背景后缀;明确选用其他模型时,首次请求需追加单一 `on a uniform solid pure white background for subsequent background removal`。不要同时要求透明、白底与色幕。用户或字段明确要求完整场景时可以描述背景内容;矩形本体的白色牌面属于前景,应在透明画布上保留。独立色幕流程见主文第 3 节,中间图必须关闭自动去背。
|
|
7
|
-
|
|
8
6
|
---
|
|
9
7
|
|
|
10
8
|
## 一、Prompt 万能公式
|
|
11
9
|
|
|
12
10
|
```
|
|
13
|
-
[主体描述] + [风格/介质] + [构图/视角] + [
|
|
11
|
+
[主体描述] + [风格/介质] + [构图/视角] + [背景] + [质量修饰词]
|
|
14
12
|
```
|
|
15
13
|
|
|
16
14
|
**示例**:
|
|
17
15
|
|
|
18
16
|
```
|
|
19
17
|
A golden sword icon, flat 2D vector style, centered composition,
|
|
20
|
-
|
|
18
|
+
white background, clean crisp edges, game UI asset, high quality
|
|
21
19
|
```
|
|
22
20
|
|
|
23
21
|
---
|
|
@@ -28,13 +26,12 @@ isolated subject, clean crisp edges, game UI asset, high quality
|
|
|
28
26
|
|
|
29
27
|
```
|
|
30
28
|
A [物品名] icon, flat 2D vector illustration, bold outlines,
|
|
31
|
-
vibrant colors, centered composition,
|
|
29
|
+
vibrant colors, centered composition, white background,
|
|
32
30
|
no shadow, no gradient, game UI style, sharp crisp edges
|
|
33
31
|
```
|
|
34
32
|
|
|
35
33
|
- 关键词:`flat 2D` / `bold outlines` / `centered` / `no shadow` / `game UI style`
|
|
36
34
|
- 避免:`3D` / `realistic` / `photographic` / `drop shadow`
|
|
37
|
-
- 需要透明交付时传 `background: transparent` / `--background transparent`。
|
|
38
35
|
|
|
39
36
|
### 🃏 卡牌 / 棋子 / 方块(Rectangular Tiles)
|
|
40
37
|
|
|
@@ -53,11 +50,12 @@ sharp clean edges, centered on white background
|
|
|
53
50
|
```
|
|
54
51
|
A [角色描述] character, full body visible, game sprite style,
|
|
55
52
|
[艺术风格: pixel art / cartoon / chibi / realistic],
|
|
56
|
-
isolated
|
|
53
|
+
isolated on solid bright green #00FF00 background,
|
|
57
54
|
centered, facing forward / side view, clean silhouette
|
|
58
55
|
```
|
|
59
56
|
|
|
60
|
-
-
|
|
57
|
+
- 需要透明背景 → **绿幕策略**,prompt 加 `"on solid bright green #00FF00 background, isolated"`
|
|
58
|
+
- 后处理:`remove-background --tolerance 25`
|
|
61
59
|
|
|
62
60
|
### 🌄 场景背景(Backgrounds)
|
|
63
61
|
|
|
@@ -122,7 +120,7 @@ Grid layout, equal cell size, no borders between cells. Bold black ink for spade
|
|
|
122
120
|
**图标集示例**(一批 9 个图标):
|
|
123
121
|
|
|
124
122
|
```
|
|
125
|
-
Sprite sheet grid, 3 columns × 3 rows. Flat 2D game icon style,
|
|
123
|
+
Sprite sheet grid, 3 columns × 3 rows. Flat 2D game icon style, white background.
|
|
126
124
|
[Row1,Col1]: sword icon; [Row1,Col2]: shield icon; [Row1,Col3]: bow and arrow icon;
|
|
127
125
|
[Row2,Col1]: magic staff icon; [Row2,Col2]: potion bottle icon; [Row2,Col3]: scroll icon;
|
|
128
126
|
[Row3,Col1]: coin gold icon; [Row3,Col2]: gem diamond icon; [Row3,Col3]: key icon.
|
|
@@ -131,18 +129,17 @@ Each icon centered in its cell, bold outlines, vibrant colors, no shadow.
|
|
|
131
129
|
|
|
132
130
|
**背景选择(重要!)**:
|
|
133
131
|
|
|
134
|
-
| 素材类型 |
|
|
135
|
-
| ----------------------------------- |
|
|
136
|
-
| 独立元素(角色/车/道具/图标)需透明 |
|
|
137
|
-
| 卡牌/棋子/UI 面板(矩形本体) |
|
|
138
|
-
| 用户/字段明确要求保留背景的最终素材 | `--background opaque`,整张图片不透明 | 保留背景,按目标尺寸 resize |
|
|
132
|
+
| 素材类型 | prompt 背景写法 | 切分后处理 |
|
|
133
|
+
| ----------------------------------- | --------------------------------------------------- | ---------------------------------- |
|
|
134
|
+
| 独立元素(角色/车/道具/图标)需透明 | `isolated on solid bright green #00FF00 background` | `remove-background --tolerance 25` |
|
|
135
|
+
| 卡牌/棋子/UI 面板(矩形本体) | `white background, no shadow` | 直接 resize,不去背景 |
|
|
139
136
|
|
|
140
137
|
**注意事项**:
|
|
141
138
|
|
|
142
139
|
- 每批最多 **4×4 = 16 个元素**,超过会出现混乱
|
|
143
140
|
- 每个格的描述要精确,包含特征性视觉元素
|
|
144
141
|
- 切分后用 `sprite-split --rows N --columns M` 按网格切分
|
|
145
|
-
- 模板:[gen-batch-sprite.template.mjs](gen-batch-sprite.template.mjs)
|
|
142
|
+
- 模板:[gen-batch-sprite.template.mjs](gen-batch-sprite.template.mjs)
|
|
146
143
|
|
|
147
144
|
---
|
|
148
145
|
|
|
@@ -186,7 +183,7 @@ gpt-image-2 是目前质量最高的文生图模型,prompt 套路略有不同
|
|
|
186
183
|
- **英文 prompt 效果最佳**,中文理解也不错但英文更稳定
|
|
187
184
|
- 对**复杂场景**、**细节描述**处理能力远超其他模型
|
|
188
185
|
- 支持**图生图 edit 模式**(传 `--reference-image`),局部编辑能力强
|
|
189
|
-
-
|
|
186
|
+
- 不支持透明 PNG 输出(ALPHA = no),需绿幕策略
|
|
190
187
|
|
|
191
188
|
### prompt 格式建议
|
|
192
189
|
|
|
@@ -234,7 +231,6 @@ elements centered in each cell, no borders between cells.
|
|
|
234
231
|
```bash
|
|
235
232
|
playcraft tools generate-image \
|
|
236
233
|
--prompt "A sword icon, flat 2D..." \
|
|
237
|
-
--background transparent \
|
|
238
234
|
--output assets/gen/sword \
|
|
239
235
|
--count 4 \
|
|
240
236
|
--image-model iegg-litellm/gpt-image-2
|
|
@@ -252,7 +248,6 @@ playcraft tools generate-image \
|
|
|
252
248
|
# 一次 API 调用生成 4 个候选,选最好的(比 4 次独立调用更高效)
|
|
253
249
|
playcraft tools generate-image \
|
|
254
250
|
--prompt "..." \
|
|
255
|
-
--background "$BACKGROUND_MODE" \
|
|
256
251
|
--output "test/concept" \
|
|
257
252
|
--count 4 \
|
|
258
253
|
--image-model iegg-litellm/gpt-image-2
|
|
@@ -275,8 +270,6 @@ playcraft tools generate-image \
|
|
|
275
270
|
>
|
|
276
271
|
> 注意:`figer_icon.aiimage`、`win_result_panel.aiimage` 等 atom Skills 提供了带参考图的生成配方,Game Designer `playcraft skills match` 能匹配到时优先使用。本节模板用于无对应 atom Skill 的场景。
|
|
277
272
|
|
|
278
|
-
下方独立界面前景通过 `background: transparent` / `--background transparent` 要求最终透明;模板描述主体,调用前按主文第 2 节补充适用于所选模型的源图背景。
|
|
279
|
-
|
|
280
273
|
### 🟠 CTA 按钮(Call-to-Action Button)
|
|
281
274
|
|
|
282
275
|
```
|
|
@@ -287,13 +280,13 @@ Important details: [bright orange / gold / green] gradient fill,
|
|
|
287
280
|
subtle drop shadow below button, glossy highlight on top edge,
|
|
288
281
|
3px white inner border, corners rounded radius 24px
|
|
289
282
|
Use case: Game ad install button, isolated asset, HTML5 playable ad
|
|
290
|
-
Constraints:
|
|
283
|
+
Constraints: Transparent background, no extra elements, centered, clean crisp edges,
|
|
291
284
|
no watermark
|
|
292
285
|
```
|
|
293
286
|
|
|
294
287
|
- CTA 颜色必须是游戏画面中**最少使用**的颜色(对比稀缺性原则)
|
|
295
288
|
- 触控目标区域 ≥ 48×48px,生成建议尺寸 360×120px(9:3 比例)
|
|
296
|
-
-
|
|
289
|
+
- 后处理:不需要去背景(直接生成透明背景或用绿幕)
|
|
297
290
|
|
|
298
291
|
---
|
|
299
292
|
|
|
@@ -306,7 +299,7 @@ Important details: [color] filled portion [80% of total width], unfilled portion
|
|
|
306
299
|
rounded end caps, thin outer frame in [darker shade],
|
|
307
300
|
optional inner glow on filled section
|
|
308
301
|
Use case: Game HUD progress indicator, isolated UI element
|
|
309
|
-
Constraints:
|
|
302
|
+
Constraints: Transparent background, horizontal orientation, no text labels,
|
|
310
303
|
clean edges, no watermark
|
|
311
304
|
```
|
|
312
305
|
|
|
@@ -324,7 +317,8 @@ Important details: warm skin tone, white sleeve cuff visible at wrist,
|
|
|
324
317
|
soft drop shadow beneath finger tip, friendly approachable style,
|
|
325
318
|
[optional: subtle animated glow ring around fingertip]
|
|
326
319
|
Use case: Tutorial overlay tap gesture for playable ad, points toward target element
|
|
327
|
-
Constraints:
|
|
320
|
+
Constraints: Transparent background, PNG with alpha channel,
|
|
321
|
+
no extra limbs or elements, finger pointing at bottom-center
|
|
328
322
|
```
|
|
329
323
|
|
|
330
324
|
**箭头变体**(更简洁):
|
|
@@ -334,7 +328,7 @@ Subject: Bold cartoon arrow pointing [down / right], game tutorial UI
|
|
|
334
328
|
Style: flat 2D, thick outline 4px, rounded arrowhead
|
|
335
329
|
Important details: [bright yellow / white] fill, [dark outline],
|
|
336
330
|
slight perspective tilt for depth, attention-grabbing
|
|
337
|
-
Constraints:
|
|
331
|
+
Constraints: Transparent background, single clean arrow shape, no text
|
|
338
332
|
```
|
|
339
333
|
|
|
340
334
|
---
|
|
@@ -348,7 +342,7 @@ Important details: white or [light color] fill, [2–3px] dark outline,
|
|
|
348
342
|
tail pointing [down-left / down-center], interior empty for text overlay,
|
|
349
343
|
subtle inner shadow or gradient
|
|
350
344
|
Use case: Game tutorial hint tooltip, isolated UI asset
|
|
351
|
-
Constraints:
|
|
345
|
+
Constraints: Transparent background, no text inside, clean edges,
|
|
352
346
|
no watermark, no extra decorations
|
|
353
347
|
```
|
|
354
348
|
|
|
@@ -368,7 +362,7 @@ Important details: [treasure chest]: lid slightly ajar, golden glow escaping fro
|
|
|
368
362
|
[gold coins]: scattered pile, gleaming highlights, not neatly stacked (implies uncollected);
|
|
369
363
|
[gem crystal]: large, brilliant facets, floating above ground, clearly valuable
|
|
370
364
|
Use case: EndCard reward visual, creates FOMO and drives install
|
|
371
|
-
Constraints:
|
|
365
|
+
Constraints: Transparent background, centered, isolated subject,
|
|
372
366
|
no CTA text (added separately), warm celebratory lighting
|
|
373
367
|
```
|
|
374
368
|
|
|
@@ -379,19 +373,25 @@ Constraints: Centered, isolated subject,
|
|
|
379
373
|
|
|
380
374
|
### 📊 UI 元素背景处理规则速查
|
|
381
375
|
|
|
382
|
-
|
|
376
|
+
| UI 元素类型 | prompt 背景写法 | 后处理 |
|
|
377
|
+
| ---------------- | ----------------------------------------------- | ------------------------------ |
|
|
378
|
+
| CTA 按钮 | `transparent background` 或绿幕 | floodfill 去背 |
|
|
379
|
+
| 进度条 | `transparent background` 或绿幕 | floodfill 去背 |
|
|
380
|
+
| 引导手势 | `transparent background, PNG with alpha` | floodfill 去背(tolerance 25) |
|
|
381
|
+
| 对话气泡 | `transparent background` 或绿幕 | floodfill 去背 |
|
|
382
|
+
| EndCard 奖励图标 | 绿幕(`solid bright green #00FF00 background`) | floodfill 去背(tolerance 25) |
|
|
383
383
|
|
|
384
384
|
---
|
|
385
385
|
|
|
386
386
|
## 六、常见问题 & 修正方案
|
|
387
387
|
|
|
388
|
-
| 问题 | 原因 | 修正
|
|
389
|
-
| ------------------ | -------------------- |
|
|
390
|
-
| 图标边缘有阴影 | 模型默认加立体效果 | 加 `no shadow, no drop shadow, flat 2D`
|
|
391
|
-
| 构图不居中 | 没有明确指定 | 加 `centered composition, subject centered`
|
|
392
|
-
| 背景不干净 |
|
|
393
|
-
| 多个物体出现 | 主体不够明确 | 加 `a single [物体]`, `only one [物体]`
|
|
394
|
-
| 文字拼写错误 | 所有模型通病 | 尝试 gpt-image-2(最好),或多生成几张
|
|
395
|
-
| 风格不一致(批量) | 没用 reference image | Phase 2 必须加 `--reference-image`
|
|
396
|
-
| 细节过于复杂 | 素材尺寸小但细节太多 | 加 `simple design, minimal details, bold shapes`
|
|
397
|
-
| 生成极慢/超时 | 模型负载高 | 换另一个 provider 或换模型
|
|
388
|
+
| 问题 | 原因 | 修正 |
|
|
389
|
+
| ------------------ | -------------------- | ------------------------------------------------ |
|
|
390
|
+
| 图标边缘有阴影 | 模型默认加立体效果 | 加 `no shadow, no drop shadow, flat 2D` |
|
|
391
|
+
| 构图不居中 | 没有明确指定 | 加 `centered composition, subject centered` |
|
|
392
|
+
| 背景不干净 | 背景描述不够明确 | 加 `solid white background, isolated` 或绿幕策略 |
|
|
393
|
+
| 多个物体出现 | 主体不够明确 | 加 `a single [物体]`, `only one [物体]` |
|
|
394
|
+
| 文字拼写错误 | 所有模型通病 | 尝试 gpt-image-2(最好),或多生成几张 |
|
|
395
|
+
| 风格不一致(批量) | 没用 reference image | Phase 2 必须加 `--reference-image` |
|
|
396
|
+
| 细节过于复杂 | 素材尺寸小但细节太多 | 加 `simple design, minimal details, bold shapes` |
|
|
397
|
+
| 生成极慢/超时 | 模型负载高 | 换另一个 provider 或换模型 |
|
|
@@ -1,25 +1,24 @@
|
|
|
1
|
-
# TA
|
|
1
|
+
# TA 图片生成进阶参考
|
|
2
2
|
|
|
3
3
|
> 本文件供 TA/Designer 在需要精灵图直出、Edit 模型变体、错误恢复等进阶场景时按需查阅。核心决策逻辑见 `playcraft-image-generation` skill。
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
## 1. 精灵图直出 + 批量出图策略
|
|
7
|
+
## 1. gpt-image-2 精灵图直出 + 批量出图策略
|
|
8
8
|
|
|
9
9
|
### 策略一:直接生成整张精灵图(最高效)
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
**gpt-image-2 可以一次 API 调用就生成一张包含多个元素的网格图**,后续用 `sprite-split` 切分。避免逐个生成的低效循环。
|
|
12
12
|
|
|
13
|
-
>
|
|
13
|
+
> gpt-image-2 本身就慢(单图 7-8 分钟正常,精灵图 90-150 秒正常)。**调用 gpt-image-2 时不要设 `--timeout`**,让它自然完成。"慢"不是卡死,不要中途 Ctrl+C 换模型。真正的失败是 `API 500` 或 `fetch failed`,那才需要切换 provider。
|
|
14
14
|
|
|
15
15
|
#### 先判断:元素需要透明背景吗?
|
|
16
16
|
|
|
17
17
|
```
|
|
18
18
|
需要透明背景(独立元素:角色、车、道具、图标)?
|
|
19
|
-
├─
|
|
20
|
-
│
|
|
21
|
-
|
|
22
|
-
└─ 明确选择独立色幕 → 仅限主文第 3 节;关闭整板自动去背,切分后逐格去背
|
|
19
|
+
├─ YES → 绿幕策略:prompt 所有格子加 "solid bright green #00FF00 background"
|
|
20
|
+
│ 切分后对每帧跑 remove-background --tolerance 25
|
|
21
|
+
└─ NO → 白底策略:prompt 加 "white background"(卡牌/棋盘/UI 面板适用)
|
|
23
22
|
```
|
|
24
23
|
|
|
25
24
|
#### 白底示例(卡牌,不需要去背景)
|
|
@@ -29,8 +28,8 @@ playcraft tools generate-image \
|
|
|
29
28
|
--prompt "Sprite sheet grid, 4 columns × 2 rows. Each cell: one playing card face, flat 2D, white card face, uniform size. Row 1: Ace of Spades, 2 of Spades, 3 of Spades, 4 of Spades. Row 2: 5 of Spades, 6 of Spades, 7 of Spades, 8 of Spades. Grid layout, equal cell size, no border between cells." \
|
|
30
29
|
--output assets/gen/cards_sheet.png \
|
|
31
30
|
--aspect-ratio 3:2 \
|
|
32
|
-
--image-model iegg-litellm/gpt-image-2
|
|
33
|
-
--
|
|
31
|
+
--image-model iegg-litellm/gpt-image-2
|
|
32
|
+
# gpt-image-2 不设 --timeout,精灵图 90-150s 正常,等待即可
|
|
34
33
|
|
|
35
34
|
# 查尺寸再切分(frame-width=总宽/列数, frame-height=总高/行数)
|
|
36
35
|
playcraft image info --input assets/gen/cards_sheet.png
|
|
@@ -41,51 +40,36 @@ playcraft image sprite-split \
|
|
|
41
40
|
--frame-width <总宽/4> --frame-height <总高/2>
|
|
42
41
|
```
|
|
43
42
|
|
|
44
|
-
####
|
|
43
|
+
#### 绿幕示例(独立元素,需要透明背景)
|
|
45
44
|
|
|
46
45
|
```bash
|
|
47
|
-
# Step 1
|
|
46
|
+
# Step 1:生成绿幕精灵图
|
|
48
47
|
playcraft tools generate-image \
|
|
49
|
-
--prompt "Sprite sheet grid, 3 columns × 1 row. Each cell: one car, flat 2D vector, bold outline, centered, isolated
|
|
48
|
+
--prompt "Sprite sheet grid, 3 columns × 1 row. Each cell: one car, flat 2D vector, bold outline, centered, isolated on solid bright green #00FF00 background. [Row1,Col1]: red sports car front view; [Row1,Col2]: blue SUV front view; [Row1,Col3]: yellow taxi front view. Grid layout, equal cell size, no border between cells." \
|
|
50
49
|
--output assets/gen/cars_sheet.png \
|
|
51
50
|
--aspect-ratio 3:2 \
|
|
52
|
-
--image-model iegg-litellm/gpt-image-2
|
|
53
|
-
--
|
|
51
|
+
--image-model iegg-litellm/gpt-image-2
|
|
52
|
+
# gpt-image-2 不设 --timeout,精灵图 90-150s 正常,等待即可
|
|
54
53
|
|
|
55
54
|
# Step 2:切分
|
|
56
55
|
playcraft image info --input assets/gen/cars_sheet.png
|
|
57
56
|
playcraft image sprite-split \
|
|
58
57
|
--input assets/gen/cars_sheet.png \
|
|
59
|
-
--output-dir assets/
|
|
58
|
+
--output-dir assets/gen/cars-split/ \
|
|
60
59
|
--rows 1 --columns 3 \
|
|
61
60
|
--frame-width <总宽/3> --frame-height <总高>
|
|
62
61
|
|
|
63
|
-
# Step 3
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
```bash
|
|
73
|
-
# 已明确锁定不支持原生透明的模型与品红色幕;常规流程不使用此分支
|
|
74
|
-
playcraft tools generate-image \
|
|
75
|
-
--prompt "Sprite sheet grid, 3 columns × 1 row. [Row1,Col1]: red sports car; [Row1,Col2]: blue SUV; [Row1,Col3]: yellow taxi. Each car isolated, centered on a uniform solid #FF00FF background, equal cell size, no borders, no shadows." \
|
|
76
|
-
--output assets/gen/cars_chroma.png \
|
|
77
|
-
--aspect-ratio 3:2 \
|
|
78
|
-
--image-model mulerouter/gpt-image-2 \
|
|
79
|
-
--no-remove-background
|
|
80
|
-
|
|
81
|
-
# 读取实际尺寸并 sprite-split 后,逐格去背;品红使用 tolerance 20
|
|
82
|
-
playcraft image remove-background \
|
|
83
|
-
--input assets/gen/cars-split/frame_r0_c0.png \
|
|
84
|
-
--output assets/images/cars/red_car.png \
|
|
85
|
-
--tolerance 20
|
|
62
|
+
# Step 3:逐帧去背景(绿幕用 tolerance 25)
|
|
63
|
+
for f in assets/gen/cars-split/frame_*.png; do
|
|
64
|
+
name=$(basename "$f")
|
|
65
|
+
playcraft image remove-background \
|
|
66
|
+
--input "$f" \
|
|
67
|
+
--output "assets/images/cars/$name" \
|
|
68
|
+
--tolerance 25
|
|
69
|
+
done
|
|
86
70
|
```
|
|
87
71
|
|
|
88
|
-
|
|
72
|
+
**Provider 选择**:iegg-litellm/gpt-image-2 质量最高;google/gemini-3.1-flash-image-preview 最稳定且参考图正常工作。
|
|
89
73
|
|
|
90
74
|
**Prompt 关键词**:`sprite sheet grid, N columns × M rows, grid layout, equal cell size, uniform size`
|
|
91
75
|
|
|
@@ -189,16 +173,34 @@ node ta-workspace/scripts/gen-<name>-variants.mjs
|
|
|
189
173
|
|
|
190
174
|
## 3. 错误恢复策略
|
|
191
175
|
|
|
192
|
-
|
|
176
|
+
> **gpt-image-2 超时规则(最重要)**:gpt-image-2 慢是设计如此,不是故障。单图 7-8 分钟、精灵图 90-150 秒均属正常范围。**调用 gpt-image-2 时永远不要设 `--timeout`**,也不要因为"等了很久"就 Ctrl+C 中断。只有收到 `API 500` 或 `fetch failed` 才切换 provider。
|
|
177
|
+
|
|
178
|
+
| 错误现象 | 模型 | 原因 | 立即行动 |
|
|
179
|
+
| ---------------------- | ------------------------------------------- | --------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
|
|
180
|
+
| `API 500` | 任意 | 该 provider 节点不可用 | **立即换同模型的另一个 provider**(如 `iegg-litellm/gpt-image-2` → `mulerouter/gpt-image-2` → `302/gpt-image-2`) |
|
|
181
|
+
| `fetch failed` | 任意 | provider 网络不通 | 换另一个 provider |
|
|
182
|
+
| 等待 7-8 分钟还未返回 | **gpt-image-2** | 正常现象,模型本身就慢 | **继续等待,不要中断**;若超过 15 分钟仍无响应则换同模型另一 provider |
|
|
183
|
+
| 等待 >120s 无响应 | **非 gpt-image-2**(gemini/nano-banana 等) | 请求卡死 | Ctrl+C 中止,换另一个 provider 或换模型;可加 `--timeout 60` 防止下次卡住 |
|
|
184
|
+
| 精灵图等待 90-150s | **gpt-image-2** | 正常现象 | 继续等待;**不要设 `--timeout`** |
|
|
185
|
+
| `--count N` 触发限流 | 任意 | 并发提交多任务超过 provider 限制 | 降低 count 或改用精灵图直出策略 |
|
|
186
|
+
| `reference-image` 报错 | 任意 | 模型 CAPABILITY 为 `text→image`,不支持参考图 | 换 CAPABILITY 为 `text+image` 或 `image→image` 的模型 |
|
|
187
|
+
| 风格偏差大 | 任意 | Prompt 不够具体 | 参考 prompt-cookbook.md 对应素材类型模板 |
|
|
188
|
+
| 质量不达标 | 非 gpt-image-2 | 模型能力不够 | 换 gpt-image-2(最高质量)+ 参考 prompt-cookbook 质量修饰词 |
|
|
189
|
+
|
|
190
|
+
### 模型回退顺序
|
|
193
191
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
192
|
+
```
|
|
193
|
+
gpt-image-2(最高质量,三个 provider 互为回退):
|
|
194
|
+
1. iegg-litellm/gpt-image-2
|
|
195
|
+
2. mulerouter/gpt-image-2
|
|
196
|
+
3. 302/gpt-image-2
|
|
197
|
+
|
|
198
|
+
稳定回退(非 gpt-image-2):
|
|
199
|
+
4. google/gemini-3.1-flash-image-preview
|
|
200
|
+
5. mulerouter/nano-banana-2
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
**同一个 provider 最多重试 1 次**,失败立即切换到同模型的另一个 provider,不要等待。
|
|
202
204
|
|
|
203
205
|
---
|
|
204
206
|
|
|
@@ -206,7 +208,7 @@ node ta-workspace/scripts/gen-<name>-variants.mjs
|
|
|
206
208
|
|
|
207
209
|
### 首选策略:精灵图直出(见第 1 节)
|
|
208
210
|
|
|
209
|
-
|
|
211
|
+
**优先让 gpt-image-2 直接生成包含多个元素的网格图**,然后用 `sprite-split` 切分。这是最高效的做法,避免逐个 API 调用。只有在以下情况才退化为逐个调用:
|
|
210
212
|
|
|
211
213
|
- 需要 reference-image 一致性(网格 prompt 不稳定)
|
|
212
214
|
- 每个元素差异太大,一张图放不下
|
|
@@ -237,8 +239,6 @@ cp .claude/skills/playcraft-image-generation/reference/process-batch.template.mj
|
|
|
237
239
|
node ta-workspace/scripts/process-<name>.mjs
|
|
238
240
|
```
|
|
239
241
|
|
|
240
|
-
已由生成工具验证透明的图使用 `skipRemoveBg=true`,保留透明边缘;不透明牌面/场景同样跳过去背。只有独立色幕中间图才设为 `false`,按所选色幕设置容差。
|
|
241
|
-
|
|
242
242
|
### 合并精灵图
|
|
243
243
|
|
|
244
244
|
参见 [build-sprite-sheet.template.mjs](../../skills/playcraft-image-generation/reference/build-sprite-sheet.template.mjs)。
|
|
@@ -277,13 +277,13 @@ ta-workspace/
|
|
|
277
277
|
|
|
278
278
|
### 脚本模板目录
|
|
279
279
|
|
|
280
|
-
| 模板 | 用途
|
|
281
|
-
| -------------------------------------------------------------------------------------------------------------------- |
|
|
282
|
-
| [gen-batch-sprite.template.mjs](../../skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs) |
|
|
283
|
-
| [gen-batch.template.mjs](../../skills/playcraft-image-generation/reference/gen-batch.template.mjs) | 批量从零 AI 生图(reference-image 模式)
|
|
284
|
-
| [gen-edit-variants.template.mjs](../../skills/playcraft-image-generation/reference/gen-edit-variants.template.mjs) | 基图 + edit 模型生成变体
|
|
285
|
-
| [process-batch.template.mjs](../../skills/playcraft-image-generation/reference/process-batch.template.mjs) | 批量去背景 / trim + resize
|
|
286
|
-
| [build-sprite-sheet.template.mjs](../../skills/playcraft-image-generation/reference/build-sprite-sheet.template.mjs) | 精灵图合并 + JSON 验证
|
|
280
|
+
| 模板 | 用途 | 关键 CONFIG |
|
|
281
|
+
| -------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- | --------------------------------------------- |
|
|
282
|
+
| [gen-batch-sprite.template.mjs](../../skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs) | 精灵图直出(gpt-image-2 网格图 → sprite-split) | `columns`, `rows`, `BATCHES[]` |
|
|
283
|
+
| [gen-batch.template.mjs](../../skills/playcraft-image-generation/reference/gen-batch.template.mjs) | 批量从零 AI 生图(reference-image 模式) | `model`, `referenceImage`, `style`, `ITEMS[]` |
|
|
284
|
+
| [gen-edit-variants.template.mjs](../../skills/playcraft-image-generation/reference/gen-edit-variants.template.mjs) | 基图 + edit 模型生成变体 | `baseImage`, `editModel`, `VARIANTS[]` |
|
|
285
|
+
| [process-batch.template.mjs](../../skills/playcraft-image-generation/reference/process-batch.template.mjs) | 批量去背景 / trim + resize | `inputDir`, `outputDir`, `skipRemoveBg` |
|
|
286
|
+
| [build-sprite-sheet.template.mjs](../../skills/playcraft-image-generation/reference/build-sprite-sheet.template.mjs) | 精灵图合并 + JSON 验证 | `processedDir`, `columns`, `ORDERED_NAMES[]` |
|
|
287
287
|
|
|
288
288
|
每个模板均包含:CONFIG/DATA/LOGIC 三段式结构、`existsSync` 幂等跳过、`appendFileSync` 日志、try/catch 错误统计。
|
|
289
289
|
|