[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M786TCTD8X88MKWM2TQCP3CS":3,"skill-same:01M786TCTD8X88MKWM2TQCP3CS":85},{"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":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":14,"repositoryHtmlUrl":27,"repositoryHomepageUrl":28,"ownerHtmlUrl":29,"ownerBlogUrl":30,"ownerDescription":31,"updatedAt":32,"install":33,"resources":46},"01M786TCTD8X88MKWM2TQCP3CS","migrate-radix-to-base",null,"Migrates React projects and components from Radix UI to Base UI. Use when asked to migrate from radix, move to base-ui, convert radix primitives, or switch a shadcn project's base library. Handles single components (\"migrate accordion\") and whole projects.","Solizardking\u002Fskillhub-main","Solizardking","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F108096810?v=4","01M786KDB10AYV042N0F9BD5B5","Clawd","01M786NYYXSZK1D05WM8JQPC48",0,"MIT","https:\u002F\u002Fgithub.com\u002FSolizardking\u002Fskillhub-main\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fmigrate-radix-to-base\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: migrate-radix-to-base\ndescription: Migrates React projects and components from Radix UI to Base UI. Use when asked to migrate from radix, move to base-ui, convert radix primitives, or switch a shadcn project's base library. Handles single components (\"migrate accordion\") and whole projects.\n---\n\n# Radix UI -> Base UI migration\n\nYou migrate shadcn wrappers, hand-rolled radix compositions, and their\nconsumers to `@base-ui\u002Freact`, keeping the project buildable at every step.\nBe precise; never guess a mapping. When a prop or part is not in these\nreference files, check `node_modules\u002F@base-ui\u002Freact\u002F**\u002F*.d.ts` before\ntransforming, and record gaps in the report.\n\n## Preflight (always)\n\n1. `npx shadcn@latest info --json` (or the project's runner): gives the\n   current base, STYLE (e.g. `radix-lyra`), tailwind version, aliases,\n   installed components, and package manager. Trust it over inference.\n2. Detect the package manager (packageManager field \u002F lockfile:\n   pnpm-lock.yaml, bun.lock, yarn.lock, package-lock.json) and use IT for\n   every install. Never leave a stale lockfile.\n3. Require a clean git tree; work on a branch; one commit per component.\n4. Baseline check BEFORE touching dependencies: run the project's\n   typecheck\u002Fbuild so pre-existing failures are never attributed to you.\n5. Install `@base-ui\u002Freact` alongside radix. Radix packages are removed only\n   after the LAST component is migrated (both coexist fine).\n\n## Strategy: golden pair first, transformation engine second\n\n- **Golden pair via the CLI (preferred).** If the project is shadcn with a\n  known style (`radix-\u003Cstyle>`), the shadcn CLI itself is the golden-pair\n  executor:\n  1. Classify each ui wrapper FIRST: diff the user's file against its stock\n     origin, using the components.json style VERBATIM in the URL\n     (`https:\u002F\u002Fui.shadcn.com\u002Fr\u002Fstyles\u002F\u003Cstyle>\u002F\u003Ccomponent>.json`,\n     files[0].content). This works for prefixed styles (radix-nova) AND\n     legacy unprefixed ones (new-york, new-york-v4, default), which are all\n     still served.\n  2. WHOLE-PROJECT mode: flip `components.json` style `radix-\u003Cstyle>` ->\n     `base-\u003Cstyle>` now. PROGRESSIVE mode: do NOT flip yet (the project is\n     still mostly radix; the flip happens once, after the last component);\n     fetch base variants directly by URL instead\n     (`https:\u002F\u002Fui.shadcn.com\u002Fr\u002Fstyles\u002Fbase-\u003Cstyle>\u002F\u003Ccomponent>.json`).\n  3. PRISTINE wrappers, whole-project mode: `shadcn add \u003Ccomponent>\n     --overwrite` delivers the base variant with the project's exact\n     icon\u002Ffont\u002Fpreset resolution. Never bulk `--all --overwrite`; go\n     component by component, or you drown in unrelated registry version\n     drift. PROGRESSIVE mode: never use `--overwrite` (it destroys the\n     original that consumers still import); write the fetched base variant\n     content to `\u003Ccomponent>-base.tsx` instead.\n  4. CUSTOMIZED wrappers: fetch the base variant and replay the user's diff\n     onto it (their customizations must SURVIVE; `--overwrite` would destroy\n     them). Mechanical implementation that works at scale:\n     `git merge-file user.tsx radix-golden.tsx base-golden.tsx` (three-way\n     merge, radix golden as ancestor) auto-resolves most files; hand-resolve\n     conflicts with the reference tables.\n  5. MANDATORY leftover sweep on EVERY golden-pair file, including ones that\n     merged \"clean\": `grep -n \"radix-ui\\|@radix-ui\\|IconPlaceholder\"` per\n     file. The registry sometimes reorders functions between variants, which\n     makes three-way merges report zero conflicts while leaving stale radix\n     hunks in place. A clean merge is NOT proof of a clean file.\n  This is more reliable than reconstructing transforms; use it whenever the\n  pair exists. Consumer\u002Fapp code has no CLI mechanism: always hand-migrate it\n  against `consumer-props.md`.\n- **Legacy styles (new-york, new-york-v4, default): classification only, no\n  replay.** These have no base counterpart (there is no base-new-york), and\n  retargeting onto a base-\u003Cstyle> variant would restyle the user's app. Use\n  the radix golden ONLY to detect customizations, then run the transformation\n  engine on the user's OWN file: rewire primitives, keep their exact classes,\n  apply class-mapping renames. Their look stays theirs. At the end of a\n  legacy whole-project migration, FLAG (do not fix): the style name still\n  reads as radix to the CLI, so future `shadcn add` will deliver radix\n  variants; the user decides whether to switch style or add manually.\n- **Transformation engine (fallback).** Hand-rolled radix code, non-shadcn\n  projects, unknown styles: transform using `universal-patterns.md` (imports\n  in BOTH forms: `radix-ui` and `@radix-ui\u002Freact-*`; asChild->render with the\n  worked example; Portal>Positioner>Popup; the positioner FORWARD rule; part\n  renames), the per-family props tables (`overlays.md`, `menus.md`,\n  `form-controls.md`, `disclosure.md`, `display-misc.md`), `class-mapping.md`\n  for data-attribute\u002FCSS-var rewrites, and `wrapper-shapes.md` for exact\n  target shapes (tooltip arrow, SubContent defaults, select anatomy).\n\n## Modes\n\n**Progressive (default).** \"Migrate accordion\" = one component, strangler-fig:\n1. Detect in-progress state first: an existing `\u003Ccomponent>-base.tsx`,\n   consumers split between old\u002Fnew imports. The files ARE the state; resume,\n   never restart.\n2. If the component imports other ui wrappers still on radix (select ->\n   button), STOP and recommend migrating those first, bottom-up.\n3. Write the migrated version to `\u003Ccomponent>-base.tsx` (original untouched;\n   golden-pair content fetched by URL, or transformed by hand, per the\n   strategy above); typecheck. Repoint consumers ONE AT A TIME (imports + the\n   call-site props in `consumer-props.md`); typecheck each. When no consumer\n   imports the original: delete it, rename `-base` -> original, flip imports\n   back, final check, commit. When the LAST radix wrapper in the project is\n   finalized, flip `components.json` to `base-\u003Cstyle>` and remove radix deps.\n\n**Whole project** (only when explicitly asked): same per-component work in\ndependency order (leaf\u002Fshared wrappers like button and label first). After\nwrappers, sweep ALL app code against `consumer-props.md` — the call-site\nbreak surface is much larger than asChild. Then remove radix deps, install,\nfull build.\n\n## Hard rules\n\n- NEVER touch non-radix libraries or their wrappers: cmdk (command), vaul\n  (drawer), sonner, input-otp, react-day-picker (calendar), recharts (chart).\n  Report them as intentionally untouched.\n- No Base UI counterpart: AspectRatio -> CSS aspect-ratio div; Label ->\n  native `\u003Clabel>`; VisuallyHidden -> `sr-only`; Direction -> Direction\n  Provider (`direction` prop, not `dir`). Popover Anchor and NavigationMenu\n  Indicator have no equivalent: inert passthrough + flag.\n- `button.tsx` migrates to the REAL `@base-ui\u002Freact\u002Fbutton` primitive, never\n  a hand-rolled useRender wrapper.\n- Behavior deltas are FLAGGED, never silently patched (tabs manual\n  activation, menu items not closing on click, nav-menu 50ms delay). The\n  target is idiomatic Base UI matching the shadcn base registry.\n- Honest reporting: skipped\u002Freverted files are listed as flagged, never as\n  migrated. Pre-existing failures are named as pre-existing.\n\n## Verify and report\n\nTypecheck per file, build per batch, full build at the end vs the baseline.\n\nReports live in a `.migration\u002F` directory at the project root, ONE FILE PER\nCOMPONENT: `.migration\u002F\u003Ccomponent>.md` (e.g. `.migration\u002Faccordion.md`).\nRules:\n- Each run writes (or fully overwrites) the file for each component it\n  migrated. Re-running a component replaces its report; never touch other\n  components' files.\n- A multi-component run (\"migrate alert-dialog and dropdown-menu\") writes one\n  file per component, each self-contained; shared consumer-sweep notes are\n  repeated in every affected file.\n- Whole-project mode writes the per-component files plus\n  `.migration\u002Fproject.md` (dependency swap, app-code sweep summary, final\n  build result).\n- There is NO index file. Migration status is derived from disk, not\n  maintained: scan the project's ui directory (the `ui` alias from shadcn\n  info, e.g. components\u002Fui or src\u002Fcomponents\u002Fui) for remaining radix imports\n  when asked \"what's left\". End every run's summary with that derived count\n  (\"N wrappers remain on Radix\").\n\nEach `.migration\u002F\u003Ccomponent>.md` uses EXACTLY this structure (it is\ndocumented publicly; reports must match it):\n\n```md\n# \u003Ccomponent>\n\n\u003Cdate, strategy used (golden pair via CLI \u002F merge \u002F engine), one-line verdict>\n\n## Changed\n\n\u003Cevery file touched, with what changed and why; include file:line for\nanything notable. Confirm the leftover scan is clean:\ngrep -n \"radix-ui\\|@radix-ui\" on this component's files>\n\n## Left alone\n\n\u003Cfiles that look related but were intentionally not touched, with the reason\n(cmdk\u002Fvaul\u002Fsonner are not radix; unrelated drift; etc.)>\n\n## Behavior changes\n\n\u003Cdifferences that compile fine but act differently; flagged, never patched\n(tabs activation, menu close-on-click, delays...). Empty section if none>\n\n## Verify by hand\n\n\u003Cshort manual QA checklist for this primitive family: focus return on\ndialogs, keyboard nav + typeahead on menus\u002Fselect, tooltip delay feel,\nslider commit events. Concrete steps, one minute of clicking>\n```\n","# Radix UI -> Base UI migration\n\nYou migrate shadcn wrappers, hand-rolled radix compositions, and their\nconsumers to `@base-ui\u002Freact`, keeping the project buildable at every step.\nBe precise; never guess a mapping. When a prop or part is not in these\nreference files, check `node_modules\u002F@base-ui\u002Freact\u002F**\u002F*.d.ts` before\ntransforming, and record gaps in the report.\n\n## Preflight (always)\n\n1. `npx shadcn@latest info --json` (or the project's runner): gives the\n   current base, STYLE (e.g. `radix-lyra`), tailwind version, aliases,\n   installed components, and package manager. Trust it over inference.\n2. Detect the package manager (packageManager field \u002F lockfile:\n   pnpm-lock.yaml, bun.lock, yarn.lock, package-lock.json) and use IT for\n   every install. Never leave a stale lockfile.\n3. Require a clean git tree; work on a branch; one commit per component.\n4. Baseline check BEFORE touching dependencies: run the project's\n   typecheck\u002Fbuild so pre-existing failures are never attributed to you.\n5. Install `@base-ui\u002Freact` alongside radix. Radix packages are removed only\n   after the LAST component is migrated (both coexist fine).\n\n## Strategy: golden pair first, transformation engine second\n\n- **Golden pair via the CLI (preferred).** If the project is shadcn with a\n  known style (`radix-\u003Cstyle>`), the shadcn CLI itself is the golden-pair\n  executor:\n  1. Classify each ui wrapper FIRST: diff the user's file against its stock\n     origin, using the components.json style VERBATIM in the URL\n     (`https:\u002F\u002Fui.shadcn.com\u002Fr\u002Fstyles\u002F\u003Cstyle>\u002F\u003Ccomponent>.json`,\n     files[0].content). This works for prefixed styles (radix-nova) AND\n     legacy unprefixed ones (new-york, new-york-v4, default), which are all\n     still served.\n  2. WHOLE-PROJECT mode: flip `components.json` style `radix-\u003Cstyle>` ->\n     `base-\u003Cstyle>` now. PROGRESSIVE mode: do NOT flip yet (the project is\n     still mostly radix; the flip happens once, after the last component);\n     fetch base variants directly by URL instead\n     (`https:\u002F\u002Fui.shadcn.com\u002Fr\u002Fstyles\u002Fbase-\u003Cstyle>\u002F\u003Ccomponent>.json`).\n  3. PRISTINE wrappers, whole-project mode: `shadcn add \u003Ccomponent>\n     --overwrite` delivers the base variant with the project's exact\n     icon\u002Ffont\u002Fpreset resolution. Never bulk `--all --overwrite`; go\n     component by component, or you drown in unrelated registry version\n     drift. PROGRESSIVE mode: never use `--overwrite` (it destroys the\n     original that consumers still import); write the fetched base variant\n     content to `\u003Ccomponent>-base.tsx` instead.\n  4. CUSTOMIZED wrappers: fetch the base variant and replay the user's diff\n     onto it (their customizations must SURVIVE; `--overwrite` would destroy\n     them). Mechanical implementation that works at scale:\n     `git merge-file user.tsx radix-golden.tsx base-golden.tsx` (three-way\n     merge, radix golden as ancestor) auto-resolves most files; hand-resolve\n     conflicts with the reference tables.\n  5. MANDATORY leftover sweep on EVERY golden-pair file, including ones that\n     merged \"clean\": `grep -n \"radix-ui\\|@radix-ui\\|IconPlaceholder\"` per\n     file. The registry sometimes reorders functions between variants, which\n     makes three-way merges report zero conflicts while leaving stale radix\n     hunks in place. A clean merge is NOT proof of a clean file.\n  This is more reliable than reconstructing transforms; use it whenever the\n  pair exists. Consumer\u002Fapp code has no CLI mechanism: always hand-migrate it\n  against `consumer-props.md`.\n- **Legacy styles (new-york, new-york-v4, default): classification only, no\n  replay.** These have no base counterpart (there is no base-new-york), and\n  retargeting onto a base-\u003Cstyle> variant would restyle the user's app. Use\n  the radix golden ONLY to detect customizations, then run the transformation\n  engine on the user's OWN file: rewire primitives, keep their exact classes,\n  apply class-mapping renames. Their look stays theirs. At the end of a\n  legacy whole-project migration, FLAG (do not fix): the style name still\n  reads as radix to the CLI, so future `shadcn add` will deliver radix\n  variants; the user decides whether to switch style or add manually.\n- **Transformation engine (fallback).** Hand-rolled radix code, non-shadcn\n  projects, unknown styles: transform using `universal-patterns.md` (imports\n  in BOTH forms: `radix-ui` and `@radix-ui\u002Freact-*`; asChild->render with the\n  worked example; Portal>Positioner>Popup; the positioner FORWARD rule; part\n  renames), the per-family props tables (`overlays.md`, `menus.md`,\n  `form-controls.md`, `disclosure.md`, `display-misc.md`), `class-mapping.md`\n  for data-attribute\u002FCSS-var rewrites, and `wrapper-shapes.md` for exact\n  target shapes (tooltip arrow, SubContent defaults, select anatomy).\n\n## Modes\n\n**Progressive (default).** \"Migrate accordion\" = one component, strangler-fig:\n1. Detect in-progress state first: an existing `\u003Ccomponent>-base.tsx`,\n   consumers split between old\u002Fnew imports. The files ARE the state; resume,\n   never restart.\n2. If the component imports other ui wrappers still on radix (select ->\n   button), STOP and recommend migrating those first, bottom-up.\n3. Write the migrated version to `\u003Ccomponent>-base.tsx` (original untouched;\n   golden-pair content fetched by URL, or transformed by hand, per the\n   strategy above); typecheck. Repoint consumers ONE AT A TIME (imports + the\n   call-site props in `consumer-props.md`); typecheck each. When no consumer\n   imports the original: delete it, rename `-base` -> original, flip imports\n   back, final check, commit. When the LAST radix wrapper in the project is\n   finalized, flip `components.json` to `base-\u003Cstyle>` and remove radix deps.\n\n**Whole project** (only when explicitly asked): same per-component work in\ndependency order (leaf\u002Fshared wrappers like button and label first). After\nwrappers, sweep ALL app code against `consumer-props.md` — the call-site\nbreak surface is much larger than asChild. Then remove radix deps, install,\nfull build.\n\n## Hard rules\n\n- NEVER touch non-radix libraries or their wrappers: cmdk (command), vaul\n  (drawer), sonner, input-otp, react-day-picker (calendar), recharts (chart).\n  Report them as intentionally untouched.\n- No Base UI counterpart: AspectRatio -> CSS aspect-ratio div; Label ->\n  native `\u003Clabel>`; VisuallyHidden -> `sr-only`; Direction -> Direction\n  Provider (`direction` prop, not `dir`). Popover Anchor and NavigationMenu\n  Indicator have no equivalent: inert passthrough + flag.\n- `button.tsx` migrates to the REAL `@base-ui\u002Freact\u002Fbutton` primitive, never\n  a hand-rolled useRender wrapper.\n- Behavior deltas are FLAGGED, never silently patched (tabs manual\n  activation, menu items not closing on click, nav-menu 50ms delay). The\n  target is idiomatic Base UI matching the shadcn base registry.\n- Honest reporting: skipped\u002Freverted files are listed as flagged, never as\n  migrated. Pre-existing failures are named as pre-existing.\n\n## Verify and report\n\nTypecheck per file, build per batch, full build at the end vs the baseline.\n\nReports live in a `.migration\u002F` directory at the project root, ONE FILE PER\nCOMPONENT: `.migration\u002F\u003Ccomponent>.md` (e.g. `.migration\u002Faccordion.md`).\nRules:\n- Each run writes (or fully overwrites) the file for each component it\n  migrated. Re-running a component replaces its report; never touch other\n  components' files.\n- A multi-component run (\"migrate alert-dialog and dropdown-menu\") writes one\n  file per component, each self-contained; shared consumer-sweep notes are\n  repeated in every affected file.\n- Whole-project mode writes the per-component files plus\n  `.migration\u002Fproject.md` (dependency swap, app-code sweep summary, final\n  build result).\n- There is NO index file. Migration status is derived from disk, not\n  maintained: scan the project's ui directory (the `ui` alias from shadcn\n  info, e.g. components\u002Fui or src\u002Fcomponents\u002Fui) for remaining radix imports\n  when asked \"what's left\". End every run's summary with that derived count\n  (\"N wrappers remain on Radix\").\n\nEach `.migration\u002F\u003Ccomponent>.md` uses EXACTLY this structure (it is\ndocumented publicly; reports must match it):\n\n```md\n# \u003Ccomponent>\n\n\u003Cdate, strategy used (golden pair via CLI \u002F merge \u002F engine), one-line verdict>\n\n## Changed\n\n\u003Cevery file touched, with what changed and why; include file:line for\nanything notable. Confirm the leftover scan is clean:\ngrep -n \"radix-ui\\|@radix-ui\" on this component's files>\n\n## Left alone\n\n\u003Cfiles that look related but were intentionally not touched, with the reason\n(cmdk\u002Fvaul\u002Fsonner are not radix; unrelated drift; etc.)>\n\n## Behavior changes\n\n\u003Cdifferences that compile fine but act differently; flagged, never patched\n(tabs activation, menu close-on-click, delays...). Empty section if none>\n\n## Verify by hand\n\n\u003Cshort manual QA checklist for this primitive family: focus return on\ndialogs, keyboard nav + typeahead on menus\u002Fselect, tooltip delay feel,\nslider commit events. Concrete steps, one minute of clicking>\n```\n",{"name":5,"description":7},"main","be3de0244dc1a57e323d8160787ebb40fb64930e",".agents\u002Fskills\u002Fmigrate-radix-to-base","https:\u002F\u002Fgithub.com\u002FSolizardking\u002Fskillhub-main","https:\u002F\u002Fskills.x402.wtf","https:\u002F\u002Fgithub.com\u002FSolizardking","https:\u002F\u002Fmusebook.trade","Got a mile high and never came down","2026-10-08 23:20:13",{"source":8,"skillName":5,"commands":34,"prompt":44,"zipAvailable":45},[35,38,41],{"tool":36,"command":37},"npx","npx skills add Solizardking\u002Fskillhub-main --skill migrate-radix-to-base",{"tool":39,"command":40},"bunx","bunx skills add Solizardking\u002Fskillhub-main --skill migrate-radix-to-base",{"tool":42,"command":43},"pnpm","pnpm dlx skills add Solizardking\u002Fskillhub-main --skill migrate-radix-to-base","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FSolizardking\u002Fskillhub-main\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fmigrate-radix-to-base\u002FSKILL.md",true,[47,53,57,61,65,69,73,77,81],{"path":48,"resourceType":49,"resourceTypeDesc":50,"sizeBytes":51,"sourceHtmlUrl":52},"class-mapping.md","REFERENCE","参考文档",2838,"https:\u002F\u002Fgithub.com\u002FSolizardking\u002Fskillhub-main\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fmigrate-radix-to-base\u002Fclass-mapping.md",{"path":54,"resourceType":49,"resourceTypeDesc":50,"sizeBytes":55,"sourceHtmlUrl":56},"consumer-props.md",4482,"https:\u002F\u002Fgithub.com\u002FSolizardking\u002Fskillhub-main\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fmigrate-radix-to-base\u002Fconsumer-props.md",{"path":58,"resourceType":49,"resourceTypeDesc":50,"sizeBytes":59,"sourceHtmlUrl":60},"disclosure.md",20896,"https:\u002F\u002Fgithub.com\u002FSolizardking\u002Fskillhub-main\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fmigrate-radix-to-base\u002Fdisclosure.md",{"path":62,"resourceType":49,"resourceTypeDesc":50,"sizeBytes":63,"sourceHtmlUrl":64},"display-misc.md",25693,"https:\u002F\u002Fgithub.com\u002FSolizardking\u002Fskillhub-main\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fmigrate-radix-to-base\u002Fdisplay-misc.md",{"path":66,"resourceType":49,"resourceTypeDesc":50,"sizeBytes":67,"sourceHtmlUrl":68},"form-controls.md",29615,"https:\u002F\u002Fgithub.com\u002FSolizardking\u002Fskillhub-main\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fmigrate-radix-to-base\u002Fform-controls.md",{"path":70,"resourceType":49,"resourceTypeDesc":50,"sizeBytes":71,"sourceHtmlUrl":72},"menus.md",33098,"https:\u002F\u002Fgithub.com\u002FSolizardking\u002Fskillhub-main\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fmigrate-radix-to-base\u002Fmenus.md",{"path":74,"resourceType":49,"resourceTypeDesc":50,"sizeBytes":75,"sourceHtmlUrl":76},"overlays.md",31466,"https:\u002F\u002Fgithub.com\u002FSolizardking\u002Fskillhub-main\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fmigrate-radix-to-base\u002Foverlays.md",{"path":78,"resourceType":49,"resourceTypeDesc":50,"sizeBytes":79,"sourceHtmlUrl":80},"universal-patterns.md",14502,"https:\u002F\u002Fgithub.com\u002FSolizardking\u002Fskillhub-main\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fmigrate-radix-to-base\u002Funiversal-patterns.md",{"path":82,"resourceType":49,"resourceTypeDesc":50,"sizeBytes":83,"sourceHtmlUrl":84},"wrapper-shapes.md",4742,"https:\u002F\u002Fgithub.com\u002FSolizardking\u002Fskillhub-main\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fmigrate-radix-to-base\u002Fwrapper-shapes.md",[86,93,100,107,114,122],{"skillNo":87,"name":88,"nameZh":6,"description":89,"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":92,"publishedAt":19},"01M78E0TGCAMNPS207BA3G07S7","zkrouter","Self-hosted OpenAI-compatible LLM router — smart tier-based routing, ZK-stamped routing decisions, mode overrides, free OpenRouter at install via the Birth bot. Save 60-80% on inference costs by routing to the cheapest capable model across 12+ OpenRouter models.","https:\u002F\u002Fgithub.com\u002FSolizardking\u002Fskillhub-main\u002Fblob\u002Fmain\u002Fskills\u002Fzkrouter\u002FSKILL.md",[],[],{"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":19},"01M78E0R1Z8BDT6EDTHY17MTNB","zk","For custom ZK Solana programs and privacy-preserving applications to prevent double spending. Guide to integrate rent-free nullifier PDAs for double-spend prevention.","https:\u002F\u002Fgithub.com\u002FSolizardking\u002Fskillhub-main\u002Fblob\u002Fmain\u002Fskills\u002Fzk\u002FSKILL.md",[],[],{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":106,"publishedAt":19},"01M78E0P3ZTZ1YWF8MD5MM23QE","zk-omni-messaging","Zero-knowledge omnichain messaging between Robinhood Chain and Solana using CheshireZkOmniMessenger (msgType 4) with nullifier anti-replay and the zk-omni-relayer service.","https:\u002F\u002Fgithub.com\u002FSolizardking\u002Fskillhub-main\u002Fblob\u002Fmain\u002Fskills\u002Fzk-omni-messaging\u002FSKILL.md",[],[],{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":113,"publishedAt":19},"01M78E0JXZ2PNB1896VXAGDBWD","zerion-wallet-data","Use when the user asks to check a wallet's portfolio, token balances, DeFi positions, PnL, transaction history, or NFTs. Provides interpreted on-chain data across 40+ EVM chains and Solana via x402 pay-per-request or API key — no raw RPC decoding needed.","https:\u002F\u002Fgithub.com\u002FSolizardking\u002Fskillhub-main\u002Fblob\u002Fmain\u002Fskills\u002Fzerion-wallet-data\u002FSKILL.md",[],[],{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":118,"sourceHtmlUrl":119,"categories":120,"keywords":121,"publishedAt":19},"01M78E0G14FH9GRRTQYMKD5E59","youtube-clipper","YouTube 视频智能剪辑工具。下载视频和字幕，AI 分析生成精细章节（几分钟级别）， 用户选择片段后自动剪辑、翻译字幕为中英双语、烧录字幕到视频，并生成总结文案。 使用场景：当用户需要剪辑 YouTube 视频、生成短视频片段、制作双语字幕版本时。 关键词：视频剪辑、YouTube、字幕翻译、双语字幕、视频下载、clip video","https:\u002F\u002Fgithub.com\u002FSolizardking\u002Fskillhub-main\u002Fblob\u002Fmain\u002Fskills\u002Fyoutube-clipper\u002FLICENSE","https:\u002F\u002Fgithub.com\u002FSolizardking\u002Fskillhub-main\u002Fblob\u002Fmain\u002Fskills\u002Fyoutube-clipper\u002FSKILL.md",[],[],{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":128,"publishedAt":19},"01M78E0C2ZYA99CFFDNB7ZMK5S","yield-optimization","Multi-chain yield optimization via yield.xyz (StakeKit). Discover 2,988+ yield opportunities across 75+ blockchains, build deposit\u002Fwithdrawal transactions with shell scripts, and sign them with a MoonPay wallet. Use when the user wants to earn yield, find the best lending or staking rate, enter\u002Fexit a position, or check portfolio balances.","https:\u002F\u002Fgithub.com\u002FSolizardking\u002Fskillhub-main\u002Fblob\u002Fmain\u002Fskills\u002Fyield-optimization\u002FSKILL.md",[],[]]