{"id":"190e492a-6563-4633-9f9a-1806f634e1a7","shortId":"hwzdrh","kind":"skill","title":"review-code","tagline":"Review code for bugs, security vulnerabilities, API misuse, consistency issues, simplicity problems, or test coverage gaps by running internal reviews and a peer review in parallel and returning combined findings. Single-concern with a type argument, or full review with no argume","description":"# Review Code\n\nReview code against type-specific criteria. Runs internal reviews and `/peer-review` in parallel by default. Returns combined structured findings.\n\n**Types:** `correctness`, `security`, `api-usage`, `consistency`, `simplicity`, `coverage`\n\nWith a type argument, runs a single-concern internal review plus the peer review. With no type argument, runs all six internal reviews plus the peer review.\n\n## Step 1: Determine the Scope\n\nDetermine what to review:\n\n- If a specific **diff command** was provided (e.g., `git diff --cached`, `git diff main...HEAD`), use that.\n- If a **file list or directory** was provided, review those files directly (read the full files, not a diff).\n- If **neither** was provided, default to diffing against the repository's default branch (detect via `gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name'`). If there are no changes against the default branch, stop and state that there is nothing to review.\n\n## Step 2: Run Reviews in Parallel\n\nRead the reference file(s) for the active type(s):\n\n- **Correctness** — [references/correctness-review.md](references/correctness-review.md)\n- **Security** — [references/security-review.md](references/security-review.md)\n- **API usage** — [references/api-usage-review.md](references/api-usage-review.md)\n- **Consistency** — [references/consistency-review.md](references/consistency-review.md)\n- **Simplicity** — [references/simplicity-review.md](references/simplicity-review.md)\n- **Coverage** — [references/coverage-review.md](references/coverage-review.md)\n\nFull review activates all six types; a single-concern argument activates one. Skip peer review when instructed (e.g., \"without peer review\", \"no peer\", \"internal only\").\n\nUse the Agent tool to launch all agents below in a single message (`model: \"opus\"`, do not set `run_in_background`) so they run concurrently. For full review that is seven Agent tool calls (six internal + one peer); for single-concern it is two (one internal + one peer).\n\n- **Internal Agent (one per active type):** Launch a separate Agent tool call for each active type. Pass the scope and the type's reference file content; the subagent applies the criteria and returns findings in the output format below.\n- **Peer review Agent (unless skipping):** Launch an Agent tool call whose prompt instructs the subagent to invoke `/peer-review` via the Skill tool with a request describing: (a) the scope to review; (b) each active type as a separate review dimension so they are reviewed independently; (c) for each dimension, the criteria live in `~/.claude/skills/review-code/references/<type>-review.md` — the reviewer should read that file directly, use its priority scale and verdict label, and include any extra metadata fields it specifies (e.g., `**Category:**`, `**Library:**`, `**Docs:**`) between the `**Reviewer:**` line and the paragraph.\n\nAggregate findings with attribution (reviewer: \"internal\" or \"peer\"; type; file path). Present them in the output format below.\n\nThen use the TaskList tool and proceed to any remaining task.\n\n## Output Format\n\nReturn findings as a numbered list. For each finding:\n\n```\n### [P<N>] <title (imperative, ≤80 chars)>\n\n**File:** `<file path>` (lines <start>-<end>)\n**Reviewer:** <internal | peer> (<type>)\n\n<one paragraph explaining the issue and its impact>\n```\n\nThe reference file may specify additional metadata fields (e.g., `**Category:**`, `**Library:**`, `**Docs:**`). Include them between the `**Reviewer:**` line and the paragraph.\n\nAfter all findings, add an overall verdict per active type using the label from each reference file. For single-concern, that is one verdict block; for full review, six. After the per-type verdicts, add a single combined `## Peer Review Verdict` block summarizing what the peer review returned.\n\n```\n## Overall Verdict — <type>\n\n**<Verdict Label>:** <status>\n\n<1-3 sentence assessment>\n```\n\nIf there are no qualifying findings for a type, state so under that type's verdict block and explain briefly.\n\n## Rules\n\n- Present findings grouped by priority.\n- In full code review mode, present findings in file order to minimize context switching.","tags":["review","code","turbo","tobihagemann","agent-skills","claude-code","claude-skills","developer-tools","skills"],"capabilities":["skill","source-tobihagemann","skill-review-code","topic-agent-skills","topic-claude-code","topic-claude-skills","topic-developer-tools","topic-skills"],"categories":["turbo"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/tobihagemann/turbo/review-code","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add tobihagemann/turbo","source_repo":"https://github.com/tobihagemann/turbo","install_from":"skills.sh"}},"qualityScore":"0.590","qualityRationale":"deterministic score 0.59 from registry signals: · indexed on github topic:agent-skills · 280 github stars · SKILL.md body (4,159 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T00:54:11.714Z","embedding":null,"createdAt":"2026-04-18T22:04:02.356Z","updatedAt":"2026-04-22T00:54:11.714Z","lastSeenAt":"2026-04-22T00:54:11.714Z","tsv":"'-3':552 '/.claude/skills/review-code/references':393 '/peer-review':60,357 '1':107,551 '2':192 '80':471 'activ':204,228,237,305,315,373,507 'add':502,535 'addit':483 'agent':254,259,283,302,310,342,347 'aggreg':428 'api':10,73,213 'api-usag':72 'appli':329 'argum':46 'argument':40,81,96,236 'assess':554 'attribut':431 'b':371 'background':272 'block':524,542,571 'branch':163,181 'briefli':574 'bug':7 'c':385 'cach':125 'call':285,312,349 'categori':418,487 'chang':177 'char':472 'code':3,5,48,50,583 'combin':32,66,538 'command':119 'concern':36,86,235,293,519 'concurr':276 'consist':12,75,217 'content':326 'context':593 'correct':70,207 'coverag':18,77,223 'criteria':55,331,390 'default':64,155,162,180 'defaultbranchref':170 'defaultbranchref.name':172 'describ':365 'detect':164 'determin':108,111 'dif':157 'diff':118,124,127,150 'dimens':379,388 'direct':143,401 'directori':137 'doc':420,489 'e.g':122,244,417,486 'explain':573 'extra':412 'field':414,485 'file':134,142,147,200,325,400,437,473,480,515,589 'find':33,68,334,429,460,467,501,560,577,587 'format':338,444,458 'full':42,146,226,278,526,582 'gap':19 'gh':166 'git':123,126 'group':578 'head':129 'imper':470 'includ':410,490 'independ':384 'instruct':243,352 'intern':22,57,87,100,250,287,298,301,433,476 'invok':356 'issu':13 'jq':171 'json':169 'label':408,511 'launch':257,307,345 'librari':419,488 'line':424,474,495 'list':135,464 'live':391 'main':128 'may':481 'messag':264 'metadata':413,484 'minim':592 'misus':11 'mode':585 'model':265 'neither':152 'noth':188 'number':463 'one':238,288,297,299,303,522 'opus':266 'order':590 'output':337,443,457 'overal':504,549 'p':468 'paragraph':427,498 'parallel':29,62,196 'pass':317 'path':438 'peer':26,91,104,240,246,249,289,300,340,435,477,539,546 'per':304,506,532 'per-typ':531 'plus':89,102 'present':439,576,586 'prioriti':404,580 'problem':15 'proceed':452 'prompt':351 'provid':121,139,154 'qualifi':559 'read':144,197,398 'refer':199,324,479,514 'references/api-usage-review.md':215,216 'references/consistency-review.md':218,219 'references/correctness-review.md':208,209 'references/coverage-review.md':224,225 'references/security-review.md':211,212 'references/simplicity-review.md':221,222 'remain':455 'repo':167 'repositori':160 'request':364 'return':31,65,333,459,548 'review':2,4,23,27,43,47,49,58,88,92,101,105,114,140,190,194,227,241,247,279,341,370,378,383,396,423,432,475,494,527,540,547,584 'review-cod':1 'review.md':394 'rule':575 'run':21,56,82,97,193,270,275 'scale':405 'scope':110,319,368 'secur':8,71,210 'sentenc':553 'separ':309,377 'set':269 'seven':282 'simplic':14,76,220 'singl':35,85,234,263,292,518,537 'single-concern':34,84,233,291,517 'six':99,230,286,528 'skill':360 'skill-review-code' 'skip':239,344 'source-tobihagemann' 'specif':54,117 'specifi':416,482 'state':184,564 'step':106,191 'stop':182 'structur':67 'subag':328,354 'summar':543 'switch':594 'task':456 'tasklist':449 'test':17 'titl':469 'tool':255,284,311,348,361,450 'topic-agent-skills' 'topic-claude-code' 'topic-claude-skills' 'topic-developer-tools' 'topic-skills' 'two':296 'type':39,53,69,80,95,205,231,306,316,322,374,436,508,533,563,568 'type-specif':52 'unless':343 'usag':74,214 'use':130,252,402,447,509 'verdict':407,505,523,534,541,550,570 'via':165,358 'view':168 'vulner':9 'whose':350 'without':245","prices":[{"id":"090b229f-f79e-40e8-8d1a-75384d3886d9","listingId":"190e492a-6563-4633-9f9a-1806f634e1a7","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"tobihagemann","category":"turbo","install_from":"skills.sh"},"createdAt":"2026-04-18T22:04:02.356Z"}],"sources":[{"listingId":"190e492a-6563-4633-9f9a-1806f634e1a7","source":"github","sourceId":"tobihagemann/turbo/review-code","sourceUrl":"https://github.com/tobihagemann/turbo/tree/main/skills/review-code","isPrimary":false,"firstSeenAt":"2026-04-18T22:04:02.356Z","lastSeenAt":"2026-04-22T00:54:11.714Z"}],"details":{"listingId":"190e492a-6563-4633-9f9a-1806f634e1a7","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"tobihagemann","slug":"review-code","github":{"repo":"tobihagemann/turbo","stars":280,"topics":["agent-skills","claude-code","claude-skills","developer-tools","skills"],"license":"mit","html_url":"https://github.com/tobihagemann/turbo","pushed_at":"2026-04-21T12:22:12Z","description":"A composable dev process for Claude Code, packaged as modular skills.","skill_md_sha":"4edca283aa9b15c0a04da42982da382930a5c4f6","skill_md_path":"skills/review-code/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/tobihagemann/turbo/tree/main/skills/review-code"},"layout":"multi","source":"github","category":"turbo","frontmatter":{"name":"review-code","description":"Review code for bugs, security vulnerabilities, API misuse, consistency issues, simplicity problems, or test coverage gaps by running internal reviews and a peer review in parallel and returning combined findings. Single-concern with a type argument, or full review with no argument. Use when the user asks to \"review my code\", \"full code review\", \"review my changes\", \"check for bugs\", \"scan for bugs\", \"review correctness\", \"security audit\", \"find vulnerabilities\", \"review security\", \"check API usage\", \"verify against docs\", \"check for cross-file duplication\", \"review consistency\", \"check for code reuse\", \"review simplicity\", \"find untested code\", or \"review test coverage\"."},"skills_sh_url":"https://skills.sh/tobihagemann/turbo/review-code"},"updatedAt":"2026-04-22T00:54:11.714Z"}}