Postman Plugin for Claude Code: A Hands-On Guide Postman released a plugin for Anthropic's Claude Code, installable from Anthropic's official plugin marketplace with two commands (`claude plugin marketplace add anthropics/claude-plugins-official` and `claude plugin install postman@claude-plugins-official`), that gives the coding agent a set of skills running the real Postman CLI for API discovery, design, mocking, testing, documentation and CI gating. The plugin's `bootstrap` skill installs the Postman CLI automatically on first use, requires Node.js 18 or later, and registers a hosted MCP server at mcp.postman.com for tools that reach a Postman workspace; local commands such as linting, mocking and running a collection work without signing in. A `SessionStart` hook fires on startup, clear and compact to route non-trivial API work through the `postman:api-engineer` skill, which hands off to specialists including `api-discovery`, `api-mocking`, `api-testing`, `api-documentation`, `ai-readiness` and `ci-integration`. Postman Plugin for Claude Code: A Hands-On Guide Most APIs were written for a human who reads the docs, squints at an error message, and tries again. An AI agent doesn’t do any of that well. It calls the endpoint your spec describes, and if the spec says nothing about what happens when an order is out of stock, the agent guesses. Guessed behavior in an agent loop becomes retries, hallucinated parameters, and a confused on-call engineer. The Postman plugin for Claude Code https://github.com/postmanlabs/postman-plugin is how I close that gap from inside the terminal. It gives Claude Code a set of skills that run the real Postman CLI https://learning.postman.com/docs/postman-cli/postman-cli-overview/ for each step of API work: discover, design, mock, test, document, and gate. In this post, I’ll install it, then build a small orders API end to end with prompts you can copy. Along the way, I’ll point out where Claude Code’s own features plan mode, hooks, subagents, and /goal loops with token limits make the workflow tighter. If you want the conference-talk version of the same idea, the Postman in the Terminal short talk https://github.com/Postman-Devrel/booth-demos/tree/main/content/short-talks/postman-in-the-terminal boils it down to one sentence: a coding agent doesn’t need a UI. It needs a command per step, committed skills that say which command to run, and a gate it can’t edit. That’s the frame for everything that follows. What you’ll need - Claude Code https://code.claude.com/docs/en/setup , signed in - Node.js https://nodejs.org/ 18 or later, which the plugin uses to set up the Postman CLI for you - A Postman account https://identity.getpostman.com/signup . The free plan works, and local commands such as linting, mocking, and running a collection don’t require you to sign in. Only anything that touches the Postman cloud does. - An empty directory with git init run in it Install the plugin Install the plugin from Anthropic’s official Claude Code plugin marketplace. Register the marketplace once, then install: claude plugin marketplace add anthropics/claude-plugins-official claude plugin install postman@claude-plugins-official That’s the whole install. You don’t need to install the Postman CLI yourself. The plugin’s bootstrap skill checks for it the first time Claude needs it and installs it if it’s missing, so there’s no separate setup step. The whole install is two commands. Illustrative terminal, shortened for readability. Start a fresh Claude Code session so the plugin loads. The plugin also registers a hosted MCP server https://modelcontextprotocol.io/ at mcp.postman.com . Run /mcp in the session, pick postman , and complete the sign-in flow in your browser. You only need this for the tools that talk to your Postman workspace, such as searching your team’s existing collections. To confirm everything loaded, run /plugin and look for postman . Or ask Claude: Which Postman skills do you have available in this session? What the plugin gives Claude On every startup , clear , and compact , a SessionStart hook injects a short instruction block telling Claude to route non-trivial API work through the postman:api-engineer skill. That skill is the entry point, and it hands off to the specialists: | Skill | What it does | |---|---| | bootstrap | Finds the Postman CLI, authenticates, and links the repo to a workspace | | api-discovery | Searches your workspaces, finds public provider APIs through Orbit, and queries the Context Graph for dependencies | | api-mocking | Generates and runs mocks from a spec or collection | | api-testing | Runs single requests and collections with pm.test assertions | | api-documentation | Generates agent-friendly docs | | ai-readiness | Scores a spec or collection for how well an agent can use it | | ci-integration | Adds lint, test, and readiness gates to your pipeline | | api-monitoring , performance-testing , flows | Monitors, load tests, and Postman Flows | The api-engineer skill bakes in the opinions that matter for this post. The contract comes first. Validate every change against the contract. Consider a mock before the implementation exists. Don’t push to the cloud without consent. I’d have written roughly the same rules on a whiteboard, which is why I trust it to run unattended on reversible work. Set the ground rules once with CLAUDE.md Skills tell Claude how to use Postman. CLAUDE.md https://code.claude.com/docs/en/memory tells it how your repo works. Run postman init once in the project, which links the repo to a workspace and commits the skills alongside your code so a teammate’s agent or a CI job gets the same guidance without installing anything: postman init Then add a short section to CLAUDE.md : API work - openapi.yaml is the contract. Change it before you change code. - Make HTTP calls with postman request , not curl. - Before you say a change is done, run postman spec lint openapi.yaml and postman collection run against the mock. - Never run postman workspace push . CI does that after merge. - Never edit .github/workflows/api-gate.yml or lower a --min-score threshold to make a check pass. Ask me. That last rule matters more than it looks. An agent under pressure to turn a red check green will happily loosen the check. Put the gate somewhere it can’t reach, and say so in writing. Why the OpenAPI spec and v3 collections matter Everything in this post hangs on two kinds of file, and the plugin is built around the idea that all Postman resources have a filesystem representation https://github.com/postmanlabs/postman-plugin . An agent works best on files it can read, diff, and edit in small pieces. It works worst on a blob it has to load whole or a UI it can’t see. The OpenAPI specification is the contract. It says what the API promises: operations, parameters, schemas, and the error cases. It’s also the first thing an agent reads, so its quality sets the ceiling on everything downstream. The mock, the tests, the docs, and the readiness score all derive from it. A vague spec produces vague mocks and a low score. The v3 collection is the executable proof. In the git-native v3 format, a Postman Collection stops being one large collection.json and becomes a directory tree under postman/collections/ . Every request, folder, and saved example gets its own YAML file: postman/collections/ Orders API/ .resources/ definition.yaml create order.resources/ examples/ 201 Created.example.yaml 409 Out of Stock.example.yaml create order.request.yaml get order.request.yaml cancel order.request.yaml That layout pays off in three ways when an agent is doing the work: - Small diffs. Adding a test to one request changes one file. Pull request reviews show exactly that, and merge conflicts stay rare. - Cheap context. Claude reads the one request it needs, not an entire collection, so tokens go to the work instead of to loading JSON. - Saved examples are documentation. The .example.yaml files record what a 201 and a 409 look like. Examples are also the signal the readiness check rewards, so the same files serve humans, agents, and the score. Two habits keep this working. First, the plugin ships a collection-schema-v3 skill with the exact schema and naming rules, and you should tell Claude to read it before it hand-edits anything under postman/ . Second, lint what it writes, since a malformed YAML file fails silently in a way a UI never would. You don’t need to remember the commands. Ask Claude: Read the collection-schema-v3 skill, then lint openapi.yaml and the Orders API collection. Fix anything at error severity and run both linters again until they're clean. Underneath, Claude runs two Postman CLI commands: postman spec lint openapi.yaml -f error and postman collection lint "postman/collections/Orders API" -f error . The -f error flag makes only error-level findings fail the run. You’ll see the same commands again in the hook and the CI gate later, where nothing is prompting Claude to run them. Keep the spec and the collection in the same repo as the code. When the three change in one pull request, review is one diff, and CI checks all three together. Build an orders API with prompts and goals I’ll use a small orders service as the running example. Each of the following steps has a goal, a prompt, and a note on what to look for. Paste the prompts as written, then adapt them to your own API. Goal 1: check whether the API already exists Before Claude writes anything, find out whether someone already solved this. That’s the api-discovery skill, and it answers from three different sources. They don’t share data, so a miss in one says nothing about the others. | Source | Answers | Command | |---|---|---| | Postman search | “Does a collection, spec, or mock like this exist in our workspaces or on the Postman Public API Network?” | postman search