api-debug
Skill38 starsChanged 5 months agoMITView on GitHub
Debug REST, GraphQL, webhook, and OAuth/API-key integrations with layered request, auth, schema, and response checks.
- Sends data out
In this repository76 other files it gives its agents.
- AGENTS.mdAGENTS.md
- templates/AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- 1passwordSkill
- adversarial-ux-testSkill
- apple-notesSkill
- apple-remindersSkill
- authorized-web-pentestSkill
- bear-notesSkill
- birdSkill
- blogwatcherSkill
- blucliSkill
- bluebubblesSkill
- camsnapSkill
- Canvas SkillSkill
- clawdhubSkill
- cloudflare-temporary-deploySkill
- code-reviewSkill
- code-wikiSkill
- coding-agentSkill
- comfyuiSkill
- diagram-makerSkill
- discordSkill
- docker-managementSkill
- domain-intelSkill
- eightctlSkill
- excalidrawSkill
- fal.aiSkill
- fastmcpSkill
- food-orderSkill
- geminiSkill
- gifgrepSkill
- githubSkill
- gogSkill
- goplacesSkill
- himalayaSkill
- imsgSkill
- local-placesSkill
- mactopSkill
- manim-videoSkill
- mcporterSkill
- model-usageSkill
- nano-banana-proSkill
- nano-pdfSkill
- notionSkill
- obsidianSkill
- openai-image-genSkill
- openai-whisper-apiSkill
- openai-whisperSkill
- openhueSkill
- oracleSkill
- ordercliSkill
- oss-forensicsSkill
- peekabooSkill
- phoneSkill
- planSkill
- sagSkill
- session-logsSkill
- sherpa-onnx-ttsSkill
- skill-creatorSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 2 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 9
Use this when an API returns the wrong status/body, auth fails, a webhook does not arrive, pagination is suspicious, GraphQL returns …
- Very specific: line 25
Use curl for the smallest repro.
- Very specific: line 53
If errors exists, debug query shape and permissions even when the HTTP status is 200.
- Distinctive: line 76
Verify signature over the exact raw bytes, not a reserialized JSON object.
- Distinctive: line 77
Check timestamp skew and replay windows.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
API Debug
Use this when an API returns the wrong status/body, auth fails, a webhook does not arrive, pagination is suspicious, GraphQL returns errors, or code works in one client but not another.
Principle
Isolate the failing layer before changing code:
- Connectivity
- TLS and proxy behavior
- Authentication
- Request shape
- Response parsing
- Semantic correctness
- Retry, timeout, and rate-limit behavior
REST Checks
Use curl for the smallest repro. Keep tokens in environment variables and never paste full secrets into chat or logs.
curl -v --connect-timeout 5 https://api.example.com/health
curl -sS -D /tmp/headers.txt -o /tmp/body.json https://api.example.com/resource
python3 -m json.tool /tmp/body.jsonFor JSON POSTs:
curl -sS -v -X POST "$URL" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
--data '{"key":"value"}'GraphQL Checks
GraphQL failures often return HTTP 200. Always inspect errors.
curl -sS -X POST "$GRAPHQL_URL" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $TOKEN" \
--data '{"query":"{ viewer { id } }"}' | python3 -m json.toolIf errors exists, debug query shape and permissions even when the HTTP status is 200.
Auth Checks
- Confirm scheme:
Bearer,Basic,Token,X-Api-Key, signed request, OAuth cookie. - Confirm environment: staging token against staging host.
- Confirm expiry for JWTs without printing the full token:
python3 - <<'PY'
import base64, json, os, time
tok = os.environ["TOKEN"]
payload = tok.split(".")[1]
payload += "=" * (-len(payload) % 4)
data = json.loads(base64.urlsafe_b64decode(payload))
print({k: data.get(k) for k in ("iss", "aud", "sub", "exp")})
print("expired:", data.get("exp", 0) < time.time())
PYWebhooks
- Capture raw request body and headers before parsing.
- Verify signature over the exact raw bytes, not a reserialized JSON object.
- Check timestamp skew and replay windows.
- Store a failing fixture and make a regression test for signature parsing.
Fix Criteria
A fix is done only when:
- A minimal repro fails before and passes after.
- The code has bounded timeouts and safe retry behavior.
- Pagination and rate limits are handled explicitly.
- Error messages include status/request IDs without leaking secrets.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

