{"id":"a6de28e9-db52-4c68-83de-4d45c24518cc","shortId":"vwNSqC","kind":"skill","title":"autonomous-review","tagline":"This skill should be used when performing autonomous PR code review, verifying acceptance criteria, resolving merge conflicts, running E2E tests via browser automation, or deciding whether to approve and merge a pull request. Use when asked to \"review this PR\", \"check PR status\",","description":"# Autonomous Review Mode\n\nYou are reviewing a PR created by an autonomous development session. Be thorough and objective.\n\n## Cross-Platform Notes\n\nThis skill works with any IDE/CLI that supports skills. Browser automation\nsteps use Chrome DevTools MCP — ensure your IDE has this MCP server configured\nfor E2E verification.\n\n### Hooks (Optional)\nIf your IDE supports hooks (Claude Code, Kiro CLI), workflow enforcement\nhooks in `hooks/` provide automatic gate checks. Without hooks, follow\neach step manually.\n\n## Review Checklist\n\nVerify ALL of the following:\n\n### 1. Process Compliance\n- [ ] Design canvas exists in `docs/designs/` or `docs/plans/`\n- [ ] Branch follows naming convention (`feat/`, `fix/`, `refactor/`, etc.)\n- [ ] Test cases documented in `docs/test-cases/`\n- [ ] PR description follows template (Summary, Design, Test Plan, Checklist sections)\n- [ ] PR references the issue (`Closes #N` or `Fixes #N`)\n\n### 2. Code Quality\n- [ ] No security issues (no credentials, no injection vulnerabilities)\n- [ ] TypeScript types are correct (no `any` abuse)\n- [ ] Error handling is appropriate\n- [ ] Code follows existing patterns in the codebase\n- [ ] No obvious performance regressions\n\n### 3. Testing\n- [ ] Unit tests exist for new functionality\n- [ ] Unit test coverage is reasonable for new code\n- [ ] E2E tests updated if UI changes were made\n- [ ] All CI checks are passing\n\n### 4. Infrastructure (if applicable)\n- [ ] Infrastructure-as-Code changes are safe\n- [ ] No accidental resource deletions\n- [ ] IAM permissions follow least privilege\n\n### 5. Optional: Bot Reviewer Verification\n- [ ] If configured bot reviewers have posted reviews, verify their findings are addressed\n- [ ] All bot review threads are resolved\n- [ ] If bot review is missing and configured, trigger it using `scripts/gh-as-user.sh` (see below) and wait\n\n> **IMPORTANT:** Some bot reviewers (e.g., Amazon Q Developer) ignore trigger comments posted by GitHub App bot accounts. When triggering bot reviews, you **MUST** use `scripts/gh-as-user.sh` so the comment is attributed to a real user:\n> ```bash\n> bash scripts/gh-as-user.sh pr comment {pr_number} --body \"/q review\"\n> bash scripts/gh-as-user.sh pr comment {pr_number} --body \"/codex review\"\n> ```\n> Do NOT use the default `gh` wrapper for bot review triggers — it authenticates as a bot, which some reviewers ignore. If `scripts/gh-as-user.sh` is not available, fall back to `gh pr comment` directly.\n\n### 6. E2E Verification via Chrome DevTools MCP\n\n> **If E2E verification is configured (preview URL provided in the prompt), this section is MANDATORY. If no preview URL is configured, skip this section.**\n\n- [ ] Preview URL extracted from PR comments\n- [ ] Preview URL navigated successfully via Chrome DevTools MCP\n- [ ] Test user login verified on preview environment\n- [ ] Happy path test cases selected and executed (see section below)\n- [ ] Feature test cases executed against live preview\n- [ ] Regression tests executed (auth, navigation, console errors)\n- [ ] Screenshots captured, uploaded, and linked as evidence\n- [ ] E2E verification report posted as PR comment with screenshot links\n\n## Merge Conflict Resolution — MANDATORY Pre-Review Step\n\nBefore starting the review, check whether the PR branch has merge conflicts with main. If it does, rebase the branch so the PR is mergeable. For the complete rebase procedure, conflict handling, and failure protocol, consult **`references/merge-conflict-resolution.md`**.\n\nQuick check:\n```bash\nMERGEABLE=$(gh pr view <PR_NUMBER> --repo <REPO> --json mergeable -q '.mergeable')\n```\n- **MERGEABLE** — proceed to Review Process\n- **CONFLICTING** — follow rebase procedure in references\n- **UNKNOWN** — wait and retry (up to 3 times)\n\n## Review Process\n\n1. **Read the issue** to understand requirements\n2. **Read ALL issue comments** to detect requirement changes (see \"Requirement Drift Detection\" below)\n3. **Read the PR diff** thoroughly (`gh pr diff <number>`)\n4. **Check CI status** (`gh pr checks <number>`)\n5. **Read the files** for design docs, test cases, etc. to verify they exist\n6. **Assess code quality** against the checklist above\n7. **Verify bot reviewer findings** (if configured — see checklist section 5)\n8. **Select happy path test cases** based on PR diff analysis (see below)\n9. **Perform E2E verification** (if configured — see procedure below)\n10. **Mark acceptance criteria** — for each verified criterion, mark its checkbox in the issue body (see \"Marking Acceptance Criteria\")\n11. **MANDATORY SELF-CHECK GATE** — execute the Findings->Decision Gate (see below) BEFORE submitting any review verdict\n\n## Requirement Drift Detection — MANDATORY\n\n> **This step MUST be performed BEFORE reading the PR diff. Requirements can change after implementation via issue comments from the repo owner or maintainers.**\n\nRead ALL comments on the issue (not just the body) and look for:\n- Scope changes (\"remove\", \"no longer\", \"drop\", \"don't support\", \"instead of\")\n- New requirements added after the original issue was created\n- Corrections or clarifications from the repo owner\n- Explicit instructions to the dev agent that may not yet be reflected in the PR code\n\n```bash\n# Read all issue comments to check for requirement changes\ngh issue view <ISSUE_NUMBER> --repo <REPO> --json comments \\\n  -q '.comments[] | \"\\(.author.login) [\\(.createdAt)]: \\(.body[0:500])\"'\n```\n\nIf any requirement change is found that the PR code does **NOT** reflect:\n- This is a **[BLOCKING] Requirement drift** finding\n- The PR must be sent back to dev with specific instructions about what changed\n- Quote the comment that changed the requirement\n- List the specific code/files that need to be updated\n\n## Happy Path Test Cases\n\nHappy path test cases are project-specific. The review agent selects cases based on:\n\n1. Read `docs/test-cases/` directory for available test case documents\n2. Analyze the PR diff to determine which areas changed\n3. Select the most relevant test cases covering changed functionality\n4. Execute at least one happy path test case per review\n\nIf no test case documents exist, execute a basic smoke test:\n- Navigate to the application root URL\n- Verify the page loads without errors\n- Check browser console for JavaScript errors\n\n## E2E Verification Procedure\n\n> **This section applies only when E2E verification is configured.** The review wrapper script (`autonomous-review.sh`) will indicate whether E2E is enabled and provide the necessary configuration in the prompt.\n\nFor the complete step-by-step E2E procedure (browser automation, screenshot upload, test execution, report format), consult **`references/e2e-verification.md`**.\n\nKey steps:\n1. Verify preview URL is available\n2. Open browser and navigate via Chrome DevTools MCP\n3. Login with test user credentials\n4. Execute happy path and feature test cases\n5. Run regression checks (auth, navigation, console errors)\n6. Post structured E2E report on the PR with screenshot evidence\n\n## Marking Acceptance Criteria\n\nDuring E2E verification, mark each acceptance criterion checkbox in the issue body as you verify it.\n\n### Procedure\n\n1. Read the issue body and identify the `## Acceptance Criteria` section\n2. For each criterion:\n   a. Verify it via Chrome DevTools MCP, code inspection, or CI check results\n   b. If it **passes**, mark the checkbox:\n      ```bash\n      bash scripts/mark-issue-checkbox.sh <ISSUE_NUMBER> \"<criterion text>\"\n      ```\n   c. If it **fails**, STOP marking — record the failure and proceed to \"Review findings\"\n3. The script uses `gh` (which picks up the active App token via `GH_TOKEN_FILE`), so edits appear as the configured review bot\n\n### Important Rules\n\n- Mark criteria **only after verifying them** — do not pre-mark\n- If ANY criterion fails, do NOT mark it — post \"Review findings:\" instead\n- Do NOT mark Requirements checkboxes — those are for the dev agent\n- ALL acceptance criteria must be checked (`- [x]`) before approving the PR\n\n## Findings -> Decision Gate — MANDATORY\n\n> **This gate is NON-NEGOTIABLE. Execute this self-check BEFORE submitting any PR review (APPROVE or REQUEST_CHANGES) and BEFORE posting the verdict comment on the issue.**\n\nFor the complete gate procedure (finding classification, blocking vs non-blocking rules, self-check questions, decision criteria, and output format), consult **`references/decision-gate.md`**.\n\nSummary of the hard rule:\n- **ANY blocking finding -> verdict MUST be FAIL** (do NOT approve)\n- **ZERO blocking findings -> verdict is PASS** (approve + merge)\n- **There is NO middle ground** — blocking findings and APPROVE are mutually exclusive\n\nPost the review result as a comment on the **issue** (NOT the PR). Use \"Review PASSED\" for pass, \"Review findings:\" for fail.\n\n---\n\n## References\n\nFor detailed procedures, consult:\n- **`references/merge-conflict-resolution.md`** -- Complete rebase procedure, conflict handling, and failure protocol\n- **`references/e2e-verification.md`** -- Browser automation steps, screenshot upload, test execution, E2E report format\n- **`references/decision-gate.md`** -- Finding classification, blocking rules, decision criteria, and output format","tags":["autonomous","review","dev","team","zxkane","agent-skills","ai-agents","ai-code-review","autonomous-coding","autonomous-dev-team","ci-cd","claude-code"],"capabilities":["skill","source-zxkane","skill-autonomous-review","topic-agent-skills","topic-ai-agents","topic-ai-code-review","topic-autonomous-coding","topic-autonomous-dev-team","topic-ci-cd","topic-claude-code","topic-claude-code-hooks","topic-code-review-automation","topic-codex-cli","topic-coding-agents","topic-devops-automation"],"categories":["autonomous-dev-team"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/zxkane/autonomous-dev-team/autonomous-review","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add zxkane/autonomous-dev-team","source_repo":"https://github.com/zxkane/autonomous-dev-team","install_from":"skills.sh"}},"qualityScore":"0.457","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 15 github stars · SKILL.md body (9,146 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-22T13:03:20.524Z","embedding":null,"createdAt":"2026-04-19T00:40:46.690Z","updatedAt":"2026-04-22T13:03:20.524Z","lastSeenAt":"2026-04-22T13:03:20.524Z","tsv":"'/codex':342 '/q':333 '0':781 '1':129,547,852,973,1041 '10':639 '11':658 '2':171,554,861,979,1052 '3':204,543,568,871,988,1093 '4':233,577,881,994 '5':253,584,616,1002 '500':782 '6':376,598,1010 '7':606 '8':617 '9':630 'abus':188 'accept':16,641,656,1022,1029,1049,1154 'accident':245 'account':307 'activ':1102 'ad':730 'address':269 'agent':749,847,1152 'amazon':296 'analysi':627 'analyz':862 'app':305,1103 'appear':1111 'appli':926 'applic':236,906 'appropri':192 'approv':31,1161,1184,1235,1242,1252 'area':869 'ask':39 'assess':599 'attribut':320 'auth':448,1006 'authent':356 'author.login':778 'autom':26,79,962,1294 'automat':113 'autonom':2,11,47,58 'autonomous-review':1 'autonomous-review.sh':937 'avail':368,857,978 'b':1069 'back':370,808 'base':623,850 'bash':325,326,335,516,760,1076,1077 'basic':900 'block':799,1204,1208,1227,1237,1249,1306 'bodi':332,341,653,713,780,1035,1045 'bot':255,260,271,277,293,306,310,352,359,608,1116 'branch':139,485,496 'browser':25,78,916,961,981,1293 'c':1079 'canva':133 'captur':453 'case':148,431,440,592,622,836,840,849,859,877,889,895,1001 'chang':225,241,562,692,718,769,786,816,821,870,879,1187 'check':44,115,230,481,515,578,583,662,766,915,1005,1067,1158,1178,1212 'checkbox':649,1031,1075,1146 'checklist':123,160,604,614 'chrome':82,380,418,985,1060 'ci':229,579,1066 'clarif':739 'classif':1203,1305 'claud':103 'cli':106 'close':166 'code':13,104,172,193,219,240,600,759,792,1063 'code/files':827 'codebas':199 'comment':301,318,329,338,374,412,465,558,697,706,764,775,777,819,1193,1262 'complet':504,954,1199,1284 'complianc':131 'configur':92,259,282,387,403,612,635,932,948,1114 'conflict':20,470,488,507,531,1287 'consol':450,917,1008 'consult':512,969,1219,1282 'convent':142 'correct':185,737 'cover':878 'coverag':214 'creat':55,736 'createdat':779 'credenti':178,993 'criteria':17,642,657,1023,1050,1120,1155,1215,1309 'criterion':646,1030,1055,1132 'cross':66 'cross-platform':65 'decid':28 'decis':667,1165,1214,1308 'default':348 'delet':247 'descript':153 'design':132,157,589 'detail':1280 'detect':560,566,678 'determin':867 'dev':748,810,1151 'develop':59,298 'devtool':83,381,419,986,1061 'diff':572,576,626,689,865 'direct':375 'directori':855 'doc':590 'docs/designs':136 'docs/plans':138 'docs/test-cases':151,854 'document':149,860,896 'drift':565,677,801 'drop':722 'e.g':295 'e2e':22,94,220,377,384,459,632,921,929,941,959,1013,1025,1300 'edit':1110 'enabl':943 'enforc':108 'ensur':85 'environ':427 'error':189,451,914,920,1009 'etc':146,593 'evid':458,1020 'exclus':1255 'execut':434,441,447,664,882,898,966,995,1174,1299 'exist':134,195,208,597,897 'explicit':744 'extract':409 'fail':1082,1133,1232,1277 'failur':510,1087,1290 'fall':369 'feat':143 'featur':438,999 'file':587,1108 'find':267,610,666,802,1092,1140,1164,1202,1228,1238,1250,1275,1304 'fix':144,169 'follow':118,128,140,154,194,250,532 'format':968,1218,1302,1312 'found':788 'function':211,880 'gate':114,663,668,1166,1169,1200 'gh':349,372,518,574,581,770,1097,1106 'github':304 'ground':1248 'handl':190,508,1288 'happi':428,619,833,837,886,996 'hard':1224 'hook':96,102,109,111,117 'iam':248 'ide':87,100 'ide/cli':74 'identifi':1047 'ignor':299,363 'implement':694 'import':291,1117 'indic':939 'infrastructur':234,238 'infrastructure-as-cod':237 'inject':180 'inspect':1064 'instead':726,1141 'instruct':745,813 'issu':165,176,550,557,652,696,709,734,763,771,1034,1044,1196,1265 'javascript':919 'json':522,774 'key':971 'kiro':105 'least':251,884 'link':456,468 'list':824 'live':443 'load':912 'login':423,989 'longer':721 'look':715 'made':227 'main':490 'maintain':703 'mandatori':397,472,659,679,1167 'manual':121 'mark':640,647,655,1021,1027,1073,1084,1119,1129,1136,1144 'may':751 'mcp':84,90,382,420,987,1062 'merg':19,33,469,487,1243 'mergeabl':501,517,523,525,526 'middl':1247 'miss':280 'mode':49 'must':313,682,805,1156,1230 'mutual':1254 'n':167,170 'name':141 'navig':415,449,903,983,1007 'necessari':947 'need':829 'negoti':1173 'new':210,218,728 'non':1172,1207 'non-block':1206 'non-negoti':1171 'note':68 'number':331,340 'object':64 'obvious':201 'one':885 'open':980 'option':97,254 'origin':733 'output':1217,1311 'owner':701,743 'page':911 'pass':232,1072,1241,1271,1273 'path':429,620,834,838,887,997 'pattern':196 'per':890 'perform':10,202,631,684 'permiss':249 'pick':1099 'plan':159 'platform':67 'post':263,302,462,1011,1138,1190,1256 'pr':12,43,45,54,152,162,328,330,337,339,373,411,464,484,499,519,571,575,582,625,688,758,791,804,864,1017,1163,1182,1268 'pre':474,1128 'pre-mark':1127 'pre-review':473 'preview':388,400,407,413,426,444,975 'privileg':252 'procedur':506,534,637,923,960,1040,1201,1281,1286 'proceed':527,1089 'process':130,530,546 'project':843 'project-specif':842 'prompt':393,951 'protocol':511,1291 'provid':112,390,945 'pull':35 'q':297,524,776 'qualiti':173,601 'question':1213 'quick':514 'quot':817 'read':548,555,569,585,686,704,761,853,1042 'real':323 'reason':216 'rebas':494,505,533,1285 'record':1085 'refactor':145 'refer':163,536,1278 'references/decision-gate.md':1220,1303 'references/e2e-verification.md':970,1292 'references/merge-conflict-resolution.md':513,1283 'reflect':755,795 'regress':203,445,1004 'relev':875 'remov':719 'repo':521,700,742,773 'report':461,967,1014,1301 'request':36,1186 'requir':553,561,564,676,690,729,768,785,800,823,1145 'resolut':471 'resolv':18,275 'resourc':246 'result':1068,1259 'retri':540 'review':3,14,41,48,52,122,256,261,264,272,278,294,311,334,343,353,362,475,480,529,545,609,674,846,891,934,1091,1115,1139,1183,1258,1270,1274 'root':907 'rule':1118,1209,1225,1307 'run':21,1003 'safe':243 'scope':717 'screenshot':452,467,963,1019,1296 'script':936,1095 'scripts/gh-as-user.sh':286,315,327,336,365 'scripts/mark-issue-checkbox.sh':1078 'section':161,395,406,436,615,925,1051 'secur':175 'see':287,435,563,613,628,636,654,669 'select':432,618,848,872 'self':661,1177,1211 'self-check':660,1176,1210 'sent':807 'server':91 'session':60 'skill':5,70,77 'skill-autonomous-review' 'skip':404 'smoke':901 'source-zxkane' 'specif':812,826,844 'start':478 'status':46,580 'step':80,120,476,681,956,958,972,1295 'step-by-step':955 'stop':1083 'structur':1012 'submit':672,1180 'success':416 'summari':156,1221 'support':76,101,725 'templat':155 'test':23,147,158,205,207,213,221,421,430,439,446,591,621,835,839,858,876,888,894,902,965,991,1000,1298 'thorough':62,573 'thread':273 'time':544 'token':1104,1107 'topic-agent-skills' 'topic-ai-agents' 'topic-ai-code-review' 'topic-autonomous-coding' 'topic-autonomous-dev-team' 'topic-ci-cd' 'topic-claude-code' 'topic-claude-code-hooks' 'topic-code-review-automation' 'topic-codex-cli' 'topic-coding-agents' 'topic-devops-automation' 'trigger':283,300,309,354 'type':183 'typescript':182 'ui':224 'understand':552 'unit':206,212 'unknown':537 'updat':222,832 'upload':454,964,1297 'url':389,401,408,414,908,976 'use':8,37,81,285,314,346,1096,1269 'user':324,422,992 'verdict':675,1192,1229,1239 'verif':95,257,378,385,460,633,922,930,1026 'verifi':15,124,265,424,595,607,645,909,974,1038,1057,1123 'via':24,379,417,695,984,1059,1105 'view':520,772 'vs':1205 'vulner':181 'wait':290,538 'whether':29,482,940 'without':116,913 'work':71 'workflow':107 'wrapper':350,935 'x':1159 'yet':753 'zero':1236","prices":[{"id":"443f5de4-e368-44e6-8622-983f038e6f59","listingId":"a6de28e9-db52-4c68-83de-4d45c24518cc","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"zxkane","category":"autonomous-dev-team","install_from":"skills.sh"},"createdAt":"2026-04-19T00:40:46.690Z"}],"sources":[{"listingId":"a6de28e9-db52-4c68-83de-4d45c24518cc","source":"github","sourceId":"zxkane/autonomous-dev-team/autonomous-review","sourceUrl":"https://github.com/zxkane/autonomous-dev-team/tree/main/skills/autonomous-review","isPrimary":false,"firstSeenAt":"2026-04-19T00:40:46.690Z","lastSeenAt":"2026-04-22T13:03:20.524Z"}],"details":{"listingId":"a6de28e9-db52-4c68-83de-4d45c24518cc","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"zxkane","slug":"autonomous-review","github":{"repo":"zxkane/autonomous-dev-team","stars":15,"topics":["agent-skills","ai-agents","ai-code-review","autonomous-coding","autonomous-dev-team","ci-cd","claude-code","claude-code-hooks","code-review-automation","codex-cli","coding-agents","devops-automation","github-automation","github-issues","kiro-cli","llm-agents","openclaw","pull-request-automation","tdd","template-project"],"license":null,"html_url":"https://github.com/zxkane/autonomous-dev-team","pushed_at":"2026-04-20T15:45:13Z","description":"Turns GitHub issues into merged PRs with zero human intervention. Powered by OpenClaw, supports Claude Code, Codex CLI, and Kiro CLI.","skill_md_sha":"fb500e6d72b09b3bcf79ac93a651071b97274149","skill_md_path":"skills/autonomous-review/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/zxkane/autonomous-dev-team/tree/main/skills/autonomous-review"},"layout":"multi","source":"github","category":"autonomous-dev-team","frontmatter":{"name":"autonomous-review","description":"This skill should be used when performing autonomous PR code review, verifying acceptance criteria, resolving merge conflicts, running E2E tests via browser automation, or deciding whether to approve and merge a pull request. Use when asked to \"review this PR\", \"check PR status\", \"run E2E verification\", \"verify acceptance criteria\", \"resolve merge conflicts\", \"approve and merge\", or during autonomous review dispatch."},"skills_sh_url":"https://skills.sh/zxkane/autonomous-dev-team/autonomous-review"},"updatedAt":"2026-04-22T13:03:20.524Z"}}