[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CSGNSAQGCC7G5ZNBC565R1":3,"skill-same:01M6CSGNSAQGCC7G5ZNBC565R1":61},{"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":32,"linkOnly":33,"markdownContent":34,"markdownBody":35,"frontMatter":36,"refName":39,"commitSha":40,"skillDirectory":41,"forksCount":42,"repositoryHtmlUrl":43,"repositoryHomepageUrl":43,"ownerHtmlUrl":44,"ownerBlogUrl":6,"ownerDescription":45,"updatedAt":46,"install":47,"resources":60},"01M6CSGNSAQGCC7G5ZNBC565R1","clean-code",null,"This skill embodies the principles of \"Clean Code\" by Robert C. Martin (Uncle Bob). Use it to transform \"code that works\" into \"code that is clean.\"","Sam-06060\u002Fjarvis-assistant","Sam-06060","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F208600848?v=4","01M6CRKT7C7FXD21V6HXF293S0","Samson Frank Ganta","01M6CRKTBEKYFD8YX5Z1GT99EE",6,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fclean-code\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31],"code","clean code","clean","safe","github","https","use","bob","2026-11-10 10:12:30",false,"---\nname: clean-code\ndescription: \"This skill embodies the principles of \\\"Clean Code\\\" by Robert C. Martin (Uncle Bob). Use it to transform \\\"code that works\\\" into \\\"code that is clean.\\\"\"\nrisk: safe\nsource: \"ClawForge (https:\u002F\u002Fgithub.com\u002Fjackjin1997\u002FClawForge)\"\ndate_added: \"2026-02-27\"\n---\n\n# Clean Code Skill\n\nThis skill embodies the principles of \"Clean Code\" by Robert C. Martin (Uncle Bob). Use it to transform \"code that works\" into \"code that is clean.\"\n\n## ? Core Philosophy\n> \"Code is clean if it can be read, and enhanced by a developer other than its original author.\" — Grady Booch\n\n## When to Use\nUse this skill when:\n- **Writing new code**: To ensure high quality from the start.\n- **Reviewing Pull Requests**: To provide constructive, principle-based feedback.\n- **Refactoring legacy code**: To identify and remove code smells.\n- **Improving team standards**: To align on industry-standard best practices.\n\n## 1. Meaningful Names\n- **Use Intention-Revealing Names**: `elapsedTimeInDays` instead of `d`.\n- **Avoid Disinformation**: Don't use `accountList` if it's actually a `Map`.\n- **Make Meaningful Distinctions**: Avoid `ProductData` vs `ProductInfo`.\n- **Use Pronounceable\u002FSearchable Names**: Avoid `genymdhms`.\n- **Class Names**: Use nouns (`Customer`, `WikiPage`). Avoid `Manager`, `Data`.\n- **Method Names**: Use verbs (`postPayment`, `deletePage`).\n\n## 2. Functions\n- **Small!**: Functions should be shorter than you think.\n- **Do One Thing**: A function should do only one thing, and do it well.\n- **One Level of Abstraction**: Don't mix high-level business logic with low-level details (like regex).\n- **Descriptive Names**: `isPasswordValid` is better than `check`.\n- **Arguments**: 0 is ideal, 1-2 is okay, 3+ requires a very strong justification.\n- **No Side Effects**: Functions shouldn't secretly change global state.\n\n## 3. Comments\n- **Don't Comment Bad Code—Rewrite It**: Most comments are a sign of failure to express ourselves in code.\n- **Explain Yourself in Code**: \n  ```python\n  # Check if employee is eligible for full benefits\n  if employee.flags & HOURLY and employee.age > 65:\n  ```\n  vs\n  ```python\n  if employee.isEligibleForFullBenefits():\n  ```\n- **Good Comments**: Legal, Informative (regex intent), Clarification (external libraries), TODOs.\n- **Bad Comments**: Mumbling, Redundant, Misleading, Mandated, Noise, Position Markers.\n\n## 4. Formatting\n- **The Newspaper Metaphor**: High-level concepts at the top, details at the bottom.\n- **Vertical Density**: Related lines should be close to each other.\n- **Distance**: Variables should be declared near their usage.\n- **Indentation**: Essential for structural readability.\n\n## 5. Objects and Data Structures\n- **Data Abstraction**: Hide the implementation behind interfaces.\n- **The Law of Demeter**: A module should not know about the innards of the objects it manipulates. Avoid `a.getB().getC().doSomething()`.\n- **Data Transfer Objects (DTO)**: Classes with public variables and no functions.\n\n## 6. Error Handling\n- **Use Exceptions instead of Return Codes**: Keeps logic clean.\n- **Write Try-Catch-Finally First**: Defines the scope of the operation.\n- **Don't Return Null**: It forces the caller to check for null every time.\n- **Don't Pass Null**: Leads to `NullPointerException`.\n\n## 7. Unit Tests\n- **The Three Laws of TDD**:\n  1. Don't write production code until you have a failing unit test.\n  2. Don't write more of a unit test than is sufficient to fail.\n  3. Don't write more production code than is sufficient to pass the failing test.\n- **F.I.R.S.T. Principles**: Fast, Independent, Repeatable, Self-Validating, Timely.\n\n## 8. Classes\n- **Small!**: Classes should have a single responsibility (SRP).\n- **The Stepdown Rule**: We want the code to read like a top-down narrative.\n\n## 9. Smells and Heuristics\n- **Rigidity**: Hard to change.\n- **Fragility**: Breaks in many places.\n- **Immobility**: Hard to reuse.\n- **Viscosity**: Hard to do the right thing.\n- **Needless Complexity\u002FRepetition**.\n\n## ?️ Implementation Checklist\n- [ ] Is this function smaller than 20 lines?\n- [ ] Does this function do exactly one thing?\n- [ ] Are all names searchable and intention-revealing?\n- [ ] Have I avoided comments by making the code clearer?\n- [ ] Am I passing too many arguments?\n- [ ] Is there a failing test for this change?\n","# Clean Code Skill\n\nThis skill embodies the principles of \"Clean Code\" by Robert C. Martin (Uncle Bob). Use it to transform \"code that works\" into \"code that is clean.\"\n\n## ? Core Philosophy\n> \"Code is clean if it can be read, and enhanced by a developer other than its original author.\" — Grady Booch\n\n## When to Use\nUse this skill when:\n- **Writing new code**: To ensure high quality from the start.\n- **Reviewing Pull Requests**: To provide constructive, principle-based feedback.\n- **Refactoring legacy code**: To identify and remove code smells.\n- **Improving team standards**: To align on industry-standard best practices.\n\n## 1. Meaningful Names\n- **Use Intention-Revealing Names**: `elapsedTimeInDays` instead of `d`.\n- **Avoid Disinformation**: Don't use `accountList` if it's actually a `Map`.\n- **Make Meaningful Distinctions**: Avoid `ProductData` vs `ProductInfo`.\n- **Use Pronounceable\u002FSearchable Names**: Avoid `genymdhms`.\n- **Class Names**: Use nouns (`Customer`, `WikiPage`). Avoid `Manager`, `Data`.\n- **Method Names**: Use verbs (`postPayment`, `deletePage`).\n\n## 2. Functions\n- **Small!**: Functions should be shorter than you think.\n- **Do One Thing**: A function should do only one thing, and do it well.\n- **One Level of Abstraction**: Don't mix high-level business logic with low-level details (like regex).\n- **Descriptive Names**: `isPasswordValid` is better than `check`.\n- **Arguments**: 0 is ideal, 1-2 is okay, 3+ requires a very strong justification.\n- **No Side Effects**: Functions shouldn't secretly change global state.\n\n## 3. Comments\n- **Don't Comment Bad Code—Rewrite It**: Most comments are a sign of failure to express ourselves in code.\n- **Explain Yourself in Code**: \n  ```python\n  # Check if employee is eligible for full benefits\n  if employee.flags & HOURLY and employee.age > 65:\n  ```\n  vs\n  ```python\n  if employee.isEligibleForFullBenefits():\n  ```\n- **Good Comments**: Legal, Informative (regex intent), Clarification (external libraries), TODOs.\n- **Bad Comments**: Mumbling, Redundant, Misleading, Mandated, Noise, Position Markers.\n\n## 4. Formatting\n- **The Newspaper Metaphor**: High-level concepts at the top, details at the bottom.\n- **Vertical Density**: Related lines should be close to each other.\n- **Distance**: Variables should be declared near their usage.\n- **Indentation**: Essential for structural readability.\n\n## 5. Objects and Data Structures\n- **Data Abstraction**: Hide the implementation behind interfaces.\n- **The Law of Demeter**: A module should not know about the innards of the objects it manipulates. Avoid `a.getB().getC().doSomething()`.\n- **Data Transfer Objects (DTO)**: Classes with public variables and no functions.\n\n## 6. Error Handling\n- **Use Exceptions instead of Return Codes**: Keeps logic clean.\n- **Write Try-Catch-Finally First**: Defines the scope of the operation.\n- **Don't Return Null**: It forces the caller to check for null every time.\n- **Don't Pass Null**: Leads to `NullPointerException`.\n\n## 7. Unit Tests\n- **The Three Laws of TDD**:\n  1. Don't write production code until you have a failing unit test.\n  2. Don't write more of a unit test than is sufficient to fail.\n  3. Don't write more production code than is sufficient to pass the failing test.\n- **F.I.R.S.T. Principles**: Fast, Independent, Repeatable, Self-Validating, Timely.\n\n## 8. Classes\n- **Small!**: Classes should have a single responsibility (SRP).\n- **The Stepdown Rule**: We want the code to read like a top-down narrative.\n\n## 9. Smells and Heuristics\n- **Rigidity**: Hard to change.\n- **Fragility**: Breaks in many places.\n- **Immobility**: Hard to reuse.\n- **Viscosity**: Hard to do the right thing.\n- **Needless Complexity\u002FRepetition**.\n\n## ?️ Implementation Checklist\n- [ ] Is this function smaller than 20 lines?\n- [ ] Does this function do exactly one thing?\n- [ ] Are all names searchable and intention-revealing?\n- [ ] Have I avoided comments by making the code clearer?\n- [ ] Am I passing too many arguments?\n- [ ] Is there a failing test for this change?\n",{"name":5,"risk":27,"source":37,"date_added":38,"description":7},"ClawForge (https:\u002F\u002Fgithub.com\u002Fjackjin1997\u002FClawForge)","2026-02-27","main","a50a3aa6b39fb0e1b7db88bef1bfc9c93606e126","modules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fclean-code",0,"https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant","https:\u002F\u002Fgithub.com\u002FSam-06060","Mobile Application Developer | Kotlin | Flutter, KMP, Swfit, Android,Swift UI | Building at Saar It Resources | Creator of Jarvis (AI Assistant)","2026-06-23 05:13:38",{"source":8,"skillName":5,"commands":48,"prompt":58,"zipAvailable":59},[49,52,55],{"tool":50,"command":51},"npx","npx skills add Sam-06060\u002Fjarvis-assistant --skill clean-code",{"tool":53,"command":54},"bunx","bunx skills add Sam-06060\u002Fjarvis-assistant --skill clean-code",{"tool":56,"command":57},"pnpm","pnpm dlx skills add Sam-06060\u002Fjarvis-assistant --skill clean-code","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fclean-code\u002FSKILL.md",true,[],[62,75,92,119,138,164],{"skillNo":63,"name":64,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":72,"publishedAt":32},"01M6GDRVS6FXX3ESH0C9DW01C0","test_skill","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fscratch\u002Ftest_skill\u002FSKILL.md",[67],{"categoryNo":68,"categoryName":69,"taxonomyType":70,"taxonomyTypeDesc":71},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[73,74],"Test Skill","test",{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":32},"01M6GDRQ40HX22MA6XWC31RHHK","zustand-store-ts","Create Zustand stores following established patterns with proper TypeScript types and middleware.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzustand-store-ts\u002FSKILL.md",[],[82,83,84,85,86,87,88,89,90,91],"zustand store ts","zustand","store","with","types","middleware","patterns","community","create","typescript",{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":101,"publishedAt":32},"01M6GDRKEA0WE670SPFWX5GKCN","zoom-automation","Automate Zoom meeting creation, management, recordings, webinars, and participant tracking via Rube MCP (Composio). Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzoom-automation\u002FSKILL.md",[98],{"categoryNo":99,"categoryName":100,"taxonomyType":70,"taxonomyTypeDesc":71},"01JBSEEDCAT000000000000023","Skill与智能体开发",[102,103,104,105,106,107,108,109,110,111,112,113,114,115,89,116,117,118],"automation","zoom automation","zoom","first","Tools","search","MCP","via","meeting","automate","critical","creation","webinars","composio","recordings","management","tracking",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":126,"publishedAt":32},"01M6GDRFS1452PC71JQ38S24HR","zoho-crm-automation","Automate Zoho CRM tasks via Rube MCP (Composio): create\u002Fupdate records, search contacts, manage leads, and convert leads. Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzoho-crm-automation\u002FSKILL.md",[125],{"categoryNo":99,"categoryName":100,"taxonomyType":70,"taxonomyTypeDesc":71},[127,102,128,129,130,131,132,89,107,133,115,134,112,111,106,135,90,136,108,137],"crm automation","zoho crm","crm","zoho crm automation","zoho","leads","contacts","records","update","tasks","manage",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":147,"publishedAt":32},"01M6GDRCKQBAVTGHX5XBH26KPZ","zod-validation-expert","Expert in Zod — TypeScript-first schema validation. Covers parsing, custom errors, refinements, type inference, and integration with React Hook Form, Next.js, and tRPC.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzod-validation-expert\u002FSKILL.md",[144],{"categoryNo":145,"categoryName":146,"taxonomyType":70,"taxonomyTypeDesc":71},"01JBSEEDCAT000000000000009","前端开发",[148,149,150,151,152,91,27,153,154,155,156,157,85,158,159,160,161,89,162,163],"expert","zod","zod validation expert","validation","react","parsing","errors","schema validation","react hook form","hook","trpc","form","type","next","schema","Next.js",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":171,"publishedAt":32},"01M6GDR658B08K4MY0RWD4A6EH","zeroize-audit","Detects missing zeroization of sensitive data in source code and identifies zeroization removed by compiler optimizations, with assembly-level analysis, and control-flow verification. Use for auditing C\u002FC++\u002FRust code handling secrets, keys, passwords, or other sensitive data.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzeroize-audit\u002FSKILL.md",[170],{"categoryNo":99,"categoryName":100,"taxonomyType":70,"taxonomyTypeDesc":71},[172,173,174,175,176,177,178,179,89,180,181,182,183,184,185,186,187,24,188,108],"zeroize audit","audit","write","passwords","get","project","c++","activate","assembly","read","Bash","secrets","analysis","data","flow","verification","rust"]