a11y-pass
FreeCatch the accessibility failures that ship in almost every AI-built UI. Use after building any interactive component.
The English summary is being prepared. Showing the original description.
Get JSON out of the model reliably. Prefer tool_use with a schema over prompted-JSON, validate on receive, retry on parse fail. Use when downstream code will parse the response.
The English summary is being prepared. Showing the original description.
See how to installReview the instructions the agent will receive before you install.
Prompted JSON — "reply as JSON" in the system prompt — fails on ~2-8% of calls in the wild: stray prose before the object, trailing commas, unescaped quotes, code fences. That failure rate is fine for a demo and fatal for a loop that runs a thousand times.
Tool use with schema (best) — declare a tool with a JSON Schema for its input. Force the model to call that tool. The API validates the arguments against the schema before you see them. Malformed JSON never leaves the model. Use this whenever the downstream is a real parser.
JSON mode / response_format (good) — where supported. Guarantees a valid JSON object at the top level; does not guarantee schema conformance. Cheap upgrade over prompted-JSON.
Prompted JSON with strict rules (fallback) — for models/tiers without tool use. Say "output ONLY the JSON object, no code fences, no prose", give an example, and validate on receive. Assume ~5% failure and handle it.
call → parse → if fail: retry once with the parse error appended → parse → if fail: hard fail
"severity": "high|medium|low" not "severity": "...".additionalProperties: true without a reason. If the model can add fields, it will, and they'll be inconsistent.{"answer": "yes"}).Otherwise use tool_use.
json.loads with a bare try/except: pass. Silent failure — you'll be debugging a downstream nil for hours.oneOf/anyOf. Split into multiple tools and let the model choose which to call.Loopkit's adversarial-verify output is {"passes": bool, "failures": [...]} — that is exactly the shape this skill formalizes. When you compose skills, keep every machine-consumed hop tool_use'd.
No reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
Catch the accessibility failures that ship in almost every AI-built UI. Use after building any interactive component.
The English summary is being prepared. Showing the original description.
Before compaction Loopkit extracts decisions into claude-decisions.json (machine-readable). Read it alongside claude-progress.txt at session start — prose is for humans, JSON is for the loop.
The English summary is being prepared. Showing the original description.
Review a diff against the goal spec assuming the code is BROKEN. The reviewer that lives in the maker's head always agrees with itself — this pulls review into a hostile, separate pass. Invoke after every code change before marking work done.
The English summary is being prepared. Showing the original description.
Verify that an endpoint checks ownership, not just authentication. Use on any handler that reads or mutates user data.
The English summary is being prepared. Showing the original description.
Find the exact commit that introduced a bug. Use when something worked before and broke, and you don't know which change did it.
The English summary is being prepared. Showing the original description.
Before picking new work, smoke-test the last "completed" feature. If it's broken, revert and re-open it before touching anything else. Kills the "looks shipped, isn't shipped" bug across sessions.
The English summary is being prepared. Showing the original description.