[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KX04R36NSEZAZTEP6RA4EE":3,"skill-same:01M6KX04R36NSEZAZTEP6RA4EE":71},{"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":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":42,"commitSha":43,"skillDirectory":44,"forksCount":45,"repositoryHtmlUrl":46,"repositoryHomepageUrl":6,"ownerHtmlUrl":47,"ownerBlogUrl":48,"ownerDescription":49,"updatedAt":50,"install":51,"resources":64},"01M6KX04R36NSEZAZTEP6RA4EE","pr-body",null,"The shape of a pull request description: the smallest visual that makes the change clear, evidence that it works, and a merge-danger call (one-way or two-way door, plus blast radius). Use when writing or rewriting a PR description, and when opening or updating a pull request.","dougborg\u002Fharness-kit","dougborg","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1261222?v=4","01M6KWS4PB51EYD4ZDJJSGNGB2","Doug Borg","01M6KWS4T8ZZW6SX5QZS9B5BN2",0,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fskills\u002Fengineering\u002Fpr-body\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36],"pr body","pr","use","request","it","clear","visual","call","shape","evidence","writing","radius","pull","blast radius","pr description","pull request","merge","change","2026-11-10 10:12:30",false,"---\nname: pr-body\ndescription: >-\n  The shape of a pull request description: the smallest visual that makes the\n  change clear, evidence that it works, and a merge-danger call (one-way or\n  two-way door, plus blast radius). Use when writing or rewriting a PR\n  description, and when opening or updating a pull request.\n---\n\n# PR Body\n\nWrite the body with this template, skipping preambles and keeping prose\nbrief:\n\n```markdown\n\u003Cone or two sentences: what changes and why>\n\n## Summary\n\n\u003Cthe smallest visual that makes the change clear>\n\n## Evidence\n\n- **Before:** \u003Cfailing test, error output, screenshot>\n- **After:** \u003Cpassing test, correct output, screenshot>\n- **Not verified:** \u003Canything you couldn't check, or \"nothing\">\n\n## Merge danger\n\n**Door:** \u003Cone-way or two-way>\n\u003Coptional: why>\n\n**Blast radius:** \u003Cwho or what a bad merge would affect>\n\nCloses #\u003Cissue>   (Refs #\u003Cissue> for partial work; omit when there is none)\n```\n\nScale it to the change: a typo fix or a docs tweak needs the lead sentence and\nthe link, not a visual or a merge-danger call.\n\n## Summary: pick the smallest view\n\nChoose whichever makes the key point clearest; one is usually enough:\n\n- **Pseudocode** for logic or an algorithm.\n- **A call tree** for runtime control flow.\n- **A component tree** for UI structure, with the state and module boundaries\n  that matter.\n- **A shallow file tree** for file responsibilities or a broad refactor.\n- **Mermaid** for interaction, control flow, or data flow between parts.\n- **A `diff` block** when the point is what changed in a shape that already\n  exists, matched to the topic: a component tree, a file layout, a call tree,\n  or pseudocode with `+` and `-` lines.\n- **A small table** when the change is a set of parallel items (skills,\n  endpoints, flags).\n\n```diff\n on(save)\n-  write content\n+  if content is unchanged\n+    return cached result\n+  write new content\n+  invalidate cache\n```\n\nPut each visual next to the sentence it supports, and keep only the calls,\nfiles, and boundaries needed to see the change.\n\n## Evidence\n\nShow it working, before and after. A screenshot is the strongest evidence for\na visual change; `gh pr create` can't attach images, so upload it first and\nlink the hosted URL. Next best is execution: the exact test that failed and\nnow passes, or command output before and after. Say what you didn't verify.\n\n## Merge danger\n\n- **Door:** a two-way door is cheap to walk back (revert and redeploy). A\n  one-way door isn't: data migrations, destructive actions, published APIs,\n  sent messages.\n- **Blast radius:** what a bad merge would affect, considered widely:\n  consumers of an API, other teams' pipelines, layout on mobile, performance,\n  installed users.\n\nDone when the body has the sections the change warrants, the evidence names\nwhat was and wasn't verified, and the issue it implements is linked if there\nis one.\n","# PR Body\n\nWrite the body with this template, skipping preambles and keeping prose\nbrief:\n\n```markdown\n\u003Cone or two sentences: what changes and why>\n\n## Summary\n\n\u003Cthe smallest visual that makes the change clear>\n\n## Evidence\n\n- **Before:** \u003Cfailing test, error output, screenshot>\n- **After:** \u003Cpassing test, correct output, screenshot>\n- **Not verified:** \u003Canything you couldn't check, or \"nothing\">\n\n## Merge danger\n\n**Door:** \u003Cone-way or two-way>\n\u003Coptional: why>\n\n**Blast radius:** \u003Cwho or what a bad merge would affect>\n\nCloses #\u003Cissue>   (Refs #\u003Cissue> for partial work; omit when there is none)\n```\n\nScale it to the change: a typo fix or a docs tweak needs the lead sentence and\nthe link, not a visual or a merge-danger call.\n\n## Summary: pick the smallest view\n\nChoose whichever makes the key point clearest; one is usually enough:\n\n- **Pseudocode** for logic or an algorithm.\n- **A call tree** for runtime control flow.\n- **A component tree** for UI structure, with the state and module boundaries\n  that matter.\n- **A shallow file tree** for file responsibilities or a broad refactor.\n- **Mermaid** for interaction, control flow, or data flow between parts.\n- **A `diff` block** when the point is what changed in a shape that already\n  exists, matched to the topic: a component tree, a file layout, a call tree,\n  or pseudocode with `+` and `-` lines.\n- **A small table** when the change is a set of parallel items (skills,\n  endpoints, flags).\n\n```diff\n on(save)\n-  write content\n+  if content is unchanged\n+    return cached result\n+  write new content\n+  invalidate cache\n```\n\nPut each visual next to the sentence it supports, and keep only the calls,\nfiles, and boundaries needed to see the change.\n\n## Evidence\n\nShow it working, before and after. A screenshot is the strongest evidence for\na visual change; `gh pr create` can't attach images, so upload it first and\nlink the hosted URL. Next best is execution: the exact test that failed and\nnow passes, or command output before and after. Say what you didn't verify.\n\n## Merge danger\n\n- **Door:** a two-way door is cheap to walk back (revert and redeploy). A\n  one-way door isn't: data migrations, destructive actions, published APIs,\n  sent messages.\n- **Blast radius:** what a bad merge would affect, considered widely:\n  consumers of an API, other teams' pipelines, layout on mobile, performance,\n  installed users.\n\nDone when the body has the sections the change warrants, the evidence names\nwhat was and wasn't verified, and the issue it implements is linked if there\nis one.\n",{"name":5,"description":7},"main","023b01bfb4a86fbf1e38a749f1044cce3e5da67d","skills\u002Fengineering\u002Fpr-body",1,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit","https:\u002F\u002Fgithub.com\u002Fdougborg","http:\u002F\u002Fdougborg.org","Platforms and Infrastructure Software Engineer","2026-10-19 05:43:53",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add dougborg\u002Fharness-kit --skill pr-body",{"tool":57,"command":58},"bunx","bunx skills add dougborg\u002Fharness-kit --skill pr-body",{"tool":60,"command":61},"pnpm","pnpm dlx skills add dougborg\u002Fharness-kit --skill pr-body","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fskills\u002Fengineering\u002Fpr-body\u002FSKILL.md",true,[65],{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"agents\u002Fopenai.yaml","REFERENCE","参考文档",124,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fskills\u002Fengineering\u002Fpr-body\u002Fagents\u002Fopenai.yaml",[72,91,112,143,167,183],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":83,"publishedAt":37},"01M6KX4J65S5FZKMSN5DQNPSZM","teach","Teach yourself a topic over several sessions, with lessons, references, and a record of what you've learned.","https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fskills\u002Fwriting\u002Fteach\u002FSKILL.md",[78],{"categoryNo":79,"categoryName":80,"taxonomyType":81,"taxonomyTypeDesc":82},"01JBSEEDCAT000000000000039","教师与教育","PROFESSION","适用职业",[74,84,85,86,87,88,89,90],"lessons","you","with","learned","record","references","sessions",{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":102,"publishedAt":37},"01M6KX4FSSG7MHF00JDT5QT0BQ","svg-logo-designer","Generate SVG logos with multiple concepts, layouts, and color variations.","https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fskills\u002Fwriting\u002Fsvg-logo-designer\u002FSKILL.md",[97],{"categoryNo":98,"categoryName":99,"taxonomyType":100,"taxonomyTypeDesc":101},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[103,104,105,106,107,108,86,109,110,111],"logo","designer","svg logo designer","SVG","color","concepts","write","read","generate",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":124,"publishedAt":37},"01M6KX4BD3J9MZPPSH4MENH7FP","documentation-writer","Writes and revises human-facing documentation — READMEs, contributor and setup guides, reference pages, architecture notes, CLAUDE.md, and changelog entries. Covers picking the right document type for the question being asked, structuring for skimming, writing examples that actually run, and keeping docs from going stale. Use when creating or rewriting docs, when a README has drifted from the code, or when deciding where a piece of information belongs. For SKILL.md and agent files, use \u002Fskill-writer instead.","https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fskills\u002Fwriting\u002Fdocumentation-writer\u002FSKILL.md",[118,121],{"categoryNo":119,"categoryName":120,"taxonomyType":100,"taxonomyTypeDesc":101},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":122,"categoryName":123,"taxonomyType":81,"taxonomyTypeDesc":82},"01JBSEEDCAT000000000000036","内容创作者",[125,126,127,128,129,130,131,132,21,133,134,135,136,137,138,139,140,141,142,29],"writer","documentation writer","documentation","entries","changelog","architecture","document","files","question","README","notes","code","examples","pages","for","information","guides","type",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":149,"publishedAt":37},"01M6KX47ZJ4ZWHDN3MY8SYAWZZ","adhd-mode","Shapes every response for a reader with ADHD: the next action first, numbered steps, progress restated each turn, tangents held back, concrete time estimates, wins made visible. Stays on for the rest of the session until the reader says \"stop adhd mode\". On Claude Code, the harness-kit:adhd output style does the same without invoking this skill.","https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fskills\u002Fwriting\u002Fadhd-mode\u002FSKILL.md",[],[150,151,152,153,139,154,155,86,156,157,158,159,160,161,162,163,164,165,166,136],"adhd","mode","adhd mode","next","action","kit","output","style","progress","time","back","stop","session","reader","first","REST","harness",{"skillNo":168,"name":169,"nameZh":6,"description":170,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":171,"categories":172,"keywords":173,"publishedAt":37},"01M6KX463Z6E18EPDW873GDHKB","wait-what","That last message didn't land: re-explain it with the missing context.","https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fskills\u002Fthinking\u002Fwait-what\u002FSKILL.md",[],[174,175,176,86,23,177,178,179,180,181,182],"wait","wait what","re","missing","message","context","explain","land","last",{"skillNo":184,"name":185,"nameZh":6,"description":186,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":187,"categories":188,"keywords":189,"publishedAt":37},"01M6KX43NE1NB0Y2HECY515730","to-questionnaire","Turn a decision you can't make alone into a questionnaire for the one person who can answer it, filled in async or together in a meeting.","https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fskills\u002Fthinking\u002Fto-questionnaire\u002FSKILL.md",[],[190,191,139,192,193,194,195,85,196,23,197,198],"to questionnaire","questionnaire","person","can","answer","meeting","make","async","decision"]