[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71Q84YZDKFA84NF29H07MDF":3,"skill-same:01M71Q84YZDKFA84NF29H07MDF":63},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":30,"linkOnly":31,"markdownContent":32,"markdownBody":33,"frontMatter":34,"refName":35,"commitSha":36,"skillDirectory":37,"forksCount":38,"repositoryHtmlUrl":39,"repositoryHomepageUrl":40,"ownerHtmlUrl":41,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":42,"install":43,"resources":56},"01M71Q84YZDKFA84NF29H07MDF","setup-pre-commit",null,"在当前仓库设置 Husky pre-commit hooks，集成 lint-staged (Prettier)、类型检查和测试。适用于用户想添加 pre-commit hooks、设置 Husky、配置 lint-staged，或在提交时运行格式化、类型检查和测试时。","vinvcn\u002Fmattpocock-skills-zh-CN","vinvcn","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F120928190?v=4","01M71Q60C4V98DEXHGN2VXFSZB","01M71Q60D6PRAJHKQRY33ZNE59",5679,"MIT","https:\u002F\u002Fgithub.com\u002Fvinvcn\u002Fmattpocock-skills-zh-CN\u002Fblob\u002Fmain\u002Fskills\u002Fmisc\u002Fsetup-pre-commit\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29],"commit","setup","setup pre commit","pre commit","testing","lint","pre-commit","格式化","hooks","prettier","husky","staged","2026-11-10 13:02:02",false,"---\nname: setup-pre-commit\ndescription: 在当前仓库设置 Husky pre-commit hooks，集成 lint-staged (Prettier)、类型检查和测试。适用于用户想添加 pre-commit hooks、设置 Husky、配置 lint-staged，或在提交时运行格式化、类型检查和测试时。\n---\n\n# 设置 Pre-Commit Hooks\n\n## 这会配置什么\n\n- **Husky** pre-commit hook\n- **lint-staged** 对所有 staged files 运行 Prettier\n- **Prettier** config（如果缺失）\n- pre-commit hook 中的 **typecheck** 和 **test** scripts\n\n## 步骤\n\n### 1. 检测 package manager\n\n检查 `package-lock.json` (npm)、`pnpm-lock.yaml` (pnpm)、`yarn.lock` (yarn)、`bun.lockb` (bun)。使用存在的那个。不清楚时默认 npm。\n\n### 2. 安装依赖\n\n作为 devDependencies 安装：\n\n```\nhusky lint-staged prettier\n```\n\n### 3. 初始化 Husky\n\n```bash\nnpx husky init\n```\n\n这会创建 `.husky\u002F` dir，并向 package.json 添加 `prepare: \"husky\"`。\n\n### 4. 创建 `.husky\u002Fpre-commit`\n\n写入这个文件（Husky v9+ 不需要 shebang）：\n\n```\nnpx lint-staged\nnpm run typecheck\nnpm run test\n```\n\n**Adapt**：把 `npm` 替换为检测到的 package manager。如果 repo 的 package.json 没有 `typecheck` 或 `test` script，就省略对应行并告知用户。\n\n### 5. 创建 `.lintstagedrc`\n\n```json\n{\n  \"*\": \"prettier --ignore-unknown --write\"\n}\n```\n\n### 6. 创建 `.prettierrc`（如果缺失）\n\n只有没有 Prettier config 时才创建。使用这些 defaults：\n\n```json\n{\n  \"useTabs\": false,\n  \"tabWidth\": 2,\n  \"printWidth\": 80,\n  \"singleQuote\": false,\n  \"trailingComma\": \"es5\",\n  \"semi\": true,\n  \"arrowParens\": \"always\"\n}\n```\n\n### 7. 验证\n\n- [ ] `.husky\u002Fpre-commit` 存在且可执行\n- [ ] `.lintstagedrc` 存在\n- [ ] package.json 中的 `prepare` script 是 `\"husky\"`\n- [ ] prettier config 存在\n- [ ] 运行 `npx lint-staged` 验证可用\n\n### 8. 提交\n\nStage 所有 changed\u002Fcreated files，并用 message 提交：`Add pre-commit hooks (husky + lint-staged + prettier)`\n\n这会经过新的 pre-commit hooks，是一个不错的 smoke test。\n\n## 备注\n\n- Husky v9+ 不需要 hook files 中的 shebangs\n- `prettier --ignore-unknown` 会跳过 Prettier 无法 parse 的 files（images 等）\n- pre-commit 先运行 lint-staged（快，只针对 staged files），再运行完整 typecheck 和 tests\n","# 设置 Pre-Commit Hooks\n\n## 这会配置什么\n\n- **Husky** pre-commit hook\n- **lint-staged** 对所有 staged files 运行 Prettier\n- **Prettier** config（如果缺失）\n- pre-commit hook 中的 **typecheck** 和 **test** scripts\n\n## 步骤\n\n### 1. 检测 package manager\n\n检查 `package-lock.json` (npm)、`pnpm-lock.yaml` (pnpm)、`yarn.lock` (yarn)、`bun.lockb` (bun)。使用存在的那个。不清楚时默认 npm。\n\n### 2. 安装依赖\n\n作为 devDependencies 安装：\n\n```\nhusky lint-staged prettier\n```\n\n### 3. 初始化 Husky\n\n```bash\nnpx husky init\n```\n\n这会创建 `.husky\u002F` dir，并向 package.json 添加 `prepare: \"husky\"`。\n\n### 4. 创建 `.husky\u002Fpre-commit`\n\n写入这个文件（Husky v9+ 不需要 shebang）：\n\n```\nnpx lint-staged\nnpm run typecheck\nnpm run test\n```\n\n**Adapt**：把 `npm` 替换为检测到的 package manager。如果 repo 的 package.json 没有 `typecheck` 或 `test` script，就省略对应行并告知用户。\n\n### 5. 创建 `.lintstagedrc`\n\n```json\n{\n  \"*\": \"prettier --ignore-unknown --write\"\n}\n```\n\n### 6. 创建 `.prettierrc`（如果缺失）\n\n只有没有 Prettier config 时才创建。使用这些 defaults：\n\n```json\n{\n  \"useTabs\": false,\n  \"tabWidth\": 2,\n  \"printWidth\": 80,\n  \"singleQuote\": false,\n  \"trailingComma\": \"es5\",\n  \"semi\": true,\n  \"arrowParens\": \"always\"\n}\n```\n\n### 7. 验证\n\n- [ ] `.husky\u002Fpre-commit` 存在且可执行\n- [ ] `.lintstagedrc` 存在\n- [ ] package.json 中的 `prepare` script 是 `\"husky\"`\n- [ ] prettier config 存在\n- [ ] 运行 `npx lint-staged` 验证可用\n\n### 8. 提交\n\nStage 所有 changed\u002Fcreated files，并用 message 提交：`Add pre-commit hooks (husky + lint-staged + prettier)`\n\n这会经过新的 pre-commit hooks，是一个不错的 smoke test。\n\n## 备注\n\n- Husky v9+ 不需要 hook files 中的 shebangs\n- `prettier --ignore-unknown` 会跳过 Prettier 无法 parse 的 files（images 等）\n- pre-commit 先运行 lint-staged（快，只针对 staged files），再运行完整 typecheck 和 tests\n",{"name":5,"description":7},"main","c5c5e87cc1df26aeb7dba345ad9f846434d2b3d4","skills\u002Fmisc\u002Fsetup-pre-commit",441,"https:\u002F\u002Fgithub.com\u002Fvinvcn\u002Fmattpocock-skills-zh-CN","https:\u002F\u002Fskills.sh\u002Fvinvcn\u002Fmattpocock-skills-zh-CN","https:\u002F\u002Fgithub.com\u002Fvinvcn","2026-11-10 17:40:42",{"source":8,"skillName":5,"commands":44,"prompt":54,"zipAvailable":55},[45,48,51],{"tool":46,"command":47},"npx","npx skills add vinvcn\u002Fmattpocock-skills-zh-CN --skill setup-pre-commit",{"tool":49,"command":50},"bunx","bunx skills add vinvcn\u002Fmattpocock-skills-zh-CN --skill setup-pre-commit",{"tool":52,"command":53},"pnpm","pnpm dlx skills add vinvcn\u002Fmattpocock-skills-zh-CN --skill setup-pre-commit","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fvinvcn\u002Fmattpocock-skills-zh-CN\u002Fblob\u002Fmain\u002Fskills\u002Fmisc\u002Fsetup-pre-commit\u002FSKILL.md",true,[57],{"path":58,"resourceType":59,"resourceTypeDesc":60,"sizeBytes":61,"sourceHtmlUrl":62},"agents\u002Fopenai.yaml","REFERENCE","参考文档",97,"https:\u002F\u002Fgithub.com\u002Fvinvcn\u002Fmattpocock-skills-zh-CN\u002Fblob\u002Fmain\u002Fskills\u002Fmisc\u002Fsetup-pre-commit\u002Fagents\u002Fopenai.yaml",[64,88,98,108,118,127],{"skillNo":65,"name":66,"nameZh":6,"description":67,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":83,"publishedAt":30},"01M71Q8F3M8YFP6WYVYQP61KBT","writing-for-agents","为 agent 编写文档。适用于创建或编辑 skills，或修改 AGENTS.md 或 CLAUDE.md 时。","https:\u002F\u002Fgithub.com\u002Fvinvcn\u002Fmattpocock-skills-zh-CN\u002Fblob\u002Fmain\u002Fskills\u002Fproductivity\u002Fwriting-for-agents\u002FSKILL.md",[70,75,78],{"categoryNo":71,"categoryName":72,"taxonomyType":73,"taxonomyTypeDesc":74},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",{"categoryNo":76,"categoryName":77,"taxonomyType":73,"taxonomyTypeDesc":74},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":79,"categoryName":80,"taxonomyType":81,"taxonomyTypeDesc":82},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[84,85,86,87],"for","writing for agents","writing","文档",{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":30},"01M71Q8DHRPYE6R648CQ7NAHYN","wait-what","停一下：刚才那条消息没有说清楚，重新表述一遍。","https:\u002F\u002Fgithub.com\u002Fvinvcn\u002Fmattpocock-skills-zh-CN\u002Fblob\u002Fmain\u002Fskills\u002Fproductivity\u002Fwait-what\u002FSKILL.md",[],[95,96,97],"wait","wait what","true",{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":104,"publishedAt":30},"01M71Q8C8CBSRJRP8Y0JRZ7RJ7","to-questionnaire","把你无法完整回答的 decision 转成一份交给他人填写的 questionnaire。","https:\u002F\u002Fgithub.com\u002Fvinvcn\u002Fmattpocock-skills-zh-CN\u002Fblob\u002Fmain\u002Fskills\u002Fproductivity\u002Fto-questionnaire\u002FSKILL.md",[],[105,106,107,97],"questionnaire","to questionnaire","decision",{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":117,"publishedAt":30},"01M71Q8ASS9A6P84PSC02YFKHB","teach","在这个工作区中教用户一个新技能或概念。","https:\u002F\u002Fgithub.com\u002Fvinvcn\u002Fmattpocock-skills-zh-CN\u002Fblob\u002Fmain\u002Fskills\u002Fproductivity\u002Fteach\u002FSKILL.md",[114],{"categoryNo":115,"categoryName":116,"taxonomyType":81,"taxonomyTypeDesc":82},"01JBSEEDCAT000000000000039","教师与教育",[110,97],{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":124,"publishedAt":30},"01M71Q89C2C2QRR3J3H64ZKH0P","handoff","把当前对话压缩成交接文档，让另一个代理接手。","https:\u002F\u002Fgithub.com\u002Fvinvcn\u002Fmattpocock-skills-zh-CN\u002Fblob\u002Fmain\u002Fskills\u002Fproductivity\u002Fhandoff\u002FSKILL.md",[],[120,97,125,126,87],"对话","压缩",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":133,"publishedAt":30},"01M71Q883CXWF0BGDQC3Y8TJZ2","grilling","围绕计划、decision 或 idea 持续追问用户。适用于用户想对自己的思路做压力测试，或使用任何 “grill” 触发措辞时。","https:\u002F\u002Fgithub.com\u002Fvinvcn\u002Fmattpocock-skills-zh-CN\u002Fblob\u002Fmain\u002Fskills\u002Fproductivity\u002Fgrilling\u002FSKILL.md",[],[129,134,135,107,22],"idea","grill"]