review-as-json
Reviews code changes and outputs the results as structured data for automated systems to read and act on.
Installation
Paste this into Claude Code, Cursor, or any agent that can run commands.
SKILL.mdShow the author's original SKILL.md
---
name: review-as-json
description: Runs `/review` and emits the result as a single structured JSON object. Used by CI; use `/review` directly for human-facing reviews.
license: MIT
metadata:
version: "2"
---
# Review as JSON
Run `/review` on this change and follow it exactly.
Emit the result as a single JSON object instead of a prose report:
```json
{
"verdict": "approve | changes_needed | hold",
"summary": "One or two sentences on the change overall.",
"findings": [
{
"severity": "critical | warning | info",
"type": "issue | suggestion | question",
"category": "mission | architecture | implementation | craft | security | performance",
"title": "Short imperative, e.g. 'Sanitize user input before query'",
"description": "What it is, why it matters, and the consequence.",
"file": "path/to/file.ts",
"line": 42,
"suggestedFix": "Optional concrete fix."
}
],
"passes": {
"mission": "met | missing | different | unclear",
"architecture": "ok | concern | blocking",
"implementation": "ok | concern | blocking",
"craft": "ok | concern | blocking",
"security": "ok | concern | blocking",
"performance": "ok | concern | blocking"
},
"sectionSummaries": {
"mustFix": "1-2 sentences on the critical findings, if any.",
"shouldFix": "1-2 sentences on the warnings, if any.",
"questions": "1-2 sentences on the questions, if any.",
"suggestions": "1-2 sentences on the suggestions, if any."
}
}
```
Rules for the output:
- Emit **only** the JSON object. No preamble, no commentary, no markdown fences around it.
- **Severity.** `critical` blocks merge (bugs, security holes, data loss). `warning` should be addressed but isn't a blocker. `info` is a note.
- **Summary.** Never restate the verdict ("This PR is approved", "Changes requested") — the presentation layer renders it. The summary answers *why*.
- **sectionSummaries.** Explain the underlying theme ("Missing input validation across the new endpoints"), never just count findings.
- **Type.** `question` is something you need answered rather than a defect. `suggestion` is an optional improvement. Everything else is an `issue`.
- **Category.** Every finding's `category` is the pass that found it — this is how the passes show up in CI output.
- **Verify before you flag** still applies. Every finding needs a concrete file, line, and consequence. If you can't verify it, make it a `question`.
- If there are no findings, emit an empty `findings` array and an `approve` verdict.
Mirrored from the author's public source. Install counts from the open skills registry.