[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f17iujq5i3oszw":3},{"entry":4,"body":9,"data":292},{"slug":5,"title":6,"file":7,"description":8},"contributing","Contributing","contributing.md","How a pull request becomes a live bundle.",{"type":10,"children":11},"root",[12,19,25,32,166,172,193,231,236,242,286],{"type":13,"tag":14,"props":15,"children":16},"element","h1",{"id":5},[17],{"type":18,"value":6},"text",{"type":13,"tag":20,"props":21,"children":22},"p",{},[23],{"type":18,"value":24},"This is primarily a personal registry, but pull requests for genuinely reusable bundles are welcome.",{"type":13,"tag":26,"props":27,"children":29},"h2",{"id":28},"add-a-bundle",[30],{"type":18,"value":31},"Add a bundle",{"type":13,"tag":33,"props":34,"children":35},"ol",{},[36,60,81,128,161],{"type":13,"tag":37,"props":38,"children":39},"li",{},[40,42,49,51,58],{"type":18,"value":41},"Fork the repository and create ",{"type":13,"tag":43,"props":44,"children":46},"code",{"className":45},[],[47],{"type":18,"value":48},"skills\u002F\u003Cslug>\u002F",{"type":18,"value":50}," (see ",{"type":13,"tag":52,"props":53,"children":55},"a",{"href":54},"\u002Fdocs\u002Fbundle-structure",[56],{"type":18,"value":57},"Bundle structure",{"type":18,"value":59},").",{"type":13,"tag":37,"props":61,"children":62},{},[63,65,71,73,79],{"type":18,"value":64},"Write ",{"type":13,"tag":43,"props":66,"children":68},{"className":67},[],[69],{"type":18,"value":70},"README.md",{"type":18,"value":72}," with valid ",{"type":13,"tag":52,"props":74,"children":76},{"href":75},"\u002Fdocs\u002Ffrontmatter",[77],{"type":18,"value":78},"frontmatter",{"type":18,"value":80}," and a body that explains what the bundle does and how to install it.",{"type":13,"tag":37,"props":82,"children":83},{},[84,86],{"type":18,"value":85},"Run the validator locally:",{"type":13,"tag":87,"props":88,"children":93},"pre",{"className":89,"code":90,"language":91,"meta":92,"style":92},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","pnpm install\npnpm validate:skills\n","bash","",[94],{"type":13,"tag":43,"props":95,"children":96},{"__ignoreMap":92},[97,115],{"type":13,"tag":98,"props":99,"children":102},"span",{"class":100,"line":101},"line",1,[103,109],{"type":13,"tag":98,"props":104,"children":106},{"style":105},"--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0",[107],{"type":18,"value":108},"pnpm",{"type":13,"tag":98,"props":110,"children":112},{"style":111},"--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF",[113],{"type":18,"value":114}," install\n",{"type":13,"tag":98,"props":116,"children":118},{"class":100,"line":117},2,[119,123],{"type":13,"tag":98,"props":120,"children":121},{"style":105},[122],{"type":18,"value":108},{"type":13,"tag":98,"props":124,"children":125},{"style":111},[126],{"type":18,"value":127}," validate:skills\n",{"type":13,"tag":37,"props":129,"children":130},{},[131,133],{"type":18,"value":132},"Run the site against your working tree and check the page:",{"type":13,"tag":87,"props":134,"children":136},{"className":89,"code":135,"language":91,"meta":92,"style":92},"pnpm dev\n# open http:\u002F\u002Flocalhost:3000\u002Fskill\u002F\u003Cslug>\n",[137],{"type":13,"tag":43,"props":138,"children":139},{"__ignoreMap":92},[140,152],{"type":13,"tag":98,"props":141,"children":142},{"class":100,"line":101},[143,147],{"type":13,"tag":98,"props":144,"children":145},{"style":105},[146],{"type":18,"value":108},{"type":13,"tag":98,"props":148,"children":149},{"style":111},[150],{"type":18,"value":151}," dev\n",{"type":13,"tag":98,"props":153,"children":154},{"class":100,"line":117},[155],{"type":13,"tag":98,"props":156,"children":158},{"style":157},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit",[159],{"type":18,"value":160},"# open http:\u002F\u002Flocalhost:3000\u002Fskill\u002F\u003Cslug>\n",{"type":13,"tag":37,"props":162,"children":163},{},[164],{"type":18,"value":165},"Open a pull request. CI runs the same validator plus the app's lint, typecheck, tests and build.",{"type":13,"tag":26,"props":167,"children":169},{"id":168},"what-happens-on-merge",[170],{"type":18,"value":171},"What happens on merge",{"type":13,"tag":20,"props":173,"children":174},{},[175,177,183,185,191],{"type":18,"value":176},"Bundle content is read from GitHub ",{"type":13,"tag":178,"props":179,"children":180},"strong",{},[181],{"type":18,"value":182},"at runtime",{"type":18,"value":184},". Merging to ",{"type":13,"tag":43,"props":186,"children":188},{"className":187},[],[189],{"type":18,"value":190},"main",{"type":18,"value":192},":",{"type":13,"tag":194,"props":195,"children":196},"ul",{},[197,218],{"type":13,"tag":37,"props":198,"children":199},{},[200,202,208,210,216],{"type":18,"value":201},"skips the Vercel build when only ",{"type":13,"tag":43,"props":203,"children":205},{"className":204},[],[206],{"type":18,"value":207},"skills\u002F**",{"type":18,"value":209}," changed (the Ignored Build Step in ",{"type":13,"tag":43,"props":211,"children":213},{"className":212},[],[214],{"type":18,"value":215},"vercel.json",{"type":18,"value":217},");",{"type":13,"tag":37,"props":219,"children":220},{},[221,223,229],{"type":18,"value":222},"runs the ",{"type":13,"tag":43,"props":224,"children":226},{"className":225},[],[227],{"type":18,"value":228},"revalidate",{"type":18,"value":230}," workflow, which purges the cache tag and asserts the site now serves your commit.",{"type":13,"tag":20,"props":232,"children":233},{},[234],{"type":18,"value":235},"Your bundle is live within seconds of the merge.",{"type":13,"tag":26,"props":237,"children":239},{"id":238},"ground-rules",[240],{"type":18,"value":241},"Ground rules",{"type":13,"tag":194,"props":243,"children":244},{},[245,250,263,276,281],{"type":13,"tag":37,"props":246,"children":247},{},[248],{"type":18,"value":249},"No secrets, credentials, internal hostnames or IPs. Bundles are public.",{"type":13,"tag":37,"props":251,"children":252},{},[253,255,261],{"type":18,"value":254},"No generated caches. ",{"type":13,"tag":43,"props":256,"children":258},{"className":257},[],[259],{"type":18,"value":260},"cache\u002F",{"type":18,"value":262}," directories are ignored anyway, but do not commit them.",{"type":13,"tag":37,"props":264,"children":265},{},[266,268,274],{"type":18,"value":267},"Keep bundles generic. Project-specific paths, theme mappings or account names belong in the user's own ",{"type":13,"tag":43,"props":269,"children":271},{"className":270},[],[272],{"type":18,"value":273},"CLAUDE.md",{"type":18,"value":275},", not here.",{"type":13,"tag":37,"props":277,"children":278},{},[279],{"type":18,"value":280},"Lowercase tags, one concern per bundle.",{"type":13,"tag":37,"props":282,"children":283},{},[284],{"type":18,"value":285},"READMEs render as markdown with raw HTML allowed (scripts and event handlers are stripped), so bundle content is trusted at PR-review time — review it as you would any other code you merge.",{"type":13,"tag":287,"props":288,"children":289},"style",{},[290],{"type":18,"value":291},"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);}",{}]