[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KWVCV8KSZXV62PKC1YXK7X":3,"skill-same:01M6KWVCV8KSZXV62PKC1YXK7X":165},{"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":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":6,"ownerHtmlUrl":51,"ownerBlogUrl":52,"ownerDescription":53,"updatedAt":54,"install":55,"resources":68},"01M6KWVCV8KSZXV62PKC1YXK7X","harness",null,"Audits, bootstraps, updates, and improves a project's agent harness: the skills, agents, hooks, and instructions for Claude Code and Codex. Modes: audit, bootstrap, update, add, migrate, retro, hoist; each reads its own protocol reference.","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\u002Fharness\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"edit","updates","lock","mode","harnesses","ls","discover","project","hooks","up","update","write","read","migrate","Bash","inventory","audit","verification","code","2026-11-10 10:12:30",false,"---\nname: harness\ndescription: >-\n  Audits, bootstraps, updates, and improves a project's agent harness: the\n  skills, agents, hooks, and instructions for Claude Code and Codex. Modes:\n  audit, bootstrap, update, add, migrate, retro, hoist; each reads its own\n  protocol reference.\nwhen_to_use: >-\n  When the user asks to audit, bootstrap, update, migrate, or retro a harness;\n  when setting up Claude Code and Codex project harnesses; when moving a\n  project off `.harness-lock.json`; when adding skills from another\n  marketplace; and when a harness mode hands off to another mode (retro to\n  hoist).\nargument-hint: \"[audit|bootstrap|update|add|migrate|retro|hoist]\"\nallowed-tools: Bash(ls*), Bash(grep*), Bash(git*), Bash(claude plugin*), Bash(${CLAUDE_SKILL_DIR}\u002Fdiscover-verification-cmd.sh*), Bash(${CLAUDE_SKILL_DIR}\u002Fvendor-snapshot.sh*), Bash(${CLAUDE_SKILL_DIR}\u002Fcheck-snapshot.sh*), Bash(${CLAUDE_SKILL_DIR}\u002Fmigrate-inventory.sh*), Read, Glob, Write, Edit\n---\n\n# Harness\n\nQuality gates for an agent harness: the skills, agents, hooks, and docs that\nteach agents how to work in a project. Harness quality is agent quality; a\nstale or badly structured skill gets followed exactly as written.\n\nThe skill works on a project that has harness content in `.claude\u002F`,\n`.agents\u002F`, or `.codex\u002F`, or one you are bootstrapping. Generic skills and\nagents arrive as a vendored snapshot that nobody edits (ADR 0001): what is\nspecific to the project lives in facts, and a need the facts can't express\nbecomes a declared fork. `.harness\u002Flock.json` lists the snapshot's files;\nanything else in the host trees is project-local. The project's verification\ncommand must be runnable.\n\n## Pick the mode\n\nOn Claude Code the modes are `\u002Fharness \u003Cmode>`; on Codex, `$harness \u003Cmode>`.\n\n```text\nharness              Auto-detect: bootstrap if no harness, audit if one exists\nharness audit        Audit the current harness (delegates setup health to \u002Fdoctor)\nharness bootstrap    Analyze the project, write its facts and project-specific additions, vendor the generic set\nharness update       Re-vendor the snapshot from a newer harness-kit release\nharness add \u003Crepo>   Vendor skills from another repository\nharness migrate      Move a copy-and-edit harness (.harness-lock.json) to a vendored snapshot\nharness retro        Post-session retrospective on the environment\nharness hoist        Propose generic local improvements back upstream\n```\n\nWith no mode given, run `bootstrap` if none of `.claude\u002F`, `.agents\u002F`, or\n`.codex\u002F` holds harness content, and `audit` otherwise. A project with a\n`.harness-lock.json` predates vendoring: suggest `migrate` before auditing.\n\nRead the file for the selected mode before doing any work, and only that one;\neach is self-contained.\n\n| Mode | Read | What it covers |\n| --- | --- | --- |\n| `audit` | `${CLAUDE_SKILL_DIR}\u002Faudit.md` | Audit protocol, `\u002Fdoctor` division of labor, gap classification, output format |\n| `bootstrap` | `${CLAUDE_SKILL_DIR}\u002Fbootstrap.md` | harness-builder handoff, approval gate, facts and project-local content, vendoring the snapshot |\n| `update` | `${CLAUDE_SKILL_DIR}\u002Fupdate.md` | Running the vendoring script against a newer release; acting on its report |\n| `add` | `${CLAUDE_SKILL_DIR}\u002Fupdate.md` | Adding third-party skills to the vendored set (second half of the file) |\n| `migrate` | `${CLAUDE_SKILL_DIR}\u002Fmigrate.md` | Inventory of `.harness-lock.json` copies, each edit to a fact or fork, preview gate, vendoring |\n| `retro` | `${CLAUDE_SKILL_DIR}\u002Fretro.md` | Environment audit, gap classification A\u002FB\u002FC\u002FD\u002FE, routing lessons to facts, local skills, or hoist |\n| `hoist` | `${CLAUDE_SKILL_DIR}\u002Fhoist.md` | Proposing project-local content, facts patterns, and forks back upstream |\n\nDone when the mode file is read and its final step reports done.\n\n## Topic references\n\nRead these as needed from any mode; each is linked directly from here.\n\n| Topic | Read | When |\n| --- | --- | --- |\n| Project facts and `.harness\u002Fconfig.toml` | `${CLAUDE_SKILL_DIR}\u002Fproject-facts.md` | Stating a project's verification command or other facts; deciding prose (`AGENTS.md`) versus config; reading or writing the config's keys |\n| Vendoring a snapshot and `.harness\u002Flock.json` | `${CLAUDE_SKILL_DIR}\u002Fvendoring.md` | Writing or rewriting a project's vendored skills, agents, and hooks with `vendor-snapshot.sh`; reading the lock; checking the snapshot is unedited with `check-snapshot.sh` |\n| Skill and agent design patterns | `${CLAUDE_SKILL_DIR}\u002Fdesign-principles.md` | Writing or reviewing a skill or agent; deciding what belongs upstream vs local |\n| Hook staging and exit codes | `${CLAUDE_SKILL_DIR}\u002Fhooks-patterns.md` | Configuring or auditing hooks (PostToolUse stages, Stop hooks); a hook that exits non-zero on a no-op is covered under Hook Exit Code Safety |\n| Bundled skills and official plugin catalog | `${CLAUDE_SKILL_DIR}\u002Fexternal-plugins.md` | Bootstrap or audit needs bundled-skill delegation targets, stack-matched plugin recommendations, and overlap flags |\n| Multi-agent architecture patterns | `${CLAUDE_SKILL_DIR}\u002Farchitecture-patterns.md` | Bootstrap picks an architecture pattern for the project |\n| Plugin `hooks.json` schema | `${CLAUDE_SKILL_DIR}\u002Fhooks-reference.md` | Writing or debugging a plugin's `hooks\u002Fhooks.json` |\n| Claude Code GitHub Action in CI | `${CLAUDE_SKILL_DIR}\u002Fgithub-action.md` | Setting up or auditing a workflow that runs `claude-code-action` on a repo with a vendored snapshot |\n| Release Please setup | `${CLAUDE_SKILL_DIR}\u002Frelease-please-reference.md` | Recommending automated semver releases for a Conventional Commits + GitHub project |\n\n## Treat the audit as advice\n\nRun `harness audit` before shipping a skill. It catches what nothing else\ndoes: invalid frontmatter, unrestricted \"read-only\" agents, oversized or vague\nskills. Fix its defects (a frontmatter field the runtime silently ignores is a\ndefect) and weigh its recommendations (whether a description reads vague is\nyour call). It is advisory, not a gate.\n\n## Classify every finding\n\nEvery finding from audit or retro gets a type, which decides where the fix\ngoes:\n\n- **Type A**: content gap in an existing skill. Fix the skill.\n- **Type B**: skill missing entirely. Add it.\n- **Type C**: the builder template would not have generated this. Fix the\n  builder; this double loop is the most valuable fix.\n- **Type D**: a lightweight pattern not worth a skill. Store it in memory or\n  `.claude\u002Fpatterns\u002F` (retro only).\n- **Type E**: an environment change (a check, hook, CI job, standard, doc\n  pointer, or access grant) made in the project; also Type C when the builder\n  should have recommended it (retro only).\n\nA vendored file (one `.harness\u002Flock.json` lists) is never the fix site: a\nType A on it is a project fact, a project-local skill, or an upstream fix,\nand a generic Type B goes upstream too. Retro mode routes each one.\n\n## Fix gaps as you meet them\n\nWhen any session (not only harness work) exposes a behavioral gap in the\nharness:\n\n1. Fix the immediate issue in the current task.\n2. Decide the scope: upstream (a generic workflow that helps every project) or\n   project-local (a fact, or a domain-specific skill).\n3. Hand the fix to a background subagent and keep working.\n\nAn upstream fix clones harness-kit (or the other upstream source), fixes it,\nand opens a PR. On Claude Code:\n\n```text\nAgent(\n  description: \"fix harness gap: [brief description]\",\n  run_in_background: true,\n  prompt: \"Fix [gap] in harness-kit.\n    1. git clone --depth 1 https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit \u002Ftmp\u002Fharness-fix\n    2. cd \u002Ftmp\u002Fharness-fix && git checkout -b fix\u002F[name]\n    3. Fix skills\u002F\u003Carea>\u002F[skill]\u002FSKILL.md (find it with ls skills\u002F*\u002F[skill])\n       or agents\u002F[agent].md, then run scripts\u002Fgenerate-claude-skills.sh.\n       A new skill goes in a topic-area folder and that area's README.md.\n       If fixing inline bash, extract it to a script instead of patching\n       in place.\n    4. Commit, push, open PR with gh\n    5. Clean up: rm -rf \u002Ftmp\u002Fharness-fix\"\n)\n```\n\nOn Codex, give the same prompt to a subagent. A project-local fix states\nthe fact in `.harness\u002Fconfig.toml` or `AGENTS.md`'s `## Project facts`\n(`${CLAUDE_SKILL_DIR}\u002Fproject-facts.md`), or edits a project-local skill, and commits\nnormally. It never edits a vendored file; the edit check fails on that. A\nfork is only for a need the facts can't express, declared as an explicit\ndecision with the user.\n\nThe upstream PR is reviewed and merged separately; the next update PR then\nbrings the fix into every project. Encode behavioral gaps in skills through PRs\nrather than memories, because memories fade and skills persist. Done when the\ncurrent task is unblocked and the fix is either committed locally or running\nin a background subagent.\n\n## Flag suspect guidance\n\nWhenever guidance in a skill looks outdated or wrong, flag it in your reply\nand carry on working:\n\n```markdown\n> ⚠️ FLAGGED: [brief reason this guidance may be outdated or wrong]\n```\n\nThe flag is a lightweight in-flight signal that feeds the next audit.\n\n## Related\n\n- The `harness-builder` agent: bootstrap mode dispatches it to analyze a\n  codebase and recommend a harness.\n- `\u002Fsession-retro`: the session-side retrospective (documents the work, not\n  the harness); run it alongside retro mode.\n- `\u002Fskill-writer`: authoring guidance for skills and agents; audit checks\n  against what it teaches.\n- `\u002Fdoctor` (bundled with Claude Code, alias `\u002Fcheckup`): generic setup health\n  such as installation, PATH, unused skills, slow hooks, and CLAUDE.md bloat.\n  Audit invokes it rather than duplicating it.\n","# Harness\n\nQuality gates for an agent harness: the skills, agents, hooks, and docs that\nteach agents how to work in a project. Harness quality is agent quality; a\nstale or badly structured skill gets followed exactly as written.\n\nThe skill works on a project that has harness content in `.claude\u002F`,\n`.agents\u002F`, or `.codex\u002F`, or one you are bootstrapping. Generic skills and\nagents arrive as a vendored snapshot that nobody edits (ADR 0001): what is\nspecific to the project lives in facts, and a need the facts can't express\nbecomes a declared fork. `.harness\u002Flock.json` lists the snapshot's files;\nanything else in the host trees is project-local. The project's verification\ncommand must be runnable.\n\n## Pick the mode\n\nOn Claude Code the modes are `\u002Fharness \u003Cmode>`; on Codex, `$harness \u003Cmode>`.\n\n```text\nharness              Auto-detect: bootstrap if no harness, audit if one exists\nharness audit        Audit the current harness (delegates setup health to \u002Fdoctor)\nharness bootstrap    Analyze the project, write its facts and project-specific additions, vendor the generic set\nharness update       Re-vendor the snapshot from a newer harness-kit release\nharness add \u003Crepo>   Vendor skills from another repository\nharness migrate      Move a copy-and-edit harness (.harness-lock.json) to a vendored snapshot\nharness retro        Post-session retrospective on the environment\nharness hoist        Propose generic local improvements back upstream\n```\n\nWith no mode given, run `bootstrap` if none of `.claude\u002F`, `.agents\u002F`, or\n`.codex\u002F` holds harness content, and `audit` otherwise. A project with a\n`.harness-lock.json` predates vendoring: suggest `migrate` before auditing.\n\nRead the file for the selected mode before doing any work, and only that one;\neach is self-contained.\n\n| Mode | Read | What it covers |\n| --- | --- | --- |\n| `audit` | `${CLAUDE_SKILL_DIR}\u002Faudit.md` | Audit protocol, `\u002Fdoctor` division of labor, gap classification, output format |\n| `bootstrap` | `${CLAUDE_SKILL_DIR}\u002Fbootstrap.md` | harness-builder handoff, approval gate, facts and project-local content, vendoring the snapshot |\n| `update` | `${CLAUDE_SKILL_DIR}\u002Fupdate.md` | Running the vendoring script against a newer release; acting on its report |\n| `add` | `${CLAUDE_SKILL_DIR}\u002Fupdate.md` | Adding third-party skills to the vendored set (second half of the file) |\n| `migrate` | `${CLAUDE_SKILL_DIR}\u002Fmigrate.md` | Inventory of `.harness-lock.json` copies, each edit to a fact or fork, preview gate, vendoring |\n| `retro` | `${CLAUDE_SKILL_DIR}\u002Fretro.md` | Environment audit, gap classification A\u002FB\u002FC\u002FD\u002FE, routing lessons to facts, local skills, or hoist |\n| `hoist` | `${CLAUDE_SKILL_DIR}\u002Fhoist.md` | Proposing project-local content, facts patterns, and forks back upstream |\n\nDone when the mode file is read and its final step reports done.\n\n## Topic references\n\nRead these as needed from any mode; each is linked directly from here.\n\n| Topic | Read | When |\n| --- | --- | --- |\n| Project facts and `.harness\u002Fconfig.toml` | `${CLAUDE_SKILL_DIR}\u002Fproject-facts.md` | Stating a project's verification command or other facts; deciding prose (`AGENTS.md`) versus config; reading or writing the config's keys |\n| Vendoring a snapshot and `.harness\u002Flock.json` | `${CLAUDE_SKILL_DIR}\u002Fvendoring.md` | Writing or rewriting a project's vendored skills, agents, and hooks with `vendor-snapshot.sh`; reading the lock; checking the snapshot is unedited with `check-snapshot.sh` |\n| Skill and agent design patterns | `${CLAUDE_SKILL_DIR}\u002Fdesign-principles.md` | Writing or reviewing a skill or agent; deciding what belongs upstream vs local |\n| Hook staging and exit codes | `${CLAUDE_SKILL_DIR}\u002Fhooks-patterns.md` | Configuring or auditing hooks (PostToolUse stages, Stop hooks); a hook that exits non-zero on a no-op is covered under Hook Exit Code Safety |\n| Bundled skills and official plugin catalog | `${CLAUDE_SKILL_DIR}\u002Fexternal-plugins.md` | Bootstrap or audit needs bundled-skill delegation targets, stack-matched plugin recommendations, and overlap flags |\n| Multi-agent architecture patterns | `${CLAUDE_SKILL_DIR}\u002Farchitecture-patterns.md` | Bootstrap picks an architecture pattern for the project |\n| Plugin `hooks.json` schema | `${CLAUDE_SKILL_DIR}\u002Fhooks-reference.md` | Writing or debugging a plugin's `hooks\u002Fhooks.json` |\n| Claude Code GitHub Action in CI | `${CLAUDE_SKILL_DIR}\u002Fgithub-action.md` | Setting up or auditing a workflow that runs `claude-code-action` on a repo with a vendored snapshot |\n| Release Please setup | `${CLAUDE_SKILL_DIR}\u002Frelease-please-reference.md` | Recommending automated semver releases for a Conventional Commits + GitHub project |\n\n## Treat the audit as advice\n\nRun `harness audit` before shipping a skill. It catches what nothing else\ndoes: invalid frontmatter, unrestricted \"read-only\" agents, oversized or vague\nskills. Fix its defects (a frontmatter field the runtime silently ignores is a\ndefect) and weigh its recommendations (whether a description reads vague is\nyour call). It is advisory, not a gate.\n\n## Classify every finding\n\nEvery finding from audit or retro gets a type, which decides where the fix\ngoes:\n\n- **Type A**: content gap in an existing skill. Fix the skill.\n- **Type B**: skill missing entirely. Add it.\n- **Type C**: the builder template would not have generated this. Fix the\n  builder; this double loop is the most valuable fix.\n- **Type D**: a lightweight pattern not worth a skill. Store it in memory or\n  `.claude\u002Fpatterns\u002F` (retro only).\n- **Type E**: an environment change (a check, hook, CI job, standard, doc\n  pointer, or access grant) made in the project; also Type C when the builder\n  should have recommended it (retro only).\n\nA vendored file (one `.harness\u002Flock.json` lists) is never the fix site: a\nType A on it is a project fact, a project-local skill, or an upstream fix,\nand a generic Type B goes upstream too. Retro mode routes each one.\n\n## Fix gaps as you meet them\n\nWhen any session (not only harness work) exposes a behavioral gap in the\nharness:\n\n1. Fix the immediate issue in the current task.\n2. Decide the scope: upstream (a generic workflow that helps every project) or\n   project-local (a fact, or a domain-specific skill).\n3. Hand the fix to a background subagent and keep working.\n\nAn upstream fix clones harness-kit (or the other upstream source), fixes it,\nand opens a PR. On Claude Code:\n\n```text\nAgent(\n  description: \"fix harness gap: [brief description]\",\n  run_in_background: true,\n  prompt: \"Fix [gap] in harness-kit.\n    1. git clone --depth 1 https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit \u002Ftmp\u002Fharness-fix\n    2. cd \u002Ftmp\u002Fharness-fix && git checkout -b fix\u002F[name]\n    3. Fix skills\u002F\u003Carea>\u002F[skill]\u002FSKILL.md (find it with ls skills\u002F*\u002F[skill])\n       or agents\u002F[agent].md, then run scripts\u002Fgenerate-claude-skills.sh.\n       A new skill goes in a topic-area folder and that area's README.md.\n       If fixing inline bash, extract it to a script instead of patching\n       in place.\n    4. Commit, push, open PR with gh\n    5. Clean up: rm -rf \u002Ftmp\u002Fharness-fix\"\n)\n```\n\nOn Codex, give the same prompt to a subagent. A project-local fix states\nthe fact in `.harness\u002Fconfig.toml` or `AGENTS.md`'s `## Project facts`\n(`${CLAUDE_SKILL_DIR}\u002Fproject-facts.md`), or edits a project-local skill, and commits\nnormally. It never edits a vendored file; the edit check fails on that. A\nfork is only for a need the facts can't express, declared as an explicit\ndecision with the user.\n\nThe upstream PR is reviewed and merged separately; the next update PR then\nbrings the fix into every project. Encode behavioral gaps in skills through PRs\nrather than memories, because memories fade and skills persist. Done when the\ncurrent task is unblocked and the fix is either committed locally or running\nin a background subagent.\n\n## Flag suspect guidance\n\nWhenever guidance in a skill looks outdated or wrong, flag it in your reply\nand carry on working:\n\n```markdown\n> ⚠️ FLAGGED: [brief reason this guidance may be outdated or wrong]\n```\n\nThe flag is a lightweight in-flight signal that feeds the next audit.\n\n## Related\n\n- The `harness-builder` agent: bootstrap mode dispatches it to analyze a\n  codebase and recommend a harness.\n- `\u002Fsession-retro`: the session-side retrospective (documents the work, not\n  the harness); run it alongside retro mode.\n- `\u002Fskill-writer`: authoring guidance for skills and agents; audit checks\n  against what it teaches.\n- `\u002Fdoctor` (bundled with Claude Code, alias `\u002Fcheckup`): generic setup health\n  such as installation, PATH, unused skills, slow hooks, and CLAUDE.md bloat.\n  Audit invokes it rather than duplicating it.\n",{"name":5,"description":7,"when_to_use":43,"allowed-tools":44,"argument-hint":45},"When the user asks to audit, bootstrap, update, migrate, or retro a harness; when setting up Claude Code and Codex project harnesses; when moving a project off `.harness-lock.json`; when adding skills from another marketplace; and when a harness mode hands off to another mode (retro to hoist).","Bash(ls*), Bash(grep*), Bash(git*), Bash(claude plugin*), Bash(${CLAUDE_SKILL_DIR}\u002Fdiscover-verification-cmd.sh*), Bash(${CLAUDE_SKILL_DIR}\u002Fvendor-snapshot.sh*), Bash(${CLAUDE_SKILL_DIR}\u002Fcheck-snapshot.sh*), Bash(${CLAUDE_SKILL_DIR}\u002Fmigrate-inventory.sh*), Read, Glob, Write, Edit","[audit|bootstrap|update|add|migrate|retro|hoist]","main","023b01bfb4a86fbf1e38a749f1044cce3e5da67d","claude-skills\u002Fharness",1,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit","https:\u002F\u002Fgithub.com\u002Fdougborg","http:\u002F\u002Fdougborg.org","Platforms and Infrastructure Software Engineer","2026-11-13 07:43:37",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add dougborg\u002Fharness-kit --skill harness",{"tool":61,"command":62},"bunx","bunx skills add dougborg\u002Fharness-kit --skill harness",{"tool":64,"command":65},"pnpm","pnpm dlx skills add dougborg\u002Fharness-kit --skill harness","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fharness\u002FSKILL.md",true,[69,75,79,83,89,93,97,101,105,109,113,117,121,125,129,133,137,141,145,149,153,157,161],{"path":70,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":73,"sourceHtmlUrl":74},"architecture-patterns.md","REFERENCE","参考文档",3850,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fharness\u002Farchitecture-patterns.md",{"path":76,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":77,"sourceHtmlUrl":78},"audit.md",16116,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fharness\u002Faudit.md",{"path":80,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":81,"sourceHtmlUrl":82},"bootstrap.md",8544,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fharness\u002Fbootstrap.md",{"path":84,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":87,"sourceHtmlUrl":88},"check-snapshot.sh","SCRIPT","脚本",8296,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fharness\u002Fcheck-snapshot.sh",{"path":90,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":91,"sourceHtmlUrl":92},"design-principles.md",7386,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fharness\u002Fdesign-principles.md",{"path":94,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":95,"sourceHtmlUrl":96},"discover-verification-cmd.sh",6687,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fharness\u002Fdiscover-verification-cmd.sh",{"path":98,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":99,"sourceHtmlUrl":100},"external-plugins.md",11633,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fharness\u002Fexternal-plugins.md",{"path":102,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":103,"sourceHtmlUrl":104},"find-python.sh",1620,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fharness\u002Ffind-python.sh",{"path":106,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":107,"sourceHtmlUrl":108},"github-action.md",5067,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fharness\u002Fgithub-action.md",{"path":110,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":111,"sourceHtmlUrl":112},"harness-update.sh",12049,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fharness\u002Fharness-update.sh",{"path":114,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":115,"sourceHtmlUrl":116},"harness-update.yml",2257,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fharness\u002Fharness-update.yml",{"path":118,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":119,"sourceHtmlUrl":120},"hoist.md",3225,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fharness\u002Fhoist.md",{"path":122,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":123,"sourceHtmlUrl":124},"hooks-patterns.md",6940,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fharness\u002Fhooks-patterns.md",{"path":126,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":127,"sourceHtmlUrl":128},"hooks-reference.md",8711,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fharness\u002Fhooks-reference.md",{"path":130,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":131,"sourceHtmlUrl":132},"migrate-inventory.sh",13229,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fharness\u002Fmigrate-inventory.sh",{"path":134,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":135,"sourceHtmlUrl":136},"migrate.md",11714,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fharness\u002Fmigrate.md",{"path":138,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":139,"sourceHtmlUrl":140},"project-facts.md",5676,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fharness\u002Fproject-facts.md",{"path":142,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":143,"sourceHtmlUrl":144},"release-please-reference.md",5845,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fharness\u002Frelease-please-reference.md",{"path":146,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":147,"sourceHtmlUrl":148},"resolve-upstream.sh",2021,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fharness\u002Fresolve-upstream.sh",{"path":150,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":151,"sourceHtmlUrl":152},"retro.md",6666,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fharness\u002Fretro.md",{"path":154,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":155,"sourceHtmlUrl":156},"update.md",5061,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fharness\u002Fupdate.md",{"path":158,"resourceType":85,"resourceTypeDesc":86,"sizeBytes":159,"sourceHtmlUrl":160},"vendor-snapshot.sh",32477,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fharness\u002Fvendor-snapshot.sh",{"path":162,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":163,"sourceHtmlUrl":164},"vendoring.md",27976,"https:\u002F\u002Fgithub.com\u002Fdougborg\u002Fharness-kit\u002Fblob\u002Fmain\u002Fclaude-skills\u002Fharness\u002Fvendoring.md",[166,185,204,236,258,275],{"skillNo":167,"name":168,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":170,"categories":171,"keywords":177,"publishedAt":38},"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",[172],{"categoryNo":173,"categoryName":174,"taxonomyType":175,"taxonomyTypeDesc":176},"01JBSEEDCAT000000000000039","教师与教育","PROFESSION","适用职业",[168,178,179,180,181,182,183,184],"lessons","you","with","learned","record","references","sessions",{"skillNo":186,"name":187,"nameZh":6,"description":188,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":189,"categories":190,"keywords":196,"publishedAt":38},"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",[191],{"categoryNo":192,"categoryName":193,"taxonomyType":194,"taxonomyTypeDesc":195},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[197,198,199,200,201,202,180,30,31,203],"logo","designer","svg logo designer","SVG","color","concepts","generate",{"skillNo":205,"name":206,"nameZh":6,"description":207,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":208,"categories":209,"keywords":216,"publishedAt":38},"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",[210,213],{"categoryNo":211,"categoryName":212,"taxonomyType":194,"taxonomyTypeDesc":195},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":214,"categoryName":215,"taxonomyType":175,"taxonomyTypeDesc":176},"01JBSEEDCAT000000000000036","内容创作者",[217,218,219,220,221,222,223,224,225,226,227,228,37,229,230,231,232,233,234,235],"writer","documentation writer","documentation","entries","changelog","architecture","document","files","use","question","README","notes","examples","pages","for","information","guides","type","writing",{"skillNo":237,"name":238,"nameZh":6,"description":239,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":240,"categories":241,"keywords":242,"publishedAt":38},"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",[],[243,22,244,245,231,246,247,180,248,249,250,251,252,253,254,255,256,257,5,37],"adhd","adhd mode","next","action","kit","output","style","progress","time","back","stop","session","reader","first","REST",{"skillNo":259,"name":260,"nameZh":6,"description":261,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":262,"categories":263,"keywords":264,"publishedAt":38},"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",[],[265,266,267,180,268,269,270,271,272,273,274],"wait","wait what","re","it","missing","message","context","explain","land","last",{"skillNo":276,"name":277,"nameZh":6,"description":278,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":279,"categories":280,"keywords":281,"publishedAt":38},"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",[],[282,283,231,284,285,286,287,179,288,268,289,290],"to questionnaire","questionnaire","person","can","answer","meeting","make","async","decision"]