[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EWZCZAPPZRCCZW6VWRKB4E":3,"skill-same:01M6EWZCZAPPZRCCZW6VWRKB4E":72},{"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":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":49,"ownerHtmlUrl":50,"ownerBlogUrl":6,"ownerDescription":51,"updatedAt":52,"install":53,"resources":65},"01M6EWZCZAPPZRCCZW6VWRKB4E","harden",null,"Improve interface resilience through better error handling, i18n support, text overflow handling, and edge case management. Makes interfaces robust and production-ready.","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",66,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fpbakaus\u002Fharden\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33],"support","resilience","error handling","edge","Production","improve","text","management","ready","i18n","feature","false","case","error","interface","2026-11-10 10:12:30",false,"---\nname: harden\ndescription: Improve interface resilience through better error handling, i18n support, text overflow handling, and edge case management. Makes interfaces robust and production-ready.\nargs:\n  - name: target\n    description: The feature or area to harden (optional)\n    required: false\nuser-invokable: true\n---\n\nStrengthen interfaces against edge cases, errors, internationalization issues, and real-world usage scenarios that break idealized designs.\n\n## Assess Hardening Needs\n\nIdentify weaknesses and edge cases:\n\n1. **Test with extreme inputs**:\n   - Very long text (names, descriptions, titles)\n   - Very short text (empty, single character)\n   - Special characters (emoji, RTL text, accents)\n   - Large numbers (millions, billions)\n   - Many items (1000+ list items, 50+ options)\n   - No data (empty states)\n\n2. **Test error scenarios**:\n   - Network failures (offline, slow, timeout)\n   - API errors (400, 401, 403, 404, 500)\n   - Validation errors\n   - Permission errors\n   - Rate limiting\n   - Concurrent operations\n\n3. **Test internationalization**:\n   - Long translations (German is often 30% longer than English)\n   - RTL languages (Arabic, Hebrew)\n   - Character sets (Chinese, Japanese, Korean, emoji)\n   - Date\u002Ftime formats\n   - Number formats (1,000 vs 1.000)\n   - Currency symbols\n\n**CRITICAL**: Designs that only work with perfect data aren't production-ready. Harden against reality.\n\n## Hardening Dimensions\n\nSystematically improve resilience:\n\n### Text Overflow & Wrapping\n\n**Long text handling**:\n```css\n\u002F* Single line with ellipsis *\u002F\n.truncate {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n\u002F* Multi-line with clamp *\u002F\n.line-clamp {\n  display: -webkit-box;\n  -webkit-line-clamp: 3;\n  -webkit-box-orient: vertical;\n  overflow: hidden;\n}\n\n\u002F* Allow wrapping *\u002F\n.wrap {\n  word-wrap: break-word;\n  overflow-wrap: break-word;\n  hyphens: auto;\n}\n```\n\n**Flex\u002FGrid overflow**:\n```css\n\u002F* Prevent flex items from overflowing *\u002F\n.flex-item {\n  min-width: 0; \u002F* Allow shrinking below content size *\u002F\n  overflow: hidden;\n}\n\n\u002F* Prevent grid items from overflowing *\u002F\n.grid-item {\n  min-width: 0;\n  min-height: 0;\n}\n```\n\n**Responsive text sizing**:\n- Use `clamp()` for fluid typography\n- Set minimum readable sizes (14px on mobile)\n- Test text scaling (zoom to 200%)\n- Ensure containers expand with text\n\n### Internationalization (i18n)\n\n**Text expansion**:\n- Add 30-40% space budget for translations\n- Use flexbox\u002Fgrid that adapts to content\n- Test with longest language (usually German)\n- Avoid fixed widths on text containers\n\n```jsx\n\u002F\u002F ❌ Bad: Assumes short English text\n\u003Cbutton className=\"w-24\">Submit\u003C\u002Fbutton>\n\n\u002F\u002F ✅ Good: Adapts to content\n\u003Cbutton className=\"px-4 py-2\">Submit\u003C\u002Fbutton>\n```\n\n**RTL (Right-to-Left) support**:\n```css\n\u002F* Use logical properties *\u002F\nmargin-inline-start: 1rem; \u002F* Not margin-left *\u002F\npadding-inline: 1rem; \u002F* Not padding-left\u002Fright *\u002F\nborder-inline-end: 1px solid; \u002F* Not border-right *\u002F\n\n\u002F* Or use dir attribute *\u002F\n[dir=\"rtl\"] .arrow { transform: scaleX(-1); }\n```\n\n**Character set support**:\n- Use UTF-8 encoding everywhere\n- Test with Chinese\u002FJapanese\u002FKorean (CJK) characters\n- Test with emoji (they can be 2-4 bytes)\n- Handle different scripts (Latin, Cyrillic, Arabic, etc.)\n\n**Date\u002FTime formatting**:\n```javascript\n\u002F\u002F ✅ Use Intl API for proper formatting\nnew Intl.DateTimeFormat('en-US').format(date); \u002F\u002F 1\u002F15\u002F2024\nnew Intl.DateTimeFormat('de-DE').format(date); \u002F\u002F 15.1.2024\n\nnew Intl.NumberFormat('en-US', { \n  style: 'currency', \n  currency: 'USD' \n}).format(1234.56); \u002F\u002F $1,234.56\n```\n\n**Pluralization**:\n```javascript\n\u002F\u002F ❌ Bad: Assumes English pluralization\n`${count} item${count !== 1 ? 's' : ''}`\n\n\u002F\u002F ✅ Good: Use proper i18n library\nt('items', { count }) \u002F\u002F Handles complex plural rules\n```\n\n### Error Handling\n\n**Network errors**:\n- Show clear error messages\n- Provide retry button\n- Explain what happened\n- Offer offline mode (if applicable)\n- Handle timeout scenarios\n\n```jsx\n\u002F\u002F Error states with recovery\n{error && (\n  \u003CErrorMessage>\n    \u003Cp>Failed to load data. {error.message}\u003C\u002Fp>\n    \u003Cbutton onClick={retry}>Try again\u003C\u002Fbutton>\n  \u003C\u002FErrorMessage>\n)}\n```\n\n**Form validation errors**:\n- Inline errors near fields\n- Clear, specific messages\n- Suggest corrections\n- Don't block submission unnecessarily\n- Preserve user input on error\n\n**API errors**:\n- Handle each status code appropriately\n  - 400: Show validation errors\n  - 401: Redirect to login\n  - 403: Show permission error\n  - 404: Show not found state\n  - 429: Show rate limit message\n  - 500: Show generic error, offer support\n\n**Graceful degradation**:\n- Core functionality works without JavaScript\n- Images have alt text\n- Progressive enhancement\n- Fallbacks for unsupported features\n\n### Edge Cases & Boundary Conditions\n\n**Empty states**:\n- No items in list\n- No search results\n- No notifications\n- No data to display\n- Provide clear next action\n\n**Loading states**:\n- Initial load\n- Pagination load\n- Refresh\n- Show what's loading (\"Loading your projects...\")\n- Time estimates for long operations\n\n**Large datasets**:\n- Pagination or virtual scrolling\n- Search\u002Ffilter capabilities\n- Performance optimization\n- Don't load all 10,000 items at once\n\n**Concurrent operations**:\n- Prevent double-submission (disable button while loading)\n- Handle race conditions\n- Optimistic updates with rollback\n- Conflict resolution\n\n**Permission states**:\n- No permission to view\n- No permission to edit\n- Read-only mode\n- Clear explanation of why\n\n**Browser compatibility**:\n- Polyfills for modern features\n- Fallbacks for unsupported CSS\n- Feature detection (not browser detection)\n- Test in target browsers\n\n### Input Validation & Sanitization\n\n**Client-side validation**:\n- Required fields\n- Format validation (email, phone, URL)\n- Length limits\n- Pattern matching\n- Custom validation rules\n\n**Server-side validation** (always):\n- Never trust client-side only\n- Validate and sanitize all inputs\n- Protect against injection attacks\n- Rate limiting\n\n**Constraint handling**:\n```html\n\u003C!-- Set clear constraints -->\n\u003Cinput \n  type=\"text\"\n  maxlength=\"100\"\n  pattern=\"[A-Za-z0-9]+\"\n  required\n  aria-describedby=\"username-hint\"\n\u002F>\n\u003Csmall id=\"username-hint\">\n  Letters and numbers only, up to 100 characters\n\u003C\u002Fsmall>\n```\n\n### Accessibility Resilience\n\n**Keyboard navigation**:\n- All functionality accessible via keyboard\n- Logical tab order\n- Focus management in modals\n- Skip links for long content\n\n**Screen reader support**:\n- Proper ARIA labels\n- Announce dynamic changes (live regions)\n- Descriptive alt text\n- Semantic HTML\n\n**Motion sensitivity**:\n```css\n@media (prefers-reduced-motion: reduce) {\n  * {\n    animation-duration: 0.01ms !important;\n    animation-iteration-count: 1 !important;\n    transition-duration: 0.01ms !important;\n  }\n}\n```\n\n**High contrast mode**:\n- Test in Windows high contrast mode\n- Don't rely only on color\n- Provide alternative visual cues\n\n### Performance Resilience\n\n**Slow connections**:\n- Progressive image loading\n- Skeleton screens\n- Optimistic UI updates\n- Offline support (service workers)\n\n**Memory leaks**:\n- Clean up event listeners\n- Cancel subscriptions\n- Clear timers\u002Fintervals\n- Abort pending requests on unmount\n\n**Throttling & Debouncing**:\n```javascript\n\u002F\u002F Debounce search input\nconst debouncedSearch = debounce(handleSearch, 300);\n\n\u002F\u002F Throttle scroll handler\nconst throttledScroll = throttle(handleScroll, 100);\n```\n\n## Testing Strategies\n\n**Manual testing**:\n- Test with extreme data (very long, very short, empty)\n- Test in different languages\n- Test offline\n- Test slow connection (throttle to 3G)\n- Test with screen reader\n- Test keyboard-only navigation\n- Test on old browsers\n\n**Automated testing**:\n- Unit tests for edge cases\n- Integration tests for error scenarios\n- E2E tests for critical paths\n- Visual regression tests\n- Accessibility tests (axe, WAVE)\n\n**IMPORTANT**: Hardening is about expecting the unexpected. Real users will do things you never imagined.\n\n**NEVER**:\n- Assume perfect input (validate everything)\n- Ignore internationalization (design for global)\n- Leave error messages generic (\"Error occurred\")\n- Forget offline scenarios\n- Trust client-side validation alone\n- Use fixed widths for text\n- Assume English-length text\n- Block entire interface when one component errors\n\n## Verify Hardening\n\nTest thoroughly with edge cases:\n\n- **Long text**: Try names with 100+ characters\n- **Emoji**: Use emoji in all text fields\n- **RTL**: Test with Arabic or Hebrew\n- **CJK**: Test with Chinese\u002FJapanese\u002FKorean\n- **Network issues**: Disable internet, throttle connection\n- **Large datasets**: Test with 1000+ items\n- **Concurrent actions**: Click submit 10 times rapidly\n- **Errors**: Force API errors, test all error states\n- **Empty**: Remove all data, test empty states\n\nRemember: You're hardening for production reality, not demo perfection. Expect users to input weird data, lose connection mid-flow, and use your product in unexpected ways. Build resilience into every component.\n\n","Strengthen interfaces against edge cases, errors, internationalization issues, and real-world usage scenarios that break idealized designs.\n\n## Assess Hardening Needs\n\nIdentify weaknesses and edge cases:\n\n1. **Test with extreme inputs**:\n   - Very long text (names, descriptions, titles)\n   - Very short text (empty, single character)\n   - Special characters (emoji, RTL text, accents)\n   - Large numbers (millions, billions)\n   - Many items (1000+ list items, 50+ options)\n   - No data (empty states)\n\n2. **Test error scenarios**:\n   - Network failures (offline, slow, timeout)\n   - API errors (400, 401, 403, 404, 500)\n   - Validation errors\n   - Permission errors\n   - Rate limiting\n   - Concurrent operations\n\n3. **Test internationalization**:\n   - Long translations (German is often 30% longer than English)\n   - RTL languages (Arabic, Hebrew)\n   - Character sets (Chinese, Japanese, Korean, emoji)\n   - Date\u002Ftime formats\n   - Number formats (1,000 vs 1.000)\n   - Currency symbols\n\n**CRITICAL**: Designs that only work with perfect data aren't production-ready. Harden against reality.\n\n## Hardening Dimensions\n\nSystematically improve resilience:\n\n### Text Overflow & Wrapping\n\n**Long text handling**:\n```css\n\u002F* Single line with ellipsis *\u002F\n.truncate {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n\u002F* Multi-line with clamp *\u002F\n.line-clamp {\n  display: -webkit-box;\n  -webkit-line-clamp: 3;\n  -webkit-box-orient: vertical;\n  overflow: hidden;\n}\n\n\u002F* Allow wrapping *\u002F\n.wrap {\n  word-wrap: break-word;\n  overflow-wrap: break-word;\n  hyphens: auto;\n}\n```\n\n**Flex\u002FGrid overflow**:\n```css\n\u002F* Prevent flex items from overflowing *\u002F\n.flex-item {\n  min-width: 0; \u002F* Allow shrinking below content size *\u002F\n  overflow: hidden;\n}\n\n\u002F* Prevent grid items from overflowing *\u002F\n.grid-item {\n  min-width: 0;\n  min-height: 0;\n}\n```\n\n**Responsive text sizing**:\n- Use `clamp()` for fluid typography\n- Set minimum readable sizes (14px on mobile)\n- Test text scaling (zoom to 200%)\n- Ensure containers expand with text\n\n### Internationalization (i18n)\n\n**Text expansion**:\n- Add 30-40% space budget for translations\n- Use flexbox\u002Fgrid that adapts to content\n- Test with longest language (usually German)\n- Avoid fixed widths on text containers\n\n```jsx\n\u002F\u002F ❌ Bad: Assumes short English text\n\u003Cbutton className=\"w-24\">Submit\u003C\u002Fbutton>\n\n\u002F\u002F ✅ Good: Adapts to content\n\u003Cbutton className=\"px-4 py-2\">Submit\u003C\u002Fbutton>\n```\n\n**RTL (Right-to-Left) support**:\n```css\n\u002F* Use logical properties *\u002F\nmargin-inline-start: 1rem; \u002F* Not margin-left *\u002F\npadding-inline: 1rem; \u002F* Not padding-left\u002Fright *\u002F\nborder-inline-end: 1px solid; \u002F* Not border-right *\u002F\n\n\u002F* Or use dir attribute *\u002F\n[dir=\"rtl\"] .arrow { transform: scaleX(-1); }\n```\n\n**Character set support**:\n- Use UTF-8 encoding everywhere\n- Test with Chinese\u002FJapanese\u002FKorean (CJK) characters\n- Test with emoji (they can be 2-4 bytes)\n- Handle different scripts (Latin, Cyrillic, Arabic, etc.)\n\n**Date\u002FTime formatting**:\n```javascript\n\u002F\u002F ✅ Use Intl API for proper formatting\nnew Intl.DateTimeFormat('en-US').format(date); \u002F\u002F 1\u002F15\u002F2024\nnew Intl.DateTimeFormat('de-DE').format(date); \u002F\u002F 15.1.2024\n\nnew Intl.NumberFormat('en-US', { \n  style: 'currency', \n  currency: 'USD' \n}).format(1234.56); \u002F\u002F $1,234.56\n```\n\n**Pluralization**:\n```javascript\n\u002F\u002F ❌ Bad: Assumes English pluralization\n`${count} item${count !== 1 ? 's' : ''}`\n\n\u002F\u002F ✅ Good: Use proper i18n library\nt('items', { count }) \u002F\u002F Handles complex plural rules\n```\n\n### Error Handling\n\n**Network errors**:\n- Show clear error messages\n- Provide retry button\n- Explain what happened\n- Offer offline mode (if applicable)\n- Handle timeout scenarios\n\n```jsx\n\u002F\u002F Error states with recovery\n{error && (\n  \u003CErrorMessage>\n    \u003Cp>Failed to load data. {error.message}\u003C\u002Fp>\n    \u003Cbutton onClick={retry}>Try again\u003C\u002Fbutton>\n  \u003C\u002FErrorMessage>\n)}\n```\n\n**Form validation errors**:\n- Inline errors near fields\n- Clear, specific messages\n- Suggest corrections\n- Don't block submission unnecessarily\n- Preserve user input on error\n\n**API errors**:\n- Handle each status code appropriately\n  - 400: Show validation errors\n  - 401: Redirect to login\n  - 403: Show permission error\n  - 404: Show not found state\n  - 429: Show rate limit message\n  - 500: Show generic error, offer support\n\n**Graceful degradation**:\n- Core functionality works without JavaScript\n- Images have alt text\n- Progressive enhancement\n- Fallbacks for unsupported features\n\n### Edge Cases & Boundary Conditions\n\n**Empty states**:\n- No items in list\n- No search results\n- No notifications\n- No data to display\n- Provide clear next action\n\n**Loading states**:\n- Initial load\n- Pagination load\n- Refresh\n- Show what's loading (\"Loading your projects...\")\n- Time estimates for long operations\n\n**Large datasets**:\n- Pagination or virtual scrolling\n- Search\u002Ffilter capabilities\n- Performance optimization\n- Don't load all 10,000 items at once\n\n**Concurrent operations**:\n- Prevent double-submission (disable button while loading)\n- Handle race conditions\n- Optimistic updates with rollback\n- Conflict resolution\n\n**Permission states**:\n- No permission to view\n- No permission to edit\n- Read-only mode\n- Clear explanation of why\n\n**Browser compatibility**:\n- Polyfills for modern features\n- Fallbacks for unsupported CSS\n- Feature detection (not browser detection)\n- Test in target browsers\n\n### Input Validation & Sanitization\n\n**Client-side validation**:\n- Required fields\n- Format validation (email, phone, URL)\n- Length limits\n- Pattern matching\n- Custom validation rules\n\n**Server-side validation** (always):\n- Never trust client-side only\n- Validate and sanitize all inputs\n- Protect against injection attacks\n- Rate limiting\n\n**Constraint handling**:\n```html\n\u003C!-- Set clear constraints -->\n\u003Cinput \n  type=\"text\"\n  maxlength=\"100\"\n  pattern=\"[A-Za-z0-9]+\"\n  required\n  aria-describedby=\"username-hint\"\n\u002F>\n\u003Csmall id=\"username-hint\">\n  Letters and numbers only, up to 100 characters\n\u003C\u002Fsmall>\n```\n\n### Accessibility Resilience\n\n**Keyboard navigation**:\n- All functionality accessible via keyboard\n- Logical tab order\n- Focus management in modals\n- Skip links for long content\n\n**Screen reader support**:\n- Proper ARIA labels\n- Announce dynamic changes (live regions)\n- Descriptive alt text\n- Semantic HTML\n\n**Motion sensitivity**:\n```css\n@media (prefers-reduced-motion: reduce) {\n  * {\n    animation-duration: 0.01ms !important;\n    animation-iteration-count: 1 !important;\n    transition-duration: 0.01ms !important;\n  }\n}\n```\n\n**High contrast mode**:\n- Test in Windows high contrast mode\n- Don't rely only on color\n- Provide alternative visual cues\n\n### Performance Resilience\n\n**Slow connections**:\n- Progressive image loading\n- Skeleton screens\n- Optimistic UI updates\n- Offline support (service workers)\n\n**Memory leaks**:\n- Clean up event listeners\n- Cancel subscriptions\n- Clear timers\u002Fintervals\n- Abort pending requests on unmount\n\n**Throttling & Debouncing**:\n```javascript\n\u002F\u002F Debounce search input\nconst debouncedSearch = debounce(handleSearch, 300);\n\n\u002F\u002F Throttle scroll handler\nconst throttledScroll = throttle(handleScroll, 100);\n```\n\n## Testing Strategies\n\n**Manual testing**:\n- Test with extreme data (very long, very short, empty)\n- Test in different languages\n- Test offline\n- Test slow connection (throttle to 3G)\n- Test with screen reader\n- Test keyboard-only navigation\n- Test on old browsers\n\n**Automated testing**:\n- Unit tests for edge cases\n- Integration tests for error scenarios\n- E2E tests for critical paths\n- Visual regression tests\n- Accessibility tests (axe, WAVE)\n\n**IMPORTANT**: Hardening is about expecting the unexpected. Real users will do things you never imagined.\n\n**NEVER**:\n- Assume perfect input (validate everything)\n- Ignore internationalization (design for global)\n- Leave error messages generic (\"Error occurred\")\n- Forget offline scenarios\n- Trust client-side validation alone\n- Use fixed widths for text\n- Assume English-length text\n- Block entire interface when one component errors\n\n## Verify Hardening\n\nTest thoroughly with edge cases:\n\n- **Long text**: Try names with 100+ characters\n- **Emoji**: Use emoji in all text fields\n- **RTL**: Test with Arabic or Hebrew\n- **CJK**: Test with Chinese\u002FJapanese\u002FKorean\n- **Network issues**: Disable internet, throttle connection\n- **Large datasets**: Test with 1000+ items\n- **Concurrent actions**: Click submit 10 times rapidly\n- **Errors**: Force API errors, test all error states\n- **Empty**: Remove all data, test empty states\n\nRemember: You're hardening for production reality, not demo perfection. Expect users to input weird data, lose connection mid-flow, and use your product in unexpected ways. Build resilience into every component.\n\n",{"args":39,"name":5,"description":7,"user-invokable":43},[40],{"name":41,"required":35,"description":42},"target","The feature or area to harden (optional)",true,"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Faiskillstore\u002Fmarketplace\u002Fpbakaus\u002Fharden",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":54,"prompt":64,"zipAvailable":43},[55,58,61],{"tool":56,"command":57},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill harden",{"tool":59,"command":60},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill harden",{"tool":62,"command":63},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill harden","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fpbakaus\u002Fharden\u002FSKILL.md",[66],{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"skill-report.json","REFERENCE","参考文档",12397,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fpbakaus\u002Fharden\u002Fskill-report.json",[73,87,97,106,112,119],{"skillNo":74,"name":75,"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":76,"categories":77,"keywords":83,"publishedAt":34},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[78],{"categoryNo":79,"categoryName":80,"taxonomyType":81,"taxonomyTypeDesc":82},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[84,85,86],"model","model hierarchy","model hierarchy skill",{"skillNo":88,"name":89,"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":90,"categories":91,"keywords":93,"publishedAt":34},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[92],{"categoryNo":79,"categoryName":80,"taxonomyType":81,"taxonomyTypeDesc":82},[94,95,96],"MCP","zoom","zoom mcp",{"skillNo":98,"name":99,"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":100,"categories":101,"keywords":102,"publishedAt":34},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[103,104,105,95],"sdk","zoom apps sdk","apps",{"skillNo":107,"name":108,"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":109,"categories":110,"keywords":111,"publishedAt":34},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[108],{"skillNo":113,"name":114,"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":115,"categories":116,"keywords":118,"publishedAt":34},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[117],{"categoryNo":79,"categoryName":80,"taxonomyType":81,"taxonomyTypeDesc":82},[114],{"skillNo":120,"name":121,"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":122,"categories":123,"keywords":124,"publishedAt":34},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[121]]