[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KWT3FGHAZAST4DYC74GF4W":3,"skill-same:01M6KWT3FGHAZAST4DYC74GF4W":92},{"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":23,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":6,"ownerHtmlUrl":54,"ownerBlogUrl":55,"ownerDescription":56,"updatedAt":57,"install":58,"resources":71},"01M6KWT3FGHAZAST4DYC74GF4W","commit",null,"Creates conventional commits with quality gates — stages intentionally, checks for uv.lock drift, runs the project's verification command, and writes the message. Owns commit mechanics for the PR workflow skills. Use when the user asks to commit, stage, or write a commit message, and when another skill (open-pr, review-pr) needs the commit mechanics or the uv.lock drift check.","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\u002Fclaude-skills\u002Fcommit\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"review-pr","workflow","for","drift check","mechanics","stage","discover","project","drift","conventional commits","uv","diff","use","Bash","commits","open","commit message","git commit","pr","2026-11-10 10:12:30",false,"---\nname: commit\ndescription: >-\n  Creates conventional commits with quality gates — stages intentionally,\n  checks for uv.lock drift, runs the project's verification command, and\n  writes the message. Owns commit mechanics for the PR workflow skills. Use\n  when the user asks to commit, stage, or write a commit message, and when\n  another skill (open-pr, review-pr) needs the commit mechanics or the uv.lock\n  drift check.\nallowed-tools: Bash(git add*), Bash(git commit*), Bash(git diff*), Bash(git status*), Bash(${CLAUDE_SKILL_DIR}\u002Fdiscover-verification-cmd.sh*), Read\n---\n\n# Commit\n\nStage on purpose, verify, and commit with a conventional message. The steps\nare exact because staging and pre-commit hooks fail in quiet ways.\n\n## 1. Stage intentionally\n\n```bash\ngit status                     # see what changed\ngit add \u003Cfile1> \u003Cfile2> ...    # stage the files this commit is about\ngit diff --cached              # review exactly what will be committed\n```\n\nName each file rather than running `git add -A` or `git add .`, so stray\nfiles stay out. Keep unrelated changes in separate commits. Read the staged\ndiff for secrets: API keys, passwords, credentials, and tokens stay out of\nthe commit.\n\nDone when `git diff --cached` shows only the intended change and no secrets.\n\n## 2. Stage a drifted uv.lock (Python + uv only)\n\nSkip this step unless both `pyproject.toml` and `uv.lock` exist. After\nstaging, check for unstaged drift:\n\n```bash\ngit status --porcelain -- uv.lock   # \" M\" or \"MM\" = unstaged drift\n```\n\nIf it has drifted, stage it with the commit:\n\n```bash\ngit add uv.lock\n```\n\nTell the user each time you do this: an unstaged `uv.lock` makes\npre-commit's auto-stash\u002Fpop cycle conflict and abort the commit. The drift is\nlegitimate and belongs in the commit; [uv-lock-drift.md](uv-lock-drift.md)\nexplains the failure mode and why the lock drifts without dependency changes.\n\nDone when `uv.lock` shows no unstaged change, or the step does not apply.\n\n## 3. Run the project's verification\n\nDiscover the verification command, then run what it prints as a **separate**\nBash call:\n\n```bash\n${CLAUDE_SKILL_DIR}\u002Fdiscover-verification-cmd.sh\n```\n\nKeep the discovery and the run in separate calls rather than piping into\n`eval`: a command containing `eval` cannot be statically analyzed, so it falls\noutside this skill's `allowed-tools` and prompts for permission every time.\n\nDone when every check passes. A commit that breaks tests or linting waits\nuntil they are fixed.\n\n## 4. Write the message\n\nFormat: `type(scope): description`, for example `feat(auth): add OAuth2 login\nflow`. A malformed message causes merge and CI problems downstream.\n\n- **Type**: `feat`, `fix`, `refactor`, `docs`, `chore`, `test`, and rarely\n  `style` or `perf`.\n- **Scope**: optional; the area of change in the project's own terms. Omit it\n  for project-wide changes.\n- **Description**: imperative mood, no trailing period, 50 characters at most\n  (aim for about 30), specific.\n- **Body**: optional; explains why, wraps at 72 characters, sits after a blank\n  line, and links issues (`Closes #NNN`).\n\n[message-format.md](message-format.md) has the types table and good and bad\nexamples. Done when the subject matches the format and says specifically\nwhat changed.\n\n## 5. Create the commit\n\n```bash\ngit commit -m \"$(cat \u003C\u003C'EOF'\nfeat(scope): brief description\n\n- Detailed explanation line 1\n- Detailed explanation line 2\n\nCloses #NNN\nEOF\n)\"\n```\n\nIf pre-commit aborts with \"files were modified by this hook\" and `uv.lock` is\nin the modified list, stage `uv.lock` (step 2), warn the user, and retry once\nwith the same message.\n\nDone when `git status` shows the commit landed and nothing intended is left\nunstaged.\n\n## When the commit needs more\n\nRead [staging-and-fixes.md](staging-and-fixes.md) to stage a large change by\ncategory, commit part of a file, or undo or amend a commit.\n\n## Related\n\n- `\u002Freview-pr`: review pull requests.\n- `\u002Fopen-pr`: open a PR with validation.\n- [Conventional Commits spec](https:\u002F\u002Fwww.conventionalcommits.org\u002F)\n","# Commit\n\nStage on purpose, verify, and commit with a conventional message. The steps\nare exact because staging and pre-commit hooks fail in quiet ways.\n\n## 1. Stage intentionally\n\n```bash\ngit status                     # see what changed\ngit add \u003Cfile1> \u003Cfile2> ...    # stage the files this commit is about\ngit diff --cached              # review exactly what will be committed\n```\n\nName each file rather than running `git add -A` or `git add .`, so stray\nfiles stay out. Keep unrelated changes in separate commits. Read the staged\ndiff for secrets: API keys, passwords, credentials, and tokens stay out of\nthe commit.\n\nDone when `git diff --cached` shows only the intended change and no secrets.\n\n## 2. Stage a drifted uv.lock (Python + uv only)\n\nSkip this step unless both `pyproject.toml` and `uv.lock` exist. After\nstaging, check for unstaged drift:\n\n```bash\ngit status --porcelain -- uv.lock   # \" M\" or \"MM\" = unstaged drift\n```\n\nIf it has drifted, stage it with the commit:\n\n```bash\ngit add uv.lock\n```\n\nTell the user each time you do this: an unstaged `uv.lock` makes\npre-commit's auto-stash\u002Fpop cycle conflict and abort the commit. The drift is\nlegitimate and belongs in the commit; [uv-lock-drift.md](uv-lock-drift.md)\nexplains the failure mode and why the lock drifts without dependency changes.\n\nDone when `uv.lock` shows no unstaged change, or the step does not apply.\n\n## 3. Run the project's verification\n\nDiscover the verification command, then run what it prints as a **separate**\nBash call:\n\n```bash\n${CLAUDE_SKILL_DIR}\u002Fdiscover-verification-cmd.sh\n```\n\nKeep the discovery and the run in separate calls rather than piping into\n`eval`: a command containing `eval` cannot be statically analyzed, so it falls\noutside this skill's `allowed-tools` and prompts for permission every time.\n\nDone when every check passes. A commit that breaks tests or linting waits\nuntil they are fixed.\n\n## 4. Write the message\n\nFormat: `type(scope): description`, for example `feat(auth): add OAuth2 login\nflow`. A malformed message causes merge and CI problems downstream.\n\n- **Type**: `feat`, `fix`, `refactor`, `docs`, `chore`, `test`, and rarely\n  `style` or `perf`.\n- **Scope**: optional; the area of change in the project's own terms. Omit it\n  for project-wide changes.\n- **Description**: imperative mood, no trailing period, 50 characters at most\n  (aim for about 30), specific.\n- **Body**: optional; explains why, wraps at 72 characters, sits after a blank\n  line, and links issues (`Closes #NNN`).\n\n[message-format.md](message-format.md) has the types table and good and bad\nexamples. Done when the subject matches the format and says specifically\nwhat changed.\n\n## 5. Create the commit\n\n```bash\ngit commit -m \"$(cat \u003C\u003C'EOF'\nfeat(scope): brief description\n\n- Detailed explanation line 1\n- Detailed explanation line 2\n\nCloses #NNN\nEOF\n)\"\n```\n\nIf pre-commit aborts with \"files were modified by this hook\" and `uv.lock` is\nin the modified list, stage `uv.lock` (step 2), warn the user, and retry once\nwith the same message.\n\nDone when `git status` shows the commit landed and nothing intended is left\nunstaged.\n\n## When the commit needs more\n\nRead [staging-and-fixes.md](staging-and-fixes.md) to stage a large change by\ncategory, commit part of a file, or undo or amend a commit.\n\n## Related\n\n- `\u002Freview-pr`: review pull requests.\n- `\u002Fopen-pr`: open a PR with validation.\n- [Conventional Commits spec](https:\u002F\u002Fwww.conventionalcommits.org\u002F)\n",{"name":5,"description":7,"allowed-tools":48},"Bash(git add*), Bash(git commit*), Bash(git diff*), Bash(git status*), Bash(${CLAUDE_SKILL_DIR}\u002Fdiscover-verification-cmd.sh*), Read","main","023b01bfb4a86fbf1e38a749f1044cce3e5da67d","claude-skills\u002Fcommit",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":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add dougborg\u002Fharness-kit --skill commit",{"tool":64,"command":65},"bunx","bunx skills add dougborg\u002Fharness-kit --skill commit",{"tool":67,"command":68},"pnpm","pnpm dlx skills add dougborg\u002Fharness-kit --skill commit","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fcommit\u002FSKILL.md",true,[72,78,84,88],{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},"discover-verification-cmd.sh","SCRIPT","脚本",6687,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fcommit\u002Fdiscover-verification-cmd.sh",{"path":79,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":82,"sourceHtmlUrl":83},"message-format.md","REFERENCE","参考文档",2191,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fcommit\u002Fmessage-format.md",{"path":85,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":86,"sourceHtmlUrl":87},"staging-and-fixes.md",2287,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fcommit\u002Fstaging-and-fixes.md",{"path":89,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":90,"sourceHtmlUrl":91},"uv-lock-drift.md",1390,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fcommit\u002Fuv-lock-drift.md",[93,112,131,162,186,203],{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":104,"publishedAt":43},"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",[99],{"categoryNo":100,"categoryName":101,"taxonomyType":102,"taxonomyTypeDesc":103},"01JBSEEDCAT000000000000039","教师与教育","PROFESSION","适用职业",[95,105,106,107,108,109,110,111],"lessons","you","with","learned","record","references","sessions",{"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":121,"publishedAt":43},"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",[118],{"categoryNo":119,"categoryName":120,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",[122,123,124,125,126,127,107,128,129,130],"logo","designer","svg logo designer","SVG","color","concepts","write","read","generate",{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":143,"publishedAt":43},"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",[137,140],{"categoryNo":138,"categoryName":139,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":141,"categoryName":142,"taxonomyType":102,"taxonomyTypeDesc":103},"01JBSEEDCAT000000000000036","内容创作者",[144,145,146,147,148,149,150,151,36,152,153,154,155,156,157,26,158,159,160,161],"writer","documentation writer","documentation","entries","changelog","architecture","document","files","question","README","notes","code","examples","pages","information","guides","type","writing",{"skillNo":163,"name":164,"nameZh":6,"description":165,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":166,"categories":167,"keywords":168,"publishedAt":43},"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",[],[169,170,171,172,26,173,174,107,175,176,177,178,179,180,181,182,183,184,185,155],"adhd","mode","adhd mode","next","action","kit","output","style","progress","time","back","stop","session","reader","first","REST","harness",{"skillNo":187,"name":188,"nameZh":6,"description":189,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":190,"categories":191,"keywords":192,"publishedAt":43},"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",[],[193,194,195,107,196,197,198,199,200,201,202],"wait","wait what","re","it","missing","message","context","explain","land","last",{"skillNo":204,"name":205,"nameZh":6,"description":206,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":207,"categories":208,"keywords":209,"publishedAt":43},"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",[],[210,211,26,212,213,214,215,106,216,196,217,218],"to questionnaire","questionnaire","person","can","answer","meeting","make","async","decision"]