Revamp for Agent Grid and fix the drifted tool surface - #3
Conversation
The skill documented four MCP tools, three of which no longer exist. Agents following it have been calling dead names since the artifact-* rename. Tool surface, checked against @animaapp/mcp-tools definitions.ts/schemas.ts: playground-create -> artifact-create playground-publish -> artifact-publish project-download_from_playground -> removed (no replacement; use git) codegen-figma_to_code -> unchanged All seven previously undocumented tools are now covered: artifact-status, artifact-duplicate, artifact-unpublish, artifact-update_metadata, artifact-get_zip_upload_url, artifact-get_git_token, workspace-list_artifacts. Corrections that change agent behaviour: - Generation is async. artifact-create returns status:'generating'; the supported pattern is artifact-status(wait:true) in a loop, not a single 10-minute client timeout, which is what the old skill taught. - framework defaults to html over MCP, not react. - Adds the empty/import create types (bring your own code) and the zip upload flow, neither previously documented. - Editing an artifact goes through git (artifact-get_git_token), never a browser. New references/git-workflow.md covers clone/push and the fact that tokens cannot be renewed. - Publishing makes an app public and is not needed for sharing. - designSystem publish mode always fails over MCP. - l2c styling accepts vanilla_css; p2c takes no uiLibrary. - Headless auth is ANIMA_API_TOKEN, not the advertised ANIMA_API_KEY. - Drops `anima download`, which is not a CLI command. Rebranding to Agent Grid, endpoint moved to https://api.agentgrid.io/v1/mcp across .mcp.json, server.json, openai.yaml and README. Install ids are deliberately unchanged (plugin `anima`, marketplace `anima@mcp-server-guide`, registry io.github.AnimaApp/anima, skills/anima path) so existing installs and `codex skill install` keep working. References move from anima-skill-references/ to skills/anima/references/ so the plugin reads them from disk instead of fetching github.com mid-task. anima/SKILL.md stays as the mirror it has always been (it is the most-read file in the repo by traffic) but is now generated by scripts/build-mirror.sh and enforced by CI rather than hand-synced. Also adds assets/anima-icon.svg, which openai.yaml has been pointing at without the file existing.
Two independent reviewers audited the rewrite against tools/*/handlers.ts, the api package, and the CLI; both converged on the same three CRITICALs. Each fix below is confirmed against source, not just the tool descriptions. CRITICAL - The CLI does NOT wait for generation. artifact-create is non-blocking (handlers.ts:400) and the CLI calls it exactly once then prints "Artifact created!" (create.ts:123-140); `artifact-status` appears nowhere in the CLI and no status command is registered. The skill claimed the CLI "handles the status wait for you", which would make agents report unfinished apps as done. Now documented as fire-and-forget, with MCP preferred for generation. - CLI l2c/f2c examples passed --ui-library without --framework react. The CLI defaults generation to html (create.ts:253) and the server rejects uiLibrary unless framework is react (schemas.ts:239-246), so both documented commands always failed. Added --framework react and an explicit rule. - /plugin install anima@mcp-server-guide could not resolve: Claude Code keys marketplaces by marketplace.json `name` (was "anima"), not the repo name. Renamed the marketplace to mcp-server-guide so the already-published command works. Plugin id stays `anima`. MAJOR - codegen-figma_to_code defaults framework to react, not html (codegen schemas.ts:29). The html default belongs to artifact-create only; the skill had contradicted its own reference doc. - Inline `files` caps are 1000 files / 10MB enforced (api projectZip.ts:10-11), not the ~100KB the tool description states. Agents were being pushed into the zip flow ~100x under the real limit, and the file count cap was undocumented. - A user may have only 3 active jobs across generation/codegen/deploy (claimMcpGeneration.lua:93). Explore mode's "fire 3 in parallel" sits exactly on that cap; documented with the "Too many concurrent jobs" recovery. - codegen `files` is filtered (filterBoilerplate, CodegenEventHandler.ts:40-66): config, entry points, *.d.ts and ALL of src/components/ are stripped — where extracted and shadcn components live. Documented so agents don't read the absence as a failed generation. - type empty is not a bare repo; it lands a seed README commit (ownCodeArtifact.ts:129-139), so "add the remote and push" is a non-fast-forward. Now says clone first. MINOR - The git token in a create response is not unconditional (mint is skipped for some clients and can fail) — softened the absolute "do not call artifact-get_git_token". - language is a no-op for p2c; l2c is only TypeScript under framework react. - workspace-list_artifacts: sessionId only on app rows, plus truncated and the silent empty list for agents lacking read. - codegen uiLibrary also accepts clean_react. - artifact-publish also takes packageName/packageVersion, and passing either with mode webapp is a hard error. - artifact-status returns thumbnailUrl; own-code create returns framework/notes. - framework's html default applies to generation types only; import detects it. - ANIMA_TEAM_ID is only read alongside ANIMA_API_TOKEN; --api-url is on every command except the config subcommands. - Noted the enterprise design_system-* tool group. - Moved the icon to skills/anima/assets/ so openai.yaml's ./assets/ path resolves from the skill root that `codex skill install` uses.
Adversarial review pass — 25 defects found, all fixedTwo independent reviewers audited this branch against I re-verified every material finding against source myself before changing anything. CRITICAL
MAJOR
MINOR (9 more)Git token in the create response isn't unconditional; Also fixedThe icon moved to Executable verificationRebuilt the CLI from source and ran all 13 documented example invocations: every one parses and fails only at Still open for a human
|
Artifact content is editable in the Agent Grid webapp too — editing a
markdown artifact there, for example. The wording came from the
artifact-get_git_token tool description ("the only way to change its
files"), and had spread to five places.
Reframed by audience rather than capability: the git flow is how an agent
edits content, the webapp is how a human does. The practical guidance for
an agent is unchanged — use git, don't drive the webapp with browser
automation, don't re-generate to edit — but it no longer states something
false about the product.
Touches SKILL.md (x2), git-workflow.md, mcp-tools.md, troubleshooting.md
and workflows.md, plus the regenerated mirror.
Version-scoped wording dates the docs and tells an agent nothing actionable — it cannot condition on a release number. State the capability instead: duplicating across teams is not currently supported.
ANIMA_API_URL and --api-url exist to point the CLI at staging or a local API. Neither belongs in customer-facing setup: they invite an agent to override the endpoint it should never override, and the whole "Pointing at another environment" section existed only to serve them. Dropped the env var row and the section. --api-url went with it for the same reason — keeping a flag whose stated purpose is "target staging or a local API" while removing its env equivalent would be incoherent. Headless setup now documents ANIMA_API_TOKEN, ANIMA_TEAM_ID and FIGMA_TOKEN only.
The entry blamed a CLI/MCP split. There isn't one: anima create defaults to html to match artifact-create (create.ts:252-254 says so explicitly), and anima codegen defaults to react to match codegen-figma_to_code. The split is between the two tools, and it is consistent across both surfaces. Replaced the prose with the actual 2x2 so nobody "fixes" it by changing one surface and creating the divergence the doc claimed.
Why now
The skill has not changed since 2026-03-27, but the repo is live: 132 clones from 60 unique cloners in the last 14 days, driven mostly from animaapp.com. Meanwhile the MCP tool surface was renamed underneath it.
Three of the four documented tools no longer exist. Every customer agent following this guide is calling dead names.
playground-createartifact-createplayground-publishartifact-publishproject-download_from_playgroundcodegen-figma_to_codeSeven shipped tools were undocumented:
artifact-status,artifact-duplicate,artifact-unpublish,artifact-update_metadata,artifact-get_zip_upload_url,artifact-get_git_token,workspace-list_artifacts.What changed
Everything is checked against
@animaapp/mcp-toolsdefinitions.ts/schemas.tsand the@animaapp/clicommand definitions.Behavioural corrections
artifact-createreturnsstatus: 'generating'; the supported pattern isartifact-status(wait: true)until it resolves. The old skill told agents to hold a single 10-minute call open.frameworkdefaults tohtmlover MCP, notreact.empty/importcreate types and the zip-upload flow — bringing your own code was entirely undocumented.references/git-workflow.mdcovers clone/push and non-renewable tokens.designSystempublish mode always fails over MCP.l2cacceptsvanilla_css;p2ctakes nouiLibrary.ANIMA_API_TOKEN, not the advertisedANIMA_API_KEY.anima download, which is not a CLI command.Rebrand
Agent Grid throughout; endpoint moves to
https://api.agentgrid.io/v1/mcpin.mcp.json,server.json,openai.yaml, and the README.Deliberately unchanged — so nothing already installed breaks:
plugin: anima·marketplace: anima@mcp-server-guide·registry: io.github.AnimaApp/anima· theskills/anima/path (codex skill installdocuments it).Structure
anima-skill-references/→skills/anima/references/, so the plugin reads them from disk instead of fetching github.com mid-task.anima/SKILL.mdstays (it's the most-read file in the repo — 39 unique readers vs 1 for theskills/copy) but is now generated byscripts/build-mirror.shand enforced by CI instead of hand-synced.assets/anima-icon.svg, whichopenai.yamlreferenced without the file existing.Verification
definitions.ts, and all 10 real tools are documented — both set differences are empty.anima <cmd>in the docs is a registered CLI command.public-api.animaapp.comorANIMA_API_KEYremains.Needs a human before merge
assets/anima-icon.svgis a placeholder I generated — a plain geometric mark in the existing#FF6250. Design should replace it.api.agentgrid.iois the endpoint to publish to customers (both it andpublic-api.animaapp.comcurrently answer).dev.animaapp.com/chat/<sessionId>URLs while the docs lead withapp.agentgrid.io/artifacts/<sessionId>. Docs teach both and explain the id is the last path segment either way — but the split is worth closing product-side.server.jsonis bumped to 2.0.0; the MCP Registry entry needs a separate publish to pick it up.