BMAD Expansion Pack Installer
A modern Python tool for installing BMAD (Breakthrough Method for Agile Ai Driven Development) expansion packs with proper directory structure, symbolic links, and manifest management.
Features
- Installs BMAD expansion packs with proper directory structure
- Creates symbolic links for Claude Code integration
- Generates hidden directories using
.bmad-pack-nameformat - Provides SHA-256 hash generation and verification
- Creates and updates installation manifests
- Excludes development files and directories automatically
- Supports Windows, macOS, and Linux
- Displays progress indicators during installation
- Validates source packs and target projects
Installation
From PyPI
# Install with pip
pip install bmad-pack-installer
# Install with uv
uv add bmad-pack-installer
# Use the installed tool
bmad-pack-installer deploy ./expansion-pack-source ./target-project
From GitHub Source
# Clone the repository
git clone https://github.com/najibninaba/bmad-pack-installer.git
cd bmad-pack-installer
# Install in virtual environment with uv
uv venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
uv pip install -e .
# Install in virtual environment with pip
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -e .
Direct Usage (No Installation)
# Run directly with uvx
uvx bmad-pack-installer deploy ./expansion-pack-source ./target-project
# Install as uv tool
uv tool install bmad-pack-installer
bmad-pack-installer deploy ./expansion-pack-source ./target-project
Usage
Basic Deployment
# Deploy expansion pack to BMAD project
uvx bmad-pack-installer deploy ./bmad-aisg-aiml /path/to/project
Advanced Options
# Custom pack and command names
uvx bmad-pack-installer deploy ./source /target \
--pack-name=ai-ml-engineering \
--command-name=bmadAISG
# Dry run to preview changes
uvx bmad-pack-installer deploy ./source /target --dry-run
# Force reinstall over existing pack
uvx bmad-pack-installer deploy ./source /target --force
# Skip certain installation steps
uvx bmad-pack-installer deploy ./source /target \
--skip-core-update \
--skip-symlinks
# Configure for different IDE
uvx bmad-pack-installer deploy ./source /target --ide=cursor
Validation Commands
# Check if directory is a valid BMAD project
uvx bmad-pack-installer check /path/to/project
# Validate expansion pack structure
uvx bmad-pack-installer validate ./expansion-pack
Command Line Options
| Option | Description |
|---|---|
--pack-name |
Override pack name (auto-prepends 'bmad-' if missing) |
--command-name |
Claude command name (default: from config.yaml) |
--ide |
IDE to configure: claude-code, cursor, windsurf |
--skip-core-update |
Skip updating .bmad-core/install-manifest.yaml |
--skip-symlinks |
Skip creating symbolic links |
--force |
Overwrite existing installation |
--dry-run |
Show what would be installed without changes |
--verbose |
Enable detailed logging |
Expansion Pack Requirements
Your expansion pack must have this structure:
bmad-expansion-pack/
├── config.yaml # Required: Pack metadata
├── agents/ # AI agent definitions
│ └── *.md
├── tasks/ # Task definitions
│ └── *.md
├── templates/ # Document templates
│ └── *.yaml
├── checklists/ # Validation checklists
│ └── *.md
├── workflows/ # Multi-step workflows
│ └── *.yaml
├── agent-teams/ # Agent team configurations
│ └── *.yaml
├── data/ # Reference data
│ └── *.md
└── web-bundles/ # Pre-built UI bundles
└── *.txt
Required config.yaml
name: expansion-pack-name # Will get 'bmad-' prefix
version: 1.0.0 # Semantic version
description: Pack description # Human-readable description
slashPrefix: commandName # Claude command name (optional)
Deployment Process
The installer performs these steps:
- Validates source pack and target project
- Copies files to hidden
.bmad-pack-name/directory - Generates SHA-256 hashes for integrity checking
- Creates installation manifests
- Updates
.bmad-core/install-manifest.yaml - Creates symbolic links in
.claude/commands/
Examples
Deploying the AI/ML Engineering Pack
# Basic deployment
uvx bmad-pack-installer deploy ./bmad-aisg-aiml ./my-project
# Results in:
# - Hidden directory: ./my-project/.bmad-aisg-aiml/
# - Claude commands: ./my-project/.claude/commands/bmadAISG/
# - Updated manifests and symlinks
Dry Run Preview
uvx bmad-pack-installer deploy ./pack ./project --dry-run
# Output:
# DRY RUN: Would deploy expansion pack 'bmad-pack-name'
# Target directory: .bmad-pack-name
# Files to deploy: 47
# Potential symlinks: 12
# Command name: packCommand
Target Project Requirements
The target project must be BMAD-enabled with:
.bmad-core/directory.bmad-core/install-manifest.yamlfile
Development
To develop or contribute to this tool:
# Clone and setup
git clone <repository>
cd bmad-pack-installer
# Install in development mode
uv pip install -e .
# Run tests
uv run pytest
# Format code
uv run black src/
uv run flake8 src/
Troubleshooting
Pack Not Recognized
- Ensure
config.yamlexists in source directory - Verify required fields:
name,version
Target Not Valid BMAD Project
- Check for
.bmad-core/directory - Verify
.bmad-core/install-manifest.yamlexists
Symlink Creation Failed
- On Windows: Run as Administrator or enable Developer Mode
- Fallback: Files are copied instead of symlinked
Permission Errors
- Check write permissions to target directory
- Ensure
.bmad-core/install-manifest.yamlis writable
License
MIT License - see LICENSE file for details.
Support
For issues and feature requests, please visit the GitHub repository.
Metadata
Release files for bmad-pack-installer 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| bmad_pack_installer-1.1.0.tar.gz | 75.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| bmad_pack_installer-1.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 95.0 kB
Release files / bmad_pack_installer-1.1.0.tar.gz
| Download URL | bmad_pack_installer-1.1.0.tar.gz |
|---|---|
| Size | 75.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a3948f1ae6a28fab34ad8bef7093c872da0afea792bd2a908c113e1a2fec5a22
|
|
BLAKE2b-256 checksum How to use checksums |
80f6ed01185ab19d7dee551b38d315a5fa74b37e2ad9fb67bccb68b8f68a4f5d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.5
|
Release files / bmad_pack_installer-1.1.0-py3-none-any.whl
| Download URL | bmad_pack_installer-1.1.0-py3-none-any.whl |
|---|---|
| Size | 19.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c89a14c0f33e9d129044f196bfbd580e4ab4d74b9e9fb95960ac2696b98d00e3
|
|
BLAKE2b-256 checksum How to use checksums |
96044f69b73c849184c85eceb8e5e53b8314a03214457a5c930f40f2a6f71bd5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.5
|