Distribute Your Module
This guide walks through publishing a BMad module to GitHub with a .claude-plugin/marketplace.json manifest so anyone can install it in one command.
When to Use This
Section titled βWhen to Use Thisβ- You have a module ready to share publicly or within your organization
- Others should be able to install it through the BMad installer
- The repository may host one module or several
When to Skip This
Section titled βWhen to Skip Thisβ- The module is for personal use in a single project. Keep the skills in your project.
- The module isnβt stable yet. Distribute once it is.
Step 1: Configure the Plugin Manifest
Section titled βStep 1: Configure the Plugin ManifestβThe BMad installer discovers modules through a .claude-plugin/marketplace.json manifest at the repository root. Create Module (CM) generates this file for you. Verify and complete it before publishing.
This format works for any skills-capable platform, not just Claude.
A minimal manifest for a single module:
{ "name": "my-module", "owner": { "name": "Your Name" }, "license": "MIT", "homepage": "https://github.com/your-github/my-module", "repository": "https://github.com/your-github/my-module", "keywords": ["bmad", "your-domain"], "plugins": [ { "name": "my-module", "source": "./", "description": "What your module does in one sentence.", "version": "1.0.0", "author": { "name": "Your Name" }, "skills": [ "./skills/my-agent", "./skills/my-workflow" ] } ]}| Field | Purpose |
|---|---|
| name | Package identifier, lowercase and hyphenated |
| plugins[].source | Path from repo root to the moduleβs skill folder parent |
| plugins[].skills | Array of relative paths to each skill directory |
| plugins[].version | Semantic version; bump on each release |
For repositories that ship multiple modules, add an entry to the plugins array for each one, pointing to its own skill directories.
Step 2: Structure Your Repository
Section titled βStep 2: Structure Your RepositoryβOrganize the repository so the installer can locate skills relative to marketplace.json.
Single-module repository
Section titled βSingle-module repositoryβmy-module/βββ .claude-plugin/β βββ marketplace.jsonβββ skills/β βββ my-agent/β β βββ SKILL.mdβ β βββ prompts/β β βββ scripts/β βββ my-workflow/β β βββ SKILL.mdβ β βββ prompts/β βββ bmad-mymod-setup/ # Generated by Create Module (CM)β βββ SKILL.mdβ βββ assets/β β βββ module.yamlβ β βββ module-help.csvβ βββ scripts/β βββ merge-config.pyβ βββ merge-help-csv.pyβ βββ cleanup-legacy.pyβββ README.mdβββ LICENSEStandalone single-skill module
Section titled βStandalone single-skill moduleβmy-skill/βββ .claude-plugin/β βββ marketplace.jsonβββ skills/β βββ my-skill/β βββ SKILL.mdβ βββ assets/β β βββ module-setup.mdβ β βββ module.yamlβ β βββ module-help.csvβ βββ references/β βββ scripts/β βββ merge-config.pyβ βββ merge-help-csv.pyβββ README.mdβββ LICENSEMulti-module marketplace repository
Section titled βMulti-module marketplace repositoryβmy-marketplace/βββ .claude-plugin/β βββ marketplace.json # Multiple entries in plugins[]βββ skills/β βββ module-a/β β βββ skill-one/β β βββ skill-two/β β βββ bmad-moda-setup/β βββ module-b/β βββ standalone-skill/βββ README.mdβββ LICENSEStep 3: Verify the Manifest
Section titled βStep 3: Verify the ManifestβBefore publishing, confirm the manifest is accurate.
Check skill paths
Section titled βCheck skill pathsβEvery path in the skills array must point to a directory containing a SKILL.md file.
Check module registration files
Section titled βCheck module registration filesβMulti-skill modules need assets/module.yaml and assets/module-help.csv in the setup skill. Standalone modules keep these files in the skillβs own assets/ folder.
Run Validate Module
Section titled βRun Validate Moduleβ"Validate my module at ./skills"Validate Module (VM) checks for missing files, orphan entries, and other structural problems. Fix anything it flags before publishing.
Step 4: Publish to GitHub
Section titled βStep 4: Publish to GitHubβPush your repository to GitHub. Once the repo is accessible, anyone with permission can install the module.
Public modules
Section titled βPublic modulesβAnyone can install with:
npx bmad-method install --custom-content https://github.com/your-org/my-modulePrivate or organization modules
Section titled βPrivate or organization modulesβUsers with access install the same way. The installer uses whatever GitHub authentication is configured on the machine.
Versioning
Section titled βVersioningβTag releases with semantic versions. Installs pull from the default branch unless the user specifies a tag or branch.
What You Get
Section titled βWhat You GetβAfter publishing, users can:
- Install your module with
--custom-contentvia the BMad installer - Run the setup skill to register with
bmad-help - Browse your moduleβs capabilities through the help system
- Get configuration prompts defined in
module.yaml
Step 5: List in the Marketplace (Optional)
Section titled βStep 5: List in the Marketplace (Optional)βSubmit your module to the BMad Plugins Marketplace for visibility alongside official modules. A listing isnβt required for installation, but it adds discoverability and a trust tier badge after review.
See the marketplace CONTRIBUTING.md for the submission process.
- Include a
README.mdcovering what the module does, how to install it, and any external dependencies - Add a
LICENSEfile. MIT is common for open-source BMad modules. - Keep the
marketplace.jsonversion in sync with your release tags - External dependencies (CLI tools, MCP servers) should be documented in the README and detected by your setup skill
- Run
Validate Module (VM)before each release to catch regressions