Coding agents
A coding agent can write a template and the code that sends it data, but it does not know Formfeed: where a template's files go, how each template language calls a helper, which command checks what, and what costs units. Formfeed's plugin tells it. It has two parts:
- Two skills, instructions the agent loads when a task needs them:
formfeed-templateswrites, changes, checks, previews and renders templates as files with theformfeedCLI. The agent uses it when a project has aformfeed.json, when you ask for a PDF, image, Word or PowerPoint template, or when templates move over from another provider.formfeed-apiwrites the application code that creates documents: a render, waiting for an asynchronous one, batches, webhooks and errors, with the TypeScript or Python SDK, or over HTTP from any other language.
- The hosted MCP server, so the agent can list your templates, read the data each one expects, check data and render, signed in with your Formfeed account.
The skills carry what the agent looks things up in: every command of the CLI with its flags, every helper in all three template languages, the API's error codes, and the same request in eight languages. Each release writes them from that release's CLI, engine and documentation, so a skill never names a flag or a helper the version you install lacks.
Install
Claude Code
claude plugin marketplace add formfeed-dev/skills
claude plugin install formfeed@formfeed-dev
Claude Code 2.1.292 and later do both in one command,
claude plugin install formfeed --marketplace formfeed-dev/skills. Inside a session,
/plugin install formfeed --marketplace formfeed-dev/skills opens the plugin's details, where you
choose whether it is yours in every project, the repository's for everyone, or yours in this
repository only.
The plugin loads in the next session, or at once with /reload-plugins. Its skills then show in the
/ menu as /formfeed:formfeed-templates and /formfeed:formfeed-api, though the agent loads them
by itself when a task needs them, and Claude Code lists the server as plugin:formfeed:formfeed,
waiting for authentication until you sign in (see below).
Claude Code does not update a plugin from this marketplace by itself: run
claude plugin update formfeed@formfeed-dev, or turn on auto-update for formfeed-dev on the
Marketplaces tab of /plugin. claude plugin uninstall formfeed@formfeed-dev removes the
plugin.
Cursor
Install the server with one click from Formfeed's listing on
cursor.directory, or add it to ~/.cursor/mcp.json as
the MCP page shows. The skills come with the skills command line:
npx skills add formfeed-dev/skills
It asks which of your agents to install them for, and puts them in the project (.agents/skills)
or, with -g, in ~/.cursor/skills for every project.
Any other agent
npx skills add formfeed-dev/skills installs the two skills for the agents the
skills command line knows, among them Codex, GitHub Copilot, Gemini CLI and
Windsurf. --skill formfeed-templates installs one of them. The server is added in each client's
own way; formfeed.dev/agents has a guide for each.
Signing in
Two things sign in, each on its own.
- The server. The first time the agent connects, Formfeed's sign-in opens in your browser (in
Claude Code, run
/mcpand choose the server). Sign in, choose the workspace the agent works in, and allow it. What a signed-in agent may do, and how to change its workspace or revoke it, is in Signing in with your account. - The command line the skills run. Run
npx formfeed loginyourself, which stores a live key with the scopes of your role, or store a test key withnpx formfeed login ff_test_…, or put one intoFORMFEED_API_KEY. See Templates as code.
The skills never ask for a key in the chat and never write one into a file.
What the agent does on its own, and what it asks first
The skills hold the agent to these rules:
init,validate,test,devandeinvoicerun on your machine and need no account. The agent works there until the template is right.- Before the first command that calls the API, it runs
formfeed whoami --jsonto see which key is in use. A test key renders free, with a test mark on the Free plan. A live key counts every render against your plan's units: the agent tells you, renders once whenvalidateandtestpass, and never in a loop. - It runs a command that changes the workspace your team shares only when the conversation asked for
it:
templates push,channels set,channels promote,channels rollback,channels delete,partials push,files push,files delete,renders delete-outputs,webhooks resendandworkspaces delete. - In application code it reads the key from
FORMFEED_API_KEY, never writes a key into code, a file or a commit, and keeps it on the server.
A skill is an instruction the agent follows, not a lock. What can happen is decided by the key: give the agent a test key while it works, and keep the live key for CI and production. Through the server, a signed-in agent always renders live; connect the server with a test key instead to render for free while you build.
What it runs, sends and fetches
The plugin collects nothing. The skills run the formfeed CLI through npx, which fetches it from
npm, and the CLI sends to the Formfeed API what it sends when you run it yourself. The server's
address is https://mcp.formfeed.dev/mcp. The skills' sources are public in
formfeed-dev/skills, under the MIT licence.
Without the plugin
For an agent that reads neither plugins nor skills, paste the same loop into AGENTS.md or
CLAUDE.md: the snippet is on formfeed.dev/agents.