[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6P81TDMRPJD045D292AN0DZ":3,"skill-same:01M6P81TDMRPJD045D292AN0DZ":79},{"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":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":14,"repositoryHtmlUrl":47,"repositoryHomepageUrl":6,"ownerHtmlUrl":48,"ownerBlogUrl":6,"ownerDescription":49,"updatedAt":50,"install":51,"resources":64},"01M6P81TDMRPJD045D292AN0DZ","component-refactoring",null,"Refactor high-complexity React components by reducing branching, extracting hooks, or splitting components. USE FOR: \"reduce high measured complexity in a large React component\", \"extract stateful logic into hooks and split a complex component\". DO NOT USE FOR: simple or well-structured components, third-party wrappers, or requests that explicitly ask for tests without refactoring.","sarthchawla\u002FSetupMyAI","sarthchawla","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F41484686?v=4","01M6P7D22NFMY9MA11Q2YGPKV2","Sarthak Chawla","01M6P7D26JJ9KW98SD1G8BB83R",0,"MIT","https:\u002F\u002Fgithub.com\u002Fsarthchawla\u002FSetupMyAI\u002Fblob\u002Fmain\u002Fpackages\u002Freact-frontend\u002Fskills\u002Fcomponent-refactoring\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"component","refactoring","component refactoring","simple","stateful","reduce","for","split","extracting","branching","tests","do","components","complexity","hooks","use","ask","refactor","react components","react","2026-11-10 10:12:30",false,"---\nname: component-refactoring\ndescription: 'Refactor high-complexity React components by reducing branching, extracting hooks, or splitting components. USE FOR: \"reduce high measured complexity in a large React component\", \"extract stateful logic into hooks and split a complex component\". DO NOT USE FOR: simple or well-structured components, third-party wrappers, or requests that explicitly ask for tests without refactoring.'\n---\n\n# Component Refactoring Skill\n\nRefactor high-complexity React components with the patterns and workflow below.\n\n> **Complexity Threshold**: Components with complexity > 50 should be refactored before testing.\n\n## Quick Reference\n\n### Complexity Score Interpretation\n\n| Score | Level | Action |\n|-------|-------|--------|\n| 0-25 | Simple | Ready for testing |\n| 26-50 | Medium | Consider minor refactoring |\n| 51-75 | Complex | **Refactor before testing** |\n| 76-100 | Very Complex | **Must refactor** |\n\n## Core Refactoring Patterns\n\n### Pattern 1: Extract Custom Hooks\n\n**When**: Component has complex state management, multiple `useState`\u002F`useEffect`, or business logic mixed with UI.\n\n**Convention**: Place hooks in a `hooks\u002F` subdirectory or alongside the component as `use-\u003Cfeature>.ts`.\n\n```typescript\n\u002F\u002F Before: Complex state logic in component\nconst Configuration: FC = () => {\n  const [modelConfig, setModelConfig] = useState\u003CModelConfig>(...)\n  const [datasetConfigs, setDatasetConfigs] = useState\u003CDatasetConfigs>(...)\n  const [completionParams, setCompletionParams] = useState\u003CFormValue>({})\n  \n  \u002F\u002F 50+ lines of state management logic...\n  \n  return \u003Cdiv>...\u003C\u002Fdiv>\n}\n\n\u002F\u002F After: Extract to custom hook\n\u002F\u002F hooks\u002Fuse-model-config.ts\nexport const useModelConfig = (appId: string) => {\n  const [modelConfig, setModelConfig] = useState\u003CModelConfig>(...)\n  const [completionParams, setCompletionParams] = useState\u003CFormValue>({})\n  \n  \u002F\u002F Related state management logic here\n  \n  return { modelConfig, setModelConfig, completionParams, setCompletionParams }\n}\n\n\u002F\u002F Component becomes cleaner\nconst Configuration: FC = () => {\n  const { modelConfig, setModelConfig } = useModelConfig(appId)\n  return \u003Cdiv>...\u003C\u002Fdiv>\n}\n```\n\n### Pattern 2: Extract Sub-Components\n\n**When**: Single component has multiple UI sections, conditional rendering blocks, or repeated patterns.\n\n**Convention**: Place sub-components in subdirectories or as separate files in the same directory.\n\n```typescript\n\u002F\u002F Before: Monolithic JSX with multiple sections\nconst AppInfo = () => {\n  return (\n    \u003Cdiv>\n      {\u002F* 100 lines of header UI *\u002F}\n      {\u002F* 100 lines of operations UI *\u002F}\n      {\u002F* 100 lines of modals *\u002F}\n    \u003C\u002Fdiv>\n  )\n}\n\n\u002F\u002F After: Split into focused components\n\u002F\u002F app-info\u002F\n\u002F\u002F   index.tsx           (orchestration entry point)\n\u002F\u002F   app-header.tsx      (header UI)\n\u002F\u002F   app-operations.tsx  (operations UI)\n\u002F\u002F   app-modals.tsx      (modal management)\n\nconst AppInfo = () => {\n  const { showModal, setShowModal } = useAppInfoModals()\n  \n  return (\n    \u003Cdiv>\n      \u003CAppHeader appDetail={appDetail} \u002F>\n      \u003CAppOperations onAction={handleAction} \u002F>\n      \u003CAppModals show={showModal} onClose={() => setShowModal(null)} \u002F>\n    \u003C\u002Fdiv>\n  )\n}\n```\n\n### Pattern 3: Simplify Conditional Logic\n\n**When**: Deep nesting (> 3 levels), complex ternaries, or multiple `if\u002Felse` chains.\n\n```typescript\n\u002F\u002F Before: Deeply nested conditionals\nconst Template = useMemo(() => {\n  if (mode === 'chat') {\n    switch (locale) {\n      case 'zh': return \u003CTemplateChatZh \u002F>\n      case 'ja': return \u003CTemplateChatJa \u002F>\n      default: return \u003CTemplateChatEn \u002F>\n    }\n  }\n  \u002F\u002F More conditions...\n}, [mode, locale])\n\n\u002F\u002F After: Use lookup tables + early returns\nconst TEMPLATE_MAP = {\n  chat: { zh: TemplateChatZh, ja: TemplateChatJa, default: TemplateChatEn },\n  advanced: { zh: TemplateAdvancedZh, default: TemplateAdvancedEn },\n}\n\nconst Template = useMemo(() => {\n  const modeTemplates = TEMPLATE_MAP[mode]\n  if (!modeTemplates) return null\n  \n  const TemplateComponent = modeTemplates[locale] || modeTemplates.default\n  return \u003CTemplateComponent \u002F>\n}, [mode, locale])\n```\n\n### Pattern 4: Extract API\u002FData Logic\n\n**When**: Component directly handles API calls, data transformation, or complex async operations.\n\n```typescript\n\u002F\u002F Before: API logic in component\nconst ServiceCard = () => {\n  const [config, setConfig] = useState({})\n  \n  useEffect(() => {\n    if (appId) {\n      (async () => {\n        const res = await fetchDetail({ url: '\u002Fapps', id: appId })\n        setConfig(res?.config || {})\n      })()\n    }\n  }, [appId])\n}\n\n\u002F\u002F After: Extract to data hook\n\u002F\u002F use-app-config.ts\nimport { useQuery } from '@tanstack\u002Freact-query'\n\nexport const useAppConfig = (appId: string) => {\n  return useQuery({\n    enabled: !!appId,\n    queryKey: ['appConfig', appId],\n    queryFn: () => get(`\u002Fapps\u002F${appId}`),\n    select: data => data?.config || {},\n  })\n}\n\n\u002F\u002F Component becomes cleaner\nconst ServiceCard = () => {\n  const { data: config, isLoading } = useAppConfig(appId)\n  \u002F\u002F UI rendering\n}\n```\n\n### Pattern 5: Extract Modal\u002FDialog Management\n\n**When**: Component manages multiple modals with complex open\u002Fclose states.\n\n```typescript\n\u002F\u002F Before: Multiple modal states in component\nconst AppInfo = () => {\n  const [showEditModal, setShowEditModal] = useState(false)\n  const [showDuplicateModal, setShowDuplicateModal] = useState(false)\n  const [showConfirmDelete, setShowConfirmDelete] = useState(false)\n  \u002F\u002F 5+ more modal states...\n}\n\n\u002F\u002F After: Extract to modal management hook\ntype ModalType = 'edit' | 'duplicate' | 'delete' | null\n\nconst useAppInfoModals = () => {\n  const [activeModal, setActiveModal] = useState\u003CModalType>(null)\n  \n  const openModal = useCallback((type: ModalType) => setActiveModal(type), [])\n  const closeModal = useCallback(() => setActiveModal(null), [])\n  \n  return {\n    activeModal,\n    openModal,\n    closeModal,\n    isOpen: (type: ModalType) => activeModal === type,\n  }\n}\n```\n\n### Pattern 6: Extract Form Logic\n\n**When**: Complex form validation, submission handling, or field transformation.\n\n```typescript\n\u002F\u002F Use form library infrastructure\nimport { useForm } from 'react-hook-form'\n\nconst ConfigForm = () => {\n  const form = useForm({\n    defaultValues: { name: '', description: '' },\n  })\n  \n  return \u003Cform onSubmit={form.handleSubmit(onSubmit)}>...\u003C\u002Fform>\n}\n```\n\n## Refactoring Workflow\n\n### Step 1: Analyze\n\nIdentify:\n- Total complexity score\n- Max function complexity\n- Line count\n- Features detected (state, effects, API, etc.)\n\n### Step 2: Plan\n\nCreate a refactoring plan based on detected features:\n\n| Detected Feature | Refactoring Action |\n|------------------|-------------------|\n| Complex state + effects | Extract custom hook |\n| API calls | Extract data\u002Fservice hook |\n| Many event handlers | Extract event handlers |\n| 300+ lines | Split into sub-components |\n| High complexity | Simplify conditional logic |\n\n### Step 3: Execute Incrementally\n\n1. **Extract one piece at a time**\n2. **Run lint, type-check, and the test suite after each extraction**\n3. **Verify functionality before next step**\n\n```\nFor each extraction:\n  1. Extract code\n  2. Run: pnpm lint:fix\n  3. Run: pnpm type-check\n  4. Run: pnpm test\n  5. PASS? -> Next extraction\n     FAIL? -> Fix before continuing\n```\n\n### Step 4: Verify\n\nAfter refactoring, target metrics:\n- complexity \u003C 50\n- lineCount \u003C 300\n- maxComplexity \u003C 30\n\n## Common Mistakes to Avoid\n\n### Over-Engineering\n\n```typescript\n\u002F\u002F Too many tiny hooks\nconst useButtonText = () => useState('Click')\nconst useButtonDisabled = () => useState(false)\n\n\u002F\u002F Cohesive hook with related state\nconst useButtonState = () => {\n  const [text, setText] = useState('Click')\n  const [disabled, setDisabled] = useState(false)\n  return { text, setText, disabled, setDisabled }\n}\n```\n\n### Breaking Existing Patterns\n\n- Follow existing directory structures\n- Maintain naming conventions\n- Preserve export patterns for compatibility\n\n### Premature Abstraction\n\n- Extract when there's clear complexity benefit\n- Don't create abstractions for single-use code\n- Keep refactored code in the same domain area\n\n## References\n\nSee `references\u002F` for detailed guides:\n- `complexity-patterns.md` - Complexity analysis patterns\n- `component-splitting.md` - Component splitting strategies\n- `hook-extraction.md` - Hook extraction techniques\n\n### Related Skills\n\n- `frontend-testing` - For testing refactored components\n","# Component Refactoring Skill\n\nRefactor high-complexity React components with the patterns and workflow below.\n\n> **Complexity Threshold**: Components with complexity > 50 should be refactored before testing.\n\n## Quick Reference\n\n### Complexity Score Interpretation\n\n| Score | Level | Action |\n|-------|-------|--------|\n| 0-25 | Simple | Ready for testing |\n| 26-50 | Medium | Consider minor refactoring |\n| 51-75 | Complex | **Refactor before testing** |\n| 76-100 | Very Complex | **Must refactor** |\n\n## Core Refactoring Patterns\n\n### Pattern 1: Extract Custom Hooks\n\n**When**: Component has complex state management, multiple `useState`\u002F`useEffect`, or business logic mixed with UI.\n\n**Convention**: Place hooks in a `hooks\u002F` subdirectory or alongside the component as `use-\u003Cfeature>.ts`.\n\n```typescript\n\u002F\u002F Before: Complex state logic in component\nconst Configuration: FC = () => {\n  const [modelConfig, setModelConfig] = useState\u003CModelConfig>(...)\n  const [datasetConfigs, setDatasetConfigs] = useState\u003CDatasetConfigs>(...)\n  const [completionParams, setCompletionParams] = useState\u003CFormValue>({})\n  \n  \u002F\u002F 50+ lines of state management logic...\n  \n  return \u003Cdiv>...\u003C\u002Fdiv>\n}\n\n\u002F\u002F After: Extract to custom hook\n\u002F\u002F hooks\u002Fuse-model-config.ts\nexport const useModelConfig = (appId: string) => {\n  const [modelConfig, setModelConfig] = useState\u003CModelConfig>(...)\n  const [completionParams, setCompletionParams] = useState\u003CFormValue>({})\n  \n  \u002F\u002F Related state management logic here\n  \n  return { modelConfig, setModelConfig, completionParams, setCompletionParams }\n}\n\n\u002F\u002F Component becomes cleaner\nconst Configuration: FC = () => {\n  const { modelConfig, setModelConfig } = useModelConfig(appId)\n  return \u003Cdiv>...\u003C\u002Fdiv>\n}\n```\n\n### Pattern 2: Extract Sub-Components\n\n**When**: Single component has multiple UI sections, conditional rendering blocks, or repeated patterns.\n\n**Convention**: Place sub-components in subdirectories or as separate files in the same directory.\n\n```typescript\n\u002F\u002F Before: Monolithic JSX with multiple sections\nconst AppInfo = () => {\n  return (\n    \u003Cdiv>\n      {\u002F* 100 lines of header UI *\u002F}\n      {\u002F* 100 lines of operations UI *\u002F}\n      {\u002F* 100 lines of modals *\u002F}\n    \u003C\u002Fdiv>\n  )\n}\n\n\u002F\u002F After: Split into focused components\n\u002F\u002F app-info\u002F\n\u002F\u002F   index.tsx           (orchestration entry point)\n\u002F\u002F   app-header.tsx      (header UI)\n\u002F\u002F   app-operations.tsx  (operations UI)\n\u002F\u002F   app-modals.tsx      (modal management)\n\nconst AppInfo = () => {\n  const { showModal, setShowModal } = useAppInfoModals()\n  \n  return (\n    \u003Cdiv>\n      \u003CAppHeader appDetail={appDetail} \u002F>\n      \u003CAppOperations onAction={handleAction} \u002F>\n      \u003CAppModals show={showModal} onClose={() => setShowModal(null)} \u002F>\n    \u003C\u002Fdiv>\n  )\n}\n```\n\n### Pattern 3: Simplify Conditional Logic\n\n**When**: Deep nesting (> 3 levels), complex ternaries, or multiple `if\u002Felse` chains.\n\n```typescript\n\u002F\u002F Before: Deeply nested conditionals\nconst Template = useMemo(() => {\n  if (mode === 'chat') {\n    switch (locale) {\n      case 'zh': return \u003CTemplateChatZh \u002F>\n      case 'ja': return \u003CTemplateChatJa \u002F>\n      default: return \u003CTemplateChatEn \u002F>\n    }\n  }\n  \u002F\u002F More conditions...\n}, [mode, locale])\n\n\u002F\u002F After: Use lookup tables + early returns\nconst TEMPLATE_MAP = {\n  chat: { zh: TemplateChatZh, ja: TemplateChatJa, default: TemplateChatEn },\n  advanced: { zh: TemplateAdvancedZh, default: TemplateAdvancedEn },\n}\n\nconst Template = useMemo(() => {\n  const modeTemplates = TEMPLATE_MAP[mode]\n  if (!modeTemplates) return null\n  \n  const TemplateComponent = modeTemplates[locale] || modeTemplates.default\n  return \u003CTemplateComponent \u002F>\n}, [mode, locale])\n```\n\n### Pattern 4: Extract API\u002FData Logic\n\n**When**: Component directly handles API calls, data transformation, or complex async operations.\n\n```typescript\n\u002F\u002F Before: API logic in component\nconst ServiceCard = () => {\n  const [config, setConfig] = useState({})\n  \n  useEffect(() => {\n    if (appId) {\n      (async () => {\n        const res = await fetchDetail({ url: '\u002Fapps', id: appId })\n        setConfig(res?.config || {})\n      })()\n    }\n  }, [appId])\n}\n\n\u002F\u002F After: Extract to data hook\n\u002F\u002F use-app-config.ts\nimport { useQuery } from '@tanstack\u002Freact-query'\n\nexport const useAppConfig = (appId: string) => {\n  return useQuery({\n    enabled: !!appId,\n    queryKey: ['appConfig', appId],\n    queryFn: () => get(`\u002Fapps\u002F${appId}`),\n    select: data => data?.config || {},\n  })\n}\n\n\u002F\u002F Component becomes cleaner\nconst ServiceCard = () => {\n  const { data: config, isLoading } = useAppConfig(appId)\n  \u002F\u002F UI rendering\n}\n```\n\n### Pattern 5: Extract Modal\u002FDialog Management\n\n**When**: Component manages multiple modals with complex open\u002Fclose states.\n\n```typescript\n\u002F\u002F Before: Multiple modal states in component\nconst AppInfo = () => {\n  const [showEditModal, setShowEditModal] = useState(false)\n  const [showDuplicateModal, setShowDuplicateModal] = useState(false)\n  const [showConfirmDelete, setShowConfirmDelete] = useState(false)\n  \u002F\u002F 5+ more modal states...\n}\n\n\u002F\u002F After: Extract to modal management hook\ntype ModalType = 'edit' | 'duplicate' | 'delete' | null\n\nconst useAppInfoModals = () => {\n  const [activeModal, setActiveModal] = useState\u003CModalType>(null)\n  \n  const openModal = useCallback((type: ModalType) => setActiveModal(type), [])\n  const closeModal = useCallback(() => setActiveModal(null), [])\n  \n  return {\n    activeModal,\n    openModal,\n    closeModal,\n    isOpen: (type: ModalType) => activeModal === type,\n  }\n}\n```\n\n### Pattern 6: Extract Form Logic\n\n**When**: Complex form validation, submission handling, or field transformation.\n\n```typescript\n\u002F\u002F Use form library infrastructure\nimport { useForm } from 'react-hook-form'\n\nconst ConfigForm = () => {\n  const form = useForm({\n    defaultValues: { name: '', description: '' },\n  })\n  \n  return \u003Cform onSubmit={form.handleSubmit(onSubmit)}>...\u003C\u002Fform>\n}\n```\n\n## Refactoring Workflow\n\n### Step 1: Analyze\n\nIdentify:\n- Total complexity score\n- Max function complexity\n- Line count\n- Features detected (state, effects, API, etc.)\n\n### Step 2: Plan\n\nCreate a refactoring plan based on detected features:\n\n| Detected Feature | Refactoring Action |\n|------------------|-------------------|\n| Complex state + effects | Extract custom hook |\n| API calls | Extract data\u002Fservice hook |\n| Many event handlers | Extract event handlers |\n| 300+ lines | Split into sub-components |\n| High complexity | Simplify conditional logic |\n\n### Step 3: Execute Incrementally\n\n1. **Extract one piece at a time**\n2. **Run lint, type-check, and the test suite after each extraction**\n3. **Verify functionality before next step**\n\n```\nFor each extraction:\n  1. Extract code\n  2. Run: pnpm lint:fix\n  3. Run: pnpm type-check\n  4. Run: pnpm test\n  5. PASS? -> Next extraction\n     FAIL? -> Fix before continuing\n```\n\n### Step 4: Verify\n\nAfter refactoring, target metrics:\n- complexity \u003C 50\n- lineCount \u003C 300\n- maxComplexity \u003C 30\n\n## Common Mistakes to Avoid\n\n### Over-Engineering\n\n```typescript\n\u002F\u002F Too many tiny hooks\nconst useButtonText = () => useState('Click')\nconst useButtonDisabled = () => useState(false)\n\n\u002F\u002F Cohesive hook with related state\nconst useButtonState = () => {\n  const [text, setText] = useState('Click')\n  const [disabled, setDisabled] = useState(false)\n  return { text, setText, disabled, setDisabled }\n}\n```\n\n### Breaking Existing Patterns\n\n- Follow existing directory structures\n- Maintain naming conventions\n- Preserve export patterns for compatibility\n\n### Premature Abstraction\n\n- Extract when there's clear complexity benefit\n- Don't create abstractions for single-use code\n- Keep refactored code in the same domain area\n\n## References\n\nSee `references\u002F` for detailed guides:\n- `complexity-patterns.md` - Complexity analysis patterns\n- `component-splitting.md` - Component splitting strategies\n- `hook-extraction.md` - Hook extraction techniques\n\n### Related Skills\n\n- `frontend-testing` - For testing refactored components\n",{"name":5,"description":7},"main","3934845b800ff514cb89eb81d43f3dc4cbf51ff2","packages\u002Freact-frontend\u002Fskills\u002Fcomponent-refactoring","https:\u002F\u002Fgithub.com\u002Fsarthchawla\u002FSetupMyAI","https:\u002F\u002Fgithub.com\u002Fsarthchawla","there ain't no problem i can't solve","2026-10-23 01:26:57",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add sarthchawla\u002FSetupMyAI --skill component-refactoring",{"tool":57,"command":58},"bunx","bunx skills add sarthchawla\u002FSetupMyAI --skill component-refactoring",{"tool":60,"command":61},"pnpm","pnpm dlx skills add sarthchawla\u002FSetupMyAI --skill component-refactoring","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsarthchawla\u002FSetupMyAI\u002Fblob\u002Fmain\u002Fpackages\u002Freact-frontend\u002Fskills\u002Fcomponent-refactoring\u002FSKILL.md",true,[65,71,75],{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"references\u002Fcomplexity-patterns.md","REFERENCE","参考文档",11890,"https:\u002F\u002Fgithub.com\u002Fsarthchawla\u002FSetupMyAI\u002Fblob\u002Fmain\u002Fpackages\u002Freact-frontend\u002Fskills\u002Fcomponent-refactoring\u002Freferences\u002Fcomplexity-patterns.md",{"path":72,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":73,"sourceHtmlUrl":74},"references\u002Fcomponent-splitting.md",11677,"https:\u002F\u002Fgithub.com\u002Fsarthchawla\u002FSetupMyAI\u002Fblob\u002Fmain\u002Fpackages\u002Freact-frontend\u002Fskills\u002Fcomponent-refactoring\u002Freferences\u002Fcomponent-splitting.md",{"path":76,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":77,"sourceHtmlUrl":78},"references\u002Fhook-extraction.md",8520,"https:\u002F\u002Fgithub.com\u002Fsarthchawla\u002FSetupMyAI\u002Fblob\u002Fmain\u002Fpackages\u002Freact-frontend\u002Fskills\u002Fcomponent-refactoring\u002Freferences\u002Fhook-extraction.md",[80,93,109,118,128,148],{"skillNo":81,"name":82,"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":83,"categories":84,"keywords":90,"publishedAt":39},"01M6P8953HNC422WFQSPP2FMQE","sample-skill","https:\u002F\u002Fgithub.com\u002Fsarthchawla\u002FSetupMyAI\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fmock-repo\u002F.claude\u002Fskills\u002Fsample-skill\u002FSKILL.md",[85],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[91,92],"sample","sample skill",{"skillNo":94,"name":95,"nameZh":6,"description":96,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":39},"01M6P8924ZSDAZ88Y5Q9P3KAQV","synthetic-review-candidate","Candidate for smoke testing an evaluation runner only.","https:\u002F\u002Fgithub.com\u002Fsarthchawla\u002FSetupMyAI\u002Fblob\u002Fmain\u002Fscripts\u002Fskill-eval\u002Ffixtures\u002Fcandidate\u002FSKILL.md",[],[100,101,102,103,104,105,106,107,108,25],"synthetic review candidate","candidate","synthetic","review","only","testing","Evaluation","smoke","runner",{"skillNo":110,"name":111,"nameZh":6,"description":112,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":115,"publishedAt":39},"01M6P88FEGGNH8EZY0PDHD9KQA","synthetic-review-baseline","Baseline for smoke testing an evaluation runner only.","https:\u002F\u002Fgithub.com\u002Fsarthchawla\u002FSetupMyAI\u002Fblob\u002Fmain\u002Fscripts\u002Fskill-eval\u002Ffixtures\u002Fbaseline\u002FSKILL.md",[],[116,102,117,103,107,108,25,104,105,106],"synthetic review baseline","baseline",{"skillNo":119,"name":103,"nameZh":6,"description":120,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":121,"categories":122,"keywords":123,"publishedAt":39},"01M6P87ZXVEHRM860960DB5FEQ","Run the existing user-invoked review bundle and independently adjudicate its findings.","https:\u002F\u002Fgithub.com\u002Fsarthchawla\u002FSetupMyAI\u002Fblob\u002Fmain\u002Fpackages\u002Funiversal\u002Fskills\u002Freview\u002FSKILL.md",[],[103,124,125,126,127],"run","user","bundle","Existing",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":134,"publishedAt":39},"01M6P87FC73MZTRB6ZBP4GR1VQ","review-adjudication","Verify generated or human review findings before fixing, defending, replying, resolving, or reusing them as learned guidance. Use within a review, review-comment fix, monitor, or readiness workflow.","https:\u002F\u002Fgithub.com\u002Fsarthchawla\u002FSetupMyAI\u002Fblob\u002Fmain\u002Fpackages\u002Funiversal\u002Fskills\u002Freview-adjudication\u002FSKILL.md",[],[135,103,136,137,138,139,140,141,142,143,144,145,34,146,147],"review adjudication","workflow","generated","human review","guidance","human","as","readiness","learned","review findings","fix","verify","monitor",{"skillNo":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":154,"publishedAt":39},"01M6P871Q44KQES293T60JQETA","monitor-mr","Monitor review findings and CI using the shared adjudication procedure.","https:\u002F\u002Fgithub.com\u002Fsarthchawla\u002FSetupMyAI\u002Fblob\u002Fmain\u002Fpackages\u002Funiversal\u002Fskills\u002Fmonitor-mr\u002FSKILL.md",[],[147,155,156,144,157,158,103],"mr","monitor mr","shared","ci"]