← PostmanCONTENT HISTORY

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.

WHAT CHANGED

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.

Save Postman and check future changes in Following.

Up to 3 plugins free · no card required.

All fields and original values.

Full description

Before

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...

After

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

Before

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...

After

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

Before

Sep 30, 2026 · 23:09 UTC

[{"relative_path":"reference/cli_installation.md","size_in_bytes":1645}]

After

Oct 24, 2026 · 12:56 UTC

[{"relative_path":"reference/cli_installation.md","size_in_bytes":1724}]

Compare saved observations

Download comparison JSON

SKILL.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

BEFORE
"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."
AFTER
"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

BEFORE
[
  {
    "relative_path": "reference/cli_installation.md",
    "size_in_bytes": 1645
  }
]
AFTER
[
  {
    "relative_path": "reference/cli_installation.md",
    "size_in_bytes": 1724
  }
]

changed /skill_md_contents

BEFORE
"---\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"
AFTER
"---\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