Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Verify Output SDK development services are running. Use when debugging workflows, starting development, encountering connection errors, services may be down, or when you see "ECONNREFUSED" or timeout errors.
.claude/skills/growthxai-output-services-check/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 16% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -30% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 7% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -25% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 26% | 0% |
This skill verifies that all required Output SDK development services are running and healthy. The Output SDK requires three services for local development: Docker containers, the API server, and the Temporal server with its UI.
bashdocker ps | grep output
Expected: You should see containers related to output running. If no containers appear, Docker may not be running or the services haven't been started.
bashcurl -s http://localhost:3001/health
Expected: Returns a health status response. If this fails with "Connection refused", the API server is not running.
bashcurl -s http://localhost:8080 > /dev/null && echo "Temporal UI accessible" || echo "Temporal UI not accessible"
Expected: "Temporal UI accessible". If not accessible, Temporal server may not be running.
bash# Start all development services npx output dev
Wait 30-60 seconds for all services to initialize, then re-run the checks.
bash# `output dev` reconciles a partially-up stack itself — it runs `up -d` for the # missing containers, then attaches to monitor. Prefer it over raw compose so # the project name and compose file match what the CLI uses. npx output dev
To stop everything first and start clean:
bashnpx output dev down npx output dev
lsof -i :3001 and lsof -i :8080docker compose logsIF docker_not_running:
ACTION: Start Docker Desktop/daemon
WAIT: for Docker to initialize
IF no_output_containers:
RUN: npx output dev
WAIT: 30-60 seconds for services
IF api_not_responding:
CHECK: port 3001 for conflicts
RUN: output dev (if not already running)
IF temporal_not_accessible:
CHECK: port 8080 for conflicts
CHECK: docker compose logs for Temporal errors
IF all_services_healthy:
PROCEED: with workflow debuggingScenario: User reports "connection refused" when running a workflow
bash# First, check if services are running docker ps | grep output # Output: (empty - no containers) # Start services npx output dev # Wait and verify sleep 60 curl -s http://localhost:3001/health # Output: {"status":"healthy"}
Scenario: Partial service failure
bash# API responds but Temporal doesn't curl -s http://localhost:3001/health # Works curl -s http://localhost:8080 # Fails # Check Temporal logs docker compose logs temporal # Restart just Temporal docker compose restart temporal
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 14,311 | 2,174 | -85% | 1 | 1 | 0% | 2,259 | 1,072 | -53% | 0 | 0 | — |
case-02 | fail→pass | 15,192 | 7,605 | -50% | 1 | 1 | 0% | 1,937 | 2,256 | +16% | 0 | 0 | — |
case-03 | fail→fail | 14,370 | 2,827 | -80% | 1 | 1 | 0% | 2,339 | 1,312 | -44% | 0 | 0 | — |
case-04 | pass→pass | 6,286 | 1,974 | -69% | 1 | 1 | 0% | 995 | 1,133 | +14% | 0 | 0 | — |
case-05 | fail→pass | 12,041 | 2,563 | -79% | 1 | 1 | 0% | 1,700 | 1,185 | -30% | 0 | 0 | — |
case-06 | pass→pass | 8,977 | 2,813 | -69% | 1 | 1 | 0% | 1,514 | 1,279 | -16% | 0 | 0 | — |
case-07 | fail→pass | 8,093 | 3,246 | -60% | 1 | 1 | 0% | 1,266 | 1,356 | +7% | 0 | 0 | — |
case-08 | fail→pass | 13,813 | 4,657 | -66% | 1 | 1 | 0% | 2,130 | 1,599 | -25% | 0 | 0 | — |
case-09 | fail→pass | 7,031 | 3,943 | -44% | 1 | 1 | 0% | 1,134 | 1,434 | +26% | 0 | 0 | — |
case-10 | fail→pass | 13,746 | 3,287 | -76% | 1 | 1 | 0% | 2,014 | 1,330 | -34% | 0 | 0 | — |
case-11 | fail→pass | 8,964 | 1,959 | -78% | 1 | 1 | 0% | 1,423 | 1,099 | -23% | 0 | 0 | — |
case-12 | pass→pass | 8,086 | 4,021 | -50% | 1 | 1 | 0% | 1,346 | 1,514 | +12% | 0 | 0 | — |
case-18 | fail→pass | 15,012 | 4,536 | -70% | 1 | 1 | 0% | 2,422 | 1,595 | -34% | 0 | 0 | — |
case-13 | pass→pass | 6,659 | 2,269 | -66% | 1 | 1 | 0% | 1,068 | 1,151 | +8% | 0 | 0 | — |
case-14 | pass→pass | 7,199 | 2,759 | -62% | 1 | 1 | 0% | 1,093 | 1,165 | +7% | 0 | 0 | — |
case-15 | fail→pass | 9,218 | 2,553 | -72% | 1 | 1 | 0% | 1,589 | 1,266 | -20% | 0 | 0 | — |
case-16 | fail→pass | 11,633 | 2,660 | -77% | 1 | 1 | 0% | 1,674 | 1,255 | -25% | 0 | 0 | — |
case-17 | pass→pass | 6,633 | 1,845 | -72% | 1 | 1 | 0% | 1,015 | 1,126 | +11% | 0 | 0 | — |
case-19 | fail→pass | 11,115 | 3,722 | -67% | 1 | 1 | 0% | 1,758 | 1,466 | -17% | 0 | 0 | — |
case-20 | pass→pass | 8,454 | 6,327 | -25% | 1 | 1 | 0% | 1,386 | 1,880 | +36% | 0 | 0 | — |
case-21 | pass→pass | 20,325 | 12,504 | -38% | 1 | 1 | 0% | 3,476 | 3,095 | -11% | 0 | 0 | — |
case-22 | pass→pass | 11,609 | 6,944 | -40% | 1 | 1 | 0% | 1,960 | 1,918 | -2% | 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 +50 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.