Bundle structure

Bundle structure

Every bundle is a directory under skills/ in the repository. The directory name is the slug: lowercase letters, digits and hyphens (^[a-z0-9][a-z0-9-]*$). It becomes the URL (/skill/<slug>) and the zip's root folder.

skills/
└── <slug>/
    ├── README.md              required — frontmatter + docs
    ├── skills/<name>/SKILL.md optional — one folder per skill
    ├── rules/*.md             optional — path-scoped rules
    ├── hooks/*                optional — scripts referenced by settings
    ├── settings.local.json    optional — hooks/permissions config
    └── CLAUDE.md              optional — pointer snippet

Only README.md is required. Everything else is copied into a project's .claude/ verbatim, so structure it exactly as Claude Code expects.

README.md

The README is two things at once: metadata (YAML frontmatter, see Frontmatter reference) and documentation (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 CLAUDE.md snippet.

skills/

Standard Claude Code skills: skills/<name>/SKILL.md with name and description frontmatter, plus any scripts or assets the skill uses. Keep generated caches out of the repo; any cache/ directory is ignored by the site and never zipped.

rules/

Markdown files with a paths: frontmatter glob. Rules state when and what constraints; they should point at a skill for the how.

hooks/ and settings.local.json

See Hooks and settings.

CLAUDE.md

A short block the user pastes into their own CLAUDE.md. Keep it to pointers: which skills to invoke, which rules exist, one or two hard constraints.

What the site ignores

  • any cache/ directory
  • dotfiles and dot-directories (.gitignore, .DS_Store, .hidden/)
  • files over 1 MB (listed in the tree as "too large", never served or zipped)

Binary files are listed but shown as a placeholder with a link to GitHub.