Your First Bundle¶
Bundles are how you tell Amplifier what it can do. A bundle is a composable configuration package that defines which tools, agents, hooks, and instructions are available in a session. Think of bundles as loadouts — you pick one, and it determines what capabilities your AI assistant has.
In this guide you'll use a built-in bundle, then create your own from scratch.
What You'll Learn¶
- What bundles are and why they matter
- How to use existing bundles from the command line
- How to create a minimal custom bundle
- How to compose bundles together (the "thin bundle" pattern)
- How to set a default bundle so you don't have to specify one every time
Prerequisites¶
- Amplifier installed and configured (see Installation)
- A working provider and API key (
amplifier run "hello"should respond) - A text editor for creating bundle files
Step 1: Use an Existing Bundle¶
You already have a bundle active — the setup wizard picked one during amplifier init. Check which one:
amplifier bundle current
foundation (from global)
The foundation bundle is Amplifier's standard loadout. It gives you filesystem tools, bash, web search, code search, and the other core capabilities you've been using.
You can switch bundles for a single command without changing your default:
amplifier run --bundle recipes "What recipe templates are available?"
This runs one session with the recipes bundle (which adds multi-step workflow support), then your next session goes back to whatever default you had.
To switch your default persistently:
amplifier bundle use recipes
And to see everything available:
amplifier bundle list
Key Bundles to Know¶
| Bundle | What It Adds |
|---|---|
| foundation | Standard development tools — filesystem, bash, web search, code intelligence |
| recipes | Multi-step workflow engine for repeatable, declarative task automation |
| superpowers | TDD methodology, systematic debugging, and disciplined development agents |
| python-dev | Python-specific tooling — quality checks, virtual environment management |
| dot-graph | Graph visualization and structural analysis with Graphviz |
| browser-tester | Web automation — browser control, screenshots, form interaction |
Each bundle builds on foundation, so you get the core tools plus whatever the bundle specializes in.
Step 2: Install a Bundle from Git¶
Some bundles aren't built in — they live in their own repositories. Install one with bundle add:
amplifier bundle add git+https://github.com/microsoft/amplifier-bundle-recipes@main
amplifier bundle use recipes
The first command downloads the bundle and registers it locally. The second makes it your active bundle. Now when you start a session, you'll have recipe capabilities available alongside all the foundation tools.
Step 3: Create Your Own Bundle¶
Here's where it gets interesting. Let's build a custom bundle from scratch.
Create a directory for it:
mkdir -p ~/.amplifier/bundles/my-tools
cd ~/.amplifier/bundles/my-tools
Now create the bundle definition. Bundles are markdown files with YAML frontmatter — the YAML declares configuration, and the markdown body becomes the system instruction. Create bundle.md:
---
bundle:
name: my-tools
version: 1.0.0
description: My personal development toolkit
includes:
- bundle: git+https://github.com/microsoft/amplifier-foundation@main
---
# My Tools
You are a helpful development assistant with my preferred defaults.
When writing code, always:
- Use type hints for all function signatures
- Add docstrings to public functions
- Prefer explicit error handling over bare except clauses
When explaining code, be concise. Lead with what the code does,
then cover how it works.
That's a working bundle. The includes line pulls in foundation (so you keep all the standard tools), and the markdown body customizes the system prompt with your preferences.
Try it:
amplifier run --bundle ~/.amplifier/bundles/my-tools/bundle.md "Write a function that parses CSV files"
The response should follow your instructions — type hints, docstrings, proper error handling. The assistant is using foundation's tools but your custom instructions.
Step 4: Add an Agent¶
Agents are specialized sub-assistants your bundle provides. Let's add one.
Create the agents directory and an agent file:
mkdir -p agents
Create agents/quick-reviewer.md:
---
meta:
name: quick-reviewer
description: "Fast code review — checks style, types, and common mistakes."
---
# Quick Reviewer
You are a focused code reviewer. When given code to review:
1. Run python_check to catch formatting and type issues
2. Read the code and check for common mistakes
3. Provide feedback organized by severity (critical, warning, suggestion)
Be direct. Skip praise — focus on what needs to change and why.
Now update your bundle.md to register this agent:
---
bundle:
name: my-tools
version: 1.0.0
description: My personal development toolkit
includes:
- bundle: git+https://github.com/microsoft/amplifier-foundation@main
agents:
include:
- my-tools:quick-reviewer
---
# My Tools
You are a helpful development assistant with my preferred defaults.
When writing code, always:
- Use type hints for all function signatures
- Add docstrings to public functions
- Prefer explicit error handling over bare except clauses
When explaining code, be concise. Lead with what the code does,
then cover how it works.
## Agents
You can delegate code review tasks to **quick-reviewer**, a fast
code review specialist.
Notice the agent reference uses my-tools:quick-reviewer — the bundle name as namespace, then the agent name (which matches the file in agents/).
Step 5: Understand the Thin Bundle Pattern¶
Look at what we built: our bundle.md is only about 15 lines of YAML. All the heavy lifting — tools, session management, hooks — comes from foundation via includes. We only declared what's unique to us: custom instructions and one agent.
This is called the thin bundle pattern, and it's how most bundles should work. Don't redeclare tools that foundation already provides. Don't copy session configuration. Just include foundation and add your layer on top.
Here's what a thin bundle looks like versus a bloated one:
# GOOD: thin bundle — only declares what's new
includes:
- bundle: git+https://github.com/microsoft/amplifier-foundation@main
agents:
include:
- my-tools:quick-reviewer
# BAD: redeclares things foundation already has
includes:
- bundle: git+https://github.com/microsoft/amplifier-foundation@main
tools:
- module: tool-filesystem # foundation has this
source: git+https://...
- module: tool-bash # foundation has this too
source: git+https://...
session:
orchestrator: # foundation handles this
module: loop-streaming
The thin approach means you automatically get foundation updates. When foundation adds a new tool or improves a hook, your bundle picks it up for free.
Step 6: Compose Multiple Bundles¶
Bundles can include other bundles, building capability in layers. The includes key accepts multiple entries:
includes:
- bundle: git+https://github.com/microsoft/amplifier-foundation@main
- bundle: git+https://github.com/microsoft/amplifier-bundle-recipes@main
This gives you everything from foundation plus everything from recipes. Your custom instructions and agents layer on top. Later entries override earlier ones if there's a conflict — so your bundle's instructions replace foundation's, and your agents merge in alongside any agents from included bundles.
Verify¶
Let's confirm your custom bundle works end to end:
# Load your bundle
amplifier run --bundle ~/.amplifier/bundles/my-tools/bundle.md "List the agents you have available"
I have access to quick-reviewer — a fast code review specialist...
# Test the agent
amplifier run --bundle ~/.amplifier/bundles/my-tools/bundle.md \
"Delegate to quick-reviewer: review this function:
def calc(a, b, op):
if op == 'add': return a+b
elif op == 'sub': return a-b"
The assistant should delegate to your quick-reviewer agent, which will flag the missing type hints, absent docstring, and possibly suggest using a match statement or dictionary dispatch.
Try It Out: Set Your Default Bundle¶
If you want your custom bundle to be the default for all sessions, add it to your global settings:
amplifier bundle use ~/.amplifier/bundles/my-tools/bundle.md --global
Or edit ~/.amplifier/settings.yaml directly:
bundle: ~/.amplifier/bundles/my-tools/bundle.md
Now every time you run amplifier, it loads your bundle automatically. No --bundle flag needed.
You can always override it for a single session:
amplifier run --bundle foundation "Quick question without my customizations"
Your Final Bundle Structure¶
Here's what you built:
~/.amplifier/bundles/my-tools/
├── bundle.md # Bundle definition (YAML frontmatter + instructions)
└── agents/
└── quick-reviewer.md # Agent definition
Compact, composable, and entirely yours. As your needs grow, you can add more agents, include additional bundles, or create context files with domain knowledge.
Next Steps¶
You've created a working custom bundle. Here's where to go from here:
- Core Concepts — Understand bundles, agents, and modules at a deeper level
- Bundles Guide — Advanced patterns: behaviors, context files, local tool modules
- Tools Reference — Every tool available and how to configure it
- How It's Different — Why Amplifier's architecture works this way