{"id":"3de747da-ed2a-42cb-9156-adfcee32eb54","shortId":"Kv2tty","kind":"skill","title":"security-review","tagline":"AI DevKit · Review code, skills, and prompts for security vulnerabilities — OWASP Top 10, prompt injection, business logic flaws, and insecure defaults. Use when reviewing PRs, auditing modules, reviewing AI skills/prompts, or preparing for release.","description":"# Security Review\n\nFind vulnerabilities before they ship.\n\n## Hard Rules\n\n- Do not dismiss a finding without evidence it is unexploitable.\n- Do not commit, log, or surface secrets discovered during review — flag and recommend rotation.\n- Do not modify code until the user approves a remediation plan.\n\n## Workflow\n\n1. **Scope**\n   - Confirm target: diff, file set, module, full repo, or skill/prompt. A target can be both code and prompt.\n   - Identify stack/framework — adapt the [checklist](references/checklist.md) (skip what the framework handles, add its pitfalls).\n   - Trace data flow: request → middleware → handler → service → datastore → response. For prompts: input → template → LLM → tools → output.\n   - Map trust boundaries, privilege levels, and threat actors.\n   - Search prior findings: `npx ai-devkit@latest memory search --query \"<target>\" --tags \"security\"`\n\n2. **Scan**\n   - Only check relevant categories. Skip sections and items that don't apply. Do not report skipped items.\n   - For diffs/PRs: also check whether the change weakens existing controls — removed middleware, bypassed validation, new unprotected routes.\n   - Categories in priority order:\n     a. **Secrets** — hardcoded tokens, keys, connection strings.\n     b. **Injection** — SQL, NoSQL, command, template, SSRF, path traversal, XSS.\n     c. **Auth** — missing checks, privilege escalation, OAuth/OIDC, IDOR.\n     d. **Business Logic** — race conditions, TOCTOU, workflow bypass, mass assignment, parameter tampering.\n     e. **Data Exposure** — PII in logs, verbose errors, overly broad responses.\n     f. **Resource Exhaustion** — unbounded queries, missing pagination, upload size, decompression bombs.\n     g. **Dependencies** — critical CVEs only (RCE, auth bypass, data breach); ignore low/medium.\n     h. **Cryptography** — weak algorithms, hardcoded IVs/keys, disabled certificate validation.\n     i. **Configuration** — debug mode, permissive CORS, missing security headers.\n     j. **Logging** — security events unlogged, no tamper protection, no alerting.\n     k. **Prompt Injection** — instruction override, tool abuse, data exfiltration, indirect injection via tool results.\n   - For each finding: file, line, evidence.\n\n3. **Classify**\n\n   | Severity | Criteria |\n   |----------|----------|\n   | Critical | Exploitable now, data loss or RCE possible |\n   | High     | Exploitable with moderate effort or insider access |\n   | Medium   | Requires chained conditions or limited impact |\n   | Low      | Defense-in-depth, no direct exploit path |\n\n   - Adjust severity by exposure (internet-facing vs internal) and data sensitivity.\n   - Check for attack chains — multiple Medium findings that combine into High/Critical.\n   - Mark false positives with reasoning.\n\n4. **Remediate**\n   - For each finding: root cause, minimal fix (prefer stdlib/framework over custom), verification step.\n   - For Critical/High: also recommend a detection control (log, alert, or WAF rule).\n   - Present plan and request approval before changing code.\n\n5. **Verify**\n   - Use the `verify` skill to confirm each remediation.\n   - Re-scan fixed files for regressions.\n   - Store findings: `npx ai-devkit@latest memory store --title \"<pattern>\" --content \"<finding and fix>\" --tags \"security,<category>\"`\n\n## Red Flags\n\n| Rationalization | Do Instead |\n|---|---|\n| \"It's internal / behind a VPN / only admins\" | Zero-trust: validate at every boundary regardless of network position or user role |\n| \"We'll add auth later\" | Add auth before merge — unauthenticated endpoints get discovered fast |\n| \"It's just a dev credential\" | Use env vars / secrets manager — dev secrets leak to prod constantly |\n| \"The framework handles that\" | Verify the config — frameworks have defaults, not guarantees |\n| \"We sanitize on the frontend\" | Always validate server-side — client validation is bypassable |\n| \"The LLM won't follow injected instructions\" | Treat all tool results and external content as untrusted data |\n| \"It's just a prompt, not code\" | Prompts control tool execution — review with the same rigor as code |\n\n## Output Template\n\n- **Scope**: Target, stack, data flow, trust boundaries, threat actors\n- **Findings** (by severity): ID, severity, category, file:line, exploit scenario, fix\n- **Attack Chains**: Findings that escalate when combined\n- **False Positives**: Dismissed items with reasoning\n- **Remediation Plan**: Ordered fixes with verification steps\n- **Residual Risk**: Scope limitations, unverifiable items\n- Zero findings: state what was checked and scope boundaries — \"no findings\" ≠ \"fully secure\"","tags":["security","review","devkit","codeaholicguy","agent-skills","ai-assisted-development","antigravity","claude-code","codex","cursor","development","engineering"],"capabilities":["skill","source-codeaholicguy","skill-security-review","topic-agent-skills","topic-ai-assisted-development","topic-antigravity","topic-claude-code","topic-codex","topic-cursor","topic-development","topic-engineering","topic-engineering-enablement","topic-engineering-experience","topic-prd"],"categories":["ai-devkit"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/codeaholicguy/ai-devkit/security-review","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add codeaholicguy/ai-devkit","source_repo":"https://github.com/codeaholicguy/ai-devkit","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 1196 github stars · SKILL.md body (4,598 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-05-18T18:53:09.320Z","embedding":null,"createdAt":"2026-05-06T18:53:25.492Z","updatedAt":"2026-05-18T18:53:09.320Z","lastSeenAt":"2026-05-18T18:53:09.320Z","tsv":"'1':83 '10':16 '2':154 '3':313 '4':377 '5':412 'abus':299 'access':332 'actor':140,571 'adapt':105 'add':114,471,474 'adjust':349 'admin':454 'ai':4,32,146,433 'ai-devkit':145,432 'alert':292,400 'algorithm':268 'also':175,394 'alway':517 'appli':167 'approv':78,408 'assign':228 'attack':363,583 'audit':29 'auth':212,259,472,475 'b':201 'behind':450 'bomb':252 'boundari':135,461,569,617 'breach':262 'broad':240 'busi':19,220 'bypass':185,226,260,525 'c':211 'categori':159,190,577 'caus':383 'certif':272 'chain':335,364,584 'chang':179,410 'check':157,176,214,361,614 'checklist':107 'classifi':314 'client':522 'code':7,74,100,411,549,560 'combin':369,589 'command':205 'commit':59 'condit':223,336 'config':506 'configur':275 'confirm':85,419 'connect':199 'constant':499 'content':439,539 'control':182,398,551 'cor':279 'credenti':488 'criteria':316 'critic':255,317 'critical/high':393 'cryptographi':266 'custom':389 'cves':256 'd':219 'data':118,232,261,300,320,359,542,566 'datastor':124 'debug':276 'decompress':251 'default':24,509 'defens':342 'defense-in-depth':341 'depend':254 'depth':344 'detect':397 'dev':487,494 'devkit':5,147,434 'diff':87 'diffs/prs':174 'direct':346 'disabl':271 'discov':64,481 'dismiss':49,592 'e':231 'effort':329 'endpoint':479 'env':490 'error':238 'escal':216,587 'event':286 'everi':460 'evid':53,312 'execut':553 'exfiltr':301 'exhaust':244 'exist':181 'exploit':318,326,347,580 'exposur':233,352 'extern':538 'f':242 'face':355 'fals':373,590 'fast':482 'file':88,310,426,578 'find':40,51,143,309,367,381,430,572,585,610,619 'fix':385,425,582,599 'flag':67,443 'flaw':21 'flow':119,567 'follow':530 'framework':112,501,507 'frontend':516 'full':91 'fulli':620 'g':253 'get':480 'guarante':511 'h':265 'handl':113,502 'handler':122 'hard':45 'hardcod':196,269 'header':282 'high':325 'high/critical':371 'id':575 'identifi':103 'idor':218 'ignor':263 'impact':339 'indirect':302 'inject':18,202,295,303,531 'input':128 'insecur':23 'insid':331 'instead':446 'instruct':296,532 'intern':357,449 'internet':354 'internet-fac':353 'item':163,172,593,608 'ivs/keys':270 'j':283 'k':293 'key':198 'later':473 'latest':148,435 'leak':496 'level':137 'limit':338,606 'line':311,579 'll':470 'llm':130,527 'log':60,236,284,399 'logic':20,221 'loss':321 'low':340 'low/medium':264 'manag':493 'map':133 'mark':372 'mass':227 'medium':333,366 'memori':149,436 'merg':477 'middlewar':121,184 'minim':384 'miss':213,247,280 'mode':277 'moder':328 'modifi':73 'modul':30,90 'multipl':365 'network':464 'new':187 'nosql':204 'npx':144,431 'oauth/oidc':217 'order':193,598 'output':132,561 'over':239 'overrid':297 'owasp':14 'pagin':248 'paramet':229 'path':208,348 'permiss':278 'pii':234 'pitfal':116 'plan':81,405,597 'posit':374,465,591 'possibl':324 'prefer':386 'prepar':35 'present':404 'prior':142 'prioriti':192 'privileg':136,215 'prod':498 'prompt':10,17,102,127,294,547,550 'protect':290 'prs':28 'queri':151,246 'race':222 'ration':444 'rce':258,323 're':423 're-scan':422 'reason':376,595 'recommend':69,395 'red':442 'references/checklist.md':108 'regardless':462 'regress':428 'releas':37 'relev':158 'remedi':80,378,421,596 'remov':183 'repo':92 'report':170 'request':120,407 'requir':334 'residu':603 'resourc':243 'respons':125,241 'result':306,536 'review':3,6,27,31,39,66,554 'rigor':558 'risk':604 'role':468 'root':382 'rotat':70 'rout':189 'rule':46,403 'sanit':513 'scan':155,424 'scenario':581 'scope':84,563,605,616 'search':141,150 'secret':63,195,492,495 'section':161 'secur':2,12,38,153,281,285,441,621 'security-review':1 'sensit':360 'server':520 'server-sid':519 'servic':123 'set':89 'sever':315,350,574,576 'ship':44 'side':521 'size':250 'skill':8,417 'skill-security-review' 'skill/prompt':94 'skills/prompts':33 'skip':109,160,171 'source-codeaholicguy' 'sql':203 'ssrf':207 'stack':565 'stack/framework':104 'state':611 'stdlib/framework':387 'step':391,602 'store':429,437 'string':200 'surfac':62 'tag':152,440 'tamper':230,289 'target':86,96,564 'templat':129,206,562 'threat':139,570 'titl':438 'toctou':224 'token':197 'tool':131,298,305,535,552 'top':15 'topic-agent-skills' 'topic-ai-assisted-development' 'topic-antigravity' 'topic-claude-code' 'topic-codex' 'topic-cursor' 'topic-development' 'topic-engineering' 'topic-engineering-enablement' 'topic-engineering-experience' 'topic-prd' 'trace':117 'travers':209 'treat':533 'trust':134,457,568 'unauthent':478 'unbound':245 'unexploit':56 'unlog':287 'unprotect':188 'untrust':541 'unverifi':607 'upload':249 'use':25,414,489 'user':77,467 'valid':186,273,458,518,523 'var':491 'verbos':237 'verif':390,601 'verifi':413,416,504 'via':304 'vpn':452 'vs':356 'vulner':13,41 'waf':402 'weak':267 'weaken':180 'whether':177 'without':52 'won':528 'workflow':82,225 'xss':210 'zero':456,609 'zero-trust':455","prices":[{"id":"1cb60e4c-f66a-49a8-9498-260cf4decbf2","listingId":"3de747da-ed2a-42cb-9156-adfcee32eb54","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"codeaholicguy","category":"ai-devkit","install_from":"skills.sh"},"createdAt":"2026-05-06T18:53:25.492Z"}],"sources":[{"listingId":"3de747da-ed2a-42cb-9156-adfcee32eb54","source":"github","sourceId":"codeaholicguy/ai-devkit/security-review","sourceUrl":"https://github.com/codeaholicguy/ai-devkit/tree/main/skills/security-review","isPrimary":false,"firstSeenAt":"2026-05-06T18:53:25.492Z","lastSeenAt":"2026-05-18T18:53:09.320Z"}],"details":{"listingId":"3de747da-ed2a-42cb-9156-adfcee32eb54","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"codeaholicguy","slug":"security-review","github":{"repo":"codeaholicguy/ai-devkit","stars":1196,"topics":["agent-skills","ai","ai-assisted-development","antigravity","claude-code","codex","cursor","development","engineering","engineering-enablement","engineering-experience","prd"],"license":null,"html_url":"https://github.com/codeaholicguy/ai-devkit","pushed_at":"2026-05-17T00:23:12Z","description":"A universal CLI toolkit for AI agent skills, enabling structured AI-assisted development across tools like Cursor, Claude Code, Codex, and more.","skill_md_sha":"5d20f61d2bea84f753543854483df80ec8b3eeb4","skill_md_path":"skills/security-review/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/codeaholicguy/ai-devkit/tree/main/skills/security-review"},"layout":"multi","source":"github","category":"ai-devkit","frontmatter":{"name":"security-review","description":"AI DevKit · Review code, skills, and prompts for security vulnerabilities — OWASP Top 10, prompt injection, business logic flaws, and insecure defaults. Use when reviewing PRs, auditing modules, reviewing AI skills/prompts, or preparing for release."},"skills_sh_url":"https://skills.sh/codeaholicguy/ai-devkit/security-review"},"updatedAt":"2026-05-18T18:53:09.320Z"}}