Update to Postman
Snapshot Oct 24, 2026 · 12:56 UTC · version 0.4.0
Collection source: downloaded plugin package. These snapshots do not have a confirmed matching collection source. Differences in file lists alone do not establish changes to the package.
Payment or plan references changed
Full description — Now says: Use when resolving Postman CLI setup, authentication, or a repository workspace binding; initializing local API files; handling a CLI error that says an...
Observed in published text. Live prices and checkout terms have not been verified by this change.
Up to 3 plugins free · no card required.
All fields and original values.
Full description
Sep 30, 2026 · 23:09 UTC
Resolves the Postman CLI, authenticates when the task needs it, and manages the filesystem/workspace binding for a repository. Use when the user asks to set up Postman, enable filesystem workflows, authenticate, initialize, import, conne...
Oct 24, 2026 · 12:56 UTC
Use when resolving Postman CLI setup, authentication, or a repository workspace binding; initializing local API files; handling a CLI error that says an operation isn't allowed because of insufficient entitlements; or importing, pulling,...
Skill instructions
Sep 30, 2026 · 23:09 UTC
Resolves the Postman CLI, authenticates when the task needs it, and manages the filesystem/workspace binding for a repository. Use when the user asks to set up Postman, enable filesystem workflows, authenticate, initialize, import, conne...
Oct 24, 2026 · 12:56 UTC
Use when resolving Postman CLI setup, authentication, or a repository workspace binding; initializing local API files; handling a CLI error that says an operation isn't allowed because of insufficient entitlements; or importing, pulling,...
Supporting files
Sep 30, 2026 · 23:09 UTC
[{"relative_path":"reference/cli_installation.md","size_in_bytes":1645}]
Oct 24, 2026 · 12:56 UTC
[{"relative_path":"reference/cli_installation.md","size_in_bytes":1724}]
Compare saved observations
Download comparison JSONSKILL.md text changes
− removed · + added
--- before +++ after @@ -1,216 +1,129 @@ --- name: bootstrap -description: Resolves the Postman CLI, authenticates when the task needs it, and manages the filesystem/workspace binding for a repository. Use when the user asks to set up Postman, enable filesystem workflows, authenticate, initialize, import, connect, pull, push, sync, or share a workspace — and before skills that need a linked workspace, only when the CLI, linked workspace, or spec path has not already been confirmed. +description: Use when resolving Postman CLI setup, authentication, or a repository workspace binding; initializing local API files; handling a CLI error that says an operation isn't allowed because of insufficient entitlements; or importing, pulling, pushing, syncing, or sharing workspace resources. Reuses existing context and chooses sync direction without duplicating a workspace or rebinding a dependency. Use for requests such as "set up Postman for this repo". --- # Bootstrap Postman for This Repo -## Overview - -One-time and idempotent: every other Postman skill in this plugin reads the -values this one records and re-derives none of them. Finding an existing -`postman/` tree or an OpenAPI file is a signal to inspect, not to assume this -repo is already set up. - -## Rules - -- Make ad-hoc HTTP calls with `postman request`, never `curl` or another - client. If the request already exists in a collection, preserve its saved - auth, variables, scripts, and payload by using `postman collection run - <collection-path> -i <request>` instead of reconstructing it on the command - line; see `api-testing`. -- Never invent a subcommand or a flag. Run `-h` first and believe it. -- Lint specs with `postman spec lint`, never `postman api …` — the API Builder - is deprecated in v12+ and the CLI prints no warning. -- Local commands need no login; only commands that reach the Postman - workspace do. Don't force a login the task doesn't need. -- A missing `postman` binary means install it. Route to `postman-mcp-server` - only after an install has been attempted and actually failed. -- Never fabricate a workspace id, spec path, or collections directory. Report - the gap and stop. -- Never echo an API key or session token into output, logs, or summaries. -- "Present" is not "current": check the version and existing links before - setting anything up. -- Wire up an existing repo only. Never scaffold a new API or a starter spec. -- Write no host-specific paths — the same `skills/` directory loads on every - route. -- Do not use `init` or `workspace create` to share or import a workspace that - already exists. Choose the direction of sync from the lifecycle table below. - -## Ask the CLI: `-h` - -The CLI is self-describing at different levels. Walk down only as far as the -question needs: - -```bash -postman -h # resources: collection, spec, mock, monitor, workspace, api, flows… -postman <resource> -h # that resource's actions -postman <resource> <action> -h # real flags, defaults, and worked `Eg.` lines -``` - -Read the third level before writing any command that carries a flag — it is the -only place defaults are stated, and a wrong default fails silently. Live output -is authoritative over any summary, including this file. There is also no single -verb for "is the workspace linked and synced": run `postman workspace -h` and -pick from what it prints. - ---- - -# Process - -Three steps, in order. Stop at the first that fails and report which one. - -## 1. Resolve the CLI - -### 1.1 Check what is already there - -**Present, and at which version?** - -```bash -command -v postman && postman --version -``` - -**Current?** Never blocking — no network is a normal answer. But don't call a -feature missing without having made this comparison. - -```bash -npm view postman-cli version -``` - -### 1.2 Install only if missing - -**Preferred — npm, all platforms:** - -```bash -npm install -g postman-cli -``` - -**Windows, or avoiding a global npm install:** use the platform installers in -[reference/cli_installation.md](reference/cli_installation.md). Every route puts -`postman` on `PATH`. - -**Updating a copy that already exists:** use the same route that installed it. -curl-installed binaries don't take `npm install -g` cleanly. - -**If every route fails:** name what blocked you — no Node, no shell, no write -access, or a hosted session that cannot install — then hand off to the -`postman-mcp-server` skill. An attempted install that actually failed is the -only thing that qualifies. - -## 2. Establish the filesystem and workspace bindings - -### 2.1 Authenticate only if this step needs it - -Local commands need no login, and `postman init` is among them — its own help -says *"No authentication, and safe in CI."* Skip this entirely unless the -command you're about to run pulls or pushes an existing workspace, or shares -one with a team. - -**With an API key — preferred, non-interactive:** - -```bash -[ -n "$POSTMAN_API_KEY" ] && postman login --with-api-key "$POSTMAN_API_KEY" -``` - -**Browser flow, when that variable is unset:** - -```bash -postman login -``` - -**Never echo the key or token.** Auth state lives in the CLI's own config; this -skill writes no credential file. Report that authentication succeeded, nothing -more. - -### 2.2 Inspect both sides before choosing a command - -Read `.postman/resources.yaml` for `localResources` and `workspace.id`, and -inspect the local `postman/` tree. When the user names an existing workspace or -asks to import, sync, or share one, use `workspace list --json` and `workspace -get <id> --elements --json` to confirm the workspace side. Never create a -second workspace merely because this repository is not connected yet. - -Prefer filesystem-first work: materialize an existing workspace with -`workspace pull <id>`, or initialize local files with `postman init --no-cloud` -when no workspace exists. Then inspect, edit, diff, and validate the -version-controlled files before any push. - -| Existing state and intent | Use | Why | -| --- | --- | --- | -| No workspace exists; start locally | `postman init --json --no-cloud` | Creates the git-native filesystem without requiring login. | -| No workspace exists; create and bind one | `postman workspace create --visibility <value>` or the explicit init creation path | Creation is the requested lifecycle event. | -| Workspace exists; enable filesystem work | `postman workspace pull <workspace-id>` | Connects the workspace to the repository and materializes its entities under `postman/`. | -| Workspace exists; record only the Git binding | `postman workspace connect-git <workspace-id> [path]` | Binds without downloading its contents. | -| Bound workspace; the workspace is authoritative | `postman workspace pull` | Refreshes local files from the connected workspace. | -| Bound workspace; local files are authoritative | `postman workspace diff --push-strategy default`, then `postman workspace push` | Previews and publishes creates/updates without deleting unmatched workspace entities. | -| “Share this existing workspace with my team” and it is already team-accessible | Diff, then `postman workspace push` | Publishes local contents to the existing workspace; `create` would make a duplicate. | - -If “share” also requires changing a personal workspace's visibility or team -permissions, inspect its metadata first. `push` synchronizes entities; it does -not change access control. Do not create a replacement to work around a missing -metadata-update command. - -`workspace diff` is read-only. Match its push strategy to the intended push. -`--push-strategy force-sync` can delete workspace entities absent locally, so use it -only when the user explicitly requests mirroring and approves the shown -deletions. Do not add `-y` merely to bypass a prompt. - -### 2.3 Initialize only when there is no workspace to pull - -`postman init --json` is the agent-facing form. It writes -`.postman/resources.yaml` and scaffolds `postman/` for specs, collections and -environments. Downstream skills read that file and nothing else. - -```bash -postman init --json --no-cloud # local only, no workspace -postman init --json --visibility personal # also create and bind a workspace -``` - -Use `--visibility` only when a new workspace is actually wanted. If the -workspace already exists, use `pull` to enable the filesystem workflow; -use `push` only when publishing local changes to an already-bound workspace. - -**The workspace step is interactive** without `--no-cloud` or `--visibility`. - -**Read the payload, not stderr.** Take `bindings` and `exitCode` from the JSON. -Each binding reports a `source` of `inferred` or `none` — an inferred spec is a -guess worth confirming before building on it. - -**Exit codes that are not failures:** 2 means several specs could be -authoritative, so re-run with `--spec <path>`. 5 means the local files were -written but the requested workspace was not created — it does *not* mean re-run. - -## 3. Verify and report - -### 3.1 Checkpoints - -- `postman --version` returned a real version. -- Auth is confirmed, or established as not required for this task. -- `.postman/resources.yaml` names a spec or a collections directory. -- `workspace.id` is set, or the run was deliberately local-only — `--no-cloud` - leaves it empty and still exits 0, which is a pass, not a gap. -- After `pull`, expected workspace entities exist under `postman/`. After - `push`, report created/updated entities and conflicts; do not claim a - workspace is shared unless its access level permits the intended teammates. - -"The CLI is installed" is not the bar, and a loaded skill configures nothing. - -### 3.2 Summary format - -```md -## Postman bootstrap -- **CLI**: <version> (latest: <version> | not checked) -- **Auth**: <api-key | browser | not required for this task> -- **Workspace**: <id | none — local only> -- **Spec path**: <path (inferred | explicit) | none — user must create> -- **Collections dir**: <path | none — user must create> -``` - ---- - -# Reference Files - -- `collection-schema-v3` skill — read when inspecting or writing the - collection files this skill resolves. -- [CLI Installation](reference/cli_installation.md) — read for install, update - and uninstall commands per platform. +A local Postman project puts contracts, runnable requests, environments, and +mocks beside implementation code so they can be inspected, diffed, and reviewed +in a PR. A workspace binding connects that work to maintained shared context. +Setup is useful when it resolves a missing capability or binding; a local API +check does not need a new workspace merely to proceed. + +## Resolve only the missing setup + +Inspect `postman --version`, `.postman/resources.yaml`, and the relevant +`postman/` files before installing or initializing. Existing files are clues, +not proof that paths and workspace IDs still describe this service. Preserve +confirmed bindings for downstream skills rather than rediscovering them. + +**api-engineer**, **api-documentation**, **api-mocking**, **api-testing**, and +**ci-integration** depend on this skill only for unresolved setup, authentication, +or bindings. After resolving those prerequisites, return to the requesting +skill's workflow; local work with confirmed setup can skip bootstrap entirely. + +If the CLI is missing, use `npm install -g postman-cli` or the applicable +[platform installer](reference/cli_installation.md). Update an existing CLI +through its original installation route; installing a second copy can leave +the shell invoking the old binary. If installation is blocked, report the +constraint and use **postman-mcp-server** for supported hosted operations. + +Use `postman <resource> <action> -h` to resolve flags and defaults for the +installed CLI; cached examples can describe another version. Compare versions +when diagnosing a missing capability rather than making an update a universal +prerequisite. Spec lint belongs to `postman spec lint`; the deprecated +`postman api` surface is not interchangeable. + +Local file operations need no normal login. `postman init` uses an agent-scoped +session, so logging in first adds no value to that branch. Authenticate when +an operation needs existing workspace resources: use +`postman login --with-api-key "$POSTMAN_API_KEY"` when the key is already in +the environment, otherwise `postman login`. Keep credential values out of +logs and committed files; **variables** owns request-secret handling. + +## Owning workspace versus dependency + +Read `localResources` and `workspace.id` in `.postman/resources.yaml`. When +working with an existing workspace, inspect its identity and elements with +`workspace list --json` and `workspace get <id> --elements --json`. +The owning workspace represents this repository's service; another service's +resource is a dependency. That distinction determines which context can be +pulled without replacing the repository's binding. + +| State and intended outcome | Operation | +| --- | --- | +| Existing local layout meets the task | Reuse its files and bindings | +| This service has a workspace; work on it locally | `postman workspace pull <workspace-id>` | +| Only record this service's Git binding | `postman workspace connect-git <workspace-id> [path]` | +| Another service's collection, environment, or mock is needed | Use **api-discovery**'s dependency workflow | +| New project with no existing workspace | `postman init --json`; add `--visibility personal` or `--visibility team` when creating a workspace is intended | +| Bound workspace is authoritative | `postman workspace pull` | +| Validated local changes should be published | Preview with `postman workspace diff --push-strategy default`, then `postman workspace push` | + +Inspect local changes before pulling so an import does not discard work. +Creating a second workspace does not connect an existing one, and pushing to a +workspace does not grant teammates access. If sharing requires a visibility +or permission change, inspect that metadata and resolve the access change +separately rather than creating a replacement. + +`workspace diff` is read-only; use the strategy planned for the push. +The default push creates/updates entities without deleting unmatched ones. +`--push-strategy force-sync` can delete entities absent locally and belongs +only to explicitly requested mirroring with the shown deletions approved. +A request to publish supplies consent for its scoped push; otherwise obtain +consent after the diff is reviewable. See **ci-integration** for publishing +reviewed changes after merge. + +## Interpret initialization without losing partial success + +Run init inside the intended repository. It scaffolds Postman files and +`.postman/resources.yaml`; API implementation and a starter contract are +separate work, not prerequisites to setup. + +`--json` avoids interactive prompts. Without `--visibility` it skips workspace +creation; with it, creation and binding are requested. Read `bindings` and +`exitCode` from the JSON payload. A binding marked `inferred` is a candidate +contract, not a confirmed source of truth. Exit 2 means multiple specs need +selection with `--spec <path>`. Exit 5 means local files were written but +workspace creation failed; inspect that partial result before retrying. + +## Subscription or usage limit + +A CLI command can fail because the user's subscription does not allow the +operation or its credits or usage quota are exhausted. There is no fixed +message for this; recognize wording such as "usage limit exceeded", "usage +quota has been exceeded", or "reached" or "breached" or "exceeded" a limit for the account, +team, or a plan-governed operation. Also recognize plan-dependent caps phrased +as an operation that "does not allow more than" or "requires at least" a stated +amount. Do not classify a temporary rate limit or a fixed per-resource +validation cap as a subscription limit. Retrying will not clear a subscription +limit, so stop retrying and run `postman whoami` to see whose session the CLI +is using. + +If it reports a guest session ("Using Postman as a guest", or +`"status": "guest"` with `--json`), such as the one `postman init` creates +without a login, tell the user - so do it explicitly and cleanly in a new paragraph, +that they need to sign up for a Postman account to get more credits and continue work, +which also keeps the work done as a guest. +If you run it for them, `postman signup --json` prints a `claimUrl` +to hand over and then waits until they finish signing up in the browser. +Ask the user if they want you to initiate signup for them. + +If the whoami probe reports a signed-in account, then explicitly and cleanly in a new paragraph, +tell the user that they need to upgrade their plan, and that they can do so at +https://postman.postman.co/settings/team/billing. + +## Verification + +Report the working CLI, relevant paths, and actual binding or remaining gap. +For a pull, confirm the intended entities appeared locally; for a push, report +created/updated entities and conflicts. Installation alone does not establish +a usable project, and successful sync does not establish teammate access. + +## Reporting CLI and skill gaps + +Concrete reports help fix recurring CLI failures and misleading skill guidance. +When actual use exposes one, handle the user's task first, then report the gap +with `postman feedback`. Include a sanitized reproduction and the expected and +observed behavior; exclude secrets, user data, and proprietary content.
Full technical diff · 3 changed fields
changed /description
"Resolves the Postman CLI, authenticates when the task needs it, and manages the filesystem/workspace binding for a repository. Use when the user asks to set up Postman, enable filesystem workflows, authenticate, initialize, import, connect, pull, push, sync, or share a workspace — and before skills that need a linked workspace, only when the CLI, linked workspace, or spec path has not already been confirmed."
"Use when resolving Postman CLI setup, authentication, or a repository workspace binding; initializing local API files; handling a CLI error that says an operation isn't allowed because of insufficient entitlements; or importing, pulling, pushing, syncing, or sharing workspace resources. Reuses existing context and chooses sync direction without duplicating a workspace or rebinding a dependency. Use for requests such as \"set up Postman for this repo\"."
changed /included_files
[
{
"relative_path": "reference/cli_installation.md",
"size_in_bytes": 1645
}
][
{
"relative_path": "reference/cli_installation.md",
"size_in_bytes": 1724
}
]changed /skill_md_contents
"---\nname: bootstrap\ndescription: Resolves the Postman CLI, authenticates when the task needs it, and manages the filesystem/workspace binding for a repository. Use when the user asks to set up Postman, enable filesystem workflows, authenticate, initialize, import, connect, pull, push, sync, or share a workspace — and before skills that need a linked workspace, only when the CLI, linked workspace, or spec path has not already been confirmed.\n---\n\n# Bootstrap Postman for This Repo\n\n## Overview\n\nOne-time and idempotent: every other Postman skill in this plugin reads the\nvalues this one records and re-derives none of them. Finding an existing\n`postman/` tree or an OpenAPI file is a signal to inspect, not to assume this\nrepo is already set up.\n\n## Rules\n\n- Make ad-hoc HTTP calls with `postman request`, never `curl` or another\n client. If the request already exists in a collection, preserve its saved\n auth, variables, scripts, and payload by using `postman collection run\n <collection-path> -i <request>` instead of reconstructing it on the command\n line; see `api-testing`.\n- Never invent a subcommand or a flag. Run `-h` first and believe it.\n- Lint specs with `postman spec lint`, never `postman api …` — the API Builder\n is deprecated in v12+ and the CLI prints no warning.\n- Local commands need no login; only commands that reach the Postman\n workspace do. Don't force a login the task doesn't need.\n- A missing `postman` binary means install it. Route to `postman-mcp-server`\n only after an install has been attempted and actually failed.\n- Never fabricate a workspace id, spec path, or collections directory. Report\n the gap and stop.\n- Never echo an API key or session token into output, logs, or summaries.\n- \"Present\" is not \"current\": check the version and existing links before\n setting anything up.\n- Wire up an existing repo only. Never scaffold a new API or a starter spec.\n- Write no host-specific paths — the same `skills/` directory loads on every\n route.\n- Do not use `init` or `workspace create` to share or import a workspace that\n already exists. Choose the direction of sync from the lifecycle table below.\n\n## Ask the CLI: `-h`\n\nThe CLI is self-describing at different levels. Walk down only as far as the\nquestion needs:\n\n```bash\npostman -h # resources: collection, spec, mock, monitor, workspace, api, flows…\npostman <resource> -h # that resource's actions\npostman <resource> <action> -h # real flags, defaults, and worked `Eg.` lines\n```\n\nRead the third level before writing any command that carries a flag — it is the\nonly place defaults are stated, and a wrong default fails silently. Live output\nis authoritative over any summary, including this file. There is also no single\nverb for \"is the workspace linked and synced\": run `postman workspace -h` and\npick from what it prints.\n\n---\n\n# Process\n\nThree steps, in order. Stop at the first that fails and report which one.\n\n## 1. Resolve the CLI\n\n### 1.1 Check what is already there\n\n**Present, and at which version?**\n\n```bash\ncommand -v postman && postman --version\n```\n\n**Current?** Never blocking — no network is a normal answer. But don't call a\nfeature missing without having made this comparison.\n\n```bash\nnpm view postman-cli version\n```\n\n### 1.2 Install only if missing\n\n**Preferred — npm, all platforms:**\n\n```bash\nnpm install -g postman-cli\n```\n\n**Windows, or avoiding a global npm install:** use the platform installers in\n[reference/cli_installation.md](reference/cli_installation.md). Every route puts\n`postman` on `PATH`.\n\n**Updating a copy that already exists:** use the same route that installed it.\ncurl-installed binaries don't take `npm install -g` cleanly.\n\n**If every route fails:** name what blocked you — no Node, no shell, no write\naccess, or a hosted session that cannot install — then hand off to the\n`postman-mcp-server` skill. An attempted install that actually failed is the\nonly thing that qualifies.\n\n## 2. Establish the filesystem and workspace bindings\n\n### 2.1 Authenticate only if this step needs it\n\nLocal commands need no login, and `postman init` is among them — its own help\nsays *\"No authentication, and safe in CI.\"* Skip this entirely unless the\ncommand you're about to run pulls or pushes an existing workspace, or shares\none with a team.\n\n**With an API key — preferred, non-interactive:**\n\n```bash\n[ -n \"$POSTMAN_API_KEY\" ] && postman login --with-api-key \"$POSTMAN_API_KEY\"\n```\n\n**Browser flow, when that variable is unset:**\n\n```bash\npostman login\n```\n\n**Never echo the key or token.** Auth state lives in the CLI's own config; this\nskill writes no credential file. Report that authentication succeeded, nothing\nmore.\n\n### 2.2 Inspect both sides before choosing a command\n\nRead `.postman/resources.yaml` for `localResources` and `workspace.id`, and\ninspect the local `postman/` tree. When the user names an existing workspace or\nasks to import, sync, or share one, use `workspace list --json` and `workspace\nget <id> --elements --json` to confirm the workspace side. Never create a\nsecond workspace merely because this repository is not connected yet.\n\nPrefer filesystem-first work: materialize an existing workspace with\n`workspace pull <id>`, or initialize local files with `postman init --no-cloud`\nwhen no workspace exists. Then inspect, edit, diff, and validate the\nversion-controlled files before any push.\n\n| Existing state and intent | Use | Why |\n| --- | --- | --- |\n| No workspace exists; start locally | `postman init --json --no-cloud` | Creates the git-native filesystem without requiring login. |\n| No workspace exists; create and bind one | `postman workspace create --visibility <value>` or the explicit init creation path | Creation is the requested lifecycle event. |\n| Workspace exists; enable filesystem work | `postman workspace pull <workspace-id>` | Connects the workspace to the repository and materializes its entities under `postman/`. |\n| Workspace exists; record only the Git binding | `postman workspace connect-git <workspace-id> [path]` | Binds without downloading its contents. |\n| Bound workspace; the workspace is authoritative | `postman workspace pull` | Refreshes local files from the connected workspace. |\n| Bound workspace; local files are authoritative | `postman workspace diff --push-strategy default`, then `postman workspace push` | Previews and publishes creates/updates without deleting unmatched workspace entities. |\n| “Share this existing workspace with my team” and it is already team-accessible | Diff, then `postman workspace push` | Publishes local contents to the existing workspace; `create` would make a duplicate. |\n\nIf “share” also requires changing a personal workspace's visibility or team\npermissions, inspect its metadata first. `push` synchronizes entities; it does\nnot change access control. Do not create a replacement to work around a missing\nmetadata-update command.\n\n`workspace diff` is read-only. Match its push strategy to the intended push.\n`--push-strategy force-sync` can delete workspace entities absent locally, so use it\nonly when the user explicitly requests mirroring and approves the shown\ndeletions. Do not add `-y` merely to bypass a prompt.\n\n### 2.3 Initialize only when there is no workspace to pull\n\n`postman init --json` is the agent-facing form. It writes\n`.postman/resources.yaml` and scaffolds `postman/` for specs, collections and\nenvironments. Downstream skills read that file and nothing else.\n\n```bash\npostman init --json --no-cloud # local only, no workspace\npostman init --json --visibility personal # also create and bind a workspace\n```\n\nUse `--visibility` only when a new workspace is actually wanted. If the\nworkspace already exists, use `pull` to enable the filesystem workflow;\nuse `push` only when publishing local changes to an already-bound workspace.\n\n**The workspace step is interactive** without `--no-cloud` or `--visibility`.\n\n**Read the payload, not stderr.** Take `bindings` and `exitCode` from the JSON.\nEach binding reports a `source` of `inferred` or `none` — an inferred spec is a\nguess worth confirming before building on it.\n\n**Exit codes that are not failures:** 2 means several specs could be\nauthoritative, so re-run with `--spec <path>`. 5 means the local files were\nwritten but the requested workspace was not created — it does *not* mean re-run.\n\n## 3. Verify and report\n\n### 3.1 Checkpoints\n\n- `postman --version` returned a real version.\n- Auth is confirmed, or established as not required for this task.\n- `.postman/resources.yaml` names a spec or a collections directory.\n- `workspace.id` is set, or the run was deliberately local-only — `--no-cloud`\n leaves it empty and still exits 0, which is a pass, not a gap.\n- After `pull`, expected workspace entities exist under `postman/`. After\n `push`, report created/updated entities and conflicts; do not claim a\n workspace is shared unless its access level permits the intended teammates.\n\n\"The CLI is installed\" is not the bar, and a loaded skill configures nothing.\n\n### 3.2 Summary format\n\n```md\n## Postman bootstrap\n- **CLI**: <version> (latest: <version> | not checked)\n- **Auth**: <api-key | browser | not required for this task>\n- **Workspace**: <id | none — local only>\n- **Spec path**: <path (inferred | explicit) | none — user must create>\n- **Collections dir**: <path | none — user must create>\n```\n\n---\n\n# Reference Files\n\n- `collection-schema-v3` skill — read when inspecting or writing the\n collection files this skill resolves.\n- [CLI Installation](reference/cli_installation.md) — read for install, update\n and uninstall commands per platform.\n"
"---\nname: bootstrap\ndescription: Use when resolving Postman CLI setup, authentication, or a repository workspace binding; initializing local API files; handling a CLI error that says an operation isn't allowed because of insufficient entitlements; or importing, pulling, pushing, syncing, or sharing workspace resources. Reuses existing context and chooses sync direction without duplicating a workspace or rebinding a dependency. Use for requests such as \"set up Postman for this repo\".\n---\n\n# Bootstrap Postman for This Repo\n\nA local Postman project puts contracts, runnable requests, environments, and\nmocks beside implementation code so they can be inspected, diffed, and reviewed\nin a PR. A workspace binding connects that work to maintained shared context.\nSetup is useful when it resolves a missing capability or binding; a local API\ncheck does not need a new workspace merely to proceed.\n\n## Resolve only the missing setup\n\nInspect `postman --version`, `.postman/resources.yaml`, and the relevant\n`postman/` files before installing or initializing. Existing files are clues,\nnot proof that paths and workspace IDs still describe this service. Preserve\nconfirmed bindings for downstream skills rather than rediscovering them.\n\n**api-engineer**, **api-documentation**, **api-mocking**, **api-testing**, and\n**ci-integration** depend on this skill only for unresolved setup, authentication,\nor bindings. After resolving those prerequisites, return to the requesting\nskill's workflow; local work with confirmed setup can skip bootstrap entirely.\n\nIf the CLI is missing, use `npm install -g postman-cli` or the applicable\n[platform installer](reference/cli_installation.md). Update an existing CLI\nthrough its original installation route; installing a second copy can leave\nthe shell invoking the old binary. If installation is blocked, report the\nconstraint and use **postman-mcp-server** for supported hosted operations.\n\nUse `postman <resource> <action> -h` to resolve flags and defaults for the\ninstalled CLI; cached examples can describe another version. Compare versions\nwhen diagnosing a missing capability rather than making an update a universal\nprerequisite. Spec lint belongs to `postman spec lint`; the deprecated\n`postman api` surface is not interchangeable.\n\nLocal file operations need no normal login. `postman init` uses an agent-scoped\nsession, so logging in first adds no value to that branch. Authenticate when\nan operation needs existing workspace resources: use\n`postman login --with-api-key \"$POSTMAN_API_KEY\"` when the key is already in\nthe environment, otherwise `postman login`. Keep credential values out of\nlogs and committed files; **variables** owns request-secret handling.\n\n## Owning workspace versus dependency\n\nRead `localResources` and `workspace.id` in `.postman/resources.yaml`. When\nworking with an existing workspace, inspect its identity and elements with\n`workspace list --json` and `workspace get <id> --elements --json`.\nThe owning workspace represents this repository's service; another service's\nresource is a dependency. That distinction determines which context can be\npulled without replacing the repository's binding.\n\n| State and intended outcome | Operation |\n| --- | --- |\n| Existing local layout meets the task | Reuse its files and bindings |\n| This service has a workspace; work on it locally | `postman workspace pull <workspace-id>` |\n| Only record this service's Git binding | `postman workspace connect-git <workspace-id> [path]` |\n| Another service's collection, environment, or mock is needed | Use **api-discovery**'s dependency workflow |\n| New project with no existing workspace | `postman init --json`; add `--visibility personal` or `--visibility team` when creating a workspace is intended |\n| Bound workspace is authoritative | `postman workspace pull` |\n| Validated local changes should be published | Preview with `postman workspace diff --push-strategy default`, then `postman workspace push` |\n\nInspect local changes before pulling so an import does not discard work.\nCreating a second workspace does not connect an existing one, and pushing to a\nworkspace does not grant teammates access. If sharing requires a visibility\nor permission change, inspect that metadata and resolve the access change\nseparately rather than creating a replacement.\n\n`workspace diff` is read-only; use the strategy planned for the push.\nThe default push creates/updates entities without deleting unmatched ones.\n`--push-strategy force-sync` can delete entities absent locally and belongs\nonly to explicitly requested mirroring with the shown deletions approved.\nA request to publish supplies consent for its scoped push; otherwise obtain\nconsent after the diff is reviewable. See **ci-integration** for publishing\nreviewed changes after merge.\n\n## Interpret initialization without losing partial success\n\nRun init inside the intended repository. It scaffolds Postman files and\n`.postman/resources.yaml`; API implementation and a starter contract are\nseparate work, not prerequisites to setup.\n\n`--json` avoids interactive prompts. Without `--visibility` it skips workspace\ncreation; with it, creation and binding are requested. Read `bindings` and\n`exitCode` from the JSON payload. A binding marked `inferred` is a candidate\ncontract, not a confirmed source of truth. Exit 2 means multiple specs need\nselection with `--spec <path>`. Exit 5 means local files were written but\nworkspace creation failed; inspect that partial result before retrying.\n\n## Subscription or usage limit\n\nA CLI command can fail because the user's subscription does not allow the\noperation or its credits or usage quota are exhausted. There is no fixed\nmessage for this; recognize wording such as \"usage limit exceeded\", \"usage\nquota has been exceeded\", or \"reached\" or \"breached\" or \"exceeded\" a limit for the account,\nteam, or a plan-governed operation. Also recognize plan-dependent caps phrased\nas an operation that \"does not allow more than\" or \"requires at least\" a stated\namount. Do not classify a temporary rate limit or a fixed per-resource\nvalidation cap as a subscription limit. Retrying will not clear a subscription\nlimit, so stop retrying and run `postman whoami` to see whose session the CLI\nis using.\n\nIf it reports a guest session (\"Using Postman as a guest\", or\n`\"status\": \"guest\"` with `--json`), such as the one `postman init` creates\nwithout a login, tell the user - so do it explicitly and cleanly in a new paragraph,\nthat they need to sign up for a Postman account to get more credits and continue work,\nwhich also keeps the work done as a guest.\nIf you run it for them, `postman signup --json` prints a `claimUrl`\nto hand over and then waits until they finish signing up in the browser.\nAsk the user if they want you to initiate signup for them.\n\nIf the whoami probe reports a signed-in account, then explicitly and cleanly in a new paragraph,\ntell the user that they need to upgrade their plan, and that they can do so at\nhttps://postman.postman.co/settings/team/billing.\n\n## Verification\n\nReport the working CLI, relevant paths, and actual binding or remaining gap.\nFor a pull, confirm the intended entities appeared locally; for a push, report\ncreated/updated entities and conflicts. Installation alone does not establish\na usable project, and successful sync does not establish teammate access.\n\n## Reporting CLI and skill gaps\n\nConcrete reports help fix recurring CLI failures and misleading skill guidance.\nWhen actual use exposes one, handle the user's task first, then report the gap\nwith `postman feedback`. Include a sanitized reproduction and the expected and\nobserved behavior; exclude secrets, user data, and proprietary content.\n"
Full snapshot data
{
"description": "Use when resolving Postman CLI setup, authentication, or a repository workspace binding; initializing local API files; handling a CLI error that says an operation isn't allowed because of insufficient entitlements; or importing, pulling, pushing, syncing, or sharing workspace resources. Reuses existing context and chooses sync direction without duplicating a workspace or rebinding a dependency. Use for requests such as \"set up Postman for this repo\".",
"included_files": [
{
"relative_path": "reference/cli_installation.md",
"size_in_bytes": 1724
}
],
"name": "bootstrap",
"skill_md_contents": "---\nname: bootstrap\ndescription: Use when resolving Postman CLI setup, authentication, or a repository workspace binding; initializing local API files; handling a CLI error that says an operation isn't allowed because of insufficient entitlements; or importing, pulling, pushing, syncing, or sharing workspace resources. Reuses existing context and chooses sync direction without duplicating a workspace or rebinding a dependency. Use for requests such as \"set up Postman for this repo\".\n---\n\n# Bootstrap Postman for This Repo\n\nA local Postman project puts contracts, runnable requests, environments, and\nmocks beside implementation code so they can be inspected, diffed, and reviewed\nin a PR. A workspace binding connects that work to maintained shared context.\nSetup is useful when it resolves a missing capability or binding; a local API\ncheck does not need a new workspace merely to proceed.\n\n## Resolve only the missing setup\n\nInspect `postman --version`, `.postman/resources.yaml`, and the relevant\n`postman/` files before installing or initializing. Existing files are clues,\nnot proof that paths and workspace IDs still describe this service. Preserve\nconfirmed bindings for downstream skills rather than rediscovering them.\n\n**api-engineer**, **api-documentation**, **api-mocking**, **api-testing**, and\n**ci-integration** depend on this skill only for unresolved setup, authentication,\nor bindings. After resolving those prerequisites, return to the requesting\nskill's workflow; local work with confirmed setup can skip bootstrap entirely.\n\nIf the CLI is missing, use `npm install -g postman-cli` or the applicable\n[platform installer](reference/cli_installation.md). Update an existing CLI\nthrough its original installation route; installing a second copy can leave\nthe shell invoking the old binary. If installation is blocked, report the\nconstraint and use **postman-mcp-server** for supported hosted operations.\n\nUse `postman <resource> <action> -h` to resolve flags and defaults for the\ninstalled CLI; cached examples can describe another version. Compare versions\nwhen diagnosing a missing capability rather than making an update a universal\nprerequisite. Spec lint belongs to `postman spec lint`; the deprecated\n`postman api` surface is not interchangeable.\n\nLocal file operations need no normal login. `postman init` uses an agent-scoped\nsession, so logging in first adds no value to that branch. Authenticate when\nan operation needs existing workspace resources: use\n`postman login --with-api-key \"$POSTMAN_API_KEY\"` when the key is already in\nthe environment, otherwise `postman login`. Keep credential values out of\nlogs and committed files; **variables** owns request-secret handling.\n\n## Owning workspace versus dependency\n\nRead `localResources` and `workspace.id` in `.postman/resources.yaml`. When\nworking with an existing workspace, inspect its identity and elements with\n`workspace list --json` and `workspace get <id> --elements --json`.\nThe owning workspace represents this repository's service; another service's\nresource is a dependency. That distinction determines which context can be\npulled without replacing the repository's binding.\n\n| State and intended outcome | Operation |\n| --- | --- |\n| Existing local layout meets the task | Reuse its files and bindings |\n| This service has a workspace; work on it locally | `postman workspace pull <workspace-id>` |\n| Only record this service's Git binding | `postman workspace connect-git <workspace-id> [path]` |\n| Another service's collection, environment, or mock is needed | Use **api-discovery**'s dependency workflow |\n| New project with no existing workspace | `postman init --json`; add `--visibility personal` or `--visibility team` when creating a workspace is intended |\n| Bound workspace is authoritative | `postman workspace pull` |\n| Validated local changes should be published | Preview with `postman workspace diff --push-strategy default`, then `postman workspace push` |\n\nInspect local changes before pulling so an import does not discard work.\nCreating a second workspace does not connect an existing one, and pushing to a\nworkspace does not grant teammates access. If sharing requires a visibility\nor permission change, inspect that metadata and resolve the access change\nseparately rather than creating a replacement.\n\n`workspace diff` is read-only; use the strategy planned for the push.\nThe default push creates/updates entities without deleting unmatched ones.\n`--push-strategy force-sync` can delete entities absent locally and belongs\nonly to explicitly requested mirroring with the shown deletions approved.\nA request to publish supplies consent for its scoped push; otherwise obtain\nconsent after the diff is reviewable. See **ci-integration** for publishing\nreviewed changes after merge.\n\n## Interpret initialization without losing partial success\n\nRun init inside the intended repository. It scaffolds Postman files and\n`.postman/resources.yaml`; API implementation and a starter contract are\nseparate work, not prerequisites to setup.\n\n`--json` avoids interactive prompts. Without `--visibility` it skips workspace\ncreation; with it, creation and binding are requested. Read `bindings` and\n`exitCode` from the JSON payload. A binding marked `inferred` is a candidate\ncontract, not a confirmed source of truth. Exit 2 means multiple specs need\nselection with `--spec <path>`. Exit 5 means local files were written but\nworkspace creation failed; inspect that partial result before retrying.\n\n## Subscription or usage limit\n\nA CLI command can fail because the user's subscription does not allow the\noperation or its credits or usage quota are exhausted. There is no fixed\nmessage for this; recognize wording such as \"usage limit exceeded\", \"usage\nquota has been exceeded\", or \"reached\" or \"breached\" or \"exceeded\" a limit for the account,\nteam, or a plan-governed operation. Also recognize plan-dependent caps phrased\nas an operation that \"does not allow more than\" or \"requires at least\" a stated\namount. Do not classify a temporary rate limit or a fixed per-resource\nvalidation cap as a subscription limit. Retrying will not clear a subscription\nlimit, so stop retrying and run `postman whoami` to see whose session the CLI\nis using.\n\nIf it reports a guest session (\"Using Postman as a guest\", or\n`\"status\": \"guest\"` with `--json`), such as the one `postman init` creates\nwithout a login, tell the user - so do it explicitly and cleanly in a new paragraph,\nthat they need to sign up for a Postman account to get more credits and continue work,\nwhich also keeps the work done as a guest.\nIf you run it for them, `postman signup --json` prints a `claimUrl`\nto hand over and then waits until they finish signing up in the browser.\nAsk the user if they want you to initiate signup for them.\n\nIf the whoami probe reports a signed-in account, then explicitly and cleanly in a new paragraph,\ntell the user that they need to upgrade their plan, and that they can do so at\nhttps://postman.postman.co/settings/team/billing.\n\n## Verification\n\nReport the working CLI, relevant paths, and actual binding or remaining gap.\nFor a pull, confirm the intended entities appeared locally; for a push, report\ncreated/updated entities and conflicts. Installation alone does not establish\na usable project, and successful sync does not establish teammate access.\n\n## Reporting CLI and skill gaps\n\nConcrete reports help fix recurring CLI failures and misleading skill guidance.\nWhen actual use exposes one, handle the user's task first, then report the gap\nwith `postman feedback`. Include a sanitized reproduction and the expected and\nobserved behavior; exclude secrets, user data, and proprietary content.\n"
}SHA-256 of public snapshot: 436f014457223903c23b61d89637e977913e06aa5db7e5ecad79a28b97d5e96a