Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Provides patterns and configurations for running WireMock as a standalone Docker container. Generates mock HTTP endpoints, creates stub mappings for testing, validates integration scenarios, and simulates error conditions. Use when you need to mock APIs, create a mock server, stub external services, simulate third-party APIs, or fake API responses for integration testing.
.claude/skills/giuseppe-trisciuoglio-wiremock-standalone-docker/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 4% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 15% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 20% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 44% | 0% |
| case-15 | ✓→✓ | = Same ✓ | 21% | 0% |
Provides patterns for running WireMock as a standalone Docker container to mock external APIs during integration and end-to-end testing. Runs WireMock as a separate service that simulates real API behavior for testing HTTP clients, retry logic, and error handling.
Use when you need to:
Create a docker-compose.yml with WireMock 3.5.2, port mapping, and volume mounts for mappings and files:
yamlversion: "3.8" services: wiremock: image: wiremock/wiremock:3.5.2 ports: - "8080:8080" volumes: - ./wiremock:/home/wiremock command: ["--global-response-templating"]
Create the WireMock configuration directories:
wiremock/
├── mappings/ # JSON stub definitions
└── __files/ # Response body filesCreate JSON stub files in wiremock/mappings/ for each scenario:
fixedDelayMillisecondsbashdocker compose up -d
bashcurl http://localhost:8080/__admin/mappings
Expected: Returns empty array {"mappings":[]} if no stubs loaded, or your stub definitions. If you get connection refused, check that the container is running: docker compose ps
Point your application to http://localhost:8080 (or http://wiremock:8080 in Docker network) instead of the real API.
Always test: 200, 400, 401, 403, 404, 429, 500, timeouts, malformed responses.
json{ "request": { "method": "GET", "url": "/api/users/123" }, "response": { "status": 200, "jsonBody": { "id": 123, "name": "Mario Rossi" } } }
json{ "request": { "method": "GET", "url": "/api/error" }, "response": { "status": 500, "body": "Internal Server Error" } }
json{ "request": { "method": "GET", "url": "/api/slow" }, "response": { "status": 200, "fixedDelayMilliseconds": 5000, "jsonBody": { "message": "delayed" } } }
yamlservices: wiremock: image: wiremock/wiremock:3.5.2 ports: - "8080:8080" volumes: - ./wiremock:/home/wiremock app: build: . environment: - API_BASE_URL=http://wiremock:8080 depends_on: - wiremock
users/, products/curl -X POST http://localhost:8080/__admin/resetget-user-success.json, post-user-error.json--global-response-templating for dynamic responsesRequests don't match stubs? Check what WireMock received: curl http://localhost:8080/__admin/requests — shows unmatched requests with details about what was actually sent.
Stub file not loading? Verify file location: place JSON stubs in wiremock/mappings/ and response files in wiremock/__files/. Check file permissions.
Connection refused errors? Run docker compose ps to verify the container is running. Check port conflicts with lsof -i :8080.
See references/ for complete examples:
docker-compose.yml - Full Docker Compose configurationwiremock/mappings/ - Complete stub examples for all scenarios| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-15 | pass→pass | 10,503 | 5,189 | -51% | 1 | 1 | 0% | 1,891 | 2,294 | +21% | 0 | 0 | — |
case-01 | fail→pass | 13,509 | 6,583 | -51% | 1 | 1 | 0% | 2,511 | 2,615 | +4% | 0 | 0 | — |
case-02 | fail→pass | 18,648 | 14,261 | -24% | 1 | 1 | 0% | 3,677 | 4,216 | +15% | 0 | 0 | — |
case-03 | fail→pass | 15,194 | 11,311 | -26% | 1 | 1 | 0% | 3,052 | 3,673 | +20% | 0 | 0 | — |
case-04 | pass→pass | 12,354 | 10,941 | -11% | 1 | 1 | 0% | 2,498 | 3,485 | +40% | 0 | 0 | — |
case-05 | pass→pass | 12,062 | 10,197 | -15% | 1 | 1 | 0% | 1,964 | 3,106 | +58% | 0 | 0 | — |
case-06 | pass→pass | 11,170 | 12,362 | +11% | 1 | 1 | 0% | 2,527 | 4,099 | +62% | 0 | 0 | — |
case-07 | pass→pass | 10,205 | 6,312 | -38% | 1 | 1 | 0% | 1,646 | 2,386 | +45% | 0 | 0 | — |
case-08 | pass→pass | 4,082 | 2,798 | -31% | 1 | 1 | 0% | 618 | 1,690 | +173% | 0 | 0 | — |
case-09 | pass→pass | 2,503 | 2,541 | +2% | 1 | 1 | 0% | 320 | 1,670 | +422% | 0 | 0 | — |
case-10 | pass→pass | 5,246 | 3,068 | -42% | 1 | 1 | 0% | 944 | 1,816 | +92% | 0 | 0 | — |
case-11 | pass→pass | 4,194 | 3,718 | -11% | 1 | 1 | 0% | 625 | 1,861 | +198% | 0 | 0 | — |
case-12 | pass→pass | 8,684 | 4,214 | -51% | 1 | 1 | 0% | 1,523 | 1,958 | +29% | 0 | 0 | — |
case-13 | pass→pass | 5,709 | 4,547 | -20% | 1 | 1 | 0% | 1,010 | 1,980 | +96% | 0 | 0 | — |
case-14 | pass→pass | 4,234 | 3,252 | -23% | 1 | 1 | 0% | 692 | 1,674 | +142% | 0 | 0 | — |
case-16 | pass→pass | 3,930 | 2,738 | -30% | 1 | 1 | 0% | 619 | 1,711 | +176% | 0 | 0 | — |
case-17 | pass→pass | 3,489 | 3,935 | +13% | 1 | 1 | 0% | 697 | 2,077 | +198% | 0 | 0 | — |
case-18 | fail→pass | 8,784 | 5,398 | -39% | 1 | 1 | 0% | 1,550 | 2,233 | +44% | 0 | 0 | — |
case-19 | pass→pass | 22,570 | 13,179 | -42% | 1 | 1 | 0% | 2,670 | 3,590 | +34% | 0 | 0 | — |
case-20 | pass→pass | 11,083 | 3,862 | -65% | 1 | 1 | 0% | 1,768 | 1,982 | +12% | 0 | 0 | — |
case-21 | pass→pass | 7,028 | 4,999 | -29% | 1 | 1 | 0% | 1,255 | 2,152 | +71% | 0 | 0 | — |
case-22 | pass→pass | 6,071 | 2,835 | -53% | 1 | 1 | 0% | 1,076 | 1,676 | +56% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +18 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.