[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fgbesrsamut1x":3,"$f131u3ytkbics6":58},{"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":17,"authorUrl":18,"requires":19,"badges":22,"fileCount":27,"totalBytes":28,"tree":29,"errors":57},"browser-testing","Browser Testing","Prove UI changes in a real browser with playwright-cli — install-if-missing, snapshot→ref→act workflow, test-account convention and evidence discipline.",[13,14,15,16],"testing","e2e","playwright","browser","Patrity","https:\u002F\u002Fgithub.com\u002FPatrity",[20,21],"node","npm",[23,24,25,26],"skills","rules","settings","claude-md",5,11726,[30,39,48,51,54],{"name":24,"path":24,"type":31,"children":32},"dir",[33],{"name":34,"path":35,"type":36,"size":37,"kind":38},"browser-testing.md","rules\u002Fbrowser-testing.md","file",883,"text",{"name":23,"path":23,"type":31,"children":40},[41],{"name":9,"path":42,"type":31,"children":43},"skills\u002Fbrowser-testing",[44],{"name":45,"path":46,"type":36,"size":47,"kind":38},"SKILL.md","skills\u002Fbrowser-testing\u002FSKILL.md",6640,{"name":49,"path":49,"type":36,"size":50,"kind":38},"CLAUDE.md",594,{"name":52,"path":52,"type":36,"size":53,"kind":38},"README.md",3451,{"name":55,"path":55,"type":36,"size":56,"kind":38},"settings.local.json",158,[],{"path":52,"language":59,"size":53,"kind":38,"content":60,"frontmatterRaw":61,"body":62,"data":758},"markdown","---\nname: Browser Testing\ndescription: Prove UI changes in a real browser with playwright-cli — install-if-missing, snapshot→ref→act workflow, test-account convention and evidence discipline.\ntags: [testing, e2e, playwright, browser]\nauthor: Patrity\nauthorUrl: https:\u002F\u002Fgithub.com\u002FPatrity\nrequires: [node, npm]\n---\n\n# Browser Testing\n\nA skill, a path-scoped rule and the permissions to run them. Together they stop Claude Code\ndeclaring UI work finished on the strength of a green typecheck.\n\n## What's inside\n\n| Path | Purpose |\n| --- | --- |\n| `skills\u002Fbrowser-testing\u002F` | The workflow: install-if-missing, dev-server readiness, snapshot → ref → act → assert, mobile pass, evidence discipline, cleanup. |\n| `rules\u002Fbrowser-testing.md` | Fires on `**\u002F*.vue`, `*.tsx`, `*.jsx`, `*.svelte` and anything under `pages\u002F`, `components\u002F`, `layouts\u002F` — after a UI edit, verify in the browser. |\n| `settings.local.json` | Pre-approves `playwright-cli`, the global install and `npx playwright` so verification doesn't stall on a permission prompt. |\n| `CLAUDE.md` | A pointer block to paste into your project's `CLAUDE.md`. |\n\n## Install\n\n```bash\nunzip browser-testing.zip\nmkdir -p .claude\ncp -R browser-testing\u002Fskills browser-testing\u002Frules .claude\u002F\ncat browser-testing\u002FCLAUDE.md >> CLAUDE.md\n```\n\n`settings.local.json` must be **merged**, not copied — you almost certainly have one already.\nAppend the three entries to the existing `permissions.allow` array in `.claude\u002Fsettings.local.json`:\n\n```json\n{\n  \"permissions\": {\n    \"allow\": [\n      \"Bash(playwright-cli:*)\",\n      \"Bash(npm install -g @playwright\u002Fcli*)\",\n      \"Bash(npx playwright:*)\"\n    ]\n  }\n}\n```\n\nIf you have no `.claude\u002Fsettings.local.json` yet, copy the bundle's file straight over:\n`cp browser-testing\u002Fsettings.local.json .claude\u002F`.\n\n## How the rule fires\n\nPath-scoped rules load automatically when Claude touches a matching file. Edit a `.vue` component\nor anything under `pages\u002F`, and `rules\u002Fbrowser-testing.md` enters the context with a single\ninstruction: prove it in the browser, via the `browser-testing` skill, before saying it's done.\nThe skill then carries the whole procedure — including installing `playwright-cli` from npm if it\nisn't on PATH, so \"the tool wasn't there\" never becomes a reason to skip verification.\n\n## Why\n\nTypecheck, lint and unit tests all pass on a component that never mounted, a Tailwind class that\nresolved to nothing, a click handler bound to the wrong element, and a page that throws on\nhydration. Only a real browser catches those. The skill's evidence rules are the point: exact\ncommands, their outputs, a screenshot you actually looked at, and a console check — not \"verified,\nlooks good\".\n\n## Requirements\n\n- `node` and `npm` on PATH. The skill installs `@playwright\u002Fcli` globally if missing.\n- Playwright browsers are a separate download (`npx playwright install`); the skill covers the\n  prompt you'll see.\n\n## Test accounts\n\nCredentials never live in this bundle. For an auth-gated app, register a test account in the **dev**\nenvironment and keep its email, password, login steps and dev URL in a project-local skill\n(`.claude\u002Fskills\u002F\u003Cproject>-browser-testing\u002FSKILL.md`). That file is also the right place for the\nproject's dev command, port, and the routes worth covering after a change.\n\n## Companion bundles\n\n- **[`nuxt`](\u002Fskill\u002Fnuxt)** and **[`nuxt-ui`](\u002Fskill\u002Fnuxt-ui)** — their rules point back here for UI validation.\n","name: Browser Testing\ndescription: Prove UI changes in a real browser with playwright-cli — install-if-missing, snapshot→ref→act workflow, test-account convention and evidence discipline.\ntags: [testing, e2e, playwright, browser]\nauthor: Patrity\nauthorUrl: https:\u002F\u002Fgithub.com\u002FPatrity\nrequires: [node, npm]",{"type":63,"children":64},"root",[65,71,77,84,253,259,362,396,558,577,583,624,630,635,641,684,690,710,716,752],{"type":66,"tag":67,"props":68,"children":69},"element","h1",{"id":9},[70],{"type":38,"value":10},{"type":66,"tag":72,"props":73,"children":74},"p",{},[75],{"type":38,"value":76},"A skill, a path-scoped rule and the permissions to run them. Together they stop Claude Code\ndeclaring UI work finished on the strength of a green typecheck.",{"type":66,"tag":78,"props":79,"children":81},"h2",{"id":80},"whats-inside",[82],{"type":38,"value":83},"What's inside",{"type":66,"tag":85,"props":86,"children":87},"table",{},[88,107],{"type":66,"tag":89,"props":90,"children":91},"thead",{},[92],{"type":66,"tag":93,"props":94,"children":95},"tr",{},[96,102],{"type":66,"tag":97,"props":98,"children":99},"th",{},[100],{"type":38,"value":101},"Path",{"type":66,"tag":97,"props":103,"children":104},{},[105],{"type":38,"value":106},"Purpose",{"type":66,"tag":108,"props":109,"children":110},"tbody",{},[111,130,198,230],{"type":66,"tag":93,"props":112,"children":113},{},[114,125],{"type":66,"tag":115,"props":116,"children":117},"td",{},[118],{"type":66,"tag":119,"props":120,"children":122},"code",{"className":121},[],[123],{"type":38,"value":124},"skills\u002Fbrowser-testing\u002F",{"type":66,"tag":115,"props":126,"children":127},{},[128],{"type":38,"value":129},"The workflow: install-if-missing, dev-server readiness, snapshot → ref → act → assert, mobile pass, evidence discipline, cleanup.",{"type":66,"tag":93,"props":131,"children":132},{},[133,141],{"type":66,"tag":115,"props":134,"children":135},{},[136],{"type":66,"tag":119,"props":137,"children":139},{"className":138},[],[140],{"type":38,"value":35},{"type":66,"tag":115,"props":142,"children":143},{},[144,146,152,154,160,161,167,168,174,176,182,183,189,190,196],{"type":38,"value":145},"Fires on ",{"type":66,"tag":119,"props":147,"children":149},{"className":148},[],[150],{"type":38,"value":151},"**\u002F*.vue",{"type":38,"value":153},", ",{"type":66,"tag":119,"props":155,"children":157},{"className":156},[],[158],{"type":38,"value":159},"*.tsx",{"type":38,"value":153},{"type":66,"tag":119,"props":162,"children":164},{"className":163},[],[165],{"type":38,"value":166},"*.jsx",{"type":38,"value":153},{"type":66,"tag":119,"props":169,"children":171},{"className":170},[],[172],{"type":38,"value":173},"*.svelte",{"type":38,"value":175}," and anything under ",{"type":66,"tag":119,"props":177,"children":179},{"className":178},[],[180],{"type":38,"value":181},"pages\u002F",{"type":38,"value":153},{"type":66,"tag":119,"props":184,"children":186},{"className":185},[],[187],{"type":38,"value":188},"components\u002F",{"type":38,"value":153},{"type":66,"tag":119,"props":191,"children":193},{"className":192},[],[194],{"type":38,"value":195},"layouts\u002F",{"type":38,"value":197}," — after a UI edit, verify in the browser.",{"type":66,"tag":93,"props":199,"children":200},{},[201,209],{"type":66,"tag":115,"props":202,"children":203},{},[204],{"type":66,"tag":119,"props":205,"children":207},{"className":206},[],[208],{"type":38,"value":55},{"type":66,"tag":115,"props":210,"children":211},{},[212,214,220,222,228],{"type":38,"value":213},"Pre-approves ",{"type":66,"tag":119,"props":215,"children":217},{"className":216},[],[218],{"type":38,"value":219},"playwright-cli",{"type":38,"value":221},", the global install and ",{"type":66,"tag":119,"props":223,"children":225},{"className":224},[],[226],{"type":38,"value":227},"npx playwright",{"type":38,"value":229}," so verification doesn't stall on a permission prompt.",{"type":66,"tag":93,"props":231,"children":232},{},[233,241],{"type":66,"tag":115,"props":234,"children":235},{},[236],{"type":66,"tag":119,"props":237,"children":239},{"className":238},[],[240],{"type":38,"value":49},{"type":66,"tag":115,"props":242,"children":243},{},[244,246,251],{"type":38,"value":245},"A pointer block to paste into your project's ",{"type":66,"tag":119,"props":247,"children":249},{"className":248},[],[250],{"type":38,"value":49},{"type":38,"value":252},".",{"type":66,"tag":78,"props":254,"children":256},{"id":255},"install",[257],{"type":38,"value":258},"Install",{"type":66,"tag":260,"props":261,"children":266},"pre",{"className":262,"code":263,"language":264,"meta":265,"style":265},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","unzip browser-testing.zip\nmkdir -p .claude\ncp -R browser-testing\u002Fskills browser-testing\u002Frules .claude\u002F\ncat browser-testing\u002FCLAUDE.md >> CLAUDE.md\n","bash","",[267],{"type":66,"tag":119,"props":268,"children":269},{"__ignoreMap":265},[270,288,308,337],{"type":66,"tag":271,"props":272,"children":275},"span",{"class":273,"line":274},"line",1,[276,282],{"type":66,"tag":271,"props":277,"children":279},{"style":278},"--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0",[280],{"type":38,"value":281},"unzip",{"type":66,"tag":271,"props":283,"children":285},{"style":284},"--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF",[286],{"type":38,"value":287}," browser-testing.zip\n",{"type":66,"tag":271,"props":289,"children":291},{"class":273,"line":290},2,[292,297,303],{"type":66,"tag":271,"props":293,"children":294},{"style":278},[295],{"type":38,"value":296},"mkdir",{"type":66,"tag":271,"props":298,"children":300},{"style":299},"--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF",[301],{"type":38,"value":302}," -p",{"type":66,"tag":271,"props":304,"children":305},{"style":284},[306],{"type":38,"value":307}," .claude\n",{"type":66,"tag":271,"props":309,"children":311},{"class":273,"line":310},3,[312,317,322,327,332],{"type":66,"tag":271,"props":313,"children":314},{"style":278},[315],{"type":38,"value":316},"cp",{"type":66,"tag":271,"props":318,"children":319},{"style":299},[320],{"type":38,"value":321}," -R",{"type":66,"tag":271,"props":323,"children":324},{"style":284},[325],{"type":38,"value":326}," browser-testing\u002Fskills",{"type":66,"tag":271,"props":328,"children":329},{"style":284},[330],{"type":38,"value":331}," browser-testing\u002Frules",{"type":66,"tag":271,"props":333,"children":334},{"style":284},[335],{"type":38,"value":336}," .claude\u002F\n",{"type":66,"tag":271,"props":338,"children":340},{"class":273,"line":339},4,[341,346,351,357],{"type":66,"tag":271,"props":342,"children":343},{"style":278},[344],{"type":38,"value":345},"cat",{"type":66,"tag":271,"props":347,"children":348},{"style":284},[349],{"type":38,"value":350}," browser-testing\u002FCLAUDE.md",{"type":66,"tag":271,"props":352,"children":354},{"style":353},"--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583",[355],{"type":38,"value":356}," >>",{"type":66,"tag":271,"props":358,"children":359},{"style":284},[360],{"type":38,"value":361}," CLAUDE.md\n",{"type":66,"tag":72,"props":363,"children":364},{},[365,370,372,378,380,386,388,394],{"type":66,"tag":119,"props":366,"children":368},{"className":367},[],[369],{"type":38,"value":55},{"type":38,"value":371}," must be ",{"type":66,"tag":373,"props":374,"children":375},"strong",{},[376],{"type":38,"value":377},"merged",{"type":38,"value":379},", not copied — you almost certainly have one already.\nAppend the three entries to the existing ",{"type":66,"tag":119,"props":381,"children":383},{"className":382},[],[384],{"type":38,"value":385},"permissions.allow",{"type":38,"value":387}," array in ",{"type":66,"tag":119,"props":389,"children":391},{"className":390},[],[392],{"type":38,"value":393},".claude\u002Fsettings.local.json",{"type":38,"value":395},":",{"type":66,"tag":260,"props":397,"children":401},{"className":398,"code":399,"language":400,"meta":265,"style":265},"language-json shiki shiki-themes material-theme-lighter github-light github-dark","{\n  \"permissions\": {\n    \"allow\": [\n      \"Bash(playwright-cli:*)\",\n      \"Bash(npm install -g @playwright\u002Fcli*)\",\n      \"Bash(npx playwright:*)\"\n    ]\n  }\n}\n","json",[402],{"type":66,"tag":119,"props":403,"children":404},{"__ignoreMap":265},[405,414,443,470,493,513,531,540,549],{"type":66,"tag":271,"props":406,"children":407},{"class":273,"line":274},[408],{"type":66,"tag":271,"props":409,"children":411},{"style":410},"--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8",[412],{"type":38,"value":413},"{\n",{"type":66,"tag":271,"props":415,"children":416},{"class":273,"line":290},[417,423,429,434,438],{"type":66,"tag":271,"props":418,"children":420},{"style":419},"--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#79B8FF",[421],{"type":38,"value":422},"  \"",{"type":66,"tag":271,"props":424,"children":426},{"style":425},"--shiki-light:#9C3EDA;--shiki-default:#005CC5;--shiki-dark:#79B8FF",[427],{"type":38,"value":428},"permissions",{"type":66,"tag":271,"props":430,"children":431},{"style":419},[432],{"type":38,"value":433},"\"",{"type":66,"tag":271,"props":435,"children":436},{"style":410},[437],{"type":38,"value":395},{"type":66,"tag":271,"props":439,"children":440},{"style":410},[441],{"type":38,"value":442}," {\n",{"type":66,"tag":271,"props":444,"children":445},{"class":273,"line":310},[446,451,457,461,465],{"type":66,"tag":271,"props":447,"children":448},{"style":419},[449],{"type":38,"value":450},"    \"",{"type":66,"tag":271,"props":452,"children":454},{"style":453},"--shiki-light:#E2931D;--shiki-default:#005CC5;--shiki-dark:#79B8FF",[455],{"type":38,"value":456},"allow",{"type":66,"tag":271,"props":458,"children":459},{"style":419},[460],{"type":38,"value":433},{"type":66,"tag":271,"props":462,"children":463},{"style":410},[464],{"type":38,"value":395},{"type":66,"tag":271,"props":466,"children":467},{"style":410},[468],{"type":38,"value":469}," [\n",{"type":66,"tag":271,"props":471,"children":472},{"class":273,"line":339},[473,479,484,488],{"type":66,"tag":271,"props":474,"children":476},{"style":475},"--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF",[477],{"type":38,"value":478},"      \"",{"type":66,"tag":271,"props":480,"children":481},{"style":284},[482],{"type":38,"value":483},"Bash(playwright-cli:*)",{"type":66,"tag":271,"props":485,"children":486},{"style":475},[487],{"type":38,"value":433},{"type":66,"tag":271,"props":489,"children":490},{"style":410},[491],{"type":38,"value":492},",\n",{"type":66,"tag":271,"props":494,"children":495},{"class":273,"line":27},[496,500,505,509],{"type":66,"tag":271,"props":497,"children":498},{"style":475},[499],{"type":38,"value":478},{"type":66,"tag":271,"props":501,"children":502},{"style":284},[503],{"type":38,"value":504},"Bash(npm install -g @playwright\u002Fcli*)",{"type":66,"tag":271,"props":506,"children":507},{"style":475},[508],{"type":38,"value":433},{"type":66,"tag":271,"props":510,"children":511},{"style":410},[512],{"type":38,"value":492},{"type":66,"tag":271,"props":514,"children":516},{"class":273,"line":515},6,[517,521,526],{"type":66,"tag":271,"props":518,"children":519},{"style":475},[520],{"type":38,"value":478},{"type":66,"tag":271,"props":522,"children":523},{"style":284},[524],{"type":38,"value":525},"Bash(npx playwright:*)",{"type":66,"tag":271,"props":527,"children":528},{"style":475},[529],{"type":38,"value":530},"\"\n",{"type":66,"tag":271,"props":532,"children":534},{"class":273,"line":533},7,[535],{"type":66,"tag":271,"props":536,"children":537},{"style":410},[538],{"type":38,"value":539},"    ]\n",{"type":66,"tag":271,"props":541,"children":543},{"class":273,"line":542},8,[544],{"type":66,"tag":271,"props":545,"children":546},{"style":410},[547],{"type":38,"value":548},"  }\n",{"type":66,"tag":271,"props":550,"children":552},{"class":273,"line":551},9,[553],{"type":66,"tag":271,"props":554,"children":555},{"style":410},[556],{"type":38,"value":557},"}\n",{"type":66,"tag":72,"props":559,"children":560},{},[561,563,568,570,576],{"type":38,"value":562},"If you have no ",{"type":66,"tag":119,"props":564,"children":566},{"className":565},[],[567],{"type":38,"value":393},{"type":38,"value":569}," yet, copy the bundle's file straight over:\n",{"type":66,"tag":119,"props":571,"children":573},{"className":572},[],[574],{"type":38,"value":575},"cp browser-testing\u002Fsettings.local.json .claude\u002F",{"type":38,"value":252},{"type":66,"tag":78,"props":578,"children":580},{"id":579},"how-the-rule-fires",[581],{"type":38,"value":582},"How the rule fires",{"type":66,"tag":72,"props":584,"children":585},{},[586,588,594,596,601,603,608,610,615,617,622],{"type":38,"value":587},"Path-scoped rules load automatically when Claude touches a matching file. Edit a ",{"type":66,"tag":119,"props":589,"children":591},{"className":590},[],[592],{"type":38,"value":593},".vue",{"type":38,"value":595}," component\nor anything under ",{"type":66,"tag":119,"props":597,"children":599},{"className":598},[],[600],{"type":38,"value":181},{"type":38,"value":602},", and ",{"type":66,"tag":119,"props":604,"children":606},{"className":605},[],[607],{"type":38,"value":35},{"type":38,"value":609}," enters the context with a single\ninstruction: prove it in the browser, via the ",{"type":66,"tag":119,"props":611,"children":613},{"className":612},[],[614],{"type":38,"value":9},{"type":38,"value":616}," skill, before saying it's done.\nThe skill then carries the whole procedure — including installing ",{"type":66,"tag":119,"props":618,"children":620},{"className":619},[],[621],{"type":38,"value":219},{"type":38,"value":623}," from npm if it\nisn't on PATH, so \"the tool wasn't there\" never becomes a reason to skip verification.",{"type":66,"tag":78,"props":625,"children":627},{"id":626},"why",[628],{"type":38,"value":629},"Why",{"type":66,"tag":72,"props":631,"children":632},{},[633],{"type":38,"value":634},"Typecheck, lint and unit tests all pass on a component that never mounted, a Tailwind class that\nresolved to nothing, a click handler bound to the wrong element, and a page that throws on\nhydration. Only a real browser catches those. The skill's evidence rules are the point: exact\ncommands, their outputs, a screenshot you actually looked at, and a console check — not \"verified,\nlooks good\".",{"type":66,"tag":78,"props":636,"children":638},{"id":637},"requirements",[639],{"type":38,"value":640},"Requirements",{"type":66,"tag":642,"props":643,"children":644},"ul",{},[645,671],{"type":66,"tag":646,"props":647,"children":648},"li",{},[649,654,656,661,663,669],{"type":66,"tag":119,"props":650,"children":652},{"className":651},[],[653],{"type":38,"value":20},{"type":38,"value":655}," and ",{"type":66,"tag":119,"props":657,"children":659},{"className":658},[],[660],{"type":38,"value":21},{"type":38,"value":662}," on PATH. The skill installs ",{"type":66,"tag":119,"props":664,"children":666},{"className":665},[],[667],{"type":38,"value":668},"@playwright\u002Fcli",{"type":38,"value":670}," globally if missing.",{"type":66,"tag":646,"props":672,"children":673},{},[674,676,682],{"type":38,"value":675},"Playwright browsers are a separate download (",{"type":66,"tag":119,"props":677,"children":679},{"className":678},[],[680],{"type":38,"value":681},"npx playwright install",{"type":38,"value":683},"); the skill covers the\nprompt you'll see.",{"type":66,"tag":78,"props":685,"children":687},{"id":686},"test-accounts",[688],{"type":38,"value":689},"Test accounts",{"type":66,"tag":72,"props":691,"children":692},{},[693,695,700,702,708],{"type":38,"value":694},"Credentials never live in this bundle. For an auth-gated app, register a test account in the ",{"type":66,"tag":373,"props":696,"children":697},{},[698],{"type":38,"value":699},"dev",{"type":38,"value":701},"\nenvironment and keep its email, password, login steps and dev URL in a project-local skill\n(",{"type":66,"tag":119,"props":703,"children":705},{"className":704},[],[706],{"type":38,"value":707},".claude\u002Fskills\u002F\u003Cproject>-browser-testing\u002FSKILL.md",{"type":38,"value":709},"). That file is also the right place for the\nproject's dev command, port, and the routes worth covering after a change.",{"type":66,"tag":78,"props":711,"children":713},{"id":712},"companion-bundles",[714],{"type":38,"value":715},"Companion bundles",{"type":66,"tag":642,"props":717,"children":718},{},[719],{"type":66,"tag":646,"props":720,"children":721},{},[722,736,737,750],{"type":66,"tag":373,"props":723,"children":724},{},[725],{"type":66,"tag":726,"props":727,"children":729},"a",{"href":728},"\u002Fskill\u002Fnuxt",[730],{"type":66,"tag":119,"props":731,"children":733},{"className":732},[],[734],{"type":38,"value":735},"nuxt",{"type":38,"value":655},{"type":66,"tag":373,"props":738,"children":739},{},[740],{"type":66,"tag":726,"props":741,"children":743},{"href":742},"\u002Fskill\u002Fnuxt-ui",[744],{"type":66,"tag":119,"props":745,"children":747},{"className":746},[],[748],{"type":38,"value":749},"nuxt-ui",{"type":38,"value":751}," — their rules point back here for UI validation.",{"type":66,"tag":753,"props":754,"children":755},"style",{},[756],{"type":38,"value":757},"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":759,"author":17,"authorUrl":18,"requires":760},[13,14,15,16],[20,21]]