[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6ENGGNKX5VGC4XV1F0G4B0V":3,"skill-same:01M6ENGGNKX5VGC4XV1F0G4B0V":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":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":43,"commitSha":44,"skillDirectory":45,"forksCount":46,"repositoryHtmlUrl":47,"repositoryHomepageUrl":6,"ownerHtmlUrl":48,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":49,"install":50,"resources":62},"01M6ENGGNKX5VGC4XV1F0G4B0V","harden",null,"Improve interface resilience through better error handling, i18n support, text overflow handling, and edge case management. Makes interfaces robust and production-ready. Use when the user asks to harden, make production-ready, handle edge cases, add error states, or fix overflow and i18n issues.","launchpathventures\u002Fditto-os","launchpathventures","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F248658966?v=4","01M6ENF40K8DMPD2Q4YBJX3EWK","01M6ENF4541FAB13MQFNS8RMK8",1,"AGPL-3.0","https:\u002F\u002Fgithub.com\u002Flaunchpathventures\u002Fditto-os\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fharden\u002FSKILL.md",[],[5,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35],"user","make","error","case","add","i18n","ready","use","fix","support","management","text","improve","Production","edge","issues","error handling","resilience","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. Use when the user asks to harden, make production-ready, handle edge cases, add error states, or fix overflow and i18n issues.\nuser-invocable: true\nargument-hint: \"[target]\"\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.","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.",{"name":5,"description":7,"argument-hint":41,"user-invocable":42},"[target]",true,"main","b033b1a8919dbb7c98e97cf24547a2416f65b53e",".agents\u002Fskills\u002Fharden",0,"https:\u002F\u002Fgithub.com\u002Flaunchpathventures\u002Fditto-os","https:\u002F\u002Fgithub.com\u002Flaunchpathventures","2026-06-08 19:31:48",{"source":8,"skillName":5,"commands":51,"prompt":61,"zipAvailable":42},[52,55,58],{"tool":53,"command":54},"npx","npx skills add launchpathventures\u002Fditto-os --skill harden",{"tool":56,"command":57},"bunx","bunx skills add launchpathventures\u002Fditto-os --skill harden",{"tool":59,"command":60},"pnpm","pnpm dlx skills add launchpathventures\u002Fditto-os --skill harden","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flaunchpathventures\u002Fditto-os\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fharden\u002FSKILL.md",[],[64,84,102,123,128,133],{"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":70,"publishedAt":36},"01M6ENJ12VWSMRZ4MW8550AG69","drain-queue","Cross-brief autopilot — claim the oldest ready brief whose Brief NNN deps are satisfied via atomic push, run \u002Fautobuild on each, stop when the queue is empty, blocked, or hits a failure.","https:\u002F\u002Fgithub.com\u002Flaunchpathventures\u002Fditto-os\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fdrain-queue\u002FSKILL.md",[],[71,72,73,74,75,76,77,78,79,80,24,81,82,83],"drain queue","queue","push","autobuild","via","autopilot","empty","claim","max","stop","deps","brief","run",{"skillNo":85,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":90,"publishedAt":36},"01M6ENHXG16WJ4PN8CJHZYNT5T","dev-review","Post-coding exhaustive review — catches integration bugs, runtime crashes, performance issues, and convention drift across all changed files","https:\u002F\u002Fgithub.com\u002Flaunchpathventures\u002Fditto-os\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fdev-review\u002FSKILL.md",[],[91,92,93,94,33,95,96,97,98,99,26,100,101],"dev","review","dev review","performance","post","runtime","across","drift","files","coding","integration",{"skillNo":103,"name":74,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":107,"publishedAt":36},"01M6ENHSZBZFSB69TSV2TWGRJ1","End-to-end autopilot for a single brief — pre-flight, \u002Fdev-builder, fresh-subagent reviewers, push, open PR, mark **PR:** line on feature branch. Stops at the human merge gate.","https:\u002F\u002Fgithub.com\u002Flaunchpathventures\u002Fditto-os\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fautobuild\u002FSKILL.md",[],[74,108,109,82,110,111,112,113,114,76,115,116,117,118,119,120,121,91,122,73],"subagent","merge","open","line","name","merge gate","fresh","end","branch","open pr","feature","human","gate","builder","pr",{"skillNo":124,"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":125,"categories":126,"keywords":127,"publishedAt":36},"01M6ENHPWYMN66EYQBV56HP9CW","https:\u002F\u002Fgithub.com\u002Flaunchpathventures\u002Fditto-os\u002Fblob\u002Fmain\u002F.catalyst\u002Fskills\u002Fdrain-queue\u002FSKILL.md",[],[72,71,24,74,75,76,77,78,79,80,81,82,73,83],{"skillNo":129,"name":86,"nameZh":6,"description":87,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":132,"publishedAt":36},"01M6ENHM3W1A0MY44ZD8D4NWVF","https:\u002F\u002Fgithub.com\u002Flaunchpathventures\u002Fditto-os\u002Fblob\u002Fmain\u002F.catalyst\u002Fskills\u002Fdev-review\u002FSKILL.md",[],[93,91,92,101,33,94,100,95,96,97,98,99,26],{"skillNo":134,"name":74,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":137,"publishedAt":36},"01M6ENHF62C7G6BC4YG44RWFB0","https:\u002F\u002Fgithub.com\u002Flaunchpathventures\u002Fditto-os\u002Fblob\u002Fmain\u002F.catalyst\u002Fskills\u002Fautobuild\u002FSKILL.md",[],[74,120,111,112,114,76,115,118,119,121,116,108,113,110,82,117,73,91,122,109]]