[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DQDGB2AB53P5YAC0VMQS3B":3,"skill-same:01M6DQDGB2AB53P5YAC0VMQS3B":55},{"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":28,"linkOnly":29,"markdownContent":30,"markdownBody":31,"frontMatter":32,"refName":34,"commitSha":35,"skillDirectory":36,"forksCount":37,"repositoryHtmlUrl":38,"repositoryHomepageUrl":6,"ownerHtmlUrl":39,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":40,"install":41,"resources":54},"01M6DQDGB2AB53P5YAC0VMQS3B","tech-stack:add-typescript-best-practices",null,"Setup TypeScript best practices and code style rules in CLAUDE.md","AntifragileTech\u002Fantifragile-claude-code","AntifragileTech","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F174357194?v=4","01M6DQCYMK4CDSQQAN0ZC72NTV","01M6DQCYS9YPW1WKMQ5TJMPQ43",9,"MIT","https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fdev\u002Fadd-typescript-best-practices\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27],"typescript","best practices","typescript best practices","stack","tech stack:add typescript best practices","code style","setup","code","Rules","style","2026-11-10 10:12:30",false,"---\nname: tech-stack:add-typescript-best-practices\ndescription: Setup TypeScript best practices and code style rules in CLAUDE.md\nargument-hint: Optional argument which practices to add or avoid\n---\n\n# Setup TypeScript Best Practices\n\nCreate or update CLAUDE.md in with following content, \u003Ccritical>write it strictly as it is\u003Ccritical>, do not summaraise or introduce and new additional information:\n\n```markdown\n## Code Style Rules\n\n### General Principles\n\n- **TypeScript**: All code must be strictly typed, leverage TypeScript's type safety features\n\n### Code style rules\n\n- Interfaces over types - use interfaces for object types\n- Use enum for constant values, prefer them over string literals\n- Export all types by default\n- Use type guards instead of type assertions\n\n### Best Practices\n\n#### Library-First Approach\n\n- Common areas where libraries should be preferred:\n  - Date\u002Ftime manipulation → date-fns, dayjs\n  - Form validation → joi, yup, zod\n  - HTTP requests → axios, got\n  - State management → Redux, MobX, Zustand\n  - Utility functions → lodash, ramda\n\n#### Code Quality\n\n- Use destructuring of objects where possible:\n  - Instead of `const name = user.name` use `const { name } = user`\n  - Instead of `const result = await getUser(userId)` use `const { data: user } = await getUser(userId)`\n  - Instead of `const parseData = (data) => data.name` use `const parseData = ({ name }) => name`\n- Use `ms` package for time related configuration and environment variables, instead of multiplying numbers by 1000\n```\n","# Setup TypeScript Best Practices\n\nCreate or update CLAUDE.md in with following content, \u003Ccritical>write it strictly as it is\u003Ccritical>, do not summaraise or introduce and new additional information:\n\n```markdown\n## Code Style Rules\n\n### General Principles\n\n- **TypeScript**: All code must be strictly typed, leverage TypeScript's type safety features\n\n### Code style rules\n\n- Interfaces over types - use interfaces for object types\n- Use enum for constant values, prefer them over string literals\n- Export all types by default\n- Use type guards instead of type assertions\n\n### Best Practices\n\n#### Library-First Approach\n\n- Common areas where libraries should be preferred:\n  - Date\u002Ftime manipulation → date-fns, dayjs\n  - Form validation → joi, yup, zod\n  - HTTP requests → axios, got\n  - State management → Redux, MobX, Zustand\n  - Utility functions → lodash, ramda\n\n#### Code Quality\n\n- Use destructuring of objects where possible:\n  - Instead of `const name = user.name` use `const { name } = user`\n  - Instead of `const result = await getUser(userId)` use `const { data: user } = await getUser(userId)`\n  - Instead of `const parseData = (data) => data.name` use `const parseData = ({ name }) => name`\n- Use `ms` package for time related configuration and environment variables, instead of multiplying numbers by 1000\n```\n",{"name":5,"description":7,"argument-hint":33},"Optional argument which practices to add or avoid","master","c73386b305dec167db7654e0e6feacb462d4f9dc","assets\u002Fskills\u002Fdev\u002Fadd-typescript-best-practices",1,"https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code","https:\u002F\u002Fgithub.com\u002FAntifragileTech","2026-10-02 14:22:14",{"source":8,"skillName":5,"commands":42,"prompt":52,"zipAvailable":53},[43,46,49],{"tool":44,"command":45},"npx","npx skills add AntifragileTech\u002Fantifragile-claude-code --skill \"tech-stack:add-typescript-best-practices\"",{"tool":47,"command":48},"bunx","bunx skills add AntifragileTech\u002Fantifragile-claude-code --skill \"tech-stack:add-typescript-best-practices\"",{"tool":50,"command":51},"pnpm","pnpm dlx skills add AntifragileTech\u002Fantifragile-claude-code --skill \"tech-stack:add-typescript-best-practices\"","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fdev\u002Fadd-typescript-best-practices\u002FSKILL.md",true,[],[56,82,96,110,123,136],{"skillNo":57,"name":58,"nameZh":6,"description":59,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":60,"categories":61,"keywords":75,"publishedAt":28},"01M6DT9Q6VYA615SCXR757TZZ7","writing-skills","Use when creating new skills, editing existing skills, or verifying skills work before deployment","https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fthinking\u002Fwriting-skills\u002FSKILL.md",[62,67,70],{"categoryNo":63,"categoryName":64,"taxonomyType":65,"taxonomyTypeDesc":66},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":68,"categoryName":69,"taxonomyType":65,"taxonomyTypeDesc":66},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":71,"categoryName":72,"taxonomyType":73,"taxonomyTypeDesc":74},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[76,77,78,79,80,81],"writing skills","writing","use","editing","work","deployment",{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":90,"publishedAt":28},"01M6DT9GFHDNY90P41WGAE1TV0","writing-plans","Use when you have a spec or requirements for a multi-step task, before touching code","https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fthinking\u002Fwriting-plans\u002FSKILL.md",[88,89],{"categoryNo":68,"categoryName":69,"taxonomyType":65,"taxonomyTypeDesc":66},{"categoryNo":71,"categoryName":72,"taxonomyType":73,"taxonomyTypeDesc":74},[91,92,77,93,94,78,25,95],"plans","writing plans","requirements","task","spec",{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":104,"publishedAt":28},"01M6DT9C6PFGD86WS3HY7YE3XG","docs:write-concisely","Apply writing rules to any documentation that humans will read. Makes your writing clearer, stronger, and more professional.","https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fthinking\u002Fwrite-concisely\u002FSKILL.md",[102,103],{"categoryNo":68,"categoryName":69,"taxonomyType":65,"taxonomyTypeDesc":66},{"categoryNo":71,"categoryName":72,"taxonomyType":73,"taxonomyTypeDesc":74},[105,106,107,108,26,109,77],"docs:write concisely","write","docs","read","documentation",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":116,"publishedAt":28},"01M6DT98AWQ27P0N1CG97WAG66","kaizen:why","Iterative Five Whys root cause analysis drilling from symptoms to fundamentals","https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fthinking\u002Fwhy\u002FSKILL.md",[],[112,117,118,119,120,121,122],"why","kaizen","issue","five whys","analysis","root cause analysis",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":129,"publishedAt":28},"01M6DT93EH25NAX19R3WGE1P53","verification-loop","A comprehensive verification system for Claude Code sessions.","https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fthinking\u002Fverification-loop\u002FSKILL.md",[],[130,131,132,133,25,134,135],"verification loop","verification","loop","sessions","claude code sessions","system",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":142,"publishedAt":28},"01M6DT90GW7Z7VCN98P9DVYSNC","verification-before-completion","Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always","https:\u002F\u002Fgithub.com\u002FAntifragileTech\u002Fantifragile-claude-code\u002Fblob\u002Fmaster\u002Fassets\u002Fskills\u002Fthinking\u002Fverification-before-completion\u002FSKILL.md",[],[143,131,144,80,78,145,146,147],"verification before completion","commands","evidence","claim","complete"]