[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M69919RQCSVQPEKB78KQ29XY":3,"skill-same:01M69919RQCSVQPEKB78KQ29XY":77},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":47,"commitSha":48,"skillDirectory":49,"forksCount":50,"repositoryHtmlUrl":51,"repositoryHomepageUrl":52,"ownerHtmlUrl":53,"ownerBlogUrl":54,"ownerDescription":55,"updatedAt":56,"install":57,"resources":70},"01M69919RQCSVQPEKB78KQ29XY","review-pr",null,"Review a Site Kit GitHub pull request end-to-end against the project's conventions and quality rubric. Use when the user asks to review, critique, or give feedback on a pull request by number (e.g. \"review PR #12345\", \"review pull request 12345\", \"\u002Freview-pr 12345\") in the google\u002Fsite-kit-wp repo.","google\u002Fsite-kit-wp","google","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1342004?v=4","01M698VYEFDM0VJBZDYYJ2T83S","Google","01M69913CJ7EWER6YJA1HXMZQV",1405,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fsite-kit-wp\u002Fblob\u002Fdevelop\u002F.agents\u002Fskills\u002Freview-pr\u002FSKILL.md",[],[19,20,21,22,9,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"review","review pr","pr","when","request","number","kit","end","project","review pull request","give feedback","rubric","read","repo","feedback","Bash","critique","pull","site kit","github","2026-11-10 10:12:30",false,"---\nname: review-pr\ndescription: >\n  Review a Site Kit GitHub pull request end-to-end against the project's conventions and\n  quality rubric. Use when the user asks to review, critique, or give feedback on a pull\n  request by number (e.g. \"review PR #12345\", \"review pull request 12345\", \"\u002Freview-pr 12345\")\n  in the google\u002Fsite-kit-wp repo.\nargument-hint: \"[pr-number]\"\nallowed-tools: Bash, Read, Grep, Glob\n---\n\n# Review a pull request\n\nReview pull request **#$ARGUMENTS**. If no number was given, ask for one.\n\nThis skill tells you _what to do and in what order_. The conventions you judge against live in\n`docs\u002Fcontext\u002Fjs\u002F` and `docs\u002Fcontext\u002Fphp\u002F`, and the rubric for grading them lives in\n`review-checklist.md`, next to this file (`.agents\u002Fskills\u002Freview-pr\u002Freview-checklist.md`). Read\nthose, and don't duplicate them here.\n\n---\n\n## Step 1 — Fetch the PR data\n\nRun these in parallel (substitute `\u003Cnumber>`):\n\n- `gh pr view \u003Cnumber> --json number,title,body,author,baseRefName,headRefName,files,additions,deletions,commits`\n- `gh pr diff \u003Cnumber>`\n\n**Stop and ask the user** if the PR can't be found or the diff is empty.\n\n## Step 2 — Identify and read the linked issue\n\nSite Kit PRs use `.github\u002FPULL_REQUEST_TEMPLATE.md`, whose **Summary** section links the issue\nthe PR implements:\n\n```\n## Summary\nAddresses issue:\n\n- #\u003Cnumber>\n```\n\nExtract that issue number from the PR body (the first `#\u003Cnumber>` under \"Addresses issue:\";\nthere may be more than one). Then fetch and parse the issue — `gh issue view \u003Cnumber> --json title,body,labels`\n— following the section map in `.agents\u002Fskills\u002Fimplement-issue\u002FSKILL.md` Step 1: **Feature Description**,\n**Acceptance criteria**, **Implementation Brief**, **Test Coverage**, **QA Brief**. This is\nthe spec the PR must satisfy; the review is fundamentally a check of the diff **against the\nissue**, not just against conventions.\n\nIf the PR body has **no** linked issue (the `- #` line is empty), say so in the review, treat\nrequirements adherence as \"not verifiable\", and review conventions and code quality only. Do\nnot invent acceptance criteria.\n\n## Step 3 — Load the relevant convention docs\n\nRead **only** the convention docs that the changed files touch. Use the scope map in\n`.agents\u002Fskills\u002Fimplement-issue\u002FSKILL.md` Step 3 to find them in `docs\u002Fcontext\u002Fjs\u002F` and\n`docs\u002Fcontext\u002Fphp\u002F`.\n\nThe convention checklist in `review-checklist.md` (§2) maps each area to its authoritative doc.\n\n## Step 4 — Inspect the changed files\n\nFor any non-trivial changed file (not auto-generated, not lock files), read the full file for\ncontext around the changed lines. Focus on files where the diff alone is insufficient to judge\ncorrectness.\n\n## Step 5 — Judge against the checklist\n\nGrade the change against `review-checklist.md`:\n\n- **Requirements adherence** (§1) — the primary check. Walk each **Acceptance criterion** and\n  each **Implementation Brief** checkbox from the linked issue (Step 2) and confirm the diff\n  actually implements it; call out anything missing, incomplete, or contradicting the brief.\n  Confirm every **Test Coverage** item exists as a real test. Skip only if no issue is linked.\n- **Convention adherence** (§2) — check only the areas the change actually touches; cite the\n  context file + section for every deviation.\n- **Code quality** (§3) — correctness, security, performance, documentation, accessibility.\n- **Verification** (§4) — lint, tests run, build for non-trivial asset changes.\n\n## Step 6 — Produce the review\n\nStructure the output as below. Omit any section with nothing to report.\n\n---\n\n### PR #\u003Cnumber> — [title]\n\n**Author**: [author] | **Branch**: `[head]` → `[base]` | **Size**: +[additions] \u002F -[deletions]\n\n#### Summary\nOne paragraph describing what this PR does and what areas it touches. Name the linked issue\n(`#\u003Cnumber>`), or note that none is linked.\n\n---\n\n#### Requirements Adherence\n\nOnly when an issue is linked (Step 2). For each **Acceptance criterion** and **Implementation\nBrief** checkbox, state ✅ met \u002F ⚠️ partial \u002F ❌ missing, with the `file:line` that satisfies it\n(or what's absent). Note any **Test Coverage** item without a corresponding test.\n\n---\n\n#### Principles Compliance\n\nFor each principle area that applies to files in this PR, report:\n\n**[Area Name]** ✅ \u002F ⚠️ \u002F ❌\n- Specific findings with `file:line` references. ✅ = follows conventions, ⚠️ = minor\n  deviation, ❌ = violation. Cite the context doc + section (per `review-checklist.md` §2).\n\n---\n\n#### Code Quality Issues\nBugs, logic errors, edge cases, or correctness problems not covered above. Include `file:line`.\n\n#### Security Concerns\nXSS, capability checks, nonce verification, direct SQL, or data-sanitization issues.\n\n#### Performance\nUnnecessary re-renders, missing memoization, expensive selectors, N+1 queries, large assets.\n\n#### Test Coverage\nChanged logic lacking test coverage, or existing tests not updated for new behavior.\n\n#### Minor \u002F Nits\nOptional: style, naming, or documentation improvements that don't affect correctness.\n\n---\n\n#### Verdict\n\n**APPROVE** \u002F **REQUEST CHANGES** \u002F **NEEDS DISCUSSION**\n\nBrief justification. If requesting changes, list the blocking issues as a numbered checklist.\n\n---\n\n## Guardrails\n\n- **Read-only by default.** Produce the review; do **not** post comments, approve, or change\n  the PR state on GitHub unless the user explicitly asks.\n- **Cite, don't assert.** For every convention violation, name the principle, the context file\n  + section that defines it, and the affected `file:line`.\n- **Scope the read.** Load only the convention docs the change touches — not everything.\n","# Review a pull request\n\nReview pull request **#$ARGUMENTS**. If no number was given, ask for one.\n\nThis skill tells you _what to do and in what order_. The conventions you judge against live in\n`docs\u002Fcontext\u002Fjs\u002F` and `docs\u002Fcontext\u002Fphp\u002F`, and the rubric for grading them lives in\n`review-checklist.md`, next to this file (`.agents\u002Fskills\u002Freview-pr\u002Freview-checklist.md`). Read\nthose, and don't duplicate them here.\n\n---\n\n## Step 1 — Fetch the PR data\n\nRun these in parallel (substitute `\u003Cnumber>`):\n\n- `gh pr view \u003Cnumber> --json number,title,body,author,baseRefName,headRefName,files,additions,deletions,commits`\n- `gh pr diff \u003Cnumber>`\n\n**Stop and ask the user** if the PR can't be found or the diff is empty.\n\n## Step 2 — Identify and read the linked issue\n\nSite Kit PRs use `.github\u002FPULL_REQUEST_TEMPLATE.md`, whose **Summary** section links the issue\nthe PR implements:\n\n```\n## Summary\nAddresses issue:\n\n- #\u003Cnumber>\n```\n\nExtract that issue number from the PR body (the first `#\u003Cnumber>` under \"Addresses issue:\";\nthere may be more than one). Then fetch and parse the issue — `gh issue view \u003Cnumber> --json title,body,labels`\n— following the section map in `.agents\u002Fskills\u002Fimplement-issue\u002FSKILL.md` Step 1: **Feature Description**,\n**Acceptance criteria**, **Implementation Brief**, **Test Coverage**, **QA Brief**. This is\nthe spec the PR must satisfy; the review is fundamentally a check of the diff **against the\nissue**, not just against conventions.\n\nIf the PR body has **no** linked issue (the `- #` line is empty), say so in the review, treat\nrequirements adherence as \"not verifiable\", and review conventions and code quality only. Do\nnot invent acceptance criteria.\n\n## Step 3 — Load the relevant convention docs\n\nRead **only** the convention docs that the changed files touch. Use the scope map in\n`.agents\u002Fskills\u002Fimplement-issue\u002FSKILL.md` Step 3 to find them in `docs\u002Fcontext\u002Fjs\u002F` and\n`docs\u002Fcontext\u002Fphp\u002F`.\n\nThe convention checklist in `review-checklist.md` (§2) maps each area to its authoritative doc.\n\n## Step 4 — Inspect the changed files\n\nFor any non-trivial changed file (not auto-generated, not lock files), read the full file for\ncontext around the changed lines. Focus on files where the diff alone is insufficient to judge\ncorrectness.\n\n## Step 5 — Judge against the checklist\n\nGrade the change against `review-checklist.md`:\n\n- **Requirements adherence** (§1) — the primary check. Walk each **Acceptance criterion** and\n  each **Implementation Brief** checkbox from the linked issue (Step 2) and confirm the diff\n  actually implements it; call out anything missing, incomplete, or contradicting the brief.\n  Confirm every **Test Coverage** item exists as a real test. Skip only if no issue is linked.\n- **Convention adherence** (§2) — check only the areas the change actually touches; cite the\n  context file + section for every deviation.\n- **Code quality** (§3) — correctness, security, performance, documentation, accessibility.\n- **Verification** (§4) — lint, tests run, build for non-trivial asset changes.\n\n## Step 6 — Produce the review\n\nStructure the output as below. Omit any section with nothing to report.\n\n---\n\n### PR #\u003Cnumber> — [title]\n\n**Author**: [author] | **Branch**: `[head]` → `[base]` | **Size**: +[additions] \u002F -[deletions]\n\n#### Summary\nOne paragraph describing what this PR does and what areas it touches. Name the linked issue\n(`#\u003Cnumber>`), or note that none is linked.\n\n---\n\n#### Requirements Adherence\n\nOnly when an issue is linked (Step 2). For each **Acceptance criterion** and **Implementation\nBrief** checkbox, state ✅ met \u002F ⚠️ partial \u002F ❌ missing, with the `file:line` that satisfies it\n(or what's absent). Note any **Test Coverage** item without a corresponding test.\n\n---\n\n#### Principles Compliance\n\nFor each principle area that applies to files in this PR, report:\n\n**[Area Name]** ✅ \u002F ⚠️ \u002F ❌\n- Specific findings with `file:line` references. ✅ = follows conventions, ⚠️ = minor\n  deviation, ❌ = violation. Cite the context doc + section (per `review-checklist.md` §2).\n\n---\n\n#### Code Quality Issues\nBugs, logic errors, edge cases, or correctness problems not covered above. Include `file:line`.\n\n#### Security Concerns\nXSS, capability checks, nonce verification, direct SQL, or data-sanitization issues.\n\n#### Performance\nUnnecessary re-renders, missing memoization, expensive selectors, N+1 queries, large assets.\n\n#### Test Coverage\nChanged logic lacking test coverage, or existing tests not updated for new behavior.\n\n#### Minor \u002F Nits\nOptional: style, naming, or documentation improvements that don't affect correctness.\n\n---\n\n#### Verdict\n\n**APPROVE** \u002F **REQUEST CHANGES** \u002F **NEEDS DISCUSSION**\n\nBrief justification. If requesting changes, list the blocking issues as a numbered checklist.\n\n---\n\n## Guardrails\n\n- **Read-only by default.** Produce the review; do **not** post comments, approve, or change\n  the PR state on GitHub unless the user explicitly asks.\n- **Cite, don't assert.** For every convention violation, name the principle, the context file\n  + section that defines it, and the affected `file:line`.\n- **Scope the read.** Load only the convention docs the change touches — not everything.\n",{"name":5,"description":44,"allowed-tools":45,"argument-hint":46},"Review a Site Kit GitHub pull request end-to-end against the project's conventions and quality rubric. Use when the user asks to review, critique, or give feedback on a pull request by number (e.g. \"review PR #12345\", \"review pull request 12345\", \"\u002Freview-pr 12345\") in the google\u002Fsite-kit-wp repo.\n","Bash, Read, Grep, Glob","[pr-number]","develop","b38aae779c9c94c62659315c2c20fa08042e103b",".agents\u002Fskills\u002Freview-pr",391,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fsite-kit-wp","https:\u002F\u002Fsitekit.withgoogle.com","https:\u002F\u002Fgithub.com\u002Fgoogle","https:\u002F\u002Fopensource.google\u002F","Google ❤️ Open Source","2026-11-12 02:07:38",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add google\u002Fsite-kit-wp --skill review-pr",{"tool":63,"command":64},"bunx","bunx skills add google\u002Fsite-kit-wp --skill review-pr",{"tool":66,"command":67},"pnpm","pnpm dlx skills add google\u002Fsite-kit-wp --skill review-pr","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fsite-kit-wp\u002Fblob\u002Fdevelop\u002F.agents\u002Fskills\u002Freview-pr\u002FSKILL.md",true,[71],{"path":72,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":75,"sourceHtmlUrl":76},"review-checklist.md","REFERENCE","参考文档",5702,"https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fsite-kit-wp\u002Fblob\u002Fdevelop\u002F.agents\u002Fskills\u002Freview-pr\u002Freview-checklist.md",[78,88,97,106,111,119],{"skillNo":79,"name":80,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":39},"01M6991PXQEEZDSJJ0053EK3S8","write-issue-requirements","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fsite-kit-wp\u002Fblob\u002Fdevelop\u002F.claude\u002Fskills\u002Fwrite-issue-requirements\u002FSKILL.md",[],[84,85,86,87],"requirements","issue","write","write issue requirements",{"skillNo":89,"name":90,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":39},"01M6991NR5S6R94Q2Z6R5SAB1M","write-implementation-brief","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fsite-kit-wp\u002Fblob\u002Fdevelop\u002F.claude\u002Fskills\u002Fwrite-implementation-brief\u002FSKILL.md",[],[94,86,95,96],"implementation","brief","write implementation brief",{"skillNo":98,"name":99,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":102,"publishedAt":39},"01M6991MK67HC2KMG7MM2W8PZ1","write-context-doc","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fsite-kit-wp\u002Fblob\u002Fdevelop\u002F.claude\u002Fskills\u002Fwrite-context-doc\u002FSKILL.md",[],[103,104,86,105],"doc","context","write context doc",{"skillNo":107,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":110,"publishedAt":39},"01M6991K9D80ZZPWRNZZQSHCMP","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fsite-kit-wp\u002Fblob\u002Fdevelop\u002F.claude\u002Fskills\u002Freview-pr\u002FSKILL.md",[],[21,20,19],{"skillNo":112,"name":113,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":116,"publishedAt":39},"01M6991J07Q5HB2ZCRD2JRWR7Z","implement-issue","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fsite-kit-wp\u002Fblob\u002Fdevelop\u002F.claude\u002Fskills\u002Fimplement-issue\u002FSKILL.md",[],[85,117,118],"implement","implement issue",{"skillNo":120,"name":121,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":124,"publishedAt":39},"01M6991GS58C967HP03TW1PMEJ","check-pr-failures","https:\u002F\u002Fgithub.com\u002Fgoogle\u002Fsite-kit-wp\u002Fblob\u002Fdevelop\u002F.claude\u002Fskills\u002Fcheck-pr-failures\u002FSKILL.md",[],[125,126,21],"check pr failures","check"]