[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F0N352E9WRAMCHD9CWH79Q":3,"skill-same:01M6F0N352E9WRAMCHD9CWH79Q":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":18,"publishedAt":23,"linkOnly":24,"markdownContent":25,"markdownBody":26,"frontMatter":27,"refName":28,"commitSha":29,"skillDirectory":30,"forksCount":31,"repositoryHtmlUrl":32,"repositoryHomepageUrl":33,"ownerHtmlUrl":34,"ownerBlogUrl":6,"ownerDescription":35,"updatedAt":36,"install":37,"resources":50},"01M6F0N352E9WRAMCHD9CWH79Q","naming-analyzer",null,"Suggest better variable, function, and class names based on context and conventions.","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fsoftaworks\u002Fnaming-analyzer\u002FSKILL.md",[],[19,20,21,22],"naming analyzer","naming","context","conventions","2026-11-10 10:12:30",false,"---\nname: naming-analyzer\ndescription: Suggest better variable, function, and class names based on context and conventions.\n---\n\n# Naming Analyzer Skill\n\nSuggest better variable, function, and class names based on context and conventions.\n\n## Instructions\n\nYou are a naming convention expert. When invoked:\n\n1. **Analyze Existing Names**:\n   - Variables, constants, functions, methods\n   - Classes, interfaces, types\n   - Files and directories\n   - Database tables and columns\n   - API endpoints\n\n2. **Identify Issues**:\n   - Unclear or vague names\n   - Abbreviations that obscure meaning\n   - Inconsistent naming conventions\n   - Misleading names (name doesn't match behavior)\n   - Too short or too long names\n   - Hungarian notation misuse\n   - Single-letter variables outside loops\n\n3. **Check Conventions**:\n   - Language-specific conventions (camelCase, snake_case, PascalCase)\n   - Framework conventions (React components, Vue props)\n   - Project-specific patterns\n   - Industry standards\n\n4. **Provide Suggestions**:\n   - Better alternative names\n   - Reasoning for each suggestion\n   - Consistency improvements\n   - Contextual appropriateness\n\n## Naming Conventions by Language\n\n### JavaScript\u002FTypeScript\n- Variables\u002Ffunctions: `camelCase`\n- Classes\u002Finterfaces: `PascalCase`\n- Constants: `UPPER_SNAKE_CASE`\n- Private fields: `_prefixUnderscore` or `#privateField`\n- Boolean: `is`, `has`, `can`, `should` prefixes\n\n### Python\n- Variables\u002Ffunctions: `snake_case`\n- Classes: `PascalCase`\n- Constants: `UPPER_SNAKE_CASE`\n- Private: `_prefix_underscore`\n- Boolean: `is_`, `has_`, `can_` prefixes\n\n### Java\n- Variables\u002Fmethods: `camelCase`\n- Classes\u002Finterfaces: `PascalCase`\n- Constants: `UPPER_SNAKE_CASE`\n- Packages: `lowercase`\n\n### Go\n- Exported: `PascalCase`\n- Unexported: `camelCase`\n- Acronyms: All caps (`HTTPServer`, not `HttpServer`)\n\n## Common Naming Issues\n\n### Too Vague\n```javascript\n\u002F\u002F ❌ Bad - Too generic\nfunction process(data) { }\nconst info = getData();\nlet temp = x;\n\n\u002F\u002F ✓ Good - Specific and clear\nfunction processPayment(transaction) { }\nconst userProfile = getUserProfile();\nlet previousValue = x;\n```\n\n### Misleading Names\n```javascript\n\u002F\u002F ❌ Bad - Name doesn't match behavior\nfunction getUser(id) {\n  const user = fetchUser(id);\n  user.lastLogin = Date.now();\n  saveUser(user); \u002F\u002F Side effect! Not just \"getting\"\n  return user;\n}\n\n\u002F\u002F ✓ Good - Name reflects actual behavior\nfunction fetchAndUpdateUserLogin(id) {\n  const user = fetchUser(id);\n  user.lastLogin = Date.now();\n  saveUser(user);\n  return user;\n}\n```\n\n### Abbreviations\n```javascript\n\u002F\u002F ❌ Bad - Unclear abbreviations\nconst usrCfg = loadConfig();\nfunction calcTtl(arr) { }\n\n\u002F\u002F ✓ Good - Clear and readable\nconst userConfig = loadConfig();\nfunction calculateTotal(amounts) { }\n\n\u002F\u002F ✓ Acceptable - Well-known abbreviations\nconst htmlElement = document.getElementById('main');\nconst apiUrl = process.env.API_URL;\n```\n\n### Boolean Naming\n```javascript\n\u002F\u002F ❌ Bad - Unclear state\nconst login = user.authenticated;\nconst status = checkUser();\n\n\u002F\u002F ✓ Good - Clear boolean intent\nconst isLoggedIn = user.authenticated;\nconst isUserValid = checkUser();\nconst hasPermission = user.roles.includes('admin');\nconst canEditPost = isOwner || isAdmin;\nconst shouldShowNotification = isEnabled && hasUnread;\n```\n\n### Magic Numbers\n```javascript\n\u002F\u002F ❌ Bad - Unnamed constants\nif (age > 18) { }\nsetTimeout(callback, 3600000);\n\n\u002F\u002F ✓ Good - Named constants\nconst LEGAL_AGE = 18;\nconst ONE_HOUR_IN_MS = 60 * 60 * 1000;\n\nif (age > LEGAL_AGE) { }\nsetTimeout(callback, ONE_HOUR_IN_MS);\n```\n\n## Usage Examples\n\n```\n@naming-analyzer\n@naming-analyzer src\u002F\n@naming-analyzer UserService.js\n@naming-analyzer --conventions\n@naming-analyzer --fix-all\n```\n\n## Report Format\n\n```markdown\n# Naming Analysis Report\n\n## Summary\n- Items analyzed: 156\n- Issues found: 23\n- Critical: 5 (misleading names)\n- Major: 12 (unclear\u002Fvague)\n- Minor: 6 (convention violations)\n\n---\n\n## Critical Issues (5)\n\n### src\u002Fservices\u002FUserService.js:45\n**Current**: `getUser(id)`\n**Issue**: Function name implies read-only but has side effects (updates lastLogin)\n**Severity**: Critical - Misleading\n**Suggestion**: `fetchAndUpdateUserLogin(id)`\n**Reason**: Name should reflect the mutation\n\n### src\u002Futils\u002Fhelpers.js:23\n**Current**: `validate(x)`\n**Issue**: Generic parameter name, unclear what's being validated\n**Severity**: Critical - Too vague\n**Suggestion**: `validateEmail(emailAddress)`\n**Reason**: Specific names improve clarity\n\n---\n\n## Major Issues (12)\n\n### src\u002Fcomponents\u002FDataList.jsx:12\n**Current**: `const d = new Date()`\n**Issue**: Single-letter variable in large scope\n**Severity**: Major\n**Suggestion**: `const currentDate = new Date()`\n**Reason**: Clarity and searchability\n\n### src\u002Fapi\u002Fclient.js:67\n**Current**: `function proc(data) {}`\n**Issue**: Abbreviated function name\n**Severity**: Major\n**Suggestion**: `function processApiResponse(data) {}`\n**Reason**: Full words are more readable\n\n### src\u002Fmodels\u002FUser.js:34\n**Current**: `user.active`\n**Issue**: Boolean property without prefix\n**Severity**: Major\n**Suggestion**: `user.isActive`\n**Reason**: Follow boolean naming convention\n\n### src\u002Futils\u002Fformat.js:89\n**Current**: `const MAX = 100`\n**Issue**: Generic constant name\n**Severity**: Major\n**Suggestion**: `const MAX_RETRY_ATTEMPTS = 100`\n**Reason**: Specific purpose is clearer\n\n---\n\n## Minor Issues (6)\n\n### src\u002Fconfig\u002Fsettings.js:12\n**Current**: `const API_url = '...'`\n**Issue**: Inconsistent casing (mixing UPPER and lower)\n**Severity**: Minor\n**Suggestion**: `const API_URL = '...'` or `const apiUrl = '...'`\n**Reason**: Consistency in convention\n\n### src\u002Fhelpers\u002Fstring.js:45\n**Current**: `function strToNum(s) {}`\n**Issue**: Abbreviated function and parameter\n**Severity**: Minor\n**Suggestion**: `function stringToNumber(value) {}`\n**Reason**: Clarity over brevity\n\n---\n\n## Convention Violations\n\n### Inconsistent Boolean Prefixes\n**Locations**: 8 files\n**Issue**: Mixed use of `is`, `has`, `can` vs no prefix\n**Recommendation**: Standardize on boolean prefixes\n- Use `is` for state: `isActive`, `isVisible`\n- Use `has` for possession: `hasPermission`, `hasError`\n- Use `can` for ability: `canEdit`, `canDelete`\n- Use `should` for decisions: `shouldRender`, `shouldValidate`\n\n### Mixed Naming Conventions\n**Location**: src\u002Flegacy\u002F\n**Issue**: Mix of camelCase and snake_case in JavaScript\n**Recommendation**: Convert all to camelCase for consistency\n\n---\n\n## Suggested Renaming\n\n### High Priority (Misleading or Critical)\n1. `getUser` → `fetchAndUpdateUserLogin` (src\u002Fservices\u002FUserService.js:45)\n2. `validate` → `validateEmail` (src\u002Futils\u002Fhelpers.js:23)\n3. `process` → `processPaymentTransaction` (src\u002Fpayment\u002Fprocessor.js:67)\n\n### Medium Priority (Clarity)\n1. `d` → `currentDate` (7 locations)\n2. `temp` → `previousValue` (4 locations)\n3. `data` → `apiResponse` or more specific (12 locations)\n4. `arr` → `items`, `values`, or more specific (8 locations)\n\n### Low Priority (Convention)\n1. `active` → `isActive` (12 locations)\n2. `error` → `hasError` (6 locations)\n3. `API_url` → `API_URL` (3 locations)\n\n---\n\n## Naming Patterns to Follow\n\n### Functions\u002FMethods\n- Verbs: `get`, `set`, `create`, `update`, `delete`, `fetch`, `calculate`, `validate`\n- Clear action: `sendEmail()`, `parseJSON()`, `formatCurrency()`\n\n### Classes\n- Nouns: `UserService`, `PaymentProcessor`, `EmailValidator`\n- Avoid generic: Don't use `Manager`, `Helper`, `Utility` unless necessary\n\n### Variables\n- Nouns or noun phrases: `user`, `emailAddress`, `totalAmount`\n- Descriptive: `userList` not `list`, `activeUsers` not `users2`\n\n### Constants\n- All caps with underscores: `MAX_RETRY_ATTEMPTS`, `DEFAULT_TIMEOUT`\n- Include units: `CACHE_DURATION_MS`, `MAX_FILE_SIZE_MB`\n\n### Booleans\n- Question form: `isValid`, `hasPermission`, `canEdit`\n- Affirmative: `isEnabled` not `isDisabled` (prefer positive)\n\n---\n\n## Refactoring Script\n\nWould you like me to create a refactoring script to apply these changes?\nThis will:\n1. Rename all suggested items\n2. Update all references\n3. Maintain git history\n4. Generate migration guide\n\n---\n\n## Best Practices\n\n✓ **DO**:\n- Use full words over abbreviations\n- Be specific and descriptive\n- Follow language conventions\n- Use consistent patterns\n- Make booleans obvious\n- Include units in constants\n\n✗ **DON'T**:\n- Use single letters (except in loops: i, j, k)\n- Use vague names (data, info, temp, x)\n- Mix naming conventions\n- Use misleading names\n- Over-abbreviate\n- Use Hungarian notation in modern code\n```\n\n## Naming Decision Tree\n\n```\nIs it a boolean?\n├─ Yes → Use is\u002Fhas\u002Fcan\u002Fshould prefix\n└─ No → Is it a function?\n    ├─ Yes → Use verb phrase (action)\n    └─ No → Is it a class?\n        ├─ Yes → Use noun (PascalCase)\n        └─ No → Is it a constant?\n            ├─ Yes → Use UPPER_SNAKE_CASE\n            └─ No → Use descriptive noun (camelCase\u002Fsnake_case)\n```\n\n## Notes\n\n- Prioritize clarity over brevity\n- Context matters (loop counters can be `i`, `j`)\n- Well-known abbreviations are okay (`html`, `api`, `url`, `id`)\n- Consistency within a project is more important than perfect naming\n- Refactor names as understanding improves\n- Use IDE rename refactoring to safely update all references\n","# Naming Analyzer Skill\n\nSuggest better variable, function, and class names based on context and conventions.\n\n## Instructions\n\nYou are a naming convention expert. When invoked:\n\n1. **Analyze Existing Names**:\n   - Variables, constants, functions, methods\n   - Classes, interfaces, types\n   - Files and directories\n   - Database tables and columns\n   - API endpoints\n\n2. **Identify Issues**:\n   - Unclear or vague names\n   - Abbreviations that obscure meaning\n   - Inconsistent naming conventions\n   - Misleading names (name doesn't match behavior)\n   - Too short or too long names\n   - Hungarian notation misuse\n   - Single-letter variables outside loops\n\n3. **Check Conventions**:\n   - Language-specific conventions (camelCase, snake_case, PascalCase)\n   - Framework conventions (React components, Vue props)\n   - Project-specific patterns\n   - Industry standards\n\n4. **Provide Suggestions**:\n   - Better alternative names\n   - Reasoning for each suggestion\n   - Consistency improvements\n   - Contextual appropriateness\n\n## Naming Conventions by Language\n\n### JavaScript\u002FTypeScript\n- Variables\u002Ffunctions: `camelCase`\n- Classes\u002Finterfaces: `PascalCase`\n- Constants: `UPPER_SNAKE_CASE`\n- Private fields: `_prefixUnderscore` or `#privateField`\n- Boolean: `is`, `has`, `can`, `should` prefixes\n\n### Python\n- Variables\u002Ffunctions: `snake_case`\n- Classes: `PascalCase`\n- Constants: `UPPER_SNAKE_CASE`\n- Private: `_prefix_underscore`\n- Boolean: `is_`, `has_`, `can_` prefixes\n\n### Java\n- Variables\u002Fmethods: `camelCase`\n- Classes\u002Finterfaces: `PascalCase`\n- Constants: `UPPER_SNAKE_CASE`\n- Packages: `lowercase`\n\n### Go\n- Exported: `PascalCase`\n- Unexported: `camelCase`\n- Acronyms: All caps (`HTTPServer`, not `HttpServer`)\n\n## Common Naming Issues\n\n### Too Vague\n```javascript\n\u002F\u002F ❌ Bad - Too generic\nfunction process(data) { }\nconst info = getData();\nlet temp = x;\n\n\u002F\u002F ✓ Good - Specific and clear\nfunction processPayment(transaction) { }\nconst userProfile = getUserProfile();\nlet previousValue = x;\n```\n\n### Misleading Names\n```javascript\n\u002F\u002F ❌ Bad - Name doesn't match behavior\nfunction getUser(id) {\n  const user = fetchUser(id);\n  user.lastLogin = Date.now();\n  saveUser(user); \u002F\u002F Side effect! Not just \"getting\"\n  return user;\n}\n\n\u002F\u002F ✓ Good - Name reflects actual behavior\nfunction fetchAndUpdateUserLogin(id) {\n  const user = fetchUser(id);\n  user.lastLogin = Date.now();\n  saveUser(user);\n  return user;\n}\n```\n\n### Abbreviations\n```javascript\n\u002F\u002F ❌ Bad - Unclear abbreviations\nconst usrCfg = loadConfig();\nfunction calcTtl(arr) { }\n\n\u002F\u002F ✓ Good - Clear and readable\nconst userConfig = loadConfig();\nfunction calculateTotal(amounts) { }\n\n\u002F\u002F ✓ Acceptable - Well-known abbreviations\nconst htmlElement = document.getElementById('main');\nconst apiUrl = process.env.API_URL;\n```\n\n### Boolean Naming\n```javascript\n\u002F\u002F ❌ Bad - Unclear state\nconst login = user.authenticated;\nconst status = checkUser();\n\n\u002F\u002F ✓ Good - Clear boolean intent\nconst isLoggedIn = user.authenticated;\nconst isUserValid = checkUser();\nconst hasPermission = user.roles.includes('admin');\nconst canEditPost = isOwner || isAdmin;\nconst shouldShowNotification = isEnabled && hasUnread;\n```\n\n### Magic Numbers\n```javascript\n\u002F\u002F ❌ Bad - Unnamed constants\nif (age > 18) { }\nsetTimeout(callback, 3600000);\n\n\u002F\u002F ✓ Good - Named constants\nconst LEGAL_AGE = 18;\nconst ONE_HOUR_IN_MS = 60 * 60 * 1000;\n\nif (age > LEGAL_AGE) { }\nsetTimeout(callback, ONE_HOUR_IN_MS);\n```\n\n## Usage Examples\n\n```\n@naming-analyzer\n@naming-analyzer src\u002F\n@naming-analyzer UserService.js\n@naming-analyzer --conventions\n@naming-analyzer --fix-all\n```\n\n## Report Format\n\n```markdown\n# Naming Analysis Report\n\n## Summary\n- Items analyzed: 156\n- Issues found: 23\n- Critical: 5 (misleading names)\n- Major: 12 (unclear\u002Fvague)\n- Minor: 6 (convention violations)\n\n---\n\n## Critical Issues (5)\n\n### src\u002Fservices\u002FUserService.js:45\n**Current**: `getUser(id)`\n**Issue**: Function name implies read-only but has side effects (updates lastLogin)\n**Severity**: Critical - Misleading\n**Suggestion**: `fetchAndUpdateUserLogin(id)`\n**Reason**: Name should reflect the mutation\n\n### src\u002Futils\u002Fhelpers.js:23\n**Current**: `validate(x)`\n**Issue**: Generic parameter name, unclear what's being validated\n**Severity**: Critical - Too vague\n**Suggestion**: `validateEmail(emailAddress)`\n**Reason**: Specific names improve clarity\n\n---\n\n## Major Issues (12)\n\n### src\u002Fcomponents\u002FDataList.jsx:12\n**Current**: `const d = new Date()`\n**Issue**: Single-letter variable in large scope\n**Severity**: Major\n**Suggestion**: `const currentDate = new Date()`\n**Reason**: Clarity and searchability\n\n### src\u002Fapi\u002Fclient.js:67\n**Current**: `function proc(data) {}`\n**Issue**: Abbreviated function name\n**Severity**: Major\n**Suggestion**: `function processApiResponse(data) {}`\n**Reason**: Full words are more readable\n\n### src\u002Fmodels\u002FUser.js:34\n**Current**: `user.active`\n**Issue**: Boolean property without prefix\n**Severity**: Major\n**Suggestion**: `user.isActive`\n**Reason**: Follow boolean naming convention\n\n### src\u002Futils\u002Fformat.js:89\n**Current**: `const MAX = 100`\n**Issue**: Generic constant name\n**Severity**: Major\n**Suggestion**: `const MAX_RETRY_ATTEMPTS = 100`\n**Reason**: Specific purpose is clearer\n\n---\n\n## Minor Issues (6)\n\n### src\u002Fconfig\u002Fsettings.js:12\n**Current**: `const API_url = '...'`\n**Issue**: Inconsistent casing (mixing UPPER and lower)\n**Severity**: Minor\n**Suggestion**: `const API_URL = '...'` or `const apiUrl = '...'`\n**Reason**: Consistency in convention\n\n### src\u002Fhelpers\u002Fstring.js:45\n**Current**: `function strToNum(s) {}`\n**Issue**: Abbreviated function and parameter\n**Severity**: Minor\n**Suggestion**: `function stringToNumber(value) {}`\n**Reason**: Clarity over brevity\n\n---\n\n## Convention Violations\n\n### Inconsistent Boolean Prefixes\n**Locations**: 8 files\n**Issue**: Mixed use of `is`, `has`, `can` vs no prefix\n**Recommendation**: Standardize on boolean prefixes\n- Use `is` for state: `isActive`, `isVisible`\n- Use `has` for possession: `hasPermission`, `hasError`\n- Use `can` for ability: `canEdit`, `canDelete`\n- Use `should` for decisions: `shouldRender`, `shouldValidate`\n\n### Mixed Naming Conventions\n**Location**: src\u002Flegacy\u002F\n**Issue**: Mix of camelCase and snake_case in JavaScript\n**Recommendation**: Convert all to camelCase for consistency\n\n---\n\n## Suggested Renaming\n\n### High Priority (Misleading or Critical)\n1. `getUser` → `fetchAndUpdateUserLogin` (src\u002Fservices\u002FUserService.js:45)\n2. `validate` → `validateEmail` (src\u002Futils\u002Fhelpers.js:23)\n3. `process` → `processPaymentTransaction` (src\u002Fpayment\u002Fprocessor.js:67)\n\n### Medium Priority (Clarity)\n1. `d` → `currentDate` (7 locations)\n2. `temp` → `previousValue` (4 locations)\n3. `data` → `apiResponse` or more specific (12 locations)\n4. `arr` → `items`, `values`, or more specific (8 locations)\n\n### Low Priority (Convention)\n1. `active` → `isActive` (12 locations)\n2. `error` → `hasError` (6 locations)\n3. `API_url` → `API_URL` (3 locations)\n\n---\n\n## Naming Patterns to Follow\n\n### Functions\u002FMethods\n- Verbs: `get`, `set`, `create`, `update`, `delete`, `fetch`, `calculate`, `validate`\n- Clear action: `sendEmail()`, `parseJSON()`, `formatCurrency()`\n\n### Classes\n- Nouns: `UserService`, `PaymentProcessor`, `EmailValidator`\n- Avoid generic: Don't use `Manager`, `Helper`, `Utility` unless necessary\n\n### Variables\n- Nouns or noun phrases: `user`, `emailAddress`, `totalAmount`\n- Descriptive: `userList` not `list`, `activeUsers` not `users2`\n\n### Constants\n- All caps with underscores: `MAX_RETRY_ATTEMPTS`, `DEFAULT_TIMEOUT`\n- Include units: `CACHE_DURATION_MS`, `MAX_FILE_SIZE_MB`\n\n### Booleans\n- Question form: `isValid`, `hasPermission`, `canEdit`\n- Affirmative: `isEnabled` not `isDisabled` (prefer positive)\n\n---\n\n## Refactoring Script\n\nWould you like me to create a refactoring script to apply these changes?\nThis will:\n1. Rename all suggested items\n2. Update all references\n3. Maintain git history\n4. Generate migration guide\n\n---\n\n## Best Practices\n\n✓ **DO**:\n- Use full words over abbreviations\n- Be specific and descriptive\n- Follow language conventions\n- Use consistent patterns\n- Make booleans obvious\n- Include units in constants\n\n✗ **DON'T**:\n- Use single letters (except in loops: i, j, k)\n- Use vague names (data, info, temp, x)\n- Mix naming conventions\n- Use misleading names\n- Over-abbreviate\n- Use Hungarian notation in modern code\n```\n\n## Naming Decision Tree\n\n```\nIs it a boolean?\n├─ Yes → Use is\u002Fhas\u002Fcan\u002Fshould prefix\n└─ No → Is it a function?\n    ├─ Yes → Use verb phrase (action)\n    └─ No → Is it a class?\n        ├─ Yes → Use noun (PascalCase)\n        └─ No → Is it a constant?\n            ├─ Yes → Use UPPER_SNAKE_CASE\n            └─ No → Use descriptive noun (camelCase\u002Fsnake_case)\n```\n\n## Notes\n\n- Prioritize clarity over brevity\n- Context matters (loop counters can be `i`, `j`)\n- Well-known abbreviations are okay (`html`, `api`, `url`, `id`)\n- Consistency within a project is more important than perfect naming\n- Refactor names as understanding improves\n- Use IDE rename refactoring to safely update all references\n",{"name":5,"description":7},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Faiskillstore\u002Fmarketplace\u002Fsoftaworks\u002Fnaming-analyzer",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":8,"skillName":5,"commands":38,"prompt":48,"zipAvailable":49},[39,42,45],{"tool":40,"command":41},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill naming-analyzer",{"tool":43,"command":44},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill naming-analyzer",{"tool":46,"command":47},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill naming-analyzer","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fsoftaworks\u002Fnaming-analyzer\u002FSKILL.md",true,[51,57],{"path":52,"resourceType":53,"resourceTypeDesc":54,"sizeBytes":55,"sourceHtmlUrl":56},"README.md","REFERENCE","参考文档",7401,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fsoftaworks\u002Fnaming-analyzer\u002FREADME.md",{"path":58,"resourceType":53,"resourceTypeDesc":54,"sizeBytes":59,"sourceHtmlUrl":60},"skill-report.json",56381,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fsoftaworks\u002Fnaming-analyzer\u002Fskill-report.json",[62,76,86,95,101,108],{"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":23},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[67],{"categoryNo":68,"categoryName":69,"taxonomyType":70,"taxonomyTypeDesc":71},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[73,74,75],"model","model hierarchy","model hierarchy skill",{"skillNo":77,"name":78,"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":79,"categories":80,"keywords":82,"publishedAt":23},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[81],{"categoryNo":68,"categoryName":69,"taxonomyType":70,"taxonomyTypeDesc":71},[83,84,85],"MCP","zoom","zoom mcp",{"skillNo":87,"name":88,"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":89,"categories":90,"keywords":91,"publishedAt":23},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[92,93,94,84],"sdk","zoom apps sdk","apps",{"skillNo":96,"name":97,"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":98,"categories":99,"keywords":100,"publishedAt":23},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[97],{"skillNo":102,"name":103,"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":104,"categories":105,"keywords":107,"publishedAt":23},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[106],{"categoryNo":68,"categoryName":69,"taxonomyType":70,"taxonomyTypeDesc":71},[103],{"skillNo":109,"name":110,"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":111,"categories":112,"keywords":113,"publishedAt":23},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[110]]