Prerequisites
- A StrawHub account (sign in with GitHub)
- An API token (for CLI publishing) — create one at Settings > API Tokens
Publishing via CLI
1. Create your skill or role
Create a directory with aSKILL.md or ROLE.md:
2. Authenticate
3. Publish
Publishing via Web UI
- Go to strawhub.dev/upload
- Drag and drop your files or folder
- The form auto-fills from frontmatter (slug, display name)
- Add a version and changelog
- Click Publish
Publishing via GitHub Import
- Go to strawhub.dev/upload
- Paste a GitHub repository URL containing your
SKILL.mdorROLE.md - Files are fetched via the GitHub Contents API
- Review and publish
Version Rules
- Versions follow semver (
major.minor.patch) - New versions must be strictly greater than the latest published version
- If no version is specified, the patch version is auto-incremented
- Version monotonicity is enforced at publish time
Slug Ownership
- The first user to publish a slug owns it
- Only the owner can publish new versions
- Slug uniqueness is per-type: a skill and a role can share the same slug
- Slugs cannot be transferred (contact an admin if needed)
Updating an Existing Package
To publish a new version of an existing package, use the same slug:?updateSlug=my-skill.
File Constraints
| Constraint | Limit |
|---|---|
| Max files per package | 20 |
| Max file size | 512 KB |
| Allowed extensions | .md, .txt, .json, .yaml, .yml, .toml |
Dependency Validation
When publishing, dependencies declared in frontmatter are validated:- Each dependency slug must exist in the registry
- Version constraints must be satisfiable by at least one published version
- Circular dependencies are rejected
- All validation errors are reported together (not just the first one)