@inneranimalmedia/agentsam-sdk 2.6.7 → 2.6.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -0
- package/apps/README.md +25 -0
- package/apps/cad-creator/shared/cad/package.json +1 -1
- package/apps/client-cms-editor/backend/package.json +4 -6
- package/apps/client-cms-editor/frontend/package.json +6 -8
- package/apps/client-cms-editor/frontend/tsconfig.json +27 -8
- package/apps/client-cms-editor/package.json +1 -1
- package/apps/client-cms-editor/shared/cms/package.json +4 -6
- package/docs/LOCAL_ENGINE_COMPUTE_AUDIT_PLAN.md +299 -0
- package/docs/REPO_FILE_MAP.txt +132 -0
- package/migrations/d1/0018_goap_control_plane_remaster.sql +40 -0
- package/migrations/d1/0019_agentsam_agent_run_plan_todo.sql +14 -0
- package/migrations/d1/README_PORTABLE_CONTROL_PLANE.md +20 -9
- package/migrations/runtime/0002_goap_blackboard_v1.sql +15 -0
- package/migrations/runtime/0004_agent_run_plan_linkage.sql +8 -0
- package/native/agentsam-machine/cli/Cargo.toml +8 -1
- package/native/agentsam-machine/cli/README.md +21 -0
- package/native/agentsam-machine/core/Cargo.toml +7 -0
- package/native/agentsam-machine/core/README.md +14 -0
- package/native/agentsam-machine/core/build.rs +33 -0
- package/native/agentsam-machine/core/contracts/source-types.v1.json +353 -0
- package/native/agentsam-machine/core/src/lib.rs +6 -0
- package/native/agentsam-machine/core/src/source_types.rs +2 -2
- package/package.json +31 -10
- package/packages/agentsam-brand/package.json +1 -1
- package/packages/agentsam-contracts/package.json +71 -20
- package/packages/agentsam-contracts/scripts/build.mjs +18 -0
- package/packages/agentsam-contracts/test/contracts.test.mjs +4 -1
- package/packages/agentsam-contracts/test/repository.test.mjs +4 -1
- package/packages/agentsam-contracts/tsconfig.build.json +10 -0
- package/packages/agentsam-errors/package.json +3 -2
- package/packages/agentsam-errors/src/index.js +1 -0
- package/packages/agentsam-errors/src/tool.js +56 -0
- package/packages/agentsam-errors/test/tool.test.mjs +58 -0
- package/packages/agentsam-goap/README.md +52 -0
- package/packages/agentsam-goap/package.json +37 -0
- package/packages/agentsam-goap/src/adapters/d1-sqlite.js +570 -0
- package/packages/agentsam-goap/src/adapters/memory.js +199 -0
- package/packages/agentsam-goap/src/contracts.js +226 -0
- package/packages/agentsam-goap/src/control-plane.js +112 -0
- package/packages/agentsam-goap/src/errors.js +157 -0
- package/packages/agentsam-goap/src/index.js +5 -0
- package/packages/agentsam-goap/src/world.js +202 -0
- package/packages/agentsam-goap/test/goap-control-plane.test.mjs +245 -0
- package/packages/agentsam-goap/test/world.test.mjs +79 -0
- package/packages/agentsam-knowledge/package.json +3 -2
- package/packages/agentsam-nav/package.json +1 -1
- package/packages/agentsam-queue-control/package.json +1 -1
- package/packages/agentsam-rapid-rust/src/main.rs +1 -0
- package/packages/agentsam-repository/package.json +3 -2
- package/packages/agentsam-repository/src/goap.js +13 -14
- package/packages/agentsam-repository/src/tickets.js +15 -22
- package/packages/agentsam-repository/test/goap-tickets-workspace-state.test.mjs +19 -8
- package/packages/agentsam-vault/package.json +8 -5
- package/packages/agentsam-workbench/package.json +44 -17
- package/packages/connectors/cloudflare/package.json +4 -2
- package/packages/heuristic-theme/package.json +1 -1
- package/packages/identity/package.json +4 -3
- package/packages/identity/tests/lane1-packed-consumer.test.mjs +10 -2
- package/packages/providers/completeful/package.json +1 -1
- package/packages/theme-church-site/README.md +2 -2
- package/packages/theme-church-site/package.json +3 -4
- package/packages/theme-church-site/src/index.js +1 -1
- package/packages/theme-church-site/test/theme.test.mjs +1 -1
- package/packages/theme-companions-site/README.md +2 -2
- package/packages/theme-companions-site/package.json +3 -4
- package/packages/theme-companions-site/src/index.js +1 -1
- package/packages/theme-companions-site/test/theme.test.mjs +1 -1
- package/packages/theme-floors-site/README.md +2 -2
- package/packages/theme-floors-site/package.json +3 -4
- package/packages/theme-floors-site/src/index.js +1 -1
- package/packages/theme-floors-site/test/theme.test.mjs +1 -1
- package/packages/theme-fuelnfree-site/README.md +2 -2
- package/packages/theme-fuelnfree-site/package.json +3 -4
- package/packages/theme-fuelnfree-site/src/index.js +1 -1
- package/packages/theme-fuelnfree-site/test/theme.test.mjs +1 -1
- package/packages/theme-handyman-site/README.md +2 -2
- package/packages/theme-handyman-site/package.json +3 -4
- package/packages/theme-handyman-site/src/index.js +1 -1
- package/packages/theme-handyman-site/test/theme.test.mjs +1 -1
- package/packages/theme-insurance-site/README.md +2 -2
- package/packages/theme-insurance-site/package.json +3 -4
- package/packages/theme-insurance-site/src/index.js +1 -1
- package/packages/theme-insurance-site/test/theme.test.mjs +1 -1
- package/packages/theme-scenes/package.json +1 -1
- package/packages/theme-shinshu-site/README.md +2 -2
- package/packages/theme-shinshu-site/package.json +3 -4
- package/packages/theme-shinshu-site/src/index.js +1 -1
- package/packages/theme-shinshu-site/test/theme.test.mjs +1 -1
- package/packages/work-graph/package.json +3 -2
- package/protocol/local-engine/benchmark.v1.schema.json +14 -0
- package/protocol/local-engine/engine.v1.schema.json +17 -0
- package/python/agentsam_sdk/repository/intelligence/discovery.py +27 -2
- package/python/agentsam_sdk/repository/intelligence/git.py +4 -0
- package/python/tests/test_repository_intelligence.py +30 -0
- package/src/cli/command-catalog.js +3 -1
- package/src/cli.js +20 -1
- package/src/commands/app.js +10 -0
- package/src/commands/engine.js +10 -0
- package/src/commands/goap-world.js +134 -0
- package/src/commands/goap.js +11 -4
- package/src/commands/machine-binary.js +33 -27
- package/src/commands/machine-runtime.js +266 -0
- package/src/commands/machine.js +155 -51
- package/src/commands/package.js +537 -0
- package/src/commands/plan-ledger.js +370 -0
- package/src/commands/plan.js +183 -0
- package/src/commands/runtime.js +25 -10
- package/src/commands/setup.js +30 -6
- package/src/commands/skill.js +78 -17
- package/src/commands/terminal.js +20 -8
- package/src/errors/contract.js +4 -4
- package/src/errors/diagnostic.js +1 -1
- package/src/errors/index.js +1 -1
- package/src/index.js +20 -0
- package/src/indexing/ingest/materials.js +237 -30
- package/src/knowledge/source.js +1 -1
- package/src/lib/setup/runtime.js +4 -2
- package/src/lib/slash-commands.js +1 -1
- package/src/local/runtime-store.js +24 -2
- package/src/local/sqlite.js +17 -0
- package/src/local-engine/assets.js +37 -0
- package/src/local-engine/audit.js +133 -0
- package/src/local-engine/benchmark.js +26 -0
- package/src/local-engine/contracts.js +101 -0
- package/src/local-engine/engines.js +142 -0
- package/src/local-engine/index.js +18 -0
- package/src/local-engine/runtime.js +39 -0
- package/src/sam/operations/package-audit.js +41 -0
- package/src/sam/seed.js +2 -0
- package/skills/grok-auth/SKILL.md +0 -110
- package/skills/grok-auth/agentsam.skill.json +0 -25
- package/skills/grok-auth/references/grok-identity.md +0 -64
- package/skills/grok-auth/references/per-user-data.md +0 -49
- package/skills/grok-auth/references/prewired-and-env.md +0 -54
- package/skills/grok-auth/references/session-ui.md +0 -133
- package/skills/grok-auth/references/sign-in-methods.md +0 -55
- package/skills/grok-auth/references/wiring.md +0 -71
- package/skills/grok-building-games/SKILL.md +0 -213
- package/skills/grok-building-games/agentsam.skill.json +0 -25
- package/skills/grok-building-games/references/3d-libs.md +0 -64
- package/skills/grok-building-games/references/ai-pathfinding.md +0 -122
- package/skills/grok-building-games/references/audio.md +0 -129
- package/skills/grok-building-games/references/babylon.md +0 -202
- package/skills/grok-building-games/references/collision-physics.md +0 -122
- package/skills/grok-building-games/references/ecs-architecture.md +0 -111
- package/skills/grok-building-games/references/game-feel-juice.md +0 -110
- package/skills/grok-building-games/references/genres/board-card-chess.md +0 -89
- package/skills/grok-building-games/references/genres/endless-runner.md +0 -83
- package/skills/grok-building-games/references/genres/fps.md +0 -105
- package/skills/grok-building-games/references/genres/platformer-2d.md +0 -97
- package/skills/grok-building-games/references/genres/puzzle-match3-tetris.md +0 -131
- package/skills/grok-building-games/references/genres/racing-kart.md +0 -106
- package/skills/grok-building-games/references/genres/topdown-twin-stick.md +0 -97
- package/skills/grok-building-games/references/genres/tower-defense.md +0 -84
- package/skills/grok-building-games/references/genres/voxel-minecraft.md +0 -89
- package/skills/grok-building-games/references/input.md +0 -139
- package/skills/grok-building-games/references/phaser.md +0 -277
- package/skills/grok-building-games/references/procedural-generation.md +0 -141
- package/skills/grok-building-games/references/save-persistence.md +0 -108
- package/skills/grok-building-games/references/threejs-foundational.md +0 -148
- package/skills/grok-controls/SKILL.md +0 -274
- package/skills/grok-controls/agentsam.skill.json +0 -25
- package/skills/grok-design-ui/SKILL.md +0 -122
- package/skills/grok-design-ui/agentsam.skill.json +0 -25
- package/skills/grok-design-ui/references/animations.md +0 -379
- package/skills/grok-design-ui/references/performance.md +0 -88
- package/skills/grok-design-ui/references/refined-ui.md +0 -384
- package/skills/grok-design-ui/references/surfaces.md +0 -247
- package/skills/grok-design-ui/references/typography.md +0 -123
- package/skills/grok-game-animation-frames/SKILL.md +0 -84
- package/skills/grok-game-animation-frames/agentsam.skill.json +0 -25
- package/skills/grok-game-asset-core/SKILL.md +0 -69
- package/skills/grok-game-asset-core/agentsam.skill.json +0 -25
- package/skills/grok-game-character-consistency/SKILL.md +0 -69
- package/skills/grok-game-character-consistency/agentsam.skill.json +0 -25
- package/skills/grok-game-tilesets/SKILL.md +0 -65
- package/skills/grok-game-tilesets/agentsam.skill.json +0 -25
- package/skills/grok-game-ui-icons/SKILL.md +0 -56
- package/skills/grok-game-ui-icons/agentsam.skill.json +0 -25
- package/skills/grok-generate2dmap/LICENSE +0 -21
- package/skills/grok-generate2dmap/SKILL.md +0 -120
- package/skills/grok-generate2dmap/SOURCE.md +0 -6
- package/skills/grok-generate2dmap/agentsam.skill.json +0 -25
- package/skills/grok-generate2dmap/references/deliverables.md +0 -101
- package/skills/grok-generate2dmap/references/layered-map-contract.md +0 -209
- package/skills/grok-generate2dmap/references/map-strategies.md +0 -341
- package/skills/grok-generate2dmap/references/object-production-gate.md +0 -24
- package/skills/grok-generate2dmap/references/pipeline.md +0 -149
- package/skills/grok-generate2dmap/references/prop-pack-contract.md +0 -174
- package/skills/grok-generate2dmap/references/side-scroll-stages.md +0 -29
- package/skills/grok-generate2dmap/scripts/compose_layered_preview.py +0 -157
- package/skills/grok-generate2dmap/scripts/extract_prop_pack.py +0 -369
- package/skills/grok-generate2dsprite/LICENSE +0 -21
- package/skills/grok-generate2dsprite/SKILL.md +0 -313
- package/skills/grok-generate2dsprite/SOURCE.md +0 -6
- package/skills/grok-generate2dsprite/agentsam.skill.json +0 -25
- package/skills/grok-generate2dsprite/references/modes.md +0 -124
- package/skills/grok-generate2dsprite/references/prompt-rules.md +0 -315
- package/skills/grok-generate2dsprite/scripts/generate2dsprite.py +0 -1031
- package/skills/grok-generate2dsprite/scripts/make_layout_guide.py +0 -109
- package/skills/grok-imagine/SKILL.md +0 -201
- package/skills/grok-imagine/agentsam.skill.json +0 -25
- package/skills/grok-multiplayer-p2p/SKILL.md +0 -111
- package/skills/grok-multiplayer-p2p/agentsam.skill.json +0 -25
- package/skills/grok-multiplayer-p2p/references/react-binding.md +0 -144
- package/skills/grok-multiplayer-p2p/references/signaling-relay.md +0 -269
- package/skills/grok-neon/SKILL.md +0 -157
- package/skills/grok-neon/agentsam.skill.json +0 -25
- package/skills/grok-og/SKILL.md +0 -102
- package/skills/grok-og/agentsam.skill.json +0 -25
- package/skills/grok-og/references/brand-pass.md +0 -53
- package/skills/grok-og/references/custom-card.md +0 -107
- package/skills/grok-og/references/favicon-and-icons.md +0 -48
- package/skills/grok-og/references/og-type-contract.md +0 -18
- package/skills/grok-og/references/placeholder-card.md +0 -21
- package/skills/grok-og/references/x-banner.md +0 -41
- package/skills/grok-threejs/SKILL.md +0 -67
- package/skills/grok-threejs/agentsam.skill.json +0 -25
- package/skills/grok-threejs/references/llms-full.txt +0 -2780
- package/skills/grok-video2dsprite/LICENSE +0 -21
- package/skills/grok-video2dsprite/SKILL.md +0 -236
- package/skills/grok-video2dsprite/SOURCE.md +0 -6
- package/skills/grok-video2dsprite/agentsam.skill.json +0 -25
- package/skills/grok-video2dsprite/references/pipeline.md +0 -90
- package/skills/grok-video2dsprite/references/prompt-rules.md +0 -63
- package/skills/grok-video2dsprite/scripts/video2dsprite.py +0 -490
- package/skills/grok-xai-api/SKILL.md +0 -152
- package/skills/grok-xai-api/agentsam.skill.json +0 -25
- package/test/account-session.test.mjs +0 -101
- package/test/agent-capabilities.test.mjs +0 -67
- package/test/app-authority-context.test.mjs +0 -32
- package/test/app-building-skills.test.mjs +0 -61
- package/test/apps-scaffold-contract.test.mjs +0 -115
- package/test/blender-cad.test.mjs +0 -146
- package/test/cad-docker.test.mjs +0 -96
- package/test/capabilities.test.mjs +0 -133
- package/test/cli/api-key-env-whoami.test.mjs +0 -129
- package/test/cli/catalog-authority.test.mjs +0 -64
- package/test/cli/codebaseindex-plan-ux.test.mjs +0 -37
- package/test/cli/eval-live.test.mjs +0 -219
- package/test/cli/go.test.mjs +0 -128
- package/test/cli/local-vault-and-provider-setup.test.mjs +0 -268
- package/test/cli/machine-command.test.mjs +0 -34
- package/test/cli/mcp-client.test.mjs +0 -256
- package/test/cli/preferences-runtime.test.mjs +0 -11
- package/test/cli/runtime-persist.test.mjs +0 -56
- package/test/cli/runtime-ui.test.mjs +0 -141
- package/test/cli/rust-command.test.mjs +0 -21
- package/test/cli/skill-npm-and-env.test.mjs +0 -52
- package/test/cli/status-actions.test.mjs +0 -88
- package/test/cli/wireframes-go-registry.test.mjs +0 -139
- package/test/cli-preferences.test.mjs +0 -46
- package/test/cloudflare-connector.test.mjs +0 -93
- package/test/cloudflare-runtime.test.mjs +0 -82
- package/test/context.test.mjs +0 -159
- package/test/credentials-audit.test.mjs +0 -113
- package/test/deploy-health-scan.test.mjs +0 -95
- package/test/deploy-receipt.test.mjs +0 -91
- package/test/dockerize.test.mjs +0 -93
- package/test/error-diagnostics.test.mjs +0 -124
- package/test/eval-context.test.mjs +0 -37
- package/test/execution-approvals.test.mjs +0 -27
- package/test/fixtures/cad/courtyard-house.json +0 -208
- package/test/fixtures/knowledge-rpc-worker.mjs +0 -16
- package/test/fixtures/project-authority/customer-app/.agentsam/app.json +0 -5
- package/test/fixtures/project-authority/customer-app/apps/my-product/index.ts +0 -1
- package/test/fixtures/project-authority/customer-app/wrangler.toml +0 -17
- package/test/gcloud-auth.test.mjs +0 -111
- package/test/go/build-source-identity.test.mjs +0 -31
- package/test/go/cloudflare-probe.test.mjs +0 -317
- package/test/go/distribution.test.mjs +0 -28
- package/test/google-cloud-connection.test.mjs +0 -83
- package/test/google-cloud-inventory.test.mjs +0 -64
- package/test/indexing-provider.test.mjs +0 -29
- package/test/init-options.test.mjs +0 -35
- package/test/integration/ai-access-onboarding.test.mjs +0 -47
- package/test/integration/app-command.test.mjs +0 -85
- package/test/integration/autorag-project-authority.integration.test.mjs +0 -51
- package/test/integration/autorag-runtime-discovery.test.mjs +0 -107
- package/test/integration/cad-discovery.test.mjs +0 -158
- package/test/integration/cad-docker-executor.test.mjs +0 -249
- package/test/integration/cad-execution.test.mjs +0 -184
- package/test/integration/cad-project-app.test.mjs +0 -31
- package/test/integration/cad-project-d1.test.mjs +0 -25
- package/test/integration/cad-project-native.test.mjs +0 -24
- package/test/integration/cad-project-workflow.test.mjs +0 -9
- package/test/integration/cad-project.test.mjs +0 -85
- package/test/integration/cli-help.test.mjs +0 -41
- package/test/integration/cms-app-scaffold.test.mjs +0 -77
- package/test/integration/cms-site-tenancy-contract.test.mjs +0 -268
- package/test/integration/codebaseindex-ingest.test.mjs +0 -255
- package/test/integration/core-client.integration.test.mjs +0 -55
- package/test/integration/database-hosted-honesty.test.mjs +0 -49
- package/test/integration/desktop-keychain-boundary.test.mjs +0 -45
- package/test/integration/error-runtime-rpc.test.mjs +0 -71
- package/test/integration/features-resolve.test.mjs +0 -147
- package/test/integration/hosted-work-host-authority.test.mjs +0 -47
- package/test/integration/icon-registry.test.mjs +0 -67
- package/test/integration/ingest-discover-models.test.mjs +0 -30
- package/test/integration/inspect-path-cli.test.mjs +0 -46
- package/test/integration/install-script.test.mjs +0 -110
- package/test/integration/inventory-core.test.mjs +0 -53
- package/test/integration/inventory-eligibility.test.mjs +0 -59
- package/test/integration/inventory-evidence.test.mjs +0 -125
- package/test/integration/knowledge-rpc.test.mjs +0 -112
- package/test/integration/local-fs.test.mjs +0 -113
- package/test/integration/local-provider-bridge.test.mjs +0 -65
- package/test/integration/local-studio-settings-production.test.mjs +0 -40
- package/test/integration/lockfile-sync.test.mjs +0 -26
- package/test/integration/merkle-cli.test.mjs +0 -61
- package/test/integration/merkle-persistence-identity.test.mjs +0 -48
- package/test/integration/plugins-cloudflare.integration.test.mjs +0 -28
- package/test/integration/provider-env-cli.test.mjs +0 -60
- package/test/integration/provider-factory.test.mjs +0 -197
- package/test/integration/repository-company-graph.test.mjs +0 -90
- package/test/integration/runtime-migrations.test.mjs +0 -87
- package/test/integration/runtime-status.integration.test.mjs +0 -227
- package/test/integration/sam-activity-recovery.test.mjs +0 -147
- package/test/integration/sam-decision.test.mjs +0 -584
- package/test/integration/sam-kernel.test.mjs +0 -99
- package/test/integration/sam-planning-astar.test.mjs +0 -279
- package/test/integration/scaffold-cloudflare.test.mjs +0 -46
- package/test/integration/skill-runtime.test.mjs +0 -240
- package/test/integration/storage-architecture.test.mjs +0 -154
- package/test/integration/store-discovery.test.mjs +0 -44
- package/test/integration/studio-fs-pty-e2e.test.mjs +0 -294
- package/test/integration/terminal-exec.integration.test.mjs +0 -86
- package/test/integration/theme-package-registry.test.mjs +0 -31
- package/test/integration/tool-runtime.test.mjs +0 -124
- package/test/integration/tool-schema.test.mjs +0 -59
- package/test/jr-dev-skill.test.mjs +0 -26
- package/test/knowledge-context-pack.test.mjs +0 -19
- package/test/knowledge-postgres.test.mjs +0 -40
- package/test/knowledge-service.test.mjs +0 -110
- package/test/knowledge.test.mjs +0 -206
- package/test/live/terminal-transport.live.test.mjs +0 -24
- package/test/local-sessions.test.mjs +0 -57
- package/test/local-studio-deploy.test.mjs +0 -83
- package/test/loopback-oauth.test.mjs +0 -53
- package/test/merkle-render.test.mjs +0 -31
- package/test/mini.test.mjs +0 -140
- package/test/model-catalog.test.mjs +0 -70
- package/test/models.test.mjs +0 -309
- package/test/npm10-lock.test.mjs +0 -29
- package/test/ollama.test.mjs +0 -137
- package/test/open-url.test.mjs +0 -64
- package/test/openai-responses.test.mjs +0 -155
- package/test/portable-context.test.mjs +0 -94
- package/test/project-config.test.mjs +0 -81
- package/test/project-rules.test.mjs +0 -44
- package/test/provider-credentials.test.mjs +0 -106
- package/test/rehydrate.test.mjs +0 -25
- package/test/release-hygiene.test.mjs +0 -42
- package/test/repository-snapshot-view.test.mjs +0 -112
- package/test/responses-runner.test.mjs +0 -465
- package/test/runtime-activity.test.mjs +0 -98
- package/test/sdk-worker-contract.test.mjs +0 -72
- package/test/security.test.mjs +0 -266
- package/test/setup-planner.test.mjs +0 -74
- package/test/setup-runtime.test.mjs +0 -51
- package/test/shell.test.mjs +0 -281
- package/test/skills.test.mjs +0 -22
- package/test/smoke.mjs +0 -122
- package/test/telemetry.test.mjs +0 -79
- package/test/terminal/local-pty.mock.test.mjs +0 -153
- package/test/terminal-machine-identity.test.mjs +0 -88
- package/test/theme-portability.test.mjs +0 -14
- package/test/tools-search.test.mjs +0 -73
- package/test/unit/website-assets-bindings.test.mjs +0 -60
- 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.
|