@inneranimalmedia/agentsam-sdk 2.6.7 → 2.6.8

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.
Files changed (318) hide show
  1. package/README.md +37 -0
  2. package/docs/REPO_FILE_MAP.txt +132 -0
  3. package/migrations/d1/0018_goap_control_plane_remaster.sql +40 -0
  4. package/migrations/d1/0019_agentsam_agent_run_plan_todo.sql +14 -0
  5. package/migrations/d1/README_PORTABLE_CONTROL_PLANE.md +20 -9
  6. package/migrations/runtime/0002_goap_blackboard_v1.sql +15 -0
  7. package/migrations/runtime/0004_agent_run_plan_linkage.sql +8 -0
  8. package/native/agentsam-machine/cli/Cargo.toml +8 -1
  9. package/native/agentsam-machine/cli/README.md +21 -0
  10. package/native/agentsam-machine/core/Cargo.toml +7 -0
  11. package/native/agentsam-machine/core/README.md +14 -0
  12. package/native/agentsam-machine/core/build.rs +33 -0
  13. package/native/agentsam-machine/core/contracts/source-types.v1.json +353 -0
  14. package/native/agentsam-machine/core/src/lib.rs +6 -0
  15. package/native/agentsam-machine/core/src/source_types.rs +2 -2
  16. package/package.json +16 -6
  17. package/packages/agentsam-errors/package.json +1 -1
  18. package/packages/agentsam-errors/src/index.js +1 -0
  19. package/packages/agentsam-errors/src/tool.js +56 -0
  20. package/packages/agentsam-errors/test/tool.test.mjs +58 -0
  21. package/packages/agentsam-goap/README.md +52 -0
  22. package/packages/agentsam-goap/package.json +37 -0
  23. package/packages/agentsam-goap/src/adapters/d1-sqlite.js +570 -0
  24. package/packages/agentsam-goap/src/adapters/memory.js +199 -0
  25. package/packages/agentsam-goap/src/contracts.js +226 -0
  26. package/packages/agentsam-goap/src/control-plane.js +112 -0
  27. package/packages/agentsam-goap/src/errors.js +157 -0
  28. package/packages/agentsam-goap/src/index.js +5 -0
  29. package/packages/agentsam-goap/src/world.js +202 -0
  30. package/packages/agentsam-goap/test/goap-control-plane.test.mjs +245 -0
  31. package/packages/agentsam-goap/test/world.test.mjs +79 -0
  32. package/packages/agentsam-nav/dist/Nav.d.ts +43 -0
  33. package/packages/agentsam-nav/dist/NavCollapsible.d.ts +10 -0
  34. package/packages/agentsam-nav/dist/NavContent.d.ts +2 -0
  35. package/packages/agentsam-nav/dist/NavFooter.d.ts +2 -0
  36. package/packages/agentsam-nav/dist/NavGroup.d.ts +3 -0
  37. package/packages/agentsam-nav/dist/NavHeader.d.ts +2 -0
  38. package/packages/agentsam-nav/dist/NavMenu.d.ts +22 -0
  39. package/packages/agentsam-nav/dist/NavProvider.d.ts +35 -0
  40. package/packages/agentsam-nav/dist/NavTrigger.d.ts +2 -0
  41. package/packages/agentsam-nav/dist/Surfaces.d.ts +41 -0
  42. package/packages/agentsam-nav/dist/browser.d.ts +11 -0
  43. package/packages/agentsam-nav/dist/browser.global.js +135 -0
  44. package/packages/agentsam-nav/dist/browser.js +7290 -0
  45. package/packages/agentsam-nav/dist/contracts.d.ts +76 -0
  46. package/packages/agentsam-nav/dist/index.d.ts +11 -0
  47. package/packages/agentsam-nav/dist/index.js +7291 -0
  48. package/packages/agentsam-nav/dist/legacy.css +83 -0
  49. package/packages/agentsam-nav/dist/shell.css +113 -0
  50. package/packages/agentsam-nav/dist/theme.css +113 -0
  51. package/packages/agentsam-nav/dist/utils.d.ts +1 -0
  52. package/packages/agentsam-repository/src/goap.js +13 -14
  53. package/packages/agentsam-repository/src/goap.js.bak-20260922011251 +670 -0
  54. package/packages/agentsam-repository/src/tickets.js +15 -22
  55. package/packages/agentsam-repository/test/goap-tickets-workspace-state.test.mjs +19 -8
  56. package/packages/connectors/cloudflare/package.json +3 -1
  57. package/packages/identity/tests/lane1-packed-consumer.test.mjs +1 -1
  58. package/python/agentsam_sdk/repository/intelligence/discovery.py +27 -2
  59. package/python/agentsam_sdk/repository/intelligence/git.py +4 -0
  60. package/python/tests/test_repository_intelligence.py +30 -0
  61. package/src/cli/command-catalog.js +2 -1
  62. package/src/cli.js +10 -1
  63. package/src/commands/goap-world.js +134 -0
  64. package/src/commands/goap.js +11 -4
  65. package/src/commands/machine-binary.js +33 -27
  66. package/src/commands/machine-runtime.js +266 -0
  67. package/src/commands/machine.js +122 -51
  68. package/src/commands/package.js +530 -0
  69. package/src/commands/plan-ledger.js +370 -0
  70. package/src/commands/plan.js +183 -0
  71. package/src/commands/skill.js +78 -17
  72. package/src/knowledge/source.js +1 -1
  73. package/src/lib/slash-commands.js +1 -1
  74. package/src/local/runtime-store.js +24 -2
  75. package/src/local/sqlite.js +17 -0
  76. package/src/sam/operations/package-audit.js +41 -0
  77. package/src/sam/seed.js +2 -0
  78. package/skills/grok-auth/SKILL.md +0 -110
  79. package/skills/grok-auth/agentsam.skill.json +0 -25
  80. package/skills/grok-auth/references/grok-identity.md +0 -64
  81. package/skills/grok-auth/references/per-user-data.md +0 -49
  82. package/skills/grok-auth/references/prewired-and-env.md +0 -54
  83. package/skills/grok-auth/references/session-ui.md +0 -133
  84. package/skills/grok-auth/references/sign-in-methods.md +0 -55
  85. package/skills/grok-auth/references/wiring.md +0 -71
  86. package/skills/grok-building-games/SKILL.md +0 -213
  87. package/skills/grok-building-games/agentsam.skill.json +0 -25
  88. package/skills/grok-building-games/references/3d-libs.md +0 -64
  89. package/skills/grok-building-games/references/ai-pathfinding.md +0 -122
  90. package/skills/grok-building-games/references/audio.md +0 -129
  91. package/skills/grok-building-games/references/babylon.md +0 -202
  92. package/skills/grok-building-games/references/collision-physics.md +0 -122
  93. package/skills/grok-building-games/references/ecs-architecture.md +0 -111
  94. package/skills/grok-building-games/references/game-feel-juice.md +0 -110
  95. package/skills/grok-building-games/references/genres/board-card-chess.md +0 -89
  96. package/skills/grok-building-games/references/genres/endless-runner.md +0 -83
  97. package/skills/grok-building-games/references/genres/fps.md +0 -105
  98. package/skills/grok-building-games/references/genres/platformer-2d.md +0 -97
  99. package/skills/grok-building-games/references/genres/puzzle-match3-tetris.md +0 -131
  100. package/skills/grok-building-games/references/genres/racing-kart.md +0 -106
  101. package/skills/grok-building-games/references/genres/topdown-twin-stick.md +0 -97
  102. package/skills/grok-building-games/references/genres/tower-defense.md +0 -84
  103. package/skills/grok-building-games/references/genres/voxel-minecraft.md +0 -89
  104. package/skills/grok-building-games/references/input.md +0 -139
  105. package/skills/grok-building-games/references/phaser.md +0 -277
  106. package/skills/grok-building-games/references/procedural-generation.md +0 -141
  107. package/skills/grok-building-games/references/save-persistence.md +0 -108
  108. package/skills/grok-building-games/references/threejs-foundational.md +0 -148
  109. package/skills/grok-controls/SKILL.md +0 -274
  110. package/skills/grok-controls/agentsam.skill.json +0 -25
  111. package/skills/grok-design-ui/SKILL.md +0 -122
  112. package/skills/grok-design-ui/agentsam.skill.json +0 -25
  113. package/skills/grok-design-ui/references/animations.md +0 -379
  114. package/skills/grok-design-ui/references/performance.md +0 -88
  115. package/skills/grok-design-ui/references/refined-ui.md +0 -384
  116. package/skills/grok-design-ui/references/surfaces.md +0 -247
  117. package/skills/grok-design-ui/references/typography.md +0 -123
  118. package/skills/grok-game-animation-frames/SKILL.md +0 -84
  119. package/skills/grok-game-animation-frames/agentsam.skill.json +0 -25
  120. package/skills/grok-game-asset-core/SKILL.md +0 -69
  121. package/skills/grok-game-asset-core/agentsam.skill.json +0 -25
  122. package/skills/grok-game-character-consistency/SKILL.md +0 -69
  123. package/skills/grok-game-character-consistency/agentsam.skill.json +0 -25
  124. package/skills/grok-game-tilesets/SKILL.md +0 -65
  125. package/skills/grok-game-tilesets/agentsam.skill.json +0 -25
  126. package/skills/grok-game-ui-icons/SKILL.md +0 -56
  127. package/skills/grok-game-ui-icons/agentsam.skill.json +0 -25
  128. package/skills/grok-generate2dmap/LICENSE +0 -21
  129. package/skills/grok-generate2dmap/SKILL.md +0 -120
  130. package/skills/grok-generate2dmap/SOURCE.md +0 -6
  131. package/skills/grok-generate2dmap/agentsam.skill.json +0 -25
  132. package/skills/grok-generate2dmap/references/deliverables.md +0 -101
  133. package/skills/grok-generate2dmap/references/layered-map-contract.md +0 -209
  134. package/skills/grok-generate2dmap/references/map-strategies.md +0 -341
  135. package/skills/grok-generate2dmap/references/object-production-gate.md +0 -24
  136. package/skills/grok-generate2dmap/references/pipeline.md +0 -149
  137. package/skills/grok-generate2dmap/references/prop-pack-contract.md +0 -174
  138. package/skills/grok-generate2dmap/references/side-scroll-stages.md +0 -29
  139. package/skills/grok-generate2dmap/scripts/compose_layered_preview.py +0 -157
  140. package/skills/grok-generate2dmap/scripts/extract_prop_pack.py +0 -369
  141. package/skills/grok-generate2dsprite/LICENSE +0 -21
  142. package/skills/grok-generate2dsprite/SKILL.md +0 -313
  143. package/skills/grok-generate2dsprite/SOURCE.md +0 -6
  144. package/skills/grok-generate2dsprite/agentsam.skill.json +0 -25
  145. package/skills/grok-generate2dsprite/references/modes.md +0 -124
  146. package/skills/grok-generate2dsprite/references/prompt-rules.md +0 -315
  147. package/skills/grok-generate2dsprite/scripts/generate2dsprite.py +0 -1031
  148. package/skills/grok-generate2dsprite/scripts/make_layout_guide.py +0 -109
  149. package/skills/grok-imagine/SKILL.md +0 -201
  150. package/skills/grok-imagine/agentsam.skill.json +0 -25
  151. package/skills/grok-multiplayer-p2p/SKILL.md +0 -111
  152. package/skills/grok-multiplayer-p2p/agentsam.skill.json +0 -25
  153. package/skills/grok-multiplayer-p2p/references/react-binding.md +0 -144
  154. package/skills/grok-multiplayer-p2p/references/signaling-relay.md +0 -269
  155. package/skills/grok-neon/SKILL.md +0 -157
  156. package/skills/grok-neon/agentsam.skill.json +0 -25
  157. package/skills/grok-og/SKILL.md +0 -102
  158. package/skills/grok-og/agentsam.skill.json +0 -25
  159. package/skills/grok-og/references/brand-pass.md +0 -53
  160. package/skills/grok-og/references/custom-card.md +0 -107
  161. package/skills/grok-og/references/favicon-and-icons.md +0 -48
  162. package/skills/grok-og/references/og-type-contract.md +0 -18
  163. package/skills/grok-og/references/placeholder-card.md +0 -21
  164. package/skills/grok-og/references/x-banner.md +0 -41
  165. package/skills/grok-threejs/SKILL.md +0 -67
  166. package/skills/grok-threejs/agentsam.skill.json +0 -25
  167. package/skills/grok-threejs/references/llms-full.txt +0 -2780
  168. package/skills/grok-video2dsprite/LICENSE +0 -21
  169. package/skills/grok-video2dsprite/SKILL.md +0 -236
  170. package/skills/grok-video2dsprite/SOURCE.md +0 -6
  171. package/skills/grok-video2dsprite/agentsam.skill.json +0 -25
  172. package/skills/grok-video2dsprite/references/pipeline.md +0 -90
  173. package/skills/grok-video2dsprite/references/prompt-rules.md +0 -63
  174. package/skills/grok-video2dsprite/scripts/video2dsprite.py +0 -490
  175. package/skills/grok-xai-api/SKILL.md +0 -152
  176. package/skills/grok-xai-api/agentsam.skill.json +0 -25
  177. package/test/account-session.test.mjs +0 -101
  178. package/test/agent-capabilities.test.mjs +0 -67
  179. package/test/app-authority-context.test.mjs +0 -32
  180. package/test/app-building-skills.test.mjs +0 -61
  181. package/test/apps-scaffold-contract.test.mjs +0 -115
  182. package/test/blender-cad.test.mjs +0 -146
  183. package/test/cad-docker.test.mjs +0 -96
  184. package/test/capabilities.test.mjs +0 -133
  185. package/test/cli/api-key-env-whoami.test.mjs +0 -129
  186. package/test/cli/catalog-authority.test.mjs +0 -64
  187. package/test/cli/codebaseindex-plan-ux.test.mjs +0 -37
  188. package/test/cli/eval-live.test.mjs +0 -219
  189. package/test/cli/go.test.mjs +0 -128
  190. package/test/cli/local-vault-and-provider-setup.test.mjs +0 -268
  191. package/test/cli/machine-command.test.mjs +0 -34
  192. package/test/cli/mcp-client.test.mjs +0 -256
  193. package/test/cli/preferences-runtime.test.mjs +0 -11
  194. package/test/cli/runtime-persist.test.mjs +0 -56
  195. package/test/cli/runtime-ui.test.mjs +0 -141
  196. package/test/cli/rust-command.test.mjs +0 -21
  197. package/test/cli/skill-npm-and-env.test.mjs +0 -52
  198. package/test/cli/status-actions.test.mjs +0 -88
  199. package/test/cli/wireframes-go-registry.test.mjs +0 -139
  200. package/test/cli-preferences.test.mjs +0 -46
  201. package/test/cloudflare-connector.test.mjs +0 -93
  202. package/test/cloudflare-runtime.test.mjs +0 -82
  203. package/test/context.test.mjs +0 -159
  204. package/test/credentials-audit.test.mjs +0 -113
  205. package/test/deploy-health-scan.test.mjs +0 -95
  206. package/test/deploy-receipt.test.mjs +0 -91
  207. package/test/dockerize.test.mjs +0 -93
  208. package/test/error-diagnostics.test.mjs +0 -124
  209. package/test/eval-context.test.mjs +0 -37
  210. package/test/execution-approvals.test.mjs +0 -27
  211. package/test/fixtures/cad/courtyard-house.json +0 -208
  212. package/test/fixtures/knowledge-rpc-worker.mjs +0 -16
  213. package/test/fixtures/project-authority/customer-app/.agentsam/app.json +0 -5
  214. package/test/fixtures/project-authority/customer-app/apps/my-product/index.ts +0 -1
  215. package/test/fixtures/project-authority/customer-app/wrangler.toml +0 -17
  216. package/test/gcloud-auth.test.mjs +0 -111
  217. package/test/go/build-source-identity.test.mjs +0 -31
  218. package/test/go/cloudflare-probe.test.mjs +0 -317
  219. package/test/go/distribution.test.mjs +0 -28
  220. package/test/google-cloud-connection.test.mjs +0 -83
  221. package/test/google-cloud-inventory.test.mjs +0 -64
  222. package/test/indexing-provider.test.mjs +0 -29
  223. package/test/init-options.test.mjs +0 -35
  224. package/test/integration/ai-access-onboarding.test.mjs +0 -47
  225. package/test/integration/app-command.test.mjs +0 -85
  226. package/test/integration/autorag-project-authority.integration.test.mjs +0 -51
  227. package/test/integration/autorag-runtime-discovery.test.mjs +0 -107
  228. package/test/integration/cad-discovery.test.mjs +0 -158
  229. package/test/integration/cad-docker-executor.test.mjs +0 -249
  230. package/test/integration/cad-execution.test.mjs +0 -184
  231. package/test/integration/cad-project-app.test.mjs +0 -31
  232. package/test/integration/cad-project-d1.test.mjs +0 -25
  233. package/test/integration/cad-project-native.test.mjs +0 -24
  234. package/test/integration/cad-project-workflow.test.mjs +0 -9
  235. package/test/integration/cad-project.test.mjs +0 -85
  236. package/test/integration/cli-help.test.mjs +0 -41
  237. package/test/integration/cms-app-scaffold.test.mjs +0 -77
  238. package/test/integration/cms-site-tenancy-contract.test.mjs +0 -268
  239. package/test/integration/codebaseindex-ingest.test.mjs +0 -255
  240. package/test/integration/core-client.integration.test.mjs +0 -55
  241. package/test/integration/database-hosted-honesty.test.mjs +0 -49
  242. package/test/integration/desktop-keychain-boundary.test.mjs +0 -45
  243. package/test/integration/error-runtime-rpc.test.mjs +0 -71
  244. package/test/integration/features-resolve.test.mjs +0 -147
  245. package/test/integration/hosted-work-host-authority.test.mjs +0 -47
  246. package/test/integration/icon-registry.test.mjs +0 -67
  247. package/test/integration/ingest-discover-models.test.mjs +0 -30
  248. package/test/integration/inspect-path-cli.test.mjs +0 -46
  249. package/test/integration/install-script.test.mjs +0 -110
  250. package/test/integration/inventory-core.test.mjs +0 -53
  251. package/test/integration/inventory-eligibility.test.mjs +0 -59
  252. package/test/integration/inventory-evidence.test.mjs +0 -125
  253. package/test/integration/knowledge-rpc.test.mjs +0 -112
  254. package/test/integration/local-fs.test.mjs +0 -113
  255. package/test/integration/local-provider-bridge.test.mjs +0 -65
  256. package/test/integration/local-studio-settings-production.test.mjs +0 -40
  257. package/test/integration/lockfile-sync.test.mjs +0 -26
  258. package/test/integration/merkle-cli.test.mjs +0 -61
  259. package/test/integration/merkle-persistence-identity.test.mjs +0 -48
  260. package/test/integration/plugins-cloudflare.integration.test.mjs +0 -28
  261. package/test/integration/provider-env-cli.test.mjs +0 -60
  262. package/test/integration/provider-factory.test.mjs +0 -197
  263. package/test/integration/repository-company-graph.test.mjs +0 -90
  264. package/test/integration/runtime-migrations.test.mjs +0 -87
  265. package/test/integration/runtime-status.integration.test.mjs +0 -227
  266. package/test/integration/sam-activity-recovery.test.mjs +0 -147
  267. package/test/integration/sam-decision.test.mjs +0 -584
  268. package/test/integration/sam-kernel.test.mjs +0 -99
  269. package/test/integration/sam-planning-astar.test.mjs +0 -279
  270. package/test/integration/scaffold-cloudflare.test.mjs +0 -46
  271. package/test/integration/skill-runtime.test.mjs +0 -240
  272. package/test/integration/storage-architecture.test.mjs +0 -154
  273. package/test/integration/store-discovery.test.mjs +0 -44
  274. package/test/integration/studio-fs-pty-e2e.test.mjs +0 -294
  275. package/test/integration/terminal-exec.integration.test.mjs +0 -86
  276. package/test/integration/theme-package-registry.test.mjs +0 -31
  277. package/test/integration/tool-runtime.test.mjs +0 -124
  278. package/test/integration/tool-schema.test.mjs +0 -59
  279. package/test/jr-dev-skill.test.mjs +0 -26
  280. package/test/knowledge-context-pack.test.mjs +0 -19
  281. package/test/knowledge-postgres.test.mjs +0 -40
  282. package/test/knowledge-service.test.mjs +0 -110
  283. package/test/knowledge.test.mjs +0 -206
  284. package/test/live/terminal-transport.live.test.mjs +0 -24
  285. package/test/local-sessions.test.mjs +0 -57
  286. package/test/local-studio-deploy.test.mjs +0 -83
  287. package/test/loopback-oauth.test.mjs +0 -53
  288. package/test/merkle-render.test.mjs +0 -31
  289. package/test/mini.test.mjs +0 -140
  290. package/test/model-catalog.test.mjs +0 -70
  291. package/test/models.test.mjs +0 -309
  292. package/test/npm10-lock.test.mjs +0 -29
  293. package/test/ollama.test.mjs +0 -137
  294. package/test/open-url.test.mjs +0 -64
  295. package/test/openai-responses.test.mjs +0 -155
  296. package/test/portable-context.test.mjs +0 -94
  297. package/test/project-config.test.mjs +0 -81
  298. package/test/project-rules.test.mjs +0 -44
  299. package/test/provider-credentials.test.mjs +0 -106
  300. package/test/rehydrate.test.mjs +0 -25
  301. package/test/release-hygiene.test.mjs +0 -42
  302. package/test/repository-snapshot-view.test.mjs +0 -112
  303. package/test/responses-runner.test.mjs +0 -465
  304. package/test/runtime-activity.test.mjs +0 -98
  305. package/test/sdk-worker-contract.test.mjs +0 -72
  306. package/test/security.test.mjs +0 -266
  307. package/test/setup-planner.test.mjs +0 -74
  308. package/test/setup-runtime.test.mjs +0 -51
  309. package/test/shell.test.mjs +0 -281
  310. package/test/skills.test.mjs +0 -22
  311. package/test/smoke.mjs +0 -122
  312. package/test/telemetry.test.mjs +0 -79
  313. package/test/terminal/local-pty.mock.test.mjs +0 -153
  314. package/test/terminal-machine-identity.test.mjs +0 -88
  315. package/test/theme-portability.test.mjs +0 -14
  316. package/test/tools-search.test.mjs +0 -73
  317. package/test/unit/website-assets-bindings.test.mjs +0 -60
  318. package/test/whoami-resume.test.mjs +0 -157
@@ -1,313 +0,0 @@
1
- ---
2
- name: generate2dsprite
3
- description: >
4
- Generate and postprocess 2D game sprites and animation sheets: pixel-art
5
- characters, NPCs, creatures, spells, projectiles, impacts, props, summons,
6
- and transparent PNG/GIF exports. Use when building browser games that need
7
- real sprite sheets (not code-drawn placeholders), matching a map art style,
8
- or producing magenta-background sheets for chroma-key cleanup. Triggers on
9
- "sprite", "sprite sheet", "animation sheet", "pixel art character", "walk
10
- cycle", "attack animation", "projectile sprite", "2D game asset".
11
- metadata:
12
- short-description: "2D sprite sheets: imagine_text_to_image + magenta chroma postprocess"
13
- user-invocable: false
14
- ---
15
-
16
- # Generate2dsprite
17
-
18
- Use this skill for self-contained 2D sprite or animation assets in the
19
- **app-builder sandbox** (TanStack Start + browser games).
20
-
21
- When a larger game or playable prototype needs sprites, use this skill for the
22
- visible sprite assets and keep runtime/game assembly separate (wire into Phaser /
23
- Canvas / DOM after export). Do not replace requested sprite assets with
24
- code-drawn placeholders.
25
-
26
- ## App-builder / Grok environment
27
-
28
- | Item | Value |
29
- | --- | --- |
30
- | Skill dir | `.grok/skills/generate2dsprite/` |
31
- | Scripts | `python3 .grok/skills/generate2dsprite/scripts/<script>.py …` |
32
- | Image tools | `imagine_text_to_image` / `imagine_image_to_image` (path-based; see **`imagine`** skill for prompt craft) |
33
- | Inspect images | `read_file` on the PNG path (not Codex view_image) |
34
- | Generated image path | `imagine_text_to_image` returns a sandbox `file_path`; copy that path into your run dir before processing |
35
- | Python deps | Pillow + numpy (preinstalled in the image) |
36
- | Output home | Prefer `assets/sprites/<name>/` under `/workspace` so the app can import them |
37
- | Engine target | Browser: Canvas 2D, Phaser, or DOM/`<img>` — not Godot/Unity unless the user asks |
38
-
39
- Related skills: **`imagine`** (image tool usage), **`game-asset-core`** (+
40
- `game-animation-frames` / `game-character-consistency` for QC and engine-ready
41
- defaults), **`generate2dmap`** (maps/props), **`video2dsprite`** (denser motion
42
- via `imagine_image_to_video`), **`building-games`** (game loop / integration).
43
-
44
- ## Parameters
45
-
46
- Infer these from the user request:
47
-
48
- - `asset_type`: `player` | `npc` | `creature` | `character` | `spell` | `projectile` | `impact` | `prop` | `summon` | `fx`
49
- - `action`: `single` | `idle` | `cast` | `attack` | `shoot` | `jump` | `hurt` | `combat` | `walk` | `run` | `hover` | `charge` | `projectile` | `impact` | `explode` | `death`
50
- - `view`: `topdown` | `side` | `3/4`
51
- - `sheet`: `auto` | `2x2` | `2x3` | `2x4` | `3x3` | `3x4` | `4x4` | `5x5` | `custom_grid` | `strip_1x3` | `strip_1x4`
52
- - `frames`: `auto` or explicit count
53
- - `bundle`: `single_asset` | `unit_bundle` | `spell_bundle` | `combat_bundle` | `line_bundle` | `hero_action_bundle` | `engine_atlas`
54
- - `effect_policy`: `all` | `largest`
55
- - `anchor`: `center` | `bottom` | `feet`
56
- - `margin`: `tight` | `normal` | `safe`
57
- - `art_style`: pixel_art | clean_hd | pixel_inspired | retro_pixel | map_style | project-native
58
- - `reference`: `none` | `attached_image` | `generated_image` | `local_file`
59
- - `layout_guide`: `none` | `optional` | `recommended`
60
- - `prompt`: the user's theme or visual direction
61
- - `role`: only when the asset is clearly an NPC role
62
- - `name`: optional output slug
63
-
64
- Read [references/modes.md](references/modes.md) when the request is ambiguous.
65
-
66
- ## Agent Rules
67
-
68
- - Decide the asset plan yourself. Do not force the user to spell out sheet size, frame count, or bundle structure when the request already implies them.
69
- - Do not pack unrelated actions into one raw generated sheet just to satisfy a `4x4`, `5x5`, or custom engine atlas. A raw generated sheet should represent one action family, one continuous sequence, one canonical directional locomotion sheet, or one prop/asset pack.
70
- - For controllable heroes, main characters, and high-value player assets with multiple actions, generate separate per-action grid sheets first, QC each action, then deterministically assemble the engine-required atlas only after the grids pass visual review.
71
- - For controllable heroes, main characters, and high-value player body actions, default attack/shoot/cast body sheets to body-only. Do not include large slash arcs, muzzle flashes, projectiles, impact bursts, detached dust, long trails, or wide detached FX in the body sheet. Generate those as separate `fx`, `projectile`, or `impact` sheets and layer them in the game.
72
- - Only include wide attack FX in the same raw body sheet when the target runtime explicitly supports wider per-action cells plus per-action origin/anchor metadata. Otherwise, a wide FX bbox will force the body to shrink inside the fixed cell.
73
- - Write the art prompt yourself. Do not default to the prompt-builder script.
74
- - Use built-in `imagine_text_to_image` for every raw image.
75
- - Do not create raw sprite art with Three.js, Canvas, SVG, HTML/CSS drawing, PIL shape drawing, procedural geometry, placeholder primitives, or code-rendered screenshots. Runtime code may display finished generated assets, and scripts may make layout guides or postprocess generated images, but requested sprite art must originate from built-in `imagine_text_to_image`.
76
- - When the user provides or implies a visual reference, pass that reference's sandbox `file_path` to `imagine_image_to_image` (the tool reads the file). Also `read_file` the local reference so you can see it; a path mentioned only inside the prompt is not a visual input.
77
- - Do not force pixel art when the asset is a map prop for `$generate2dmap` or when the user/project requests a different style. Match the map or reference style first.
78
- - Use the script only as a deterministic processor: magenta cleanup, frame splitting, component filtering, scaling, alignment, QC metadata, transparent sheet export, and GIF export.
79
- - Do not use scripts to generate the creative image prompt. If a legacy prompt-builder command exists, treat it as historical compatibility only, not the normal skill workflow.
80
- - Layout guides are allowed only as deterministic geometry references for image generation. They may show slot count, spacing, centering, and safe padding, but must never define the creative art direction.
81
- - Treat script flags as execution primitives chosen by the agent, not user-facing hardcoded workflow.
82
- - If a generated sheet touches cell edges, drifts in scale, or breaks a projectile / impact loop, either reprocess with better primitive settings or regenerate the raw sheet.
83
- - Do not use raw single-row sheets such as `1x4`, `1x6`, `1x8`, or `1xN` for characters, players, controllable heroes, creatures, NPCs, enemies, summons, animated props, or any asset where a body/subject must stay centered. Single-row raw generation is too likely to drift horizontally and crop inconsistently.
84
- - For animated body assets, use a multi-row grid by default: 4 frames -> `2x2`, 6 frames -> `2x3`, 8 frames -> `2x4`, 9 frames -> `3x3`, 12 frames -> `3x4` or `4x3`, 16 frames -> `4x4`.
85
- - If a game engine needs a final single-row strip or mixed atlas, first generate and QC the action as a multi-row grid, then assemble the delivery strip/atlas deterministically.
86
- - In every animated body grid prompt, require the subject body to stay centered in each cell, full body inside the central 60% to 70% safe area, consistent scale across cells, stable feet/bottom anchor line when applicable, and no limbs, weapons, hair, capes, dust, muzzle flashes, or detached FX crossing cell edges.
87
- - For hero attack body prompts, explicitly require body height and body scale to match the accepted idle/run sheets, stable feet/bottom anchor, weapon kept close enough to avoid widening the body bbox, and no detached slash arc or screen-space attack effect.
88
- - For map prop packs, classify props before choosing a grid. Square `2x2`, `3x3`, and `4x4` packs are only for compact props. Do not put platforms, floors, bridges, walls, ladders, gates, doors, long hazards, wide/tall props, collision-bearing objects, or tileset/strip pieces into square prop packs; use one-by-one, `1x3`/`1x4` strips, custom wide cells, or a tileset-like atlas instead.
89
- - Keep the solid `#FF00FF` background rule unless the user explicitly wants a different processing workflow.
90
-
91
- ## Workflow
92
-
93
- ### 1. Infer the asset plan
94
-
95
- Pick the smallest useful output.
96
-
97
- Examples:
98
-
99
- - controllable hero with four directions -> `player` + `player_sheet`
100
- - side-view controllable hero with idle/run/shoot/jump -> `player` + `hero_action_bundle`
101
- - idle grid sheet, usually `2x2` for 4 frames
102
- - run grid sheet, usually `2x2` or `2x3` depending on needed frame count
103
- - shoot grid sheet with body/weapon only, usually `2x2`
104
- - jump grid sheet, usually `2x2`
105
- - projectile / muzzle flash as separate assets when needed
106
- - optional assembled engine atlas after per-action QC
107
- - side-view controllable hero with melee attack -> `player` + `hero_action_bundle`
108
- - attack body grid sheet, usually `2x2` or `2x3`, body-only
109
- - slash arc / weapon trail as a separate `fx` sheet when the attack needs a wide visual effect
110
- - impact spark as a separate `impact` sheet when hits need feedback
111
- - healer overworld NPC -> `npc` + `single_asset` or `unit_bundle`
112
- - large boss idle loop -> `creature` + `idle` + `3x3`
113
- - wizard throwing a magic orb -> `spell_bundle`
114
- - caster cast sheet
115
- - projectile loop
116
- - impact burst
117
- - monster line request -> `line_bundle`
118
- - plan 1-3 forms
119
- - per form, make the sheets the request actually needs
120
-
121
- ### 2. Write the prompt manually
122
-
123
- Use [references/prompt-rules.md](references/prompt-rules.md).
124
-
125
- Choose `art_style` before writing the prompt:
126
-
127
- - Use `pixel_art` or `retro_pixel` for classic sprites, 16-bit RPG actors, and requests that explicitly ask for pixel art.
128
- - Use `clean_hd` for map props or assets intended to match clean hand-painted HD maps.
129
- - Use `pixel_inspired` only when the user wants a pixel-adjacent look without retro chunkiness.
130
- - Use `map_style` or `project-native` when an existing map, game, or reference should define the style.
131
-
132
- If a reference is involved:
133
-
134
- - Wire the reference into the call: pass its sandbox `file_path` to `imagine_image_to_image` — or the path list to `imagine_reference_to_image` for 2+ refs (generated images already have a `file_path`; local files use their sandbox path). Also `read_file` local references so you can see them.
135
- - State the reference role explicitly: preserve identity/style, create an animation sheet for the same subject, create an evolution/variant, or derive a matching prop/FX.
136
- - Preserve the stable identity markers from the reference: silhouette, palette, face/eye features, costume marks, major accessories, and material language.
137
- - Let only the requested action or evolution change. Do not redesign the subject unless the user asks.
138
- - Still require exact sheet shape, solid magenta background, frame containment, and same scale across frames.
139
-
140
- Keep the strict parts:
141
-
142
- - solid `#FF00FF` background
143
- - exact sheet shape
144
- - same character or asset identity across frames
145
- - same bounding box and pixel scale across frames
146
- - explicit containment: nothing may cross cell edges
147
-
148
- Mixed-action atlas guardrail:
149
-
150
- - Do not ask `imagine_text_to_image` to generate unrelated action rows in one raw sheet, such as `row 1 idle, row 2 run, row 3 shoot, row 4 jump`, for a controllable hero or main character.
151
- - Do not ask `imagine_text_to_image` to generate raw single-row action strips such as `1x4 idle`, `1x4 run`, `1x4 shoot`, or `1x4 jump` for a controllable hero, character, creature, NPC, enemy, summon, or animated prop.
152
- - If an engine needs a combined `4x4`, `5x5`, custom atlas, or row-strip delivery format, generate the action grids separately, process and QC them separately, then assemble the delivery atlas deterministically.
153
- - Exceptions are canonical directional locomotion sheets, one continuous long action sequence, prop packs, tileset-like atlases, and low-stakes compact enemy combat sheets. These still need one coherent prompt and visual QC.
154
- - Keep projectile, muzzle flash, impact, dust trails, and detached FX in separate sheets unless they are intentionally part of the same action silhouette and remain tightly attached.
155
- - For controllable heroes and main characters, "tightly attached" is not enough when the effect makes the action bbox much wider or taller than idle/run. Split wide slash arcs, muzzle flashes, long weapon trails, dust clouds, and impact bursts into separate FX sheets by default.
156
-
157
- Animated body grid guardrail:
158
-
159
- - `1x4` and other raw single-row sheets are not valid defaults for animated bodies. This includes players, controllable heroes, creatures, NPCs, enemies, summons, animated props, and body-attached combat actions.
160
- - Use `2x2` for 4-frame body actions. This is the default for idle, short attack, shoot body, jump, hurt, hover, and compact side-view walk/run actions.
161
- - Use `2x3` for 6-frame body actions such as cast, attack, summon, run, charge, or transformation.
162
- - Use `2x4`, `3x3`, `3x4`, or `4x4` for longer body actions. Prefer a compact grid over a long row.
163
- - For 4-direction top-down walk, `4x4` can remain a raw generation shape because it is a canonical directional locomotion sheet, not four unrelated action rows.
164
- - If final runtime needs a row strip, assemble it after QC from the processed multi-row grid frames.
165
- - Keep the character centered in every cell. The body centerline should stay near the cell center, feet/bottom anchor should stay on the same y-position when visible, and the subject should occupy only the central safe area with generous magenta padding.
166
- - For attack, shoot, cast, charge, and other body actions, the body height should stay close to the accepted idle/run body height. If a fixed-cell runtime is being used, reject body-action output when the body appears more than about 10-15% smaller than idle/run, even if `edge_touch_frames` is empty.
167
-
168
- Map prop pack guardrail:
169
-
170
- - Use square `2x2`, `3x3`, and `4x4` raw prop packs only for compact props such as rocks, shrubs, barrels, crates, lamps, small signs, pots, debris, and small ornaments.
171
- - Do not use square prop packs for wide or collision-critical map objects: floors, platforms, ledges, terrain chunks, bridges, wall runs, ladders, roads, rails, pipes, long spike traps, gates, doors, buildings, large trees, checkpoints, exits, or build pads.
172
- - Use one-by-one generation for unique, large, important, tall, irregular, or collision-aligned props.
173
- - Use `1x3` or `1x4` strips for repeatable platform/floor assets, with left cap, middle repeat, right cap, and optional slope/corner/end variant.
174
- - Use custom wide cells for multiple similar wide objects. The grid must state explicit non-square cell dimensions and must not mix compact props with platform/terrain objects.
175
- - If a square prop pack fails due to edge touch or bad cropping, do not solve it by relaxing QC. Reclassify the object and regenerate with a more suitable sheet shape.
176
-
177
- If a layout guide is useful, generate one before calling built-in `imagine_text_to_image`:
178
-
179
- ```bash
180
- python3 .grok/skills/generate2dsprite/scripts/make_layout_guide.py \
181
- --rows <rows> \
182
- --cols <cols> \
183
- --cell-width 384 \
184
- --cell-height 384 \
185
- --output <run-dir>/references/<rows>x<cols>-layout-guide.png
186
- ```
187
-
188
- Then pass the guide PNG's sandbox path to `imagine_image_to_image` — a guide that is only "visible in conversation" never reaches the image model. Also `read_file` it so you can see the geometry. Tell `imagine_image_to_image` to use it only for invisible slot count, spacing, centering, and safe padding. The output must not reproduce guide boxes, safe-area rectangles, center marks, labels, borders, or guide background.
189
-
190
- Use layout guides deliberately:
191
-
192
- - recommended for `prop_pack_3x3`, `prop_pack_4x4`, tileset-like atlases, fixed multi-row animation grids, and non-directional 16-frame action sequences such as casting, summoning, charging, death, or transformation
193
- - optional for `3x3` large idle and high-value showcase loops when previous generations drift in scale or spacing
194
- - not the default for `4x4` four-direction walk sheets, because the guide can make directional poses too conservative; use it only after an unguided run fails layout or edge safety
195
-
196
- ### 3. Generate the raw image
197
-
198
- Use built-in `imagine_text_to_image`.
199
-
200
- Do not use Three.js, Canvas, SVG, HTML/CSS, PIL drawing, or other code-generated art as the raw sprite source. These are acceptable only for runtime display, debug overlays, deterministic layout guides, or postprocessing already-generated images.
201
-
202
- After generation:
203
-
204
- - keep the returned sandbox `file_path`
205
- - copy that file into the working output folder as `raw-sheet.png` (or similar)
206
- - keep the original generated image in place
207
- - to run a further Imagine edit on a **postprocessed** PNG, pass that PNG's sandbox path to `imagine_image_to_image`
208
-
209
- ### 4. Postprocess locally
210
-
211
- Run the processor on the raw image:
212
-
213
- ```bash
214
- # --target is ONLY: player | npc | creature | asset
215
- # Map character/spell/projectile/prop/summon/fx → --target asset (or player/npc/creature).
216
- # --mode must be a known grid mode (idle/walk/attack/shoot/jump/…) OR pass both --rows and --cols.
217
- python3 .grok/skills/generate2dsprite/scripts/generate2dsprite.py process \
218
- --input <run-dir>/raw-sheet.png \
219
- --target <player|npc|creature|asset> \
220
- --mode <idle|walk|run|attack|shoot|jump|cast|hurt|projectile|impact|fx|player_sheet|…> \
221
- --output-dir <run-dir> \
222
- --shared-scale \
223
- --align feet
224
- # Custom grid example:
225
- # --mode sheet --rows 2 --cols 3 --label-prefix frame
226
- ```
227
-
228
- List valid targets/modes: `python3 …/generate2dsprite.py list-options`
229
-
230
- The processor is intentionally low-level. The agent chooses:
231
-
232
- - `rows` / `cols`
233
- - `fit_scale`
234
- - `align`
235
- - `shared_scale`
236
- - `component_mode`
237
- - `component_padding`
238
- - `edge_touch` rejection strategy
239
-
240
- Use the processor to gather QC metadata, not to make aesthetic decisions for you.
241
-
242
- For hero action bundles, process each action grid as its own sheet before any final atlas assembly. Use `component_mode=largest` for body-only hero grids. Use `component_mode=all` only for projectile, impact, aura, slash FX, or intentionally detached FX sheets, not for fixed-cell hero body attacks that need stable body scale.
243
-
244
- ### 5. QC the result
245
-
246
- Check:
247
-
248
- - did any frame touch the cell edge
249
- - did any frame resize differently than intended
250
- - did detached effects become noise
251
- - does the sheet still read as one coherent animation
252
- - for hero/player body actions, does the body height match the accepted idle/run scale within roughly 10-15%
253
- - for fixed-cell runtimes, did a wide weapon trail or FX arc shrink the body inside the cell
254
-
255
- If not, rerun with different processor settings or regenerate the raw sheet.
256
-
257
- ### 6. Return the right bundle
258
-
259
- For a single sheet, expect:
260
-
261
- - `raw-sheet.png`
262
- - `raw-sheet-clean.png`
263
- - `sheet-transparent.png`
264
- - frame PNGs
265
- - `animation.gif`
266
- - `prompt-used.txt`
267
- - `pipeline-meta.json`
268
-
269
- For `player_sheet`, expect:
270
-
271
- - transparent 4x4 sheet
272
- - 16 frame PNGs
273
- - direction strips
274
- - 4 direction GIFs
275
-
276
- For `spell_bundle` or `unit_bundle`, create one folder per asset in the bundle.
277
-
278
- For `hero_action_bundle`, expect:
279
-
280
- - one raw and processed sheet per action
281
- - per-action frame PNGs and GIFs for visual QC
282
- - separate projectile / muzzle / slash / impact assets when the hero shoots, casts, or uses wide melee effects
283
- - optional assembled `engine-atlas-transparent.png` only after per-action QC passes
284
-
285
- ## Defaults
286
-
287
- - `idle`
288
- - small or medium actor -> `2x2`
289
- - large creature or boss -> `3x3`
290
- - `cast` -> prefer `2x3`
291
- - `projectile` -> prefer `2x2` for short animated loops; use row strips only when the engine specifically requires a strip, and assemble that strip after QC when practical
292
- - `impact` / `explode` -> prefer `2x2`
293
- - `walk`
294
- - topdown actor -> `4x4` for four-direction walk
295
- - side-view asset -> `2x2`
296
- - controllable hero or main player with multiple actions -> `hero_action_bundle`
297
- - generate one action per raw multi-row grid sheet, not as a raw `1x4` strip
298
- - attack/shoot/cast body sheets are body-only by default; wide slash arcs, muzzle flashes, projectiles, trails, dust, and hit impacts are separate FX/projectile/impact sheets
299
- - default 4-frame action grid is `2x2`
300
- - use `2x3` for 6-frame actions and `2x4`, `3x3`, `3x4`, or `4x4` for longer actions
301
- - do not generate a mixed-action raw `4x4`, `5x5`, or custom atlas
302
- - assemble the final atlas only as a deterministic delivery step if the game requires it
303
- - `4x4`, `5x5`, and custom grids
304
- - use as raw generation only for one coherent long action sequence, canonical directional locomotion, prop packs, or tileset-like atlases
305
- - use as delivery atlases for mixed actions only after separate action sheets pass QC
306
- - use `shared_scale` by default for any multi-frame asset where frame-to-frame consistency matters
307
- - use `largest` component mode for hero/player body grids; use `all` for separate FX/projectile/impact sheets
308
-
309
- ## Resources
310
-
311
- - `references/modes.md`: asset, action, bundle, and sheet selection
312
- - `references/prompt-rules.md`: manual prompt patterns and containment rules
313
- - `scripts/generate2dsprite.py`: postprocess primitive for cleanup, extraction, alignment, QC, and GIF export
@@ -1,6 +0,0 @@
1
- # Source
2
-
3
- Vendored from [agent-sprite-forge](https://github.com/0x0funky/agent-sprite-forge) (`53dce6055984c610d833e77887939cbd0fb1c92b`).
4
- MIT License — see `LICENSE`.
5
-
6
- Adapted for Grok Build / app-builder sandbox (image tool paths, `read_file` for image inspection, workspace-relative script paths).
@@ -1,25 +0,0 @@
1
- {
2
- "schema": "agentsam.skill.v1",
3
- "id": "grok-generate2dsprite",
4
- "name": "Grok \u00b7 generate2dsprite",
5
- "description": "2D sprite sheets: imagine_text_to_image + magenta chroma postprocess",
6
- "icon": "skill",
7
- "slash": {
8
- "suggested": "/grok-generate2dsprite"
9
- },
10
- "instructions": {
11
- "source": "local_file",
12
- "ref": "SKILL.md"
13
- },
14
- "execution": {
15
- "mode": "turn",
16
- "tools": [],
17
- "operations": [],
18
- "capabilities": []
19
- },
20
- "provenance": {
21
- "source": "apps/local-studio/.grok/skills",
22
- "vendor": "grok",
23
- "status": "imported"
24
- }
25
- }
@@ -1,124 +0,0 @@
1
- # Modes
2
-
3
- Use this file when the user's wording leaves room for multiple valid asset plans.
4
-
5
- ## Asset Types
6
-
7
- - `player`: controllable overworld hero
8
- - `npc`: role-readable town or field character
9
- - `creature`: monster, beast, spirit, boss, summon
10
- - `character`: side-view or non-overworld humanoid unit that is not specifically a player or NPC
11
- - `spell`: castable magic or skill sequence
12
- - `projectile`: loopable traveling object such as orb, arrow, fireball, bullet, beam segment
13
- - `impact`: hit burst, explosion, contact FX
14
- - `prop`: item, weapon, shrine object, pickup, deployable
15
- - `summon`: conjured unit or creature entrance asset
16
- - `fx`: generic visual effect sheet
17
-
18
- ## Actions
19
-
20
- - `single`: one static sprite
21
- - `idle`: looped breathing / stance / aura cycle
22
- - `cast`: spell or skill wind-up / release
23
- - `attack`: attack-only body animation; for controllable heroes/main characters, wide slash arcs and hit FX should be separate `fx`/`impact` sheets
24
- - `shoot`: ranged attack body action; projectile and muzzle flash should usually be separate assets
25
- - `jump`: airborne takeoff / rise / fall / landing action
26
- - `hurt`: damage reaction
27
- - `combat`: combined attack + hurt sheet
28
- - `walk`: travel loop
29
- - `run`: faster travel loop
30
- - `hover`: airborne idle / travel loop
31
- - `charge`: power-up or dash prep
32
- - `projectile`: loopable travel motion
33
- - `impact`: contact burst
34
- - `explode`: stronger impact or destruction burst
35
- - `death`: defeat / vanish / collapse sequence
36
-
37
- ## Bundle Presets
38
-
39
- - `single_asset`: one sprite or one sheet
40
- - `unit_bundle`
41
- - default: `idle` + `combat`
42
- - optional: `walk`
43
- - `spell_bundle`
44
- - default: `cast` + `projectile` + `impact`
45
- - `combat_bundle`
46
- - default: `idle` + `attack` + `hurt`
47
- - `line_bundle`
48
- - default: 1-3 forms
49
- - per form, choose only the needed sheets
50
- - `hero_action_bundle`
51
- - default: one sheet per action, often `idle` + `run` + `attack` or `shoot` + `jump`
52
- - keep projectiles, muzzle flashes, slash arcs, weapon trails, impacts, and dust as separate assets unless the runtime supports wider per-action cells plus explicit origins
53
- - body action sheets should preserve idle/run body scale; split wide FX rather than letting it shrink the body in a fixed cell
54
- - assemble an engine atlas only after each action passes QC
55
- - `engine_atlas`
56
- - delivery format only when it combines unrelated actions
57
- - build from processed action sheets, not from one mixed-action raw image
58
-
59
- ## Sheet Presets
60
-
61
- - `1x4`
62
- - projectiles
63
- - simple looping FX
64
- - `2x2`
65
- - standard idle
66
- - attack / hurt / impact
67
- - compact side-view walk
68
- - `2x3`
69
- - cast sequences
70
- - death sequences
71
- - slightly richer combat actions
72
- - `3x3`
73
- - large creature idle
74
- - boss aura loops
75
- - high-value showcase idles
76
- - `4x4`
77
- - topdown 4-direction player walk sheet
78
- - non-directional 16-frame action sequence when the user asks for richer casting, summoning, charging, transformation, or death animation
79
- - `5x5` or `custom_grid`
80
- - use as raw generation only for one coherent long action sequence, prop packs, tileset-like atlases, or another single action family
81
- - use as a delivery atlas for mixed actions only after separate action sheets have been generated and QC'd
82
-
83
- ## Agent-First Mapping Hints
84
-
85
- - `"make a 4-direction main hero"` -> `player` + `player_sheet`
86
- - `"make a side-view hero with idle, run, shoot, and jump"` -> `player` + `hero_action_bundle`; generate one action sheet per action and keep projectile/impact assets separate
87
- - `"make a side-view hero melee attack"` -> `player` + `hero_action_bundle`; generate a body-only attack grid and separate slash/impact FX when the attack needs a wide arc
88
- - `"make a healer npc"` -> `npc` + `single_asset`, `role=healer`
89
- - `"make a healer npc walk sheet"` -> `npc` + `walk`
90
- - `"make a boss idle"` -> `creature` + `idle`; prefer `3x3`
91
- - `"make a wizard throwing a magic orb"` -> `spell_bundle`
92
- - `"make a fireball projectile"` -> `projectile` + `projectile`; prefer `1x4`
93
- - `"make a hit explosion"` -> `impact` + `impact`; prefer `2x2`
94
- - `"make a summon entrance"` -> `summon` + `cast` or `impact`
95
- - `"make a full fire samurai creature line"` -> `line_bundle`; plan 1-3 forms, then choose sheets per form
96
-
97
- ## Legacy Compatibility
98
-
99
- Keep these mappings working:
100
-
101
- - `player_sheet`: 4-direction overworld walk
102
- - `player_walk`: 2x2 down-facing walk
103
- - `npc_walk`: 2x2 down-facing walk
104
- - `combat`: 2x2 attack + hurt
105
- - `evolution`: legacy concept sheet
106
-
107
- ## Processor Defaults
108
-
109
- - use `shared_scale=true` for any multi-frame sheet unless inconsistent scale is intentional
110
- - use `align=bottom` or `feet` for grounded actors
111
- - use `align=center` for floating effects, projectiles, and detached FX
112
- - use `component_mode=largest` when raw sheets contain detached sparkles or edge debris
113
- - use `component_mode=all` when detached effects are an intentional part of the asset silhouette
114
- - for body-only controllable hero actions, use `component_mode=largest`; for projectile, impact, aura, slash FX, or intentionally detached FX sheets, use `component_mode=all`
115
- - reject fixed-cell hero/player body actions when the body visibly shrinks compared with the accepted idle/run scale; split the wide FX or use a runtime with wider per-action cells and explicit origins
116
- - use a layout guide for prop packs, tileset-like atlases, fixed atlas rows, and non-directional 16-frame VFX-heavy action sequences; avoid making it the default for 4-direction walk sheets
117
-
118
- ## Output Shape
119
-
120
- - any sheet mode: transparent sheet + per-frame PNGs + GIF
121
- - `player_sheet`: plus direction strips and four GIFs
122
- - `single_asset`: cleaned transparent PNG
123
- - `hero_action_bundle`: per-action folders, per-action GIFs, separate projectile/impact assets when needed, and optional assembled engine atlas
124
- - bundles: one output folder per asset inside the bundle root