[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F4RFAPJ9J1RJXTJD0FBV6E":3,"skill-same:01M6F4RFAPJ9J1RJXTJD0FBV6E":86},{"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":30,"publishedAt":57,"linkOnly":58,"markdownContent":59,"markdownBody":60,"frontMatter":61,"refName":40,"commitSha":66,"skillDirectory":67,"forksCount":68,"repositoryHtmlUrl":69,"repositoryHomepageUrl":6,"ownerHtmlUrl":70,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":71,"install":72,"resources":85},"01M6F4RFAPJ9J1RJXTJD0FBV6E","code-showcase-react-ui-patterns",null,"Modern React UI patterns for loading states, error handling, and data fetching. Use when building UI components, handling async data, or managing UI states.","boisenoise\u002Fskills-collections","boisenoise","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F193180?v=4","01M6CDBDQK6BDN55ZMA6B6PKBM","01M6CDBDVSJ3JPTBYN26FZ7TZK",12,"MIT","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-code-showcase-react-ui-patterns\u002FSKILL.md",[17,22,27],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",{"categoryNo":28,"categoryName":29,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000032","设计师",[31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56],"react","code","ui patterns","ui","react ui patterns","react ui","showcase","code showcase react ui patterns","patterns","main","2026","when","data fetching","loading","states","error","ui components","critical","github","community","async","use","data","license","error handling","components","2026-11-10 10:12:30",false,"---\nname: code-showcase-react-ui-patterns\ndescription: Modern React UI patterns for loading states, error handling, and data fetching. Use when building UI components, handling async data, or managing UI states.\nrisk: critical\nsource: https:\u002F\u002Fgithub.com\u002FChrisWiles\u002Fclaude-code-showcase\u002Ftree\u002Fmain\u002F.claude\u002Fskills\u002Freact-ui-patterns\nsource_repo: ChrisWiles\u002Fclaude-code-showcase\nsource_type: community\ndate_added: 2026-07-01\nlicense: MIT\nlicense_source: https:\u002F\u002Fgithub.com\u002FChrisWiles\u002Fclaude-code-showcase\u002Fblob\u002Fmain\u002FLICENSE\n---\n\n# React UI Patterns\n## When to Use\n\nUse this skill when you need modern React UI patterns for loading states, error handling, and data fetching. Use when building UI components, handling async data, or managing UI states.\n\n\n## Core Principles\n\n1. **Never show stale UI** - Loading spinners only when actually loading\n2. **Always surface errors** - Users must know when something fails\n3. **Optimistic updates** - Make the UI feel instant\n4. **Progressive disclosure** - Show content as it becomes available\n5. **Graceful degradation** - Partial data is better than no data\n\n## Loading State Patterns\n\n### The Golden Rule\n\n**Show loading indicator ONLY when there's no data to display.**\n\n```typescript\n\u002F\u002F CORRECT - Only show loading when no data exists\nconst { data, loading, error, refetch } = useGetItemsQuery();\n\nif (error) return \u003CErrorState error={error} onRetry={refetch} \u002F>;\nif (loading && !data) return \u003CLoadingState \u002F>;\nif (!data?.items.length) return \u003CEmptyState \u002F>;\n\nreturn \u003CItemList items={data.items} \u002F>;\n```\n\n```typescript\n\u002F\u002F WRONG - Shows spinner even when we have cached data\nif (loading) return \u003CLoadingState \u002F>; \u002F\u002F Flashes on refetch!\n```\n\n### Loading State Decision Tree\n\n```\nIs there an error?\n  → Yes: Show error state with retry option\n  → No: Continue\n\nIs it loading AND we have no data?\n  → Yes: Show loading indicator (spinner\u002Fskeleton)\n  → No: Continue\n\nDo we have data?\n  → Yes, with items: Show the data\n  → Yes, but empty: Show empty state\n  → No: Show loading (fallback)\n```\n\n### Skeleton vs Spinner\n\n| Use Skeleton When | Use Spinner When |\n|-------------------|------------------|\n| Known content shape | Unknown content shape |\n| List\u002Fcard layouts | Modal actions |\n| Initial page load | Button submissions |\n| Content placeholders | Inline operations |\n\n## Error Handling Patterns\n\n### The Error Handling Hierarchy\n\n```\n1. Inline error (field-level) → Form validation errors\n2. Toast notification → Recoverable errors, user can retry\n3. Error banner → Page-level errors, data still partially usable\n4. Full error screen → Unrecoverable, needs user action\n```\n\n### Always Show Errors\n\n**CRITICAL: Never swallow errors silently.**\n\n```typescript\n\u002F\u002F CORRECT - Error always surfaced to user\nconst [createItem, { loading }] = useCreateItemMutation({\n  onCompleted: () => {\n    toast.success({ title: 'Item created' });\n  },\n  onError: (error) => {\n    console.error('createItem failed:', error);\n    toast.error({ title: 'Failed to create item' });\n  },\n});\n\n\u002F\u002F WRONG - Error silently caught, user has no idea\nconst [createItem] = useCreateItemMutation({\n  onError: (error) => {\n    console.error(error); \u002F\u002F User sees nothing!\n  },\n});\n```\n\n### Error State Component Pattern\n\n```typescript\ninterface ErrorStateProps {\n  error: Error;\n  onRetry?: () => void;\n  title?: string;\n}\n\nconst ErrorState = ({ error, onRetry, title }: ErrorStateProps) => (\n  \u003Cdiv className=\"error-state\">\n    \u003CIcon name=\"exclamation-circle\" \u002F>\n    \u003Ch3>{title ?? 'Something went wrong'}\u003C\u002Fh3>\n    \u003Cp>Unable to load this content. Try again if the problem persists.\u003C\u002Fp>\n    {onRetry && (\n      \u003CButton onClick={onRetry}>Try Again\u003C\u002FButton>\n    )}\n  \u003C\u002Fdiv>\n);\n```\n\n## Button State Patterns\n\n### Button Loading State\n\n```tsx\n\u003CButton\n  onClick={handleSubmit}\n  isLoading={isSubmitting}\n  disabled={!isValid || isSubmitting}\n>\n  Submit\n\u003C\u002FButton>\n```\n\n### Disable During Operations\n\n**CRITICAL: Always disable triggers during async operations.**\n\n```tsx\n\u002F\u002F CORRECT - Button disabled while loading\n\u003CButton\n  disabled={isSubmitting}\n  isLoading={isSubmitting}\n  onClick={handleSubmit}\n>\n  Submit\n\u003C\u002FButton>\n\n\u002F\u002F WRONG - User can tap multiple times\n\u003CButton onClick={handleSubmit}>\n  {isSubmitting ? 'Submitting...' : 'Submit'}\n\u003C\u002FButton>\n```\n\n## Empty States\n\n### Empty State Requirements\n\nEvery list\u002Fcollection MUST have an empty state:\n\n```tsx\n\u002F\u002F WRONG - No empty state\nreturn \u003CFlatList data={items} \u002F>;\n\n\u002F\u002F CORRECT - Explicit empty state\nreturn (\n  \u003CFlatList\n    data={items}\n    ListEmptyComponent={\u003CEmptyState \u002F>}\n  \u002F>\n);\n```\n\n### Contextual Empty States\n\n```tsx\n\u002F\u002F Search with no results\n\u003CEmptyState\n  icon=\"search\"\n  title=\"No results found\"\n  description=\"Try different search terms\"\n\u002F>\n\n\u002F\u002F List with no items yet\n\u003CEmptyState\n  icon=\"plus-circle\"\n  title=\"No items yet\"\n  description=\"Create your first item\"\n  action={{ label: 'Create Item', onClick: handleCreate }}\n\u002F>\n```\n\n## Form Submission Pattern\n\n```tsx\nconst MyForm = () => {\n  const [submit, { loading }] = useSubmitMutation({\n    onCompleted: handleSuccess,\n    onError: handleError,\n  });\n\n  const handleSubmit = async (event: React.FormEvent) => {\n    event.preventDefault();\n    if (!isValid) {\n      toast.error({ title: 'Please fix errors' });\n      return;\n    }\n    await submit({ variables: { input: values } });\n  };\n\n  return (\n    \u003Cform onSubmit={handleSubmit}>\n      \u003CInput\n        value={values.name}\n        onChange={handleChange('name')}\n        error={touched.name ? errors.name : undefined}\n      \u002F>\n      \u003CButton\n        type=\"submit\"\n        disabled={!isValid || loading}\n        isLoading={loading}\n      >\n        Submit\n      \u003C\u002FButton>\n    \u003C\u002Fform>\n  );\n};\n```\n\n## Anti-Patterns\n\n### Loading States\n\n```typescript\n\u002F\u002F WRONG - Spinner when data exists (causes flash)\nif (loading) return \u003CSpinner \u002F>;\n\n\u002F\u002F CORRECT - Only show loading without data\nif (loading && !data) return \u003CSpinner \u002F>;\n```\n\n### Error Handling\n\n```typescript\n\u002F\u002F WRONG - Error swallowed\ntry {\n  await mutation();\n} catch (e) {\n  console.log(e); \u002F\u002F User has no idea!\n}\n\n\u002F\u002F CORRECT - Error surfaced\nonError: (error) => {\n  console.error('operation failed:', error);\n  toast.error({ title: 'Operation failed' });\n}\n```\n\n### Button States\n\n```typescript\n\u002F\u002F WRONG - Button not disabled during submission\n\u003CButton onClick={submit}>Submit\u003C\u002FButton>\n\n\u002F\u002F CORRECT - Disabled and shows loading\n\u003CButton onClick={submit} disabled={loading} isLoading={loading}>\n  Submit\n\u003C\u002FButton>\n```\n\n## Checklist\n\nBefore completing any UI component:\n\n**UI States:**\n- [ ] Error state handled and shown to user\n- [ ] Loading state shown only when no data exists\n- [ ] Empty state provided for collections\n- [ ] Buttons disabled during async operations\n- [ ] Buttons show loading indicator when appropriate\n\n**Data & Mutations:**\n- [ ] Mutations have onError handler\n- [ ] All user actions have feedback (toast\u002Fvisual)\n\n## Integration with Other Skills\n\n- **graphql-schema**: Use mutation patterns with proper error handling\n- **testing-patterns**: Test all UI states (loading, error, empty, success)\n- **formik-patterns**: Apply form submission patterns\n\n## Limitations\n\n- Use this skill only when the task clearly matches its upstream source and local project context.\n- Verify commands, generated code, dependencies, credentials, and external service behavior before applying changes.\n- Do not treat examples as a substitute for environment-specific tests, security review, or user approval for destructive or costly actions.\n","# React UI Patterns\n## When to Use\n\nUse this skill when you need modern React UI patterns for loading states, error handling, and data fetching. Use when building UI components, handling async data, or managing UI states.\n\n\n## Core Principles\n\n1. **Never show stale UI** - Loading spinners only when actually loading\n2. **Always surface errors** - Users must know when something fails\n3. **Optimistic updates** - Make the UI feel instant\n4. **Progressive disclosure** - Show content as it becomes available\n5. **Graceful degradation** - Partial data is better than no data\n\n## Loading State Patterns\n\n### The Golden Rule\n\n**Show loading indicator ONLY when there's no data to display.**\n\n```typescript\n\u002F\u002F CORRECT - Only show loading when no data exists\nconst { data, loading, error, refetch } = useGetItemsQuery();\n\nif (error) return \u003CErrorState error={error} onRetry={refetch} \u002F>;\nif (loading && !data) return \u003CLoadingState \u002F>;\nif (!data?.items.length) return \u003CEmptyState \u002F>;\n\nreturn \u003CItemList items={data.items} \u002F>;\n```\n\n```typescript\n\u002F\u002F WRONG - Shows spinner even when we have cached data\nif (loading) return \u003CLoadingState \u002F>; \u002F\u002F Flashes on refetch!\n```\n\n### Loading State Decision Tree\n\n```\nIs there an error?\n  → Yes: Show error state with retry option\n  → No: Continue\n\nIs it loading AND we have no data?\n  → Yes: Show loading indicator (spinner\u002Fskeleton)\n  → No: Continue\n\nDo we have data?\n  → Yes, with items: Show the data\n  → Yes, but empty: Show empty state\n  → No: Show loading (fallback)\n```\n\n### Skeleton vs Spinner\n\n| Use Skeleton When | Use Spinner When |\n|-------------------|------------------|\n| Known content shape | Unknown content shape |\n| List\u002Fcard layouts | Modal actions |\n| Initial page load | Button submissions |\n| Content placeholders | Inline operations |\n\n## Error Handling Patterns\n\n### The Error Handling Hierarchy\n\n```\n1. Inline error (field-level) → Form validation errors\n2. Toast notification → Recoverable errors, user can retry\n3. Error banner → Page-level errors, data still partially usable\n4. Full error screen → Unrecoverable, needs user action\n```\n\n### Always Show Errors\n\n**CRITICAL: Never swallow errors silently.**\n\n```typescript\n\u002F\u002F CORRECT - Error always surfaced to user\nconst [createItem, { loading }] = useCreateItemMutation({\n  onCompleted: () => {\n    toast.success({ title: 'Item created' });\n  },\n  onError: (error) => {\n    console.error('createItem failed:', error);\n    toast.error({ title: 'Failed to create item' });\n  },\n});\n\n\u002F\u002F WRONG - Error silently caught, user has no idea\nconst [createItem] = useCreateItemMutation({\n  onError: (error) => {\n    console.error(error); \u002F\u002F User sees nothing!\n  },\n});\n```\n\n### Error State Component Pattern\n\n```typescript\ninterface ErrorStateProps {\n  error: Error;\n  onRetry?: () => void;\n  title?: string;\n}\n\nconst ErrorState = ({ error, onRetry, title }: ErrorStateProps) => (\n  \u003Cdiv className=\"error-state\">\n    \u003CIcon name=\"exclamation-circle\" \u002F>\n    \u003Ch3>{title ?? 'Something went wrong'}\u003C\u002Fh3>\n    \u003Cp>Unable to load this content. Try again if the problem persists.\u003C\u002Fp>\n    {onRetry && (\n      \u003CButton onClick={onRetry}>Try Again\u003C\u002FButton>\n    )}\n  \u003C\u002Fdiv>\n);\n```\n\n## Button State Patterns\n\n### Button Loading State\n\n```tsx\n\u003CButton\n  onClick={handleSubmit}\n  isLoading={isSubmitting}\n  disabled={!isValid || isSubmitting}\n>\n  Submit\n\u003C\u002FButton>\n```\n\n### Disable During Operations\n\n**CRITICAL: Always disable triggers during async operations.**\n\n```tsx\n\u002F\u002F CORRECT - Button disabled while loading\n\u003CButton\n  disabled={isSubmitting}\n  isLoading={isSubmitting}\n  onClick={handleSubmit}\n>\n  Submit\n\u003C\u002FButton>\n\n\u002F\u002F WRONG - User can tap multiple times\n\u003CButton onClick={handleSubmit}>\n  {isSubmitting ? 'Submitting...' : 'Submit'}\n\u003C\u002FButton>\n```\n\n## Empty States\n\n### Empty State Requirements\n\nEvery list\u002Fcollection MUST have an empty state:\n\n```tsx\n\u002F\u002F WRONG - No empty state\nreturn \u003CFlatList data={items} \u002F>;\n\n\u002F\u002F CORRECT - Explicit empty state\nreturn (\n  \u003CFlatList\n    data={items}\n    ListEmptyComponent={\u003CEmptyState \u002F>}\n  \u002F>\n);\n```\n\n### Contextual Empty States\n\n```tsx\n\u002F\u002F Search with no results\n\u003CEmptyState\n  icon=\"search\"\n  title=\"No results found\"\n  description=\"Try different search terms\"\n\u002F>\n\n\u002F\u002F List with no items yet\n\u003CEmptyState\n  icon=\"plus-circle\"\n  title=\"No items yet\"\n  description=\"Create your first item\"\n  action={{ label: 'Create Item', onClick: handleCreate }}\n\u002F>\n```\n\n## Form Submission Pattern\n\n```tsx\nconst MyForm = () => {\n  const [submit, { loading }] = useSubmitMutation({\n    onCompleted: handleSuccess,\n    onError: handleError,\n  });\n\n  const handleSubmit = async (event: React.FormEvent) => {\n    event.preventDefault();\n    if (!isValid) {\n      toast.error({ title: 'Please fix errors' });\n      return;\n    }\n    await submit({ variables: { input: values } });\n  };\n\n  return (\n    \u003Cform onSubmit={handleSubmit}>\n      \u003CInput\n        value={values.name}\n        onChange={handleChange('name')}\n        error={touched.name ? errors.name : undefined}\n      \u002F>\n      \u003CButton\n        type=\"submit\"\n        disabled={!isValid || loading}\n        isLoading={loading}\n      >\n        Submit\n      \u003C\u002FButton>\n    \u003C\u002Fform>\n  );\n};\n```\n\n## Anti-Patterns\n\n### Loading States\n\n```typescript\n\u002F\u002F WRONG - Spinner when data exists (causes flash)\nif (loading) return \u003CSpinner \u002F>;\n\n\u002F\u002F CORRECT - Only show loading without data\nif (loading && !data) return \u003CSpinner \u002F>;\n```\n\n### Error Handling\n\n```typescript\n\u002F\u002F WRONG - Error swallowed\ntry {\n  await mutation();\n} catch (e) {\n  console.log(e); \u002F\u002F User has no idea!\n}\n\n\u002F\u002F CORRECT - Error surfaced\nonError: (error) => {\n  console.error('operation failed:', error);\n  toast.error({ title: 'Operation failed' });\n}\n```\n\n### Button States\n\n```typescript\n\u002F\u002F WRONG - Button not disabled during submission\n\u003CButton onClick={submit}>Submit\u003C\u002FButton>\n\n\u002F\u002F CORRECT - Disabled and shows loading\n\u003CButton onClick={submit} disabled={loading} isLoading={loading}>\n  Submit\n\u003C\u002FButton>\n```\n\n## Checklist\n\nBefore completing any UI component:\n\n**UI States:**\n- [ ] Error state handled and shown to user\n- [ ] Loading state shown only when no data exists\n- [ ] Empty state provided for collections\n- [ ] Buttons disabled during async operations\n- [ ] Buttons show loading indicator when appropriate\n\n**Data & Mutations:**\n- [ ] Mutations have onError handler\n- [ ] All user actions have feedback (toast\u002Fvisual)\n\n## Integration with Other Skills\n\n- **graphql-schema**: Use mutation patterns with proper error handling\n- **testing-patterns**: Test all UI states (loading, error, empty, success)\n- **formik-patterns**: Apply form submission patterns\n\n## Limitations\n\n- Use this skill only when the task clearly matches its upstream source and local project context.\n- Verify commands, generated code, dependencies, credentials, and external service behavior before applying changes.\n- Do not treat examples as a substitute for environment-specific tests, security review, or user approval for destructive or costly actions.\n",{"name":5,"risk":48,"source":62,"license":14,"date_added":63,"description":7,"source_repo":64,"source_type":50,"license_source":65},"https:\u002F\u002Fgithub.com\u002FChrisWiles\u002Fclaude-code-showcase\u002Ftree\u002Fmain\u002F.claude\u002Fskills\u002Freact-ui-patterns",1782864000000,"ChrisWiles\u002Fclaude-code-showcase","https:\u002F\u002Fgithub.com\u002FChrisWiles\u002Fclaude-code-showcase\u002Fblob\u002Fmain\u002FLICENSE","7bf2279c8a65758319526a721d5c4b75683aec9c","skills\u002Fantigravity-code-showcase-react-ui-patterns",3,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections","https:\u002F\u002Fgithub.com\u002Fboisenoise","2026-11-13 14:20:47",{"source":8,"skillName":5,"commands":73,"prompt":83,"zipAvailable":84},[74,77,80],{"tool":75,"command":76},"npx","npx skills add boisenoise\u002Fskills-collections --skill code-showcase-react-ui-patterns",{"tool":78,"command":79},"bunx","bunx skills add boisenoise\u002Fskills-collections --skill code-showcase-react-ui-patterns",{"tool":81,"command":82},"pnpm","pnpm dlx skills add boisenoise\u002Fskills-collections --skill code-showcase-react-ui-patterns","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-code-showcase-react-ui-patterns\u002FSKILL.md",true,[],[87,113,136,160,179,202],{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":91,"licenseFileUrl":92,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":57},"01M6WNH92BHVFXHGPDZCPJ0AG0","web-access","Use Treg for public web or platform data only when existing search, browser and connected tools cannot cover the task, with explicit cost and data boundaries.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-web-access\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-web-access\u002FSKILL.md",[],[96,97,98,99,100,101,102,53,103,104,105,106,107,108,109,48,110,111,112,42,41],"web","access","web access","official","development","browser","search","Tools","read","fetch","only","youtube","free tools","platform","free","cover","normal",{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":91,"licenseFileUrl":117,"sourceHtmlUrl":118,"categories":119,"keywords":123,"publishedAt":57},"01M6WNF9XAYAB2CZDDJBAKNM93","treg","Use the Treg CLI or MCP catalog to discover, price and call authorized external tools with team-scoped credentials and a user-approved budget.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-treg\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-treg\u002FSKILL.md",[120],{"categoryNo":121,"categoryName":122,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[115,124,125,49,99,100,54,103,126,127,128,129,52,130,131,48,132,133,134,135,41],"MCP","cli","Budget","credentials","team","catalog","call","discover","external tools","with","scoped","blob",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":91,"licenseFileUrl":140,"sourceHtmlUrl":141,"categories":142,"keywords":146,"publishedAt":57},"01M6WN93MEAZ4E41DYAHJRPHQT","recruit","Turn a job description into an evidence-linked candidate shortlist through Treg, with job-related ranking and optional authorized business contact enrichment.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-recruit\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-recruit\u002FSKILL.md",[143],{"categoryNo":144,"categoryName":145,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000038","人力资源",[138,49,99,54,147,148,149,150,151,152,48,153,154,155,133,156,157,158,159,135,115,41],"https","email","enrichment","business","evidence","phone","ranking","post","job description","for","person","candidate","reason",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":91,"licenseFileUrl":164,"sourceHtmlUrl":165,"categories":166,"keywords":167,"publishedAt":57},"01M6WN8R5RXSMHM9B4D9FAFX42","rea-growth","Analyze a company’s public growth and content through Treg, distinguish observations from hypotheses, and produce an evidence-linked playbook within an approved budget.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-rea-growth\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-rea-growth\u002FSKILL.md",[],[168,169,170,49,99,54,171,172,147,173,126,174,175,176,151,48,177,178,135,115,41],"growth","rea","rea growth","produce","content","playbook","marketing","analyze","public","observations","company",{"skillNo":180,"name":181,"nameZh":6,"description":182,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":91,"licenseFileUrl":183,"sourceHtmlUrl":184,"categories":185,"keywords":186,"publishedAt":57},"01M6WN2EVE3RQRGWAKBT4S7YT2","make-ugc","Create original AI UGC-style product videos through Treg: research hooks, approve a licensed presenter and voice, generate clips, add captions and report costs.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-make-ugc\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-make-ugc\u002FSKILL.md",[],[187,188,49,189,99,190,54,191,192,193,194,195,48,196,197,198,199,200,201,135],"make","make ugc","research","create","Video","Captions","ads","short","hooks","head","style","niche","trending","talking-head","approve",{"skillNo":203,"name":204,"nameZh":6,"description":205,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":91,"licenseFileUrl":206,"sourceHtmlUrl":207,"categories":208,"keywords":209,"publishedAt":57},"01M6WN10ARAA63Y8K1YNGXJ2RM","lead-signals","Find and qualify public buying signals through Treg, rank fitting business accounts and optionally enrich authorized business contact information.","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-lead-signals\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-lead-signals\u002FSKILL.md",[],[210,211,212,49,99,54,213,214,150,215,216,48,217,218,219,220,221,222,223,135],"signals","lead","lead signals","how","find","ready","as","how to","qualify","people","information","enrich","changes","funding"]