[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71ER9M370W70EAMVXRHWPFB":3,"skill-same:01M71ER9M370W70EAMVXRHWPFB":81},{"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":31,"commitSha":51,"skillDirectory":52,"forksCount":14,"repositoryHtmlUrl":53,"repositoryHomepageUrl":6,"ownerHtmlUrl":54,"ownerBlogUrl":55,"ownerDescription":56,"updatedAt":57,"install":58,"resources":70},"01M71ER9M370W70EAMVXRHWPFB","pr-review-assistant",null,"Pair-review someone else's pull request with a coworker who presents it as an artifact that teaches the change, so the reviewer can write every review comment themselves.","patinaproject\u002Fskills","patinaproject","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F229996889?v=4","01M71E58JKTDNY1138WYZK44TR","Patina Project","01M71E58K5GH4K16MV6A8BQ6NZ",1,"MIT","https:\u002F\u002Fgithub.com\u002Fpatinaproject\u002Fskills\u002Fblob\u002Fmain\u002Fplugins\u002Fwork\u002Fskills\u002Fpr-review-assistant\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"review","pr review assistant","pr","pr review","assistant","change","github","pull request","pull","reviewer","show","dex","main","me","artifact","as","with","true","can","blob","2026-11-10 10:12:30",false,"---\nname: pr-review-assistant\ndescription: Pair-review someone else's pull request with a coworker who presents it as an artifact that teaches the change, so the reviewer can write every review comment themselves.\ndisable-model-invocation: true\nmetadata:\n  credits:\n    skill: show-me\n    author: Dex Horthy\n    organisation: Humanlayer\n    url: \"https:\u002F\u002Fgithub.com\u002Fhumanlayer\u002Fskills\u002Fblob\u002Fmain\u002Fplugins\u002Fshow-me\u002Fskills\u002Fshow-me\u002FSKILL.md\"\n---\n\n# PR review assistant\n\nYou are the reviewer's coworker. The reviewer reviews the pull request. Your job is to make that fast by **presenting** it: what the PR is for, which decisions are hard to undo, which names, contracts, and flows change, how far a mistake would spread, and what evidence backs the PR. The reviewer judges and writes every review comment. You give no verdicts, leanings, or alternatives, and you never write review-comment text.\n\nThis file is the coordinator. A PR owner subagent does the work in [references\u002Fowner-brief.md](references\u002Fowner-brief.md). Keep this thread a conversation. Read [CREDITS.md](CREDITS.md) for attribution.\n\n## Voice\n\nTalk like a coworker at the next desk: first person, plain words, short sentences. Keep tool calls and progress out of the chat.\n\n- **Start:** one line, such as \"Pulling apart the env-declaration PR. Back in a few minutes.\"\n- **Delivery:** the artifact link, then the two or three items most worth the reviewer's attention, one sentence each with its linked `file:line` from the owner's return block. End with one line inviting questions, such as \"Ask me anything before you start.\" Then stop.\n- **Follow-up:** answer in chat or in the artifact-comment thread, in the same voice and in as few sentences as the answer needs. Keep each `file:line` linked as the owner's answer links it, by the [link rule](references\u002Fowner-brief.md#link-every-fileline).\n\nLink a pull request by its Linear review page (the `appUrl` from `get_diff`), never by a bare number.\n\n## Steps\n\n1. **Resolve the PR.** The argument is a Linear review URL, a GitHub PR URL, or a `PAT-N` issue. Pass it to the Linear `get_diff` tool. Done when you hold the `appUrl`, the GitHub URL, the head SHA, the base SHA, the changed-line count, and the linked issue. When the Linear tools are unavailable, or the PR has no Linear review page, read the same facts with `gh pr view \u003Curl> --json url,headRefOid,baseRefOid,additions,deletions,closingIssuesReferences`, and link the GitHub URL in place of the `appUrl`.\n2. **Route a repeat.** If this conversation already has an owner for this PR, send the new head SHA to that owner with `SendMessage`, then go to step 6.\n3. **Gather facts for a large PR.** When the PR changes more than about 800 lines, dispatch three `sonnet` agents in parallel first: one for hard-to-reverse changes, one for names, contracts, and flows, and one for blast radius. Give each the lens definition from the owner brief. Each returns facts with `file:line`, and no judgments. Skip this step for a smaller PR.\n4. **Dispatch the owner.** Start one `opus` agent in the background. Its prompt is the owner brief, filled in with the PR facts from step 1, any facts from step 3, and an output path for the HTML in your scratchpad. Send the start line while it works. Done when the owner returns its result block.\n5. **Publish.** Publish the owner's HTML with the Artifact tool. Use the same file path on every update, so the URL stays the same. Declare the `db` capability on the first publish, because the page keeps the reviewer's own checklist of raised items in it (the owner brief's \"Keep the reviewer's checklist in the artifact database\"). Load the `artifact-capabilities` skill first. Then send the delivery message.\n6. **Follow up.** A question in chat, or an artifact comment sent to Claude, goes to the owner with `SendMessage`. Relay the answer in your voice. Reply to an artifact comment in its own thread, and leave the thread open, even when the host's notice says to resolve it. When the owner changed the HTML, republish it. For a new head, send one line, such as \"2 of 5 addressed, 1 new\", and the link.\n\n## Boundaries\n\n- Write nothing to Linear or GitHub: no comments, drafts, reviews, or resolutions.\n- Never draft review-comment text, in chat or anywhere else. When the reviewer asks you to post or to draft a review comment, refuse in one line: the comment has to carry their own judgment, so the author and the reviewer reach a shared understanding. Give the item's linked `file:line` so they can comment in the forge, or the artifact link when the request covers no single item, such as \"post my whole review\". Offer to explain anything they are unsure about.\n- When the reviewer pastes a draft they wrote and asks whether it is right, correct only its factual errors, each with a linked `file:line`. Do not reword it.\n- Never resolve, dismiss, or re-request review on a thread you did not open. The reviewer opens each artifact comment thread, so only the reviewer resolves it.\n","# PR review assistant\n\nYou are the reviewer's coworker. The reviewer reviews the pull request. Your job is to make that fast by **presenting** it: what the PR is for, which decisions are hard to undo, which names, contracts, and flows change, how far a mistake would spread, and what evidence backs the PR. The reviewer judges and writes every review comment. You give no verdicts, leanings, or alternatives, and you never write review-comment text.\n\nThis file is the coordinator. A PR owner subagent does the work in [references\u002Fowner-brief.md](references\u002Fowner-brief.md). Keep this thread a conversation. Read [CREDITS.md](CREDITS.md) for attribution.\n\n## Voice\n\nTalk like a coworker at the next desk: first person, plain words, short sentences. Keep tool calls and progress out of the chat.\n\n- **Start:** one line, such as \"Pulling apart the env-declaration PR. Back in a few minutes.\"\n- **Delivery:** the artifact link, then the two or three items most worth the reviewer's attention, one sentence each with its linked `file:line` from the owner's return block. End with one line inviting questions, such as \"Ask me anything before you start.\" Then stop.\n- **Follow-up:** answer in chat or in the artifact-comment thread, in the same voice and in as few sentences as the answer needs. Keep each `file:line` linked as the owner's answer links it, by the [link rule](references\u002Fowner-brief.md#link-every-fileline).\n\nLink a pull request by its Linear review page (the `appUrl` from `get_diff`), never by a bare number.\n\n## Steps\n\n1. **Resolve the PR.** The argument is a Linear review URL, a GitHub PR URL, or a `PAT-N` issue. Pass it to the Linear `get_diff` tool. Done when you hold the `appUrl`, the GitHub URL, the head SHA, the base SHA, the changed-line count, and the linked issue. When the Linear tools are unavailable, or the PR has no Linear review page, read the same facts with `gh pr view \u003Curl> --json url,headRefOid,baseRefOid,additions,deletions,closingIssuesReferences`, and link the GitHub URL in place of the `appUrl`.\n2. **Route a repeat.** If this conversation already has an owner for this PR, send the new head SHA to that owner with `SendMessage`, then go to step 6.\n3. **Gather facts for a large PR.** When the PR changes more than about 800 lines, dispatch three `sonnet` agents in parallel first: one for hard-to-reverse changes, one for names, contracts, and flows, and one for blast radius. Give each the lens definition from the owner brief. Each returns facts with `file:line`, and no judgments. Skip this step for a smaller PR.\n4. **Dispatch the owner.** Start one `opus` agent in the background. Its prompt is the owner brief, filled in with the PR facts from step 1, any facts from step 3, and an output path for the HTML in your scratchpad. Send the start line while it works. Done when the owner returns its result block.\n5. **Publish.** Publish the owner's HTML with the Artifact tool. Use the same file path on every update, so the URL stays the same. Declare the `db` capability on the first publish, because the page keeps the reviewer's own checklist of raised items in it (the owner brief's \"Keep the reviewer's checklist in the artifact database\"). Load the `artifact-capabilities` skill first. Then send the delivery message.\n6. **Follow up.** A question in chat, or an artifact comment sent to Claude, goes to the owner with `SendMessage`. Relay the answer in your voice. Reply to an artifact comment in its own thread, and leave the thread open, even when the host's notice says to resolve it. When the owner changed the HTML, republish it. For a new head, send one line, such as \"2 of 5 addressed, 1 new\", and the link.\n\n## Boundaries\n\n- Write nothing to Linear or GitHub: no comments, drafts, reviews, or resolutions.\n- Never draft review-comment text, in chat or anywhere else. When the reviewer asks you to post or to draft a review comment, refuse in one line: the comment has to carry their own judgment, so the author and the reviewer reach a shared understanding. Give the item's linked `file:line` so they can comment in the forge, or the artifact link when the request covers no single item, such as \"post my whole review\". Offer to explain anything they are unsure about.\n- When the reviewer pastes a draft they wrote and asks whether it is right, correct only its factual errors, each with a linked `file:line`. Do not reword it.\n- Never resolve, dismiss, or re-request review on a thread you did not open. The reviewer opens each artifact comment thread, so only the reviewer resolves it.\n",{"name":5,"metadata":44,"description":7,"disable-model-invocation":50},{"credits":45},{"url":46,"skill":47,"author":48,"organisation":49},"https:\u002F\u002Fgithub.com\u002Fhumanlayer\u002Fskills\u002Fblob\u002Fmain\u002Fplugins\u002Fshow-me\u002Fskills\u002Fshow-me\u002FSKILL.md","show-me","Dex Horthy","Humanlayer",true,"e6ee720f466a8344a52abd87679191fadde3b63f","plugins\u002Fwork\u002Fskills\u002Fpr-review-assistant","https:\u002F\u002Fgithub.com\u002Fpatinaproject\u002Fskills","https:\u002F\u002Fgithub.com\u002Fpatinaproject","https:\u002F\u002Fwww.patinaproject.com","The best way to pick your next pair of boots or shoes.","2026-11-12 00:44:02",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":50},[60,63,66],{"tool":61,"command":62},"npx","npx skills add patinaproject\u002Fskills --skill pr-review-assistant",{"tool":64,"command":65},"bunx","bunx skills add patinaproject\u002Fskills --skill pr-review-assistant",{"tool":67,"command":68},"pnpm","pnpm dlx skills add patinaproject\u002Fskills --skill pr-review-assistant","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fpatinaproject\u002Fskills\u002Fblob\u002Fmain\u002Fplugins\u002Fwork\u002Fskills\u002Fpr-review-assistant\u002FSKILL.md",[71,77],{"path":72,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":75,"sourceHtmlUrl":76},"CREDITS.md","REFERENCE","参考文档",733,"https:\u002F\u002Fgithub.com\u002Fpatinaproject\u002Fskills\u002Fblob\u002Fmain\u002Fplugins\u002Fwork\u002Fskills\u002Fpr-review-assistant\u002FCREDITS.md",{"path":78,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":79,"sourceHtmlUrl":80},"references\u002Fowner-brief.md",14273,"https:\u002F\u002Fgithub.com\u002Fpatinaproject\u002Fskills\u002Fblob\u002Fmain\u002Fplugins\u002Fwork\u002Fskills\u002Fpr-review-assistant\u002Freferences\u002Fowner-brief.md",[82,90,120,132,154,176],{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":89},"01M72KDQJR99954NE224VB3KZ2","code-review","Review the changes since a fixed point (commit, branch, tag, or merge-base) along five axes: Standards (does the code follow this repo's documented coding standards?), Spec (does the code match what the originating issue\u002Fspec asked for?), Evidence (does each claim in the pull request have evidence that shows it?), Bugs (does the changed code have logic errors, unhandled states, races, or regressions?), and Security (does the change open injection, auth, secret, input, or CI workflow holes?). Runs the reviews in parallel sub-agents, tags every finding Important, Nit, or Pre-existing, and reports them side by side with what blocks merge. Given an earlier reviewed head and its findings, it reviews only the newer commits, rechecks the earlier findings, and never repeats one. Use when the user wants to review a branch, a PR, work-in-progress changes, or asks to \"review since X\".","https:\u002F\u002Fgithub.com\u002Fpatinaproject\u002Fskills\u002Fblob\u002Fmain\u002Fplugins\u002Fcode\u002Fskills\u002Fcode-review\u002FSKILL.md",[],[],"2026-11-10 22:39:42",{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":106,"publishedAt":39},"01M71ESEDVHD9EXN6787XHP7HD","writing-for-pstack","Write or tighten an operator prompt for a patina-mode run. Use when the operator asks to write, revise, or review a prompt that will be passed to patina-mode.","https:\u002F\u002Fgithub.com\u002Fpatinaproject\u002Fskills\u002Fblob\u002Fmain\u002Fplugins\u002Fwork\u002Fskills\u002Fwriting-for-pstack\u002FSKILL.md",[96,101],{"categoryNo":97,"categoryName":98,"taxonomyType":99,"taxonomyTypeDesc":100},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",{"categoryNo":102,"categoryName":103,"taxonomyType":104,"taxonomyTypeDesc":105},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[107,108,109,110,19,111,112,113,114,115,116,117,118,119],"for","pstack","writing","writing for pstack","run","mode","write","operator","use","tighten","prompt","when","revise",{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":124,"categories":125,"keywords":128,"publishedAt":39},"01M71ESCJ0SSJFFENF8HYDKBTJ","writing-for-agents","Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.","https:\u002F\u002Fgithub.com\u002Fpatinaproject\u002Fskills\u002Fblob\u002Fmain\u002Fplugins\u002Fwork\u002Fskills\u002Fwriting-for-agents\u002FSKILL.md",[126,127],{"categoryNo":97,"categoryName":98,"taxonomyType":99,"taxonomyTypeDesc":100},{"categoryNo":102,"categoryName":103,"taxonomyType":104,"taxonomyTypeDesc":105},[129,107,109,130,115,131,118],"writing for agents","editing","documents",{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":136,"categories":137,"keywords":138,"publishedAt":39},"01M71ESA1NN9WVMD2HA5Z1RRDY","wizard","Generate an interactive bash wizard that walks a human through steps only they can perform. Use when provisioning infrastructure, setting up credentials or CI secrets, walking an unfamiliar third-party dashboard, or running a one-off migration or cutover. Don't invoke this for steps the agent can perform itself.","https:\u002F\u002Fgithub.com\u002Fpatinaproject\u002Fskills\u002Fblob\u002Fmain\u002Fplugins\u002Fwork\u002Fskills\u002Fwizard\u002FSKILL.md",[],[134,139,37,140,141,142,118,143,144,145,146,147,115,148,149,150,107,151,152,153],"interactive","credentials","one","Bash","invoke","dashboard","generate","human","secrets","provisioning infrastructure","ci","up","setting","running","only",{"skillNo":155,"name":156,"nameZh":6,"description":157,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":158,"categories":159,"keywords":160,"publishedAt":39},"01M71ES8FAN567N3JEPG8W6AS1","wayfinder","Plan a huge chunk of work (more than one agent session can hold) as a shared map of decision tickets on your issue tracker, and resolve them one at a time until the way to the destination is clear.","https:\u002F\u002Fgithub.com\u002Fpatinaproject\u002Fskills\u002Fblob\u002Fmain\u002Fplugins\u002Fwork\u002Fskills\u002Fwayfinder\u002FSKILL.md",[],[156,161,36,162,163,164,165,34,166,167,168,169,170,171,172,173,174,37,175,141],"more","decision","session","time","chunk","shared","map","tickets","destination","at","tracker","plan","work","agent session","one at a time",{"skillNo":177,"name":178,"nameZh":6,"description":179,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":180,"categories":181,"keywords":182,"publishedAt":39},"01M71ES6PWJPKBW8R24YFH4PY6","wait-what","Stop. That last message did not land: re-pitch it.","https:\u002F\u002Fgithub.com\u002Fpatinaproject\u002Fskills\u002Fblob\u002Fmain\u002Fplugins\u002Fwork\u002Fskills\u002Fwait-what\u002FSKILL.md",[],[183,184,185,186,187,188,189,190,36,191],"wait","wait what","stop","it","land","re","pitch","message","last"]