@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,123 +0,0 @@
1
- # Typography
2
-
3
- Typography rendering details that make interfaces feel better.
4
-
5
- ## Text Wrapping
6
-
7
- ### text-wrap: balance
8
-
9
- Distributes text evenly across lines, preventing orphaned words on headings and short text blocks. **Only works on blocks of 6 lines or fewer** (Chromium) or 10 lines or fewer (Firefox) — the balancing algorithm is computationally expensive, so browsers limit it to short text.
10
-
11
- ```css
12
- /* Good — even line lengths on short text */
13
- h1, h2, h3 {
14
- text-wrap: balance;
15
- }
16
- ```
17
-
18
- ```css
19
- /* Bad — default wrapping leaves orphans */
20
- h1 {
21
- /* no text-wrap rule → "Read our
22
- blog" instead of balanced lines */
23
- }
24
- ```
25
-
26
- ```css
27
- /* Bad — balance on long paragraphs (silently ignored, wastes intent) */
28
- .article-body p {
29
- text-wrap: balance;
30
- }
31
- ```
32
-
33
- **Tailwind:** `text-balance`
34
-
35
- ### text-wrap: pretty
36
-
37
- Optimizes the last line to avoid orphans using a slower algorithm that favors better typography over performance. Unlike `balance`, it works on longer text — use this for body copy where you want to minimize orphans without the 6-line limit.
38
-
39
- ```css
40
- p {
41
- text-wrap: pretty;
42
- }
43
- ```
44
-
45
- ### When to Use Which
46
-
47
- | Scenario | Use |
48
- | --- | --- |
49
- | Headings, titles, short text (≤6 lines) | `text-wrap: balance` |
50
- | Body paragraphs, descriptions | `text-wrap: pretty` |
51
- | Code blocks, pre-formatted text | Neither — leave default |
52
-
53
- ## Font Smoothing (macOS)
54
-
55
- On macOS, text renders heavier than intended by default. Apply antialiased smoothing to the root layout so all text renders crisper and thinner.
56
-
57
- ```css
58
- /* CSS */
59
- html {
60
- -webkit-font-smoothing: antialiased;
61
- -moz-osx-font-smoothing: grayscale;
62
- }
63
- ```
64
-
65
- ```tsx
66
- // Tailwind — apply to root layout
67
- <html className="antialiased">
68
- ```
69
-
70
- ### Good vs. Bad
71
-
72
- ```css
73
- /* Good — applied once at the root */
74
- html {
75
- -webkit-font-smoothing: antialiased;
76
- }
77
-
78
- /* Bad — applied per-element, inconsistent */
79
- .heading {
80
- -webkit-font-smoothing: antialiased;
81
- }
82
- .body {
83
- /* no smoothing → heavier than heading */
84
- }
85
- ```
86
-
87
- **Note:** This only affects macOS rendering. Other platforms ignore these properties, so it's safe to apply universally.
88
-
89
- ## Tabular Numbers
90
-
91
- When numbers update dynamically (counters, prices, timers, table columns), use tabular-nums to make all digits equal width. This prevents layout shift as values change.
92
-
93
- ```css
94
- /* CSS */
95
- .counter {
96
- font-variant-numeric: tabular-nums;
97
- }
98
- ```
99
-
100
- ```tsx
101
- // Tailwind
102
- <span className="tabular-nums">{count}</span>
103
- ```
104
-
105
- ### When to Use
106
-
107
- | Use tabular-nums | Don't use tabular-nums |
108
- | --- | --- |
109
- | Counters and timers | Static display numbers |
110
- | Prices that update | Decorative large numbers |
111
- | Table columns with numbers | Phone numbers, zip codes |
112
- | Animated number transitions | Version numbers (v2.1.0) |
113
- | Scoreboards, dashboards | |
114
-
115
- ### Caveat
116
-
117
- Some fonts (like Inter) change the visual appearance of numerals with this property — specifically, the digit `1` becomes wider and centered. This is expected behavior and usually desirable for alignment, but verify it looks right in your specific font.
118
-
119
- ```css
120
- /* With Inter font:
121
- Default: 1234 → proportional, "1" is narrow
122
- Tabular: 1234 → all digits equal width, "1" centered */
123
- ```
@@ -1,84 +0,0 @@
1
- ---
2
- name: game-animation-frames
3
- description: >
4
- Deep guide for game ANIMATION assets: motion cycles, action keyframes,
5
- effect sequences, and animation sprite sheets — built around a
6
- video-first pipeline. In this app-builder sandbox, execute via the
7
- video2dsprite / generate2dsprite skills (magenta + scripts), not ad-hoc
8
- ffmpeg. Use whenever generating anything that moves: walk/run cycles,
9
- attacks, idles, FX, flags, fire, animation sheets. Complements
10
- game-asset-core.
11
- metadata:
12
- short-description: "Video-first animation frames that actually cycle"
13
- user-invocable: false
14
- ---
15
-
16
- # Animation Frames — video-first
17
-
18
- The image generator draws poses; the VIDEO generator understands motion —
19
- leg alternation, arc continuity, cloth and fire dynamics come free because
20
- video must animate them. So don't ask the image model to imagine
21
- mid-motion poses: animate the base and harvest real frames.
22
-
23
- ## App-builder execution (read first)
24
-
25
- This skill is **doctrine** (motion laws, loop QC, when to use video). In the
26
- app-builder sandbox, **do not** run a freeform `ffmpeg` harvest or invent a
27
- random keyable `#hex` background.
28
-
29
- | Step | Do this |
30
- | --- | --- |
31
- | Production sprites / fixed grids | **`generate2dsprite`** — solid **`#FF00FF`** magenta sheets + chroma scripts |
32
- | Denser locomotion from video | **`video2dsprite`** — base still on **`#FF00FF`** → `imagine_image_to_video` → skill scripts (ffmpeg + chroma) |
33
- | Keyable background | Always **`#FF00FF`** when using either pipeline (required for chroma) |
34
- | This skill | Loop / flip-test / motion laws below — apply after the pipeline runs |
35
-
36
- Open `.grok/skills/video2dsprite/SKILL.md` or `.grok/skills/generate2dsprite/SKILL.md`
37
- and follow their workflows for generation and postprocess. Then apply the
38
- laws and flip test here before shipping frames into the game.
39
-
40
- ## Default pipeline (intent)
41
-
42
- 1. **Base frame.** Subject in neutral/starting pose, full style words, side /
43
- game-appropriate view, **solid `#FF00FF` background** (app-builder chroma
44
- key). game-asset-core defaults apply.
45
- 2. **Animate.** `imagine_image_to_video` from the base: one clear motion, in place,
46
- static camera ("the knight walks in place, side view, camera locked",
47
- 6s). Keep the shot simple — one subject, one motion. Prefer running this
48
- through **`video2dsprite`** so harvest + chroma are consistent.
49
- 3. **Harvest + clean.** Use **`video2dsprite`** scripts (not ad-hoc
50
- `ffmpeg -i … fps=12` alone). Magenta flood-fill / despill lives there;
51
- do not re-key with a different flat `#hex` unless you leave the magenta
52
- pipeline entirely.
53
- 4. **Select.** Pick frames that (a) capture the motion's distinct phases and
54
- (b) LOOP — the sequence's end must flow back into its start. Don't force
55
- a count: if the motion reads best with 8, 10, or 12 frames, deliver that
56
- many (more frames = smoother in-engine). For a cycle, select one full
57
- period using motion landmarks (foot contacts, wing extremes, flame peaks).
58
- 5. **Package.** Deliver frames in play order (zero-padded names) and/or a
59
- sheet per game-asset-core rules (uniform cells, no dividers) — or the
60
- transparent strips/grids emitted by **`video2dsprite`** /
61
- **`generate2dsprite`**. State the intended fps.
62
-
63
- Fall back to keyframe-by-keyframe `imagine_text_to_image` (still on `#FF00FF` when
64
- postprocessing with the sprite scripts) only when video fails the motion
65
- (rare: very stylized poses, single dramatic keyframes) — and then plan
66
- phases yourself and obey the laws below. Prefer **`generate2dsprite`** for
67
- crisp production multi-frame grids.
68
-
69
- ## Motion laws (verify against these, whatever the pipeline)
70
-
71
- - Cycles loop; alternating gaits spend half the period mirrored.
72
- - Continuity: limbs, props, anatomy, effects move on continuous paths —
73
- nothing teleports, vanishes, or duplicates between adjacent frames.
74
- - Physics reads in stills: airborne shows air, anticipation compresses,
75
- follow-through overshoots; effects stay anchored to their origin unless
76
- the request moves them.
77
- - Energy matches the ask: idle/subtle means barely-different frames.
78
-
79
- ## Verify — the flip test
80
-
81
- View the final frames strictly in order and narrate the motion; check
82
- loop closure explicitly (last→first). A hedge in your narration is a
83
- failed frame. The video pipeline usually passes this on the first try —
84
- that's why it's the default.
@@ -1,25 +0,0 @@
1
- {
2
- "schema": "agentsam.skill.v1",
3
- "id": "grok-game-animation-frames",
4
- "name": "Grok \u00b7 game-animation-frames",
5
- "description": "Video-first animation frames that actually cycle",
6
- "icon": "skill",
7
- "slash": {
8
- "suggested": "/grok-game-animation-frames"
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,69 +0,0 @@
1
- ---
2
- name: game-asset-core
3
- description: >
4
- Core discipline for ANY game-asset generation with Imagine tools: the
5
- engine-ready defaults users don't state, spec checklists, style anchoring,
6
- read-back verification, honest defect flagging. Use whenever generating
7
- any game art (sprites, sheets, animations, tiles, UI, FX) — then ALSO load
8
- the matching specialist skill: game-animation-frames for anything that moves,
9
- game-tilesets for tiles/terrain, game-character-consistency for recurring characters,
10
- game-ui-icons for UI and icons.
11
- metadata:
12
- short-description: "Core rules + engine-ready defaults for game assets"
13
- user-invocable: false
14
- ---
15
-
16
- # Asset Core
17
-
18
- Game developers ask for WHAT they need, not HOW to make it engine-ready.
19
- The how is your job. Apply these defaults whenever the request doesn't say
20
- otherwise — an asset that needs manual cleanup is a miss even if the user
21
- never mentioned the requirement.
22
-
23
- ## App-builder note
24
-
25
- This skill is **doctrine / QC**. For 2D sprites and motion in this sandbox, also
26
- run the pipeline skills:
27
-
28
- - **`generate2dsprite`** / **`video2dsprite`** for sheets and video harvest
29
- - Keyable background on those paths is solid **`#FF00FF`** (required for chroma)
30
- — not an arbitrary flat hex
31
- - Motion laws and loop QC live in **`game-animation-frames`** (which defers
32
- execution to those pipelines)
33
-
34
- ## Unprompted engine-ready defaults
35
-
36
- | When asked for... | Deliver, without being told... |
37
- |---|---|
38
- | a character/creature/prop sprite | isolated subject, flat single-color keyable background (**`#FF00FF`** when using generate2dsprite/video2dsprite), clean silhouette, no baked ground scene or cast shadow |
39
- | anything that moves/animates | a frame SEQUENCE that loops cleanly (see game-animation-frames; execute via video2dsprite/generate2dsprite) |
40
- | a sprite sheet | uniform implicit cells, NO divider lines, subject at the identical position per cell so frames crop at width/cols × height/rows — or build it yourself: frames + PIL composite |
41
- | ground/terrain/water/walls | seamlessly tileable (verify with a real 2×2 composite), no landmark motifs, non-directional lighting where rotation might be used |
42
- | UI panels/frames/buttons | scale-survivable (9-slice: corner ornament, uniform edges), no text ever (games localize), state variants geometry-identical |
43
- | the same character/object again | edit-chained from your existing base image, never regenerated fresh |
44
- | icons | one style contract across the set, uniform padding, legible at 32px |
45
-
46
- Deliver organized, exactly-named files; if the request leaves counts or
47
- naming to you, choose sensible names and document them in a manifest/record.
48
-
49
- ## Working discipline
50
-
51
- 1. **Spec checklist (private).** List every stated property PLUS the
52
- applicable defaults above. Verify against it; never paste it into
53
- prompts.
54
- 2. **Prompt in the generator's language.** 2–5 vivid sentences, always with
55
- style/medium words. Express geometry/quantity as nameable visual
56
- configurations (clock positions, pie wedges, colored markers), never as
57
- numbers or abstractions.
58
- 3. **Verify by describing blind, then diffing.** Write what the image shows
59
- before re-reading the spec. Every stated property AND every applicable
60
- default is pass/fail — no "good enough", no self-negotiated waivers. A
61
- hedge in your own description = failed check.
62
- 4. **Escalate representation, then strategy.** Retry once with a more
63
- concrete visual re-expression. If the generator repeats the same failure,
64
- it's a prior: build compositionally (parts + PIL rotate/mirror/assemble —
65
- mind mirrored asymmetries) or keep the best and FLAG it. ~2 discards max
66
- per point being proven.
67
- 5. **Deliver and report.** Final pass across all files for cohesion and the
68
- checklist; state every unfixed defect and every default you consciously
69
- deviated from.
@@ -1,25 +0,0 @@
1
- {
2
- "schema": "agentsam.skill.v1",
3
- "id": "grok-game-asset-core",
4
- "name": "Grok \u00b7 game-asset-core",
5
- "description": "Core rules + engine-ready defaults for game assets",
6
- "icon": "skill",
7
- "slash": {
8
- "suggested": "/grok-game-asset-core"
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,69 +0,0 @@
1
- ---
2
- name: game-character-consistency
3
- description: >
4
- Deep guide for CHARACTER IDENTITY across images: turnarounds (front/side/
5
- back), state and damage variants, palette swaps, equipment changes, and
6
- same-character-in-context sets. Use whenever generating character
7
- turnarounds, character sheets, variants of an existing sprite, or any
8
- same-subject multi-image set. Complements game-asset-core.
9
- metadata:
10
- short-description: "Same character, every image"
11
- user-invocable: false
12
- ---
13
-
14
- # Character Consistency
15
-
16
- The product is the IDENTITY, not any single image.
17
- Users state WHAT they need, not how — apply everything here even when
18
- the request never mentions it.
19
-
20
-
21
- ## 1. Asymmetry bookkeeping (turnarounds)
22
-
23
- Before prompting, write the side-map table for every view. Example: "her
24
- left arm sleeved" →
25
-
26
- | view | sleeved arm appears on | staff hand appears on |
27
- |-------|------------------------|----------------------|
28
- | front | viewer's RIGHT | (as designed) |
29
- | right profile | near side = her right = BARE | ... |
30
- | back | viewer's LEFT | mirrored from front |
31
-
32
- Prompt each view with VIEWER-relative words from this table, never
33
- body-relative words. Verify each output against the table, not the original
34
- sentence.
35
-
36
- ## 2. Hands and props
37
-
38
- - A held item must be GRIPPED: check the hand-object contact point in every
39
- image. A staff floating beside an open hand = fail.
40
- - The item stays in the SAME hand across all views/frames (mirror it
41
- correctly in back views).
42
-
43
- ## 3. Edit-chain protocol
44
-
45
- - One base image; every view/variant/state via `imagine_image_to_image` with the base
46
- `file_path` (or the nearest neighbor view): "Keep this exact character — same
47
- face, colors, proportions, outfit, scale, background — change only <X>."
48
- - Views must be genuinely rotated (a side view is a strict profile: nose,
49
- chest, toes all pointing at the frame edge), not three slightly-turned
50
- fronts.
51
- - KEEP THE STYLE WORDS in every edit prompt ("stylized 2D game art, cel
52
- shading" or whatever the set uses). Edits without style words drift
53
- toward photorealism.
54
-
55
- ## 4. Variants (damage / palette / equipment)
56
-
57
- - State the freeze-list first in the prompt (pose, framing, background,
58
- everything not being changed), then the single change.
59
- - Damage states are STATES, not action frames: worn, cracked, dented — no
60
- debris flying mid-air.
61
- - Verify by viewing base and variant together: background hue, framing,
62
- proportions, and all unrequested details must match. Escalating states
63
- (hurt → critical) must be strictly ordered when viewed as a set.
64
-
65
- ## 5. Verify
66
-
67
- For every image in the set, describe blind: which side has the marker
68
- detail, what's in each hand, face/proportion match to base. One mismatch =
69
- targeted retry of that image only.
@@ -1,25 +0,0 @@
1
- {
2
- "schema": "agentsam.skill.v1",
3
- "id": "grok-game-character-consistency",
4
- "name": "Grok \u00b7 game-character-consistency",
5
- "description": "Same character, every image",
6
- "icon": "skill",
7
- "slash": {
8
- "suggested": "/grok-game-character-consistency"
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,65 +0,0 @@
1
- ---
2
- name: game-tilesets
3
- description: >
4
- Deep guide for game TILE assets: seamless tileable textures, terrain
5
- transition tilesets, autotiles, and ground/platform tiles. Use whenever
6
- generating tileable textures, tilesets, terrain transitions, or seamless
7
- patterns. Complements game-asset-core.
8
- metadata:
9
- short-description: "Seamless tiles and transition sets that actually tile"
10
- user-invocable: false
11
- ---
12
-
13
- # Tilesets
14
-
15
- A tile's job is invisibility in repetition.
16
- Users state WHAT they need, not how — apply everything here even when
17
- the request never mentions it.
18
- Judge everything by "will the
19
- player notice the grid?"
20
-
21
- ## 1. Seamless single tiles
22
-
23
- - Prompt for UNIFORM stochastic texture: even density, even lighting, no
24
- shadows with direction, "the pattern continues off every edge".
25
- - The repetition killer is any distinctive motif — one recognizable clump,
26
- flower, or rock repeats forever. Prompt for anonymous texture; verify by
27
- hunting for anything you could point at twice.
28
- - MANDATORY check: composite a real 2×2 repeat with PIL to a throwaway file
29
- and view it. Look for (a) seam lines at the joins, (b) any motif you can
30
- spot in all four quadrants, (c) large-scale tone gradients that create
31
- checkerboarding. Any of the three = retry.
32
-
33
- ## 2. Transition tilesets (grass→dirt etc.)
34
-
35
- - Prompt it as ONE continuous painted image that happens to be sliceable —
36
- never as "tiles", "cells with borders", or anything inviting separated
37
- sticker-tiles with gaps. Cells must be filled edge-to-edge, painted
38
- content flowing across cell boundaries so adjacent tiles genuinely match.
39
- - Layout for a 3×3: center = pure inner material; edge cells = straight
40
- transitions facing outward; corner cells = outer corners. Verify
41
- DIRECTIONALITY per cell (top-center's grass is along its top edge, etc.).
42
-
43
- ## 3. Rotation economy — make fewer, better tiles
44
-
45
- If lighting is neutral (pure top-down, no directional shading), one straight
46
- edge and one outer corner can be ROTATED in-engine to produce all four of
47
- each. So when the tile count is yours to choose:
48
-
49
- - Produce: 1 center fill, 1 straight edge, 1 outer corner, 1 inner corner —
50
- then spend the remaining budget on VARIATIONS of the center fill (2–3
51
- anonymous variants breaks up repetition far better than 4 identical
52
- rotated edges).
53
- - CAVEAT — rotation only works when nothing in the art encodes direction:
54
- no directional light, no gravity cues (hanging grass blades, drips), no
55
- text/emblems. Side-view (platformer) tiles almost always encode gravity
56
- and light, so they need all orientations painted individually. State in
57
- your delivery notes which tiles are rotation-safe.
58
- - If the request explicitly fixes the grid (e.g. "3×3 with all 8
59
- transitions"), deliver exactly that — mention rotation economy in notes,
60
- don't unilaterally change the deliverable.
61
-
62
- ## 4. Platforms and props
63
-
64
- Isolated on a keyable background, consistent lighting with their tileset,
65
- no baked ground shadow (engines composite shadows separately).
@@ -1,25 +0,0 @@
1
- {
2
- "schema": "agentsam.skill.v1",
3
- "id": "grok-game-tilesets",
4
- "name": "Grok \u00b7 game-tilesets",
5
- "description": "Seamless tiles and transition sets that actually tile",
6
- "icon": "skill",
7
- "slash": {
8
- "suggested": "/grok-game-tilesets"
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,56 +0,0 @@
1
- ---
2
- name: game-ui-icons
3
- description: >
4
- Deep guide for game UI assets: buttons with interaction states, panels,
5
- bars, wordmark logos, and icon sets. Use whenever generating game UI
6
- elements, HUD assets, inventory icons, icon sets, buttons, or title
7
- logos. Complements game-asset-core.
8
- metadata:
9
- short-description: "Game UI kits and icon sets"
10
- user-invocable: false
11
- ---
12
-
13
- # Game UI & Icons
14
-
15
- UI is a SYSTEM: the set matters more than any piece.
16
- Users state WHAT they need, not how — apply everything here even when
17
- the request never mentions it.
18
-
19
-
20
- ## 1. Interaction states (normal/hover/pressed)
21
-
22
- - Generate NORMAL first; hover and pressed are `imagine_image_to_image` edits of it with an
23
- explicit freeze-list: "same shape, same size, same ornament, same frame
24
- thickness, same background — change ONLY <state treatment>".
25
- - Standard treatments: hover = subtle outer glow / slight brighten;
26
- pressed = darker + inset/inner shadow. States must be distinguishable at
27
- a glance AND identical in geometry — overlay-compare: outlines should
28
- coincide, frame thickness included.
29
-
30
- ## 2. Icon sets
31
-
32
- - One style contract for the whole set, decided before generating: same
33
- stroke weight, same fill treatment (all outlined OR all solid — never
34
- mixed), same palette family, same padding, same background, same visual
35
- weight. Verify the set side by side; one icon with a different treatment
36
- (e.g. sitting in a filled tile while others float) fails the SET even if
37
- it's individually fine.
38
- - Generate icon 1, then edit-chain the rest from it to inherit the
39
- contract.
40
- - Each icon must read at 32px: squint-test the thumbnail.
41
-
42
- ## 3. Panels, bars, wordmarks
43
-
44
- - Panels/dialogs: blank, text-ready, borders that survive 9-slicing
45
- (uniform edges, ornament concentrated in corners).
46
- - Bars: clear frame vs fill separation; fill design must work at any
47
- percentage.
48
- - Wordmark logos: image models garble text — generate, then READ THE TEXT
49
- BACK letter by letter; any wrong/merged/extra letter = retry. Deliver as
50
- an isolated asset on flat/keyable background, not a full scene, unless a
51
- title SCREEN is requested.
52
-
53
- ## 4. No text anywhere else
54
-
55
- Buttons, panels, icons: no lettering unless explicitly requested — models
56
- garble it and engines localize it.
@@ -1,25 +0,0 @@
1
- {
2
- "schema": "agentsam.skill.v1",
3
- "id": "grok-game-ui-icons",
4
- "name": "Grok \u00b7 game-ui-icons",
5
- "description": "Game UI kits and icon sets",
6
- "icon": "skill",
7
- "slash": {
8
- "suggested": "/grok-game-ui-icons"
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,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 0x0funky
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.