{
  "schemaVersion": "1.0",
  "item": {
    "slug": "postman",
    "name": "Postman",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/ivangdavila/postman",
    "canonicalUrl": "https://clawhub.ai/ivangdavila/postman",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/postman",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=postman",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "collections.md",
      "memory-template.md",
      "newman.md",
      "setup.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/postman"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/postman",
    "agentPageUrl": "https://openagent3.xyz/skills/postman/agent",
    "manifestUrl": "https://openagent3.xyz/skills/postman/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/postman/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Setup",
        "body": "If ~/postman/ doesn't exist, read setup.md silently and start naturally."
      },
      {
        "title": "When to Use",
        "body": "User needs to test APIs, create Postman collections, manage environments, or run automated API tests with Newman."
      },
      {
        "title": "Architecture",
        "body": "Data lives in ~/postman/. See memory-template.md for structure.\n\n~/postman/\n├── memory.md           # Projects, preferences, common patterns\n├── collections/        # Postman collection JSON files\n└── environments/       # Environment JSON files"
      },
      {
        "title": "Quick Reference",
        "body": "TopicFileSetupsetup.mdMemory templatememory-template.mdCollection formatcollections.mdNewman automationnewman.md"
      },
      {
        "title": "1. Collection Structure First",
        "body": "Before creating requests, define the collection structure:\n\nFolder hierarchy reflects API organization\nUse descriptive names: Users > Create User, not POST 1\nGroup related endpoints logically"
      },
      {
        "title": "2. Environment Variables Always",
        "body": "Never hardcode values that change between environments:\n\n{\n  \"key\": \"base_url\",\n  \"value\": \"https://api.example.com\",\n  \"enabled\": true\n}\n\nUse {{base_url}} in requests. Environments: dev, staging, prod."
      },
      {
        "title": "3. Pre-request Scripts for Auth",
        "body": "Handle authentication in pre-request scripts, not manually:\n\n// Get token and set for collection\npm.sendRequest({\n    url: pm.environment.get(\"auth_url\"),\n    method: 'POST',\n    body: { mode: 'raw', raw: JSON.stringify({...}) }\n}, (err, res) => {\n    pm.environment.set(\"token\", res.json().access_token);\n});"
      },
      {
        "title": "4. Test Assertions Required",
        "body": "Every request needs at least basic assertions:\n\npm.test(\"Status 200\", () => pm.response.to.have.status(200));\npm.test(\"Has data\", () => pm.expect(pm.response.json()).to.have.property(\"data\"));"
      },
      {
        "title": "5. Newman for CI/CD",
        "body": "Run collections headlessly with Newman:\n\nnewman run collection.json -e environment.json --reporters cli,json\n\nExit code 0 = all tests passed. Integrate into CI pipelines."
      },
      {
        "title": "Minimal Collection",
        "body": "{\n  \"info\": {\n    \"name\": \"My API\",\n    \"schema\": \"https://schema.getpostman.com/json/collection/v2.1.0/collection.json\"\n  },\n  \"item\": [\n    {\n      \"name\": \"Get Users\",\n      \"request\": {\n        \"method\": \"GET\",\n        \"url\": \"{{base_url}}/users\",\n        \"header\": [\n          { \"key\": \"Authorization\", \"value\": \"Bearer {{token}}\" }\n        ]\n      }\n    }\n  ]\n}"
      },
      {
        "title": "With Tests",
        "body": "{\n  \"name\": \"Create User\",\n  \"request\": {\n    \"method\": \"POST\",\n    \"url\": \"{{base_url}}/users\",\n    \"body\": {\n      \"mode\": \"raw\",\n      \"raw\": \"{\\\"name\\\": \\\"{{$randomFullName}}\\\", \\\"email\\\": \\\"{{$randomEmail}}\\\"}\",\n      \"options\": { \"raw\": { \"language\": \"json\" } }\n    }\n  },\n  \"event\": [\n    {\n      \"listen\": \"test\",\n      \"script\": {\n        \"exec\": [\n          \"pm.test('Created', () => pm.response.to.have.status(201));\",\n          \"pm.test('Has ID', () => pm.expect(pm.response.json().id).to.exist);\"\n        ]\n      }\n    }\n  ]\n}"
      },
      {
        "title": "Environment Format",
        "body": "{\n  \"name\": \"Development\",\n  \"values\": [\n    { \"key\": \"base_url\", \"value\": \"http://localhost:3000\", \"enabled\": true },\n    { \"key\": \"token\", \"value\": \"\", \"enabled\": true }\n  ]\n}"
      },
      {
        "title": "Newman Commands",
        "body": "TaskCommandBasic runnewman run collection.jsonWith environmentnewman run collection.json -e dev.jsonSpecific foldernewman run collection.json --folder \"Users\"Iterationsnewman run collection.json -n 10Data filenewman run collection.json -d data.csvHTML reportnewman run collection.json -r htmlextraBail on failnewman run collection.json --bail"
      },
      {
        "title": "Common Traps",
        "body": "Hardcoded URLs → Tests break between environments. Always use {{base_url}}.\nNo assertions → Tests \"pass\" but don't validate anything. Add status + body checks.\nSecrets in collection → Credentials leak. Use environment variables, gitignore env files.\nSequential dependencies → Tests fail randomly. Use setNextRequest() explicitly or make tests independent.\nMissing Content-Type → POST/PUT fails silently. Always set Content-Type: application/json."
      },
      {
        "title": "Dynamic Variables",
        "body": "Postman built-in variables for test data:\n\nVariableExample Output{{$randomFullName}}\"Jane Doe\"{{$randomEmail}}\"jane@example.com\"{{$randomUUID}}\"550e8400-e29b-...\"{{$timestamp}}1234567890{{$randomInt}}42"
      },
      {
        "title": "OpenAPI to Postman",
        "body": "Import OpenAPI/Swagger specs:\n\nExport OpenAPI JSON/YAML\nIn Postman: Import > File > Select spec\nCollection auto-generated with all endpoints\n\nOr via CLI:\n\nnpx openapi-to-postmanv2 -s openapi.yaml -o collection.json"
      },
      {
        "title": "Security & Privacy",
        "body": "Data that stays local:\n\nCollections and environments in ~/postman/\nNewman runs locally\n\nThis skill does NOT:\n\nSend collections to external services\nStore API credentials in memory.md"
      },
      {
        "title": "Related Skills",
        "body": "Install with clawhub install <slug> if user confirms:\n\napi — REST API consumption patterns\njson — JSON manipulation and validation\nci-cd — Pipeline automation"
      },
      {
        "title": "Feedback",
        "body": "If useful: clawhub star postman\nStay updated: clawhub sync"
      }
    ],
    "body": "Setup\n\nIf ~/postman/ doesn't exist, read setup.md silently and start naturally.\n\nWhen to Use\n\nUser needs to test APIs, create Postman collections, manage environments, or run automated API tests with Newman.\n\nArchitecture\n\nData lives in ~/postman/. See memory-template.md for structure.\n\n~/postman/\n├── memory.md           # Projects, preferences, common patterns\n├── collections/        # Postman collection JSON files\n└── environments/       # Environment JSON files\n\nQuick Reference\nTopic\tFile\nSetup\tsetup.md\nMemory template\tmemory-template.md\nCollection format\tcollections.md\nNewman automation\tnewman.md\nCore Rules\n1. Collection Structure First\n\nBefore creating requests, define the collection structure:\n\nFolder hierarchy reflects API organization\nUse descriptive names: Users > Create User, not POST 1\nGroup related endpoints logically\n2. Environment Variables Always\n\nNever hardcode values that change between environments:\n\n{\n  \"key\": \"base_url\",\n  \"value\": \"https://api.example.com\",\n  \"enabled\": true\n}\n\n\nUse {{base_url}} in requests. Environments: dev, staging, prod.\n\n3. Pre-request Scripts for Auth\n\nHandle authentication in pre-request scripts, not manually:\n\n// Get token and set for collection\npm.sendRequest({\n    url: pm.environment.get(\"auth_url\"),\n    method: 'POST',\n    body: { mode: 'raw', raw: JSON.stringify({...}) }\n}, (err, res) => {\n    pm.environment.set(\"token\", res.json().access_token);\n});\n\n4. Test Assertions Required\n\nEvery request needs at least basic assertions:\n\npm.test(\"Status 200\", () => pm.response.to.have.status(200));\npm.test(\"Has data\", () => pm.expect(pm.response.json()).to.have.property(\"data\"));\n\n5. Newman for CI/CD\n\nRun collections headlessly with Newman:\n\nnewman run collection.json -e environment.json --reporters cli,json\n\n\nExit code 0 = all tests passed. Integrate into CI pipelines.\n\nCollection Format\nMinimal Collection\n{\n  \"info\": {\n    \"name\": \"My API\",\n    \"schema\": \"https://schema.getpostman.com/json/collection/v2.1.0/collection.json\"\n  },\n  \"item\": [\n    {\n      \"name\": \"Get Users\",\n      \"request\": {\n        \"method\": \"GET\",\n        \"url\": \"{{base_url}}/users\",\n        \"header\": [\n          { \"key\": \"Authorization\", \"value\": \"Bearer {{token}}\" }\n        ]\n      }\n    }\n  ]\n}\n\nWith Tests\n{\n  \"name\": \"Create User\",\n  \"request\": {\n    \"method\": \"POST\",\n    \"url\": \"{{base_url}}/users\",\n    \"body\": {\n      \"mode\": \"raw\",\n      \"raw\": \"{\\\"name\\\": \\\"{{$randomFullName}}\\\", \\\"email\\\": \\\"{{$randomEmail}}\\\"}\",\n      \"options\": { \"raw\": { \"language\": \"json\" } }\n    }\n  },\n  \"event\": [\n    {\n      \"listen\": \"test\",\n      \"script\": {\n        \"exec\": [\n          \"pm.test('Created', () => pm.response.to.have.status(201));\",\n          \"pm.test('Has ID', () => pm.expect(pm.response.json().id).to.exist);\"\n        ]\n      }\n    }\n  ]\n}\n\nEnvironment Format\n{\n  \"name\": \"Development\",\n  \"values\": [\n    { \"key\": \"base_url\", \"value\": \"http://localhost:3000\", \"enabled\": true },\n    { \"key\": \"token\", \"value\": \"\", \"enabled\": true }\n  ]\n}\n\nNewman Commands\nTask\tCommand\nBasic run\tnewman run collection.json\nWith environment\tnewman run collection.json -e dev.json\nSpecific folder\tnewman run collection.json --folder \"Users\"\nIterations\tnewman run collection.json -n 10\nData file\tnewman run collection.json -d data.csv\nHTML report\tnewman run collection.json -r htmlextra\nBail on fail\tnewman run collection.json --bail\nCommon Traps\nHardcoded URLs → Tests break between environments. Always use {{base_url}}.\nNo assertions → Tests \"pass\" but don't validate anything. Add status + body checks.\nSecrets in collection → Credentials leak. Use environment variables, gitignore env files.\nSequential dependencies → Tests fail randomly. Use setNextRequest() explicitly or make tests independent.\nMissing Content-Type → POST/PUT fails silently. Always set Content-Type: application/json.\nDynamic Variables\n\nPostman built-in variables for test data:\n\nVariable\tExample Output\n{{$randomFullName}}\t\"Jane Doe\"\n{{$randomEmail}}\t\"jane@example.com\"\n{{$randomUUID}}\t\"550e8400-e29b-...\"\n{{$timestamp}}\t1234567890\n{{$randomInt}}\t42\nOpenAPI to Postman\n\nImport OpenAPI/Swagger specs:\n\nExport OpenAPI JSON/YAML\nIn Postman: Import > File > Select spec\nCollection auto-generated with all endpoints\n\nOr via CLI:\n\nnpx openapi-to-postmanv2 -s openapi.yaml -o collection.json\n\nSecurity & Privacy\n\nData that stays local:\n\nCollections and environments in ~/postman/\nNewman runs locally\n\nThis skill does NOT:\n\nSend collections to external services\nStore API credentials in memory.md\nRelated Skills\n\nInstall with clawhub install <slug> if user confirms:\n\napi — REST API consumption patterns\njson — JSON manipulation and validation\nci-cd — Pipeline automation\nFeedback\nIf useful: clawhub star postman\nStay updated: clawhub sync"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ivangdavila/postman",
    "publisherUrl": "https://clawhub.ai/ivangdavila/postman",
    "owner": "ivangdavila",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/postman",
    "downloadUrl": "https://openagent3.xyz/downloads/postman",
    "agentUrl": "https://openagent3.xyz/skills/postman/agent",
    "manifestUrl": "https://openagent3.xyz/skills/postman/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/postman/agent.md"
  }
}