[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KX2EBZ2TSJVX9Q2KG1KSD6":3,"skill-same:01M6KX2EBZ2TSJVX9Q2KG1KSD6":80},{"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":6,"ownerHtmlUrl":52,"ownerBlogUrl":53,"ownerDescription":54,"updatedAt":55,"install":56,"resources":69},"01M6KX2EBZ2TSJVX9Q2KG1KSD6","issue-close",null,"Closes a GitHub issue as resolved, superseded, or duplicate: reads the body and comments, migrates anything still live, cross-links both directions, and previews before closing. Use when the user asks to close an issue, when work that resolves one has merged, or when grooming finds a duplicate or superseded issue.","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\u002Fproject-management\u002Fissue-close\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"close","issue close","issue","github issue","supersede","directions","closing","links","comments","duplicate","as","github","dup","use","repo","work","gh","Bash","api","gh issue","2026-11-10 10:12:30",false,"---\nname: issue-close\ndescription: >-\n  Closes a GitHub issue as resolved, superseded, or duplicate: reads the body\n  and comments, migrates anything still live, cross-links both directions, and\n  previews before closing. Use when the user asks to close an issue, when work\n  that resolves one has merged, or when grooming finds a duplicate or\n  superseded issue.\nargument-hint: \"\u003C#> | supersede \u003Cclosing#> \u003Ccanonical#> | dedupe \u003Cdup#> \u003Ckeeper#>\"\neffort: low\nallowed-tools: Bash(gh issue *), Bash(gh api *), Bash(gh repo *), Read\n---\n\n# Issue Close\n\nClose an issue without losing what its thread learned or stranding the people\nwho read it. Every close carries a comment stating the resolution, and the\nuser sees each comment before it posts.\n\n| Arguments | Mode |\n| --- | --- |\n| `\u003C#>` | **resolve**: fixed, wontfix, invalid, or no-repro |\n| `supersede \u003Cclosing#> \u003Ccanonical#>` | another issue captures the work; migrate substance first |\n| `dedupe \u003Cduplicate#> \u003Ckeeper#>` | an outright duplicate; no migration |\n\n## 1. Read the whole thread\n\n```bash\ngh issue view \u003C#> --json title,body,state,labels,comments\n```\n\nRead both issues for `supersede` and `dedupe`. The comments often hold the\nlatest understanding, so the body alone can mislead. Look for:\n\n- alternative approaches proposed in replies;\n- corrections after filing (\"this was wrong, the real issue is …\");\n- `file:line` samples added later;\n- cross-links to other issues and PRs;\n- labels triagers added after filing, which are part of the effective scope.\n\n`--json comments` returns at most the first 100; for a longer thread, fetch\nthem all before mining:\n\n```bash\ngh api --paginate \"repos\u002F\u003Cowner>\u002F\u003Crepo>\u002Fissues\u002F\u003C#>\u002Fcomments\"\n```\n\nFor threads past 100 comments and issues in another repo, read\n[long-and-cross-repo.md](long-and-cross-repo.md).\n\nDone when you've read every comment on every issue involved, or, for a\nthread past 100 comments, sampled it as the reference describes.\n\n## 2. Resolve\n\nName the resolution and draft the comment:\n\n```text\nResolved in #\u003Cpr> (commit \u003Csha>). \u003COne sentence on what changed.>\n```\n\n```text\nClosing as wontfix. \u003CReason: design constraint, scope, deprecated path.>\nIf circumstances change, reopen with new context.\n```\n\n```text\nClosing as invalid. \u003CWhy: misconfigured environment, expected behaviour, etc.>\n```\n\n```text\nCannot reproduce on \u003Cenv \u002F commit>. Tried: \u003Csteps>. Reopen with a minimal\nrepro if you hit this again.\n```\n\nShow the user the comment and wait for confirmation, then:\n\n```bash\ngh issue close \u003C#> --comment \"...\"\n```\n\nDone when the issue is closed with a comment naming its resolution.\n\n## 3. Supersede\n\nMigrate before closing: once the closing issue is shut, its substance is\neffectively lost to anyone reading the canonical one.\n\n1. From step 1, list every item on `closing#` not already on `canonical#`.\n   Each is a migration candidate. Carry late priority and area labels onto\n   `canonical#` if it lacks them, and say in the migration comment where the\n   label change came from. When the caller says the substance is already\n   migrated (a merge posts one consolidated comment first), confirm it is on\n   `canonical#` and skip the migration comment.\n2. Draft the migration comment for `canonical#`, preserving the substance with\n   attribution and linking back to `closing#`. Draft the close comment for\n   `closing#`: why it's superseded, a link to `canonical#`, and a note that\n   the original thread stays readable.\n3. Show the user both comments and the label diff for `canonical#`, and wait\n   for confirmation before applying any of them.\n4. Apply:\n\n   ```bash\n   gh issue comment \u003Ccanonical#> --body \"...\"\n   gh issue edit \u003Ccanonical#> --add-label \"...\"   # only if labels carry over\n   gh issue close \u003Cclosing#> --comment \"...\"\n   ```\n\nDone when every migration candidate is on `canonical#`, and each issue links\nto the other.\n\n## 4. Dedupe\n\n1. Confirm the overlap is genuine, not keyword similarity.\n2. The keeper is usually the older issue with more discussion. Cross-link from\n   the keeper only when the duplicate adds context, such as a different repro\n   or reporter.\n3. Show the user the close comment, and the keeper comment if there is one,\n   and wait for confirmation, then:\n\n   ```bash\n   gh issue comment \u003Ckeeper#> --body \"...\"   # only if the duplicate adds context\n   gh issue close \u003Cduplicate#> --comment \"Duplicate of #\u003Ckeeper>. \u003COptional: what's preserved>\"\n   ```\n\nDone when the duplicate is closed pointing at the keeper, and any context it\nadded is linked from the keeper.\n\n## Related\n\n- `issue-create` — file a new issue.\n- `issue-update` — reopen, edit the body, comment, retag.\n- `issue-restructure` — split or merge issues.\n- `pr-comments` — the same discipline for PR review threads.\n","# Issue Close\n\nClose an issue without losing what its thread learned or stranding the people\nwho read it. Every close carries a comment stating the resolution, and the\nuser sees each comment before it posts.\n\n| Arguments | Mode |\n| --- | --- |\n| `\u003C#>` | **resolve**: fixed, wontfix, invalid, or no-repro |\n| `supersede \u003Cclosing#> \u003Ccanonical#>` | another issue captures the work; migrate substance first |\n| `dedupe \u003Cduplicate#> \u003Ckeeper#>` | an outright duplicate; no migration |\n\n## 1. Read the whole thread\n\n```bash\ngh issue view \u003C#> --json title,body,state,labels,comments\n```\n\nRead both issues for `supersede` and `dedupe`. The comments often hold the\nlatest understanding, so the body alone can mislead. Look for:\n\n- alternative approaches proposed in replies;\n- corrections after filing (\"this was wrong, the real issue is …\");\n- `file:line` samples added later;\n- cross-links to other issues and PRs;\n- labels triagers added after filing, which are part of the effective scope.\n\n`--json comments` returns at most the first 100; for a longer thread, fetch\nthem all before mining:\n\n```bash\ngh api --paginate \"repos\u002F\u003Cowner>\u002F\u003Crepo>\u002Fissues\u002F\u003C#>\u002Fcomments\"\n```\n\nFor threads past 100 comments and issues in another repo, read\n[long-and-cross-repo.md](long-and-cross-repo.md).\n\nDone when you've read every comment on every issue involved, or, for a\nthread past 100 comments, sampled it as the reference describes.\n\n## 2. Resolve\n\nName the resolution and draft the comment:\n\n```text\nResolved in #\u003Cpr> (commit \u003Csha>). \u003COne sentence on what changed.>\n```\n\n```text\nClosing as wontfix. \u003CReason: design constraint, scope, deprecated path.>\nIf circumstances change, reopen with new context.\n```\n\n```text\nClosing as invalid. \u003CWhy: misconfigured environment, expected behaviour, etc.>\n```\n\n```text\nCannot reproduce on \u003Cenv \u002F commit>. Tried: \u003Csteps>. Reopen with a minimal\nrepro if you hit this again.\n```\n\nShow the user the comment and wait for confirmation, then:\n\n```bash\ngh issue close \u003C#> --comment \"...\"\n```\n\nDone when the issue is closed with a comment naming its resolution.\n\n## 3. Supersede\n\nMigrate before closing: once the closing issue is shut, its substance is\neffectively lost to anyone reading the canonical one.\n\n1. From step 1, list every item on `closing#` not already on `canonical#`.\n   Each is a migration candidate. Carry late priority and area labels onto\n   `canonical#` if it lacks them, and say in the migration comment where the\n   label change came from. When the caller says the substance is already\n   migrated (a merge posts one consolidated comment first), confirm it is on\n   `canonical#` and skip the migration comment.\n2. Draft the migration comment for `canonical#`, preserving the substance with\n   attribution and linking back to `closing#`. Draft the close comment for\n   `closing#`: why it's superseded, a link to `canonical#`, and a note that\n   the original thread stays readable.\n3. Show the user both comments and the label diff for `canonical#`, and wait\n   for confirmation before applying any of them.\n4. Apply:\n\n   ```bash\n   gh issue comment \u003Ccanonical#> --body \"...\"\n   gh issue edit \u003Ccanonical#> --add-label \"...\"   # only if labels carry over\n   gh issue close \u003Cclosing#> --comment \"...\"\n   ```\n\nDone when every migration candidate is on `canonical#`, and each issue links\nto the other.\n\n## 4. Dedupe\n\n1. Confirm the overlap is genuine, not keyword similarity.\n2. The keeper is usually the older issue with more discussion. Cross-link from\n   the keeper only when the duplicate adds context, such as a different repro\n   or reporter.\n3. Show the user the close comment, and the keeper comment if there is one,\n   and wait for confirmation, then:\n\n   ```bash\n   gh issue comment \u003Ckeeper#> --body \"...\"   # only if the duplicate adds context\n   gh issue close \u003Cduplicate#> --comment \"Duplicate of #\u003Ckeeper>. \u003COptional: what's preserved>\"\n   ```\n\nDone when the duplicate is closed pointing at the keeper, and any context it\nadded is linked from the keeper.\n\n## Related\n\n- `issue-create` — file a new issue.\n- `issue-update` — reopen, edit the body, comment, retag.\n- `issue-restructure` — split or merge issues.\n- `pr-comments` — the same discipline for PR review threads.\n",{"name":5,"effort":44,"description":7,"allowed-tools":45,"argument-hint":46},"low","Bash(gh issue *), Bash(gh api *), Bash(gh repo *), Read","\u003C#> | supersede \u003Cclosing#> \u003Ccanonical#> | dedupe \u003Cdup#> \u003Ckeeper#>","main","023b01bfb4a86fbf1e38a749f1044cce3e5da67d","skills\u002Fproject-management\u002Fissue-close",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":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add dougborg\u002Fharness-kit --skill issue-close",{"tool":62,"command":63},"bunx","bunx skills add dougborg\u002Fharness-kit --skill issue-close",{"tool":65,"command":66},"pnpm","pnpm dlx skills add dougborg\u002Fharness-kit --skill issue-close","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fskills\u002Fproject-management\u002Fissue-close\u002FSKILL.md",true,[70,76],{"path":71,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":74,"sourceHtmlUrl":75},"agents\u002Fopenai.yaml","REFERENCE","参考文档",124,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fskills\u002Fproject-management\u002Fissue-close\u002Fagents\u002Fopenai.yaml",{"path":77,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":78,"sourceHtmlUrl":79},"long-and-cross-repo.md",832,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fskills\u002Fproject-management\u002Fissue-close\u002Flong-and-cross-repo.md",[81,100,121,153,177,194],{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":92,"publishedAt":39},"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",[87],{"categoryNo":88,"categoryName":89,"taxonomyType":90,"taxonomyTypeDesc":91},"01JBSEEDCAT000000000000039","教师与教育","PROFESSION","适用职业",[83,93,94,95,96,97,98,99],"lessons","you","with","learned","record","references","sessions",{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":111,"publishedAt":39},"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",[106],{"categoryNo":107,"categoryName":108,"taxonomyType":109,"taxonomyTypeDesc":110},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[112,113,114,115,116,117,95,118,119,120],"logo","designer","svg logo designer","SVG","color","concepts","write","read","generate",{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":133,"publishedAt":39},"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",[127,130],{"categoryNo":128,"categoryName":129,"taxonomyType":109,"taxonomyTypeDesc":110},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":131,"categoryName":132,"taxonomyType":90,"taxonomyTypeDesc":91},"01JBSEEDCAT000000000000036","内容创作者",[134,135,136,137,138,139,140,141,32,142,143,144,145,146,147,148,149,150,151,152],"writer","documentation writer","documentation","entries","changelog","architecture","document","files","question","README","notes","code","examples","pages","for","information","guides","type","writing",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":159,"publishedAt":39},"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",[],[160,161,162,163,148,164,165,95,166,167,168,169,170,171,172,173,174,175,176,145],"adhd","mode","adhd mode","next","action","kit","output","style","progress","time","back","stop","session","reader","first","REST","harness",{"skillNo":178,"name":179,"nameZh":6,"description":180,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":181,"categories":182,"keywords":183,"publishedAt":39},"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",[],[184,185,186,95,187,188,189,190,191,192,193],"wait","wait what","re","it","missing","message","context","explain","land","last",{"skillNo":195,"name":196,"nameZh":6,"description":197,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":198,"categories":199,"keywords":200,"publishedAt":39},"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",[],[201,202,148,203,204,205,206,94,207,187,208,209],"to questionnaire","questionnaire","person","can","answer","meeting","make","async","decision"]