[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f2qsfx37nzp6ko":3,"$f2zoy1h15wp59l":71},{"sha":4,"committedAt":5,"fetchedAt":6,"source":7,"skill":8},"8f93c3a084cf6fdeec3f16b251117023d12727c7","2026-09-03T23:36:48.000Z","2026-09-03T23:44:13.684Z","github",{"slug":9,"name":10,"description":11,"tags":12,"author":16,"authorUrl":17,"requires":18,"badges":20,"fileCount":24,"totalBytes":25,"tree":26,"errors":70},"nuxt-ui","Nuxt UI","Nuxt UI v4 component docs and template fetchers plus the rule that makes Claude Code check them before touching a .vue file.",[9,13,14,15],"vue","ui","docs","Patrity","https:\u002F\u002Fgithub.com\u002FPatrity",[19],"python3",[21,22,23],"skills","rules","claude-md",8,41250,[27,36,64,67],{"name":22,"path":22,"type":28,"children":29},"dir",[30],{"name":31,"path":32,"type":33,"size":34,"kind":35},"web-vue-ui.md","rules\u002Fweb-vue-ui.md","file",1041,"text",{"name":21,"path":21,"type":28,"children":37},[38,54],{"name":39,"path":40,"type":28,"children":41},"nuxt-ui-docs","skills\u002Fnuxt-ui-docs",[42,46,50],{"name":43,"path":44,"type":33,"size":45,"kind":35},"fetch.py","skills\u002Fnuxt-ui-docs\u002Ffetch.py",14579,{"name":47,"path":48,"type":33,"size":49,"kind":35},"manifest.json","skills\u002Fnuxt-ui-docs\u002Fmanifest.json",12394,{"name":51,"path":52,"type":33,"size":53,"kind":35},"SKILL.md","skills\u002Fnuxt-ui-docs\u002FSKILL.md",1456,{"name":55,"path":56,"type":28,"children":57},"nuxt-ui-templates","skills\u002Fnuxt-ui-templates",[58,61],{"name":43,"path":59,"type":33,"size":60,"kind":35},"skills\u002Fnuxt-ui-templates\u002Ffetch.py",7767,{"name":51,"path":62,"type":33,"size":63,"kind":35},"skills\u002Fnuxt-ui-templates\u002FSKILL.md",1682,{"name":65,"path":65,"type":33,"size":66,"kind":35},"CLAUDE.md",503,{"name":68,"path":68,"type":33,"size":69,"kind":35},"README.md",1828,[],{"path":68,"language":72,"size":69,"kind":35,"content":73,"frontmatterRaw":74,"body":75,"data":505},"markdown","---\nname: Nuxt UI\ndescription: Nuxt UI v4 component docs and template fetchers plus the rule that makes Claude Code check them before touching a .vue file.\ntags: [nuxt-ui, vue, ui, docs]\nauthor: Patrity\nauthorUrl: https:\u002F\u002Fgithub.com\u002FPatrity\nrequires: [python3]\n---\n\n# Nuxt UI\n\nTwo doc-fetching skills plus one path-scoped rule. The rule fires when Claude touches a `.vue` file under `app\u002F` and tells it to look up the real v4 API instead of recalling a v2\u002Fv3 prop that no longer exists.\n\n## What's inside\n\n| Path | Purpose |\n| --- | --- |\n| `skills\u002Fnuxt-ui-docs\u002F` | Fetches Nuxt UI v4 component docs (`python3 .claude\u002Fskills\u002Fnuxt-ui-docs\u002Ffetch.py Button`, `fetch.py Tree`). |\n| `skills\u002Fnuxt-ui-templates\u002F` | Pulls real files from the official Nuxt UI templates (dashboard, docs, saas, chat…). |\n| `rules\u002Fweb-vue-ui.md` | Nuxt UI v4: `U*` components over raw markup, semantic color tokens only, invoke `nuxt-ui-docs` first, validate with playwright-cli. |\n| `CLAUDE.md` | A pointer block to paste into your project's `CLAUDE.md`. |\n\n## Install\n\n```bash\nunzip nuxt-ui.zip\nmkdir -p .claude\ncp -R nuxt-ui\u002Fskills nuxt-ui\u002Frules .claude\u002F\ncat nuxt-ui\u002FCLAUDE.md >> CLAUDE.md\necho '.claude\u002Fskills\u002F*\u002Fcache\u002F' >> .gitignore\n```\n\nThe fetchers cache what they download under `skills\u002F\u003Cname>\u002Fcache\u002F`, hence the `.gitignore` line. Caches are safe to delete at any time; the next fetch rebuilds them.\n\n## Requirements\n\n- `python3` on PATH (standard library only, no pip installs).\n- Network access to `raw.githubusercontent.com` the first time a component or template is fetched.\n\n## Companion bundles\n\n- **[`nuxt`](\u002Fskill\u002Fnuxt)** — the Nuxt 4 framework docs fetcher and its rule. Install both if the project is Nuxt + Nuxt UI.\n- **[`browser-testing`](\u002Fskill\u002Fbrowser-testing)** — the playwright-cli workflow `rules\u002Fweb-vue-ui.md` points at.\n","name: Nuxt UI\ndescription: Nuxt UI v4 component docs and template fetchers plus the rule that makes Claude Code check them before touching a .vue file.\ntags: [nuxt-ui, vue, ui, docs]\nauthor: Patrity\nauthorUrl: https:\u002F\u002Fgithub.com\u002FPatrity\nrequires: [python3]",{"type":76,"children":77},"root",[78,84,107,114,246,252,390,411,417,445,451,499],{"type":79,"tag":80,"props":81,"children":82},"element","h1",{"id":9},[83],{"type":35,"value":10},{"type":79,"tag":85,"props":86,"children":87},"p",{},[88,90,97,99,105],{"type":35,"value":89},"Two doc-fetching skills plus one path-scoped rule. The rule fires when Claude touches a ",{"type":79,"tag":91,"props":92,"children":94},"code",{"className":93},[],[95],{"type":35,"value":96},".vue",{"type":35,"value":98}," file under ",{"type":79,"tag":91,"props":100,"children":102},{"className":101},[],[103],{"type":35,"value":104},"app\u002F",{"type":35,"value":106}," and tells it to look up the real v4 API instead of recalling a v2\u002Fv3 prop that no longer exists.",{"type":79,"tag":108,"props":109,"children":111},"h2",{"id":110},"whats-inside",[112],{"type":35,"value":113},"What's inside",{"type":79,"tag":115,"props":116,"children":117},"table",{},[118,137],{"type":79,"tag":119,"props":120,"children":121},"thead",{},[122],{"type":79,"tag":123,"props":124,"children":125},"tr",{},[126,132],{"type":79,"tag":127,"props":128,"children":129},"th",{},[130],{"type":35,"value":131},"Path",{"type":79,"tag":127,"props":133,"children":134},{},[135],{"type":35,"value":136},"Purpose",{"type":79,"tag":138,"props":139,"children":140},"tbody",{},[141,175,192,223],{"type":79,"tag":123,"props":142,"children":143},{},[144,154],{"type":79,"tag":145,"props":146,"children":147},"td",{},[148],{"type":79,"tag":91,"props":149,"children":151},{"className":150},[],[152],{"type":35,"value":153},"skills\u002Fnuxt-ui-docs\u002F",{"type":79,"tag":145,"props":155,"children":156},{},[157,159,165,167,173],{"type":35,"value":158},"Fetches Nuxt UI v4 component docs (",{"type":79,"tag":91,"props":160,"children":162},{"className":161},[],[163],{"type":35,"value":164},"python3 .claude\u002Fskills\u002Fnuxt-ui-docs\u002Ffetch.py Button",{"type":35,"value":166},", ",{"type":79,"tag":91,"props":168,"children":170},{"className":169},[],[171],{"type":35,"value":172},"fetch.py Tree",{"type":35,"value":174},").",{"type":79,"tag":123,"props":176,"children":177},{},[178,187],{"type":79,"tag":145,"props":179,"children":180},{},[181],{"type":79,"tag":91,"props":182,"children":184},{"className":183},[],[185],{"type":35,"value":186},"skills\u002Fnuxt-ui-templates\u002F",{"type":79,"tag":145,"props":188,"children":189},{},[190],{"type":35,"value":191},"Pulls real files from the official Nuxt UI templates (dashboard, docs, saas, chat…).",{"type":79,"tag":123,"props":193,"children":194},{},[195,203],{"type":79,"tag":145,"props":196,"children":197},{},[198],{"type":79,"tag":91,"props":199,"children":201},{"className":200},[],[202],{"type":35,"value":32},{"type":79,"tag":145,"props":204,"children":205},{},[206,208,214,216,221],{"type":35,"value":207},"Nuxt UI v4: ",{"type":79,"tag":91,"props":209,"children":211},{"className":210},[],[212],{"type":35,"value":213},"U*",{"type":35,"value":215}," components over raw markup, semantic color tokens only, invoke ",{"type":79,"tag":91,"props":217,"children":219},{"className":218},[],[220],{"type":35,"value":39},{"type":35,"value":222}," first, validate with playwright-cli.",{"type":79,"tag":123,"props":224,"children":225},{},[226,234],{"type":79,"tag":145,"props":227,"children":228},{},[229],{"type":79,"tag":91,"props":230,"children":232},{"className":231},[],[233],{"type":35,"value":65},{"type":79,"tag":145,"props":235,"children":236},{},[237,239,244],{"type":35,"value":238},"A pointer block to paste into your project's ",{"type":79,"tag":91,"props":240,"children":242},{"className":241},[],[243],{"type":35,"value":65},{"type":35,"value":245},".",{"type":79,"tag":108,"props":247,"children":249},{"id":248},"install",[250],{"type":35,"value":251},"Install",{"type":79,"tag":253,"props":254,"children":259},"pre",{"className":255,"code":256,"language":257,"meta":258,"style":258},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","unzip nuxt-ui.zip\nmkdir -p .claude\ncp -R nuxt-ui\u002Fskills nuxt-ui\u002Frules .claude\u002F\ncat nuxt-ui\u002FCLAUDE.md >> CLAUDE.md\necho '.claude\u002Fskills\u002F*\u002Fcache\u002F' >> .gitignore\n","bash","",[260],{"type":79,"tag":91,"props":261,"children":262},{"__ignoreMap":258},[263,281,301,330,355],{"type":79,"tag":264,"props":265,"children":268},"span",{"class":266,"line":267},"line",1,[269,275],{"type":79,"tag":264,"props":270,"children":272},{"style":271},"--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0",[273],{"type":35,"value":274},"unzip",{"type":79,"tag":264,"props":276,"children":278},{"style":277},"--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF",[279],{"type":35,"value":280}," nuxt-ui.zip\n",{"type":79,"tag":264,"props":282,"children":284},{"class":266,"line":283},2,[285,290,296],{"type":79,"tag":264,"props":286,"children":287},{"style":271},[288],{"type":35,"value":289},"mkdir",{"type":79,"tag":264,"props":291,"children":293},{"style":292},"--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF",[294],{"type":35,"value":295}," -p",{"type":79,"tag":264,"props":297,"children":298},{"style":277},[299],{"type":35,"value":300}," .claude\n",{"type":79,"tag":264,"props":302,"children":304},{"class":266,"line":303},3,[305,310,315,320,325],{"type":79,"tag":264,"props":306,"children":307},{"style":271},[308],{"type":35,"value":309},"cp",{"type":79,"tag":264,"props":311,"children":312},{"style":292},[313],{"type":35,"value":314}," -R",{"type":79,"tag":264,"props":316,"children":317},{"style":277},[318],{"type":35,"value":319}," nuxt-ui\u002Fskills",{"type":79,"tag":264,"props":321,"children":322},{"style":277},[323],{"type":35,"value":324}," nuxt-ui\u002Frules",{"type":79,"tag":264,"props":326,"children":327},{"style":277},[328],{"type":35,"value":329}," .claude\u002F\n",{"type":79,"tag":264,"props":331,"children":333},{"class":266,"line":332},4,[334,339,344,350],{"type":79,"tag":264,"props":335,"children":336},{"style":271},[337],{"type":35,"value":338},"cat",{"type":79,"tag":264,"props":340,"children":341},{"style":277},[342],{"type":35,"value":343}," nuxt-ui\u002FCLAUDE.md",{"type":79,"tag":264,"props":345,"children":347},{"style":346},"--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583",[348],{"type":35,"value":349}," >>",{"type":79,"tag":264,"props":351,"children":352},{"style":277},[353],{"type":35,"value":354}," CLAUDE.md\n",{"type":79,"tag":264,"props":356,"children":358},{"class":266,"line":357},5,[359,365,371,376,381,385],{"type":79,"tag":264,"props":360,"children":362},{"style":361},"--shiki-light:#6182B8;--shiki-default:#005CC5;--shiki-dark:#79B8FF",[363],{"type":35,"value":364},"echo",{"type":79,"tag":264,"props":366,"children":368},{"style":367},"--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF",[369],{"type":35,"value":370}," '",{"type":79,"tag":264,"props":372,"children":373},{"style":277},[374],{"type":35,"value":375},".claude\u002Fskills\u002F*\u002Fcache\u002F",{"type":79,"tag":264,"props":377,"children":378},{"style":367},[379],{"type":35,"value":380},"'",{"type":79,"tag":264,"props":382,"children":383},{"style":346},[384],{"type":35,"value":349},{"type":79,"tag":264,"props":386,"children":387},{"style":277},[388],{"type":35,"value":389}," .gitignore\n",{"type":79,"tag":85,"props":391,"children":392},{},[393,395,401,403,409],{"type":35,"value":394},"The fetchers cache what they download under ",{"type":79,"tag":91,"props":396,"children":398},{"className":397},[],[399],{"type":35,"value":400},"skills\u002F\u003Cname>\u002Fcache\u002F",{"type":35,"value":402},", hence the ",{"type":79,"tag":91,"props":404,"children":406},{"className":405},[],[407],{"type":35,"value":408},".gitignore",{"type":35,"value":410}," line. Caches are safe to delete at any time; the next fetch rebuilds them.",{"type":79,"tag":108,"props":412,"children":414},{"id":413},"requirements",[415],{"type":35,"value":416},"Requirements",{"type":79,"tag":418,"props":419,"children":420},"ul",{},[421,432],{"type":79,"tag":422,"props":423,"children":424},"li",{},[425,430],{"type":79,"tag":91,"props":426,"children":428},{"className":427},[],[429],{"type":35,"value":19},{"type":35,"value":431}," on PATH (standard library only, no pip installs).",{"type":79,"tag":422,"props":433,"children":434},{},[435,437,443],{"type":35,"value":436},"Network access to ",{"type":79,"tag":91,"props":438,"children":440},{"className":439},[],[441],{"type":35,"value":442},"raw.githubusercontent.com",{"type":35,"value":444}," the first time a component or template is fetched.",{"type":79,"tag":108,"props":446,"children":448},{"id":447},"companion-bundles",[449],{"type":35,"value":450},"Companion bundles",{"type":79,"tag":418,"props":452,"children":453},{},[454,474],{"type":79,"tag":422,"props":455,"children":456},{},[457,472],{"type":79,"tag":458,"props":459,"children":460},"strong",{},[461],{"type":79,"tag":462,"props":463,"children":465},"a",{"href":464},"\u002Fskill\u002Fnuxt",[466],{"type":79,"tag":91,"props":467,"children":469},{"className":468},[],[470],{"type":35,"value":471},"nuxt",{"type":35,"value":473}," — the Nuxt 4 framework docs fetcher and its rule. Install both if the project is Nuxt + Nuxt UI.",{"type":79,"tag":422,"props":475,"children":476},{},[477,490,492,497],{"type":79,"tag":458,"props":478,"children":479},{},[480],{"type":79,"tag":462,"props":481,"children":483},{"href":482},"\u002Fskill\u002Fbrowser-testing",[484],{"type":79,"tag":91,"props":485,"children":487},{"className":486},[],[488],{"type":35,"value":489},"browser-testing",{"type":35,"value":491}," — the playwright-cli workflow ",{"type":79,"tag":91,"props":493,"children":495},{"className":494},[],[496],{"type":35,"value":32},{"type":35,"value":498}," points at.",{"type":79,"tag":500,"props":501,"children":502},"style",{},[503],{"type":35,"value":504},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"name":10,"description":11,"tags":506,"author":16,"authorUrl":17,"requires":507},[9,13,14,15],[19]]