skills/http-debugger/SKILL.md
Debug HTTP requests captured by Smello. Use when the user asks to inspect traffic, debug API calls, troubleshoot failed requests, analyze response bodies, or understand what requests their code is making. Also use when the user pastes a Smello dashboard URL like http://localhost:5110/#<uuid> or http://localhost:5111/#<uuid> — extract the UUID after the hash as the request ID. Supports gRPC calls from Google Cloud libraries. Requires a running Smello server.
npx skillsauth add smelloscope/smello http-debuggerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are an HTTP debugging assistant. The user has Smello set up to capture outgoing traffic from their Python application. Use the Smello API to inspect captured requests and help diagnose issues. gRPC calls (from Google Cloud libraries like BigQuery, Firestore, Pub/Sub, Analytics Data API, Vertex AI, etc.) appear with grpc:// URLs and protobuf bodies serialized as JSON.
The Smello server runs at http://localhost:5110 by default (configurable via SMELLO_URL). If $ARGUMENTS contains a URL, use that as the server URL instead. Otherwise, check if SMELLO_URL is set in the environment and use that.
If the user passes a Smello dashboard URL like http://localhost:5110/#634423d8-b7e1-4d39-a032-22be0ff64bef or http://localhost:5111/#634423d8-b7e1-4d39-a032-22be0ff64bef, extract the UUID fragment after # and use it as the request ID. Skip the overview step and go straight to fetching the full request details:
curl -s http://localhost:5110/api/requests/634423d8-b7e1-4d39-a032-22be0ff64bef | python -m json.tool
Note: port 5111 is the frontend dev server — always use port 5110 (the API server) for API calls regardless of which port appears in the dashboard URL.
curl -s http://localhost:5110/api/requests | python -m json.tool
Query parameters (all optional, combine as needed):
host=api.example.com — filter by hostnamemethod=POST — filter by HTTP methodstatus=500 — filter by response status codesearch=checkout — full-text search across URLs, headers, and bodieslimit=100 — max results (default 50, max 200)Each item in the response contains: id, timestamp, method, url, host, status_code, duration_ms.
curl -s http://localhost:5110/api/requests/{id} | python -m json.tool
Returns everything from the summary plus: library, request_headers, request_body, request_body_size, response_headers, response_body, response_body_size.
curl -s -X DELETE http://localhost:5110/api/requests
First, verify the Smello server is reachable:
curl -s -o /dev/null -w "%{http_code}" http://localhost:5110/api/requests
If this doesn't return 200, tell the user the server isn't running and suggest:
smello-server run (if installed)docker run -p 5110:5110 ghcr.io/smelloscope/smello (Docker)Fetch the recent requests to understand the traffic pattern:
curl -s 'http://localhost:5110/api/requests?limit=20'
Summarize what you see: how many requests, which hosts, which methods, any errors (4xx/5xx).
When investigating an issue, fetch full details for relevant requests:
curl -s http://localhost:5110/api/requests/{id}
When reporting findings, cover:
Filter by error status codes to find failures:
curl -s 'http://localhost:5110/api/requests?status=500'
curl -s 'http://localhost:5110/api/requests?status=400'
curl -s 'http://localhost:5110/api/requests?status=401'
List requests and sort by duration to find slow calls. The API returns results ordered by timestamp, so fetch them and check duration_ms values.
Filter by host to see all traffic to one API:
curl -s 'http://localhost:5110/api/requests?host=api.stripe.com'
Full-text search across URLs, headers, and bodies:
curl -s 'http://localhost:5110/api/requests?search=/v1/charges'
Authorization and X-Api-Key are redacted by default — values show as [REDACTED]. This is expected behavior, not an error. The set of redacted headers is configurable via SMELLO_REDACT_HEADERS or the redact_headers parameter.python -m json.tool or jq.library field tells you whether the request came from requests, httpx, or grpc.smello.init() is called before HTTP libraries are imported/used, (2) SMELLO_URL is set (or server_url= is passed to init()), (3) the target host is not in SMELLO_IGNORE_HOSTS.SMELLO_* environment variables: SMELLO_URL, SMELLO_CAPTURE_ALL, SMELLO_CAPTURE_HOSTS, SMELLO_IGNORE_HOSTS, SMELLO_REDACT_HEADERS.development
Debug HTTP requests, logs, and exceptions captured by Smello. Use when the user asks to inspect traffic, debug API calls, troubleshoot failed requests, analyze response bodies, check captured logs or exceptions, or understand what their code is doing. Also use when the user wants to run a script or app with Smello instrumentation to start a debugging session. Also use when the user pastes a Smello dashboard URL like http://localhost:5110/#<uuid> or http://localhost:5111/#<uuid> — extract the UUID after the hash as the event ID. Supports gRPC calls from Google Cloud libraries. Requires a running Smello server.
development
Explore a Python codebase and propose a plan to integrate Smello — capture HTTP requests, logs, and exceptions in a local web dashboard. Use when the user wants to add Smello to their project, set up request monitoring, debug logging, or capture outgoing API calls and crashes for debugging.
development
Debug HTTP requests, logs, and exceptions captured by Smello. Use when the user asks to inspect traffic, debug API calls, troubleshoot failed requests, analyze response bodies, check captured logs or exceptions, or understand what their code is doing. Also use when the user pastes a Smello dashboard URL like http://localhost:5110/#<uuid> or http://localhost:5111/#<uuid> — extract the UUID after the hash as the event ID. Supports gRPC calls from Google Cloud libraries. Requires a running Smello server.
development
Explore a Python codebase and propose a plan to integrate Smello traffic capture (HTTP and gRPC). Use when the user wants to add Smello to their project, set up request monitoring, or capture outgoing API calls for debugging.