[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f179y1mzai2kk8":3},{"entry":4,"body":9,"data":311},{"slug":5,"title":6,"file":7,"description":8},"bundle-structure","Bundle structure","bundle-structure.md","What goes where inside skills\u002F\u003Cslug>\u002F.",{"type":10,"children":11},"root",[12,19,58,70,91,97,133,138,175,181,215,221,233,238,250,256,306],{"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,25,32,34,40,42,48,50,56],{"type":18,"value":24},"Every bundle is a directory under ",{"type":13,"tag":26,"props":27,"children":29},"code",{"className":28},[],[30],{"type":18,"value":31},"skills\u002F",{"type":18,"value":33}," in the repository. The directory name is the ",{"type":13,"tag":35,"props":36,"children":37},"strong",{},[38],{"type":18,"value":39},"slug",{"type":18,"value":41},": lowercase letters, digits and hyphens (",{"type":13,"tag":26,"props":43,"children":45},{"className":44},[],[46],{"type":18,"value":47},"^[a-z0-9][a-z0-9-]*$",{"type":18,"value":49},"). It becomes the URL (",{"type":13,"tag":26,"props":51,"children":53},{"className":52},[],[54],{"type":18,"value":55},"\u002Fskill\u002F\u003Cslug>",{"type":18,"value":57},") and the zip's root folder.",{"type":13,"tag":59,"props":60,"children":65},"pre",{"className":61,"code":63,"language":18,"meta":64},[62],"language-text","skills\u002F\n└── \u003Cslug>\u002F\n    ├── README.md              required — frontmatter + docs\n    ├── skills\u002F\u003Cname>\u002FSKILL.md optional — one folder per skill\n    ├── rules\u002F*.md             optional — path-scoped rules\n    ├── hooks\u002F*                optional — scripts referenced by settings\n    ├── settings.local.json    optional — hooks\u002Fpermissions config\n    └── CLAUDE.md              optional — pointer snippet\n","",[66],{"type":13,"tag":26,"props":67,"children":68},{"__ignoreMap":64},[69],{"type":18,"value":63},{"type":13,"tag":20,"props":71,"children":72},{},[73,75,81,83,89],{"type":18,"value":74},"Only ",{"type":13,"tag":26,"props":76,"children":78},{"className":77},[],[79],{"type":18,"value":80},"README.md",{"type":18,"value":82}," is required. Everything else is copied into a project's ",{"type":13,"tag":26,"props":84,"children":86},{"className":85},[],[87],{"type":18,"value":88},".claude\u002F",{"type":18,"value":90}," verbatim, so structure it exactly as Claude Code expects.",{"type":13,"tag":92,"props":93,"children":95},"h2",{"id":94},"readmemd",[96],{"type":18,"value":80},{"type":13,"tag":20,"props":98,"children":99},{},[100,102,107,109,116,118,123,125,131],{"type":18,"value":101},"The README is two things at once: ",{"type":13,"tag":35,"props":103,"children":104},{},[105],{"type":18,"value":106},"metadata",{"type":18,"value":108}," (YAML frontmatter, see ",{"type":13,"tag":110,"props":111,"children":113},"a",{"href":112},"\u002Fdocs\u002Ffrontmatter",[114],{"type":18,"value":115},"Frontmatter reference",{"type":18,"value":117},") and ",{"type":13,"tag":35,"props":119,"children":120},{},[121],{"type":18,"value":122},"documentation",{"type":18,"value":124}," (the markdown body). The body is what renders on the bundle's page. Write it for someone deciding whether to install: what it does, what it needs, how to wire the ",{"type":13,"tag":26,"props":126,"children":128},{"className":127},[],[129],{"type":18,"value":130},"CLAUDE.md",{"type":18,"value":132}," snippet.",{"type":13,"tag":92,"props":134,"children":136},{"id":135},"skills",[137],{"type":18,"value":31},{"type":13,"tag":20,"props":139,"children":140},{},[141,143,149,151,157,159,165,167,173],{"type":18,"value":142},"Standard Claude Code skills: ",{"type":13,"tag":26,"props":144,"children":146},{"className":145},[],[147],{"type":18,"value":148},"skills\u002F\u003Cname>\u002FSKILL.md",{"type":18,"value":150}," with ",{"type":13,"tag":26,"props":152,"children":154},{"className":153},[],[155],{"type":18,"value":156},"name",{"type":18,"value":158}," and ",{"type":13,"tag":26,"props":160,"children":162},{"className":161},[],[163],{"type":18,"value":164},"description",{"type":18,"value":166}," frontmatter, plus any scripts or assets the skill uses. Keep generated caches out of the repo; any ",{"type":13,"tag":26,"props":168,"children":170},{"className":169},[],[171],{"type":18,"value":172},"cache\u002F",{"type":18,"value":174}," directory is ignored by the site and never zipped.",{"type":13,"tag":92,"props":176,"children":178},{"id":177},"rules",[179],{"type":18,"value":180},"rules\u002F",{"type":13,"tag":20,"props":182,"children":183},{},[184,186,192,194,200,201,206,208,213],{"type":18,"value":185},"Markdown files with a ",{"type":13,"tag":26,"props":187,"children":189},{"className":188},[],[190],{"type":18,"value":191},"paths:",{"type":18,"value":193}," frontmatter glob. Rules state ",{"type":13,"tag":195,"props":196,"children":197},"em",{},[198],{"type":18,"value":199},"when",{"type":18,"value":158},{"type":13,"tag":195,"props":202,"children":203},{},[204],{"type":18,"value":205},"what constraints",{"type":18,"value":207},"; they should point at a skill for the ",{"type":13,"tag":195,"props":209,"children":210},{},[211],{"type":18,"value":212},"how",{"type":18,"value":214},".",{"type":13,"tag":92,"props":216,"children":218},{"id":217},"hooks-and-settingslocaljson",[219],{"type":18,"value":220},"hooks\u002F and settings.local.json",{"type":13,"tag":20,"props":222,"children":223},{},[224,226,232],{"type":18,"value":225},"See ",{"type":13,"tag":110,"props":227,"children":229},{"href":228},"\u002Fdocs\u002Fhooks-and-settings",[230],{"type":18,"value":231},"Hooks and settings",{"type":18,"value":214},{"type":13,"tag":92,"props":234,"children":236},{"id":235},"claudemd",[237],{"type":18,"value":130},{"type":13,"tag":20,"props":239,"children":240},{},[241,243,248],{"type":18,"value":242},"A short block the user pastes into their own ",{"type":13,"tag":26,"props":244,"children":246},{"className":245},[],[247],{"type":18,"value":130},{"type":18,"value":249},". Keep it to pointers: which skills to invoke, which rules exist, one or two hard constraints.",{"type":13,"tag":92,"props":251,"children":253},{"id":252},"what-the-site-ignores",[254],{"type":18,"value":255},"What the site ignores",{"type":13,"tag":257,"props":258,"children":259},"ul",{},[260,273,301],{"type":13,"tag":261,"props":262,"children":263},"li",{},[264,266,271],{"type":18,"value":265},"any ",{"type":13,"tag":26,"props":267,"children":269},{"className":268},[],[270],{"type":18,"value":172},{"type":18,"value":272}," directory",{"type":13,"tag":261,"props":274,"children":275},{},[276,278,284,286,292,293,299],{"type":18,"value":277},"dotfiles and dot-directories (",{"type":13,"tag":26,"props":279,"children":281},{"className":280},[],[282],{"type":18,"value":283},".gitignore",{"type":18,"value":285},", ",{"type":13,"tag":26,"props":287,"children":289},{"className":288},[],[290],{"type":18,"value":291},".DS_Store",{"type":18,"value":285},{"type":13,"tag":26,"props":294,"children":296},{"className":295},[],[297],{"type":18,"value":298},".hidden\u002F",{"type":18,"value":300},")",{"type":13,"tag":261,"props":302,"children":303},{},[304],{"type":18,"value":305},"files over 1 MB (listed in the tree as \"too large\", never served or zipped)",{"type":13,"tag":20,"props":307,"children":308},{},[309],{"type":18,"value":310},"Binary files are listed but shown as a placeholder with a link to GitHub.",{}]