{
  "schemaVersion": "1.0",
  "item": {
    "slug": "proxymock",
    "name": "proxymock",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/mleray24/proxymock",
    "canonicalUrl": "https://clawhub.ai/mleray24/proxymock",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/proxymock",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=proxymock",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/cli-reference.md",
      "references/language-reference.md",
      "scripts/replay_and_report.sh"
    ],
    "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-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-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/proxymock"
    },
    "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/proxymock",
    "agentPageUrl": "https://openagent3.xyz/skills/proxymock/agent",
    "manifestUrl": "https://openagent3.xyz/skills/proxymock/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/proxymock/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": "proxymock",
        "body": "proxymock captures real API and database traffic via a transparent proxy, then uses it to create mocks and tests — no code changes required."
      },
      {
        "title": "Core Workflow",
        "body": "record → inspect → mock / replay\n\nRecord traffic with proxymock record -- <app-command>\nInspect captured RRPairs with proxymock inspect\nMock dependencies with proxymock mock -- <app-command>\nReplay recorded tests with proxymock replay --test-against <url>"
      },
      {
        "title": "Record Traffic",
        "body": "# Record while running app as child process (recommended)\nproxymock record -- go run .\nproxymock record -- npm start\n\n# Custom output dir\nproxymock record --out my-recording -- python app.py\n\n# Record database traffic via reverse proxy\nproxymock record --map 65432=postgres://localhost:5432 -- ./my-app\n\n# Record with custom app port\nproxymock record --app-port 3000 -- ./my-app\n\nArchitecture: inbound proxy on :4143 → app on --app-port (default 8080), outbound proxy on :4140 captures egress."
      },
      {
        "title": "Mock Server",
        "body": "# Start mock server, launch app as child\nproxymock mock -- go run .\n\n# Source mocks from specific dir\nproxymock mock --in ./my-recordings -- npm start\n\n# Fast mode (no simulated latency)\nproxymock mock --fast -- ./my-app\n\n# Don't write observed traffic to disk\nproxymock mock --no-out -- ./my-app\n\n# Database mock via reverse proxy\nproxymock mock --map 65432=localhost:5432 -- ./my-app\n\nWhen mocking, app connects to external services through proxy on :4140. Matched requests return recorded responses; unmatched requests pass through to real backends."
      },
      {
        "title": "Replay / Load Test",
        "body": "# Replay recorded tests against app\nproxymock replay --test-against http://localhost:8080\n\n# Load test: 10 virtual users for 5 minutes\nproxymock replay --test-against http://localhost:8080 --vus 10 --for 5m\n\n# Run tests 3 times\nproxymock replay --test-against http://localhost:8080 --times 3\n\n# Fail on conditions (CI-friendly)\nproxymock replay --test-against http://localhost:8080 \\\n  --fail-if \"requests.failed!=0\" \\\n  --fail-if \"latency.p99>100\"\n\n# Multi-service routing\nproxymock replay \\\n  --test-against auth=auth.example.com \\\n  --test-against frontend=http://localhost:8080 \\\n  --test-against http://localhost:9000\n\nValidation metrics: latency.{avg,p50,p90,p95,p99,max,min}, requests.{total,succeeded,failed,per-second,per-minute,response-pct,result-match-pct}."
      },
      {
        "title": "Inspect (TUI)",
        "body": "proxymock inspect                    # Current directory\nproxymock inspect --in ./my-recording\nproxymock inspect --demo             # Demo data\n\nNote: inspect launches a terminal UI — run with pty=true in exec."
      },
      {
        "title": "Generate Mocks from OpenAPI",
        "body": "proxymock generate api-spec.yaml\nproxymock generate --out ./mocks --host api.staging.com api-spec.yaml\nproxymock generate --tag-filter \"users,orders\" api-spec.yaml\nproxymock generate --include-optional --examples-only api-spec.yaml"
      },
      {
        "title": "File Utilities",
        "body": "# Compare RRPair files for differences\nproxymock files compare --in recorded/ --in replayed/\n\n# Convert between formats\nproxymock files convert --in proxymock --out-format json\n\n# Update mock signatures after editing RRPairs\nproxymock files update-mocks --in ./my-mocks"
      },
      {
        "title": "Cloud (Enterprise)",
        "body": "proxymock cloud push snapshot    # Push to Speedscale cloud\nproxymock cloud pull snapshot    # Pull from cloud"
      },
      {
        "title": "Import Traffic",
        "body": "# Import traffic from a snapshot file\nproxymock import snapshot.json\nproxymock import --in ./snapshots snapshot.tar.gz"
      },
      {
        "title": "MCP Server",
        "body": "# Start Model Context Protocol (MCP) server for AI tool integration\nproxymock mcp"
      },
      {
        "title": "Other",
        "body": "proxymock send-one path/to/test.md http://localhost:8080   # Send single request\nproxymock init --api-key <key>                              # Initialize config\nproxymock certs                                             # Manage TLS certs\nproxymock version                                           # Version info\nproxymock completion bash                                   # Generate shell completions (bash/zsh/fish/powershell)"
      },
      {
        "title": "RRPair Files",
        "body": "Traffic is stored as RRPair (request/response pair) markdown files under proxymock/ directory. Each file contains:\n\n### REQUEST (TEST) ### or ### REQUEST (MOCK) ### — the captured request\n### RESPONSE ### — the captured response\n### SIGNATURE ### — mock matching criteria (for mocks)\n\nFiles are human and LLM readable. Edit them directly to modify test data or mock responses, then run proxymock files update-mocks if you changed request details that affect the signature."
      },
      {
        "title": "Proxy Environment",
        "body": "When not using -- <command> child process mode, set proxy env vars manually:\n\n# HTTP/HTTPS/gRPC\nexport http_proxy=http://localhost:4140\nexport https_proxy=http://localhost:4140\nexport grpc_proxy=http://$(hostname):4140\n\n# Database (SOCKS)\nexport all_proxy=socks5h://localhost:4140\n\nSee language reference for language-specific setup."
      },
      {
        "title": "Reference",
        "body": "For signature matching, architecture details, and advanced usage: see references/cli-reference.md."
      }
    ],
    "body": "proxymock\n\nproxymock captures real API and database traffic via a transparent proxy, then uses it to create mocks and tests — no code changes required.\n\nCore Workflow\nrecord → inspect → mock / replay\n\nRecord traffic with proxymock record -- <app-command>\nInspect captured RRPairs with proxymock inspect\nMock dependencies with proxymock mock -- <app-command>\nReplay recorded tests with proxymock replay --test-against <url>\nKey Commands\nRecord Traffic\n# Record while running app as child process (recommended)\nproxymock record -- go run .\nproxymock record -- npm start\n\n# Custom output dir\nproxymock record --out my-recording -- python app.py\n\n# Record database traffic via reverse proxy\nproxymock record --map 65432=postgres://localhost:5432 -- ./my-app\n\n# Record with custom app port\nproxymock record --app-port 3000 -- ./my-app\n\n\nArchitecture: inbound proxy on :4143 → app on --app-port (default 8080), outbound proxy on :4140 captures egress.\n\nMock Server\n# Start mock server, launch app as child\nproxymock mock -- go run .\n\n# Source mocks from specific dir\nproxymock mock --in ./my-recordings -- npm start\n\n# Fast mode (no simulated latency)\nproxymock mock --fast -- ./my-app\n\n# Don't write observed traffic to disk\nproxymock mock --no-out -- ./my-app\n\n# Database mock via reverse proxy\nproxymock mock --map 65432=localhost:5432 -- ./my-app\n\n\nWhen mocking, app connects to external services through proxy on :4140. Matched requests return recorded responses; unmatched requests pass through to real backends.\n\nReplay / Load Test\n# Replay recorded tests against app\nproxymock replay --test-against http://localhost:8080\n\n# Load test: 10 virtual users for 5 minutes\nproxymock replay --test-against http://localhost:8080 --vus 10 --for 5m\n\n# Run tests 3 times\nproxymock replay --test-against http://localhost:8080 --times 3\n\n# Fail on conditions (CI-friendly)\nproxymock replay --test-against http://localhost:8080 \\\n  --fail-if \"requests.failed!=0\" \\\n  --fail-if \"latency.p99>100\"\n\n# Multi-service routing\nproxymock replay \\\n  --test-against auth=auth.example.com \\\n  --test-against frontend=http://localhost:8080 \\\n  --test-against http://localhost:9000\n\n\nValidation metrics: latency.{avg,p50,p90,p95,p99,max,min}, requests.{total,succeeded,failed,per-second,per-minute,response-pct,result-match-pct}.\n\nInspect (TUI)\nproxymock inspect                    # Current directory\nproxymock inspect --in ./my-recording\nproxymock inspect --demo             # Demo data\n\n\nNote: inspect launches a terminal UI — run with pty=true in exec.\n\nGenerate Mocks from OpenAPI\nproxymock generate api-spec.yaml\nproxymock generate --out ./mocks --host api.staging.com api-spec.yaml\nproxymock generate --tag-filter \"users,orders\" api-spec.yaml\nproxymock generate --include-optional --examples-only api-spec.yaml\n\nFile Utilities\n# Compare RRPair files for differences\nproxymock files compare --in recorded/ --in replayed/\n\n# Convert between formats\nproxymock files convert --in proxymock --out-format json\n\n# Update mock signatures after editing RRPairs\nproxymock files update-mocks --in ./my-mocks\n\nCloud (Enterprise)\nproxymock cloud push snapshot    # Push to Speedscale cloud\nproxymock cloud pull snapshot    # Pull from cloud\n\nImport Traffic\n# Import traffic from a snapshot file\nproxymock import snapshot.json\nproxymock import --in ./snapshots snapshot.tar.gz\n\nMCP Server\n# Start Model Context Protocol (MCP) server for AI tool integration\nproxymock mcp\n\nOther\nproxymock send-one path/to/test.md http://localhost:8080   # Send single request\nproxymock init --api-key <key>                              # Initialize config\nproxymock certs                                             # Manage TLS certs\nproxymock version                                           # Version info\nproxymock completion bash                                   # Generate shell completions (bash/zsh/fish/powershell)\n\nRRPair Files\n\nTraffic is stored as RRPair (request/response pair) markdown files under proxymock/ directory. Each file contains:\n\n### REQUEST (TEST) ### or ### REQUEST (MOCK) ### — the captured request\n### RESPONSE ### — the captured response\n### SIGNATURE ### — mock matching criteria (for mocks)\n\nFiles are human and LLM readable. Edit them directly to modify test data or mock responses, then run proxymock files update-mocks if you changed request details that affect the signature.\n\nProxy Environment\n\nWhen not using -- <command> child process mode, set proxy env vars manually:\n\n# HTTP/HTTPS/gRPC\nexport http_proxy=http://localhost:4140\nexport https_proxy=http://localhost:4140\nexport grpc_proxy=http://$(hostname):4140\n\n# Database (SOCKS)\nexport all_proxy=socks5h://localhost:4140\n\n\nSee language reference for language-specific setup.\n\nReference\n\nFor signature matching, architecture details, and advanced usage: see references/cli-reference.md."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/mleray24/proxymock",
    "publisherUrl": "https://clawhub.ai/mleray24/proxymock",
    "owner": "mleray24",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/proxymock",
    "downloadUrl": "https://openagent3.xyz/downloads/proxymock",
    "agentUrl": "https://openagent3.xyz/skills/proxymock/agent",
    "manifestUrl": "https://openagent3.xyz/skills/proxymock/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/proxymock/agent.md"
  }
}