Doc Bundles
Bundles are curated, shareable collections of docs that can be installed in one command. Instead of telling a new teammate "pin these 8 entries," hand them a bundle file.
Quick Start
# Create a bundle from your current pins
chub bundle create api-stack \
--entries "openai/chat,stripe/api,serde/derive,axum/routing" \
--description "Backend API development stack" \
--author "Alice"
# Install it (pins all entries)
chub bundle install api-stack
# List available bundles
chub bundle listHow It Works
A bundle is a YAML file in .chub/bundles/ that lists entry IDs. When installed, each entry is pinned with a reason linking back to the bundle. Bundles are git-tracked, so the whole team gets them on pull.
.chub/
bundles/
api-stack.yaml
ml-pipeline.yaml
frontend.yamlCreating Bundles
chub bundle create <name> --entries "<id>,<id>,..." [--description "..."] [--author "..."] [--notes "..."]Entries are comma-separated doc IDs from the registry. The command creates .chub/bundles/<name>.yaml:
# .chub/bundles/api-stack.yaml
name: api-stack
description: Backend API development stack
author: Alice
entries:
- openai/chat
- stripe/api
- serde/derive
- axum/routing
notes: Standard stack for all backend servicesYou can also create bundle files by hand — the format is simple YAML.
Installing Bundles
# By name (looks in .chub/bundles/)
chub bundle install api-stack
# By file path (useful for shared bundles outside the project)
chub bundle install ~/company-bundles/onboarding.yamlEach entry is pinned with the reason From bundle: <name>, so chub pin list shows where each pin came from. Entries that are already pinned are skipped. If an entry ID doesn't exist in the registry, a warning is printed and the remaining entries continue.
Listing Bundles
chub bundle listShows all bundles in .chub/bundles/ with their descriptions and entry counts:
api-stack Backend API development stack (4 entries)
ml-pipeline ML/data processing dependencies (6 entries)
frontend React + styling libraries (5 entries)Team Workflows
Onboarding
Create a bundle per role so new teammates get the right context immediately:
# .chub/bundles/backend-onboarding.yaml
name: backend-onboarding
description: Everything a new backend engineer needs
author: Platform Team
entries:
- openai/chat
- stripe/api
- serde/derive
- axum/routing
- tokio/runtime
- sqlx/query
notes: Install on your first day. See also .chub/profiles/backend.yaml for agent rules.# New teammate runs:
chub bundle install backend-onboarding
chub profile use backendProject Bootstrap
Combine chub detect (auto-detect from dependencies) with a bundle for entries that aren't auto-detected:
# Auto-pin from package.json / Cargo.toml / etc.
chub detect --pin
# Add the extras that detection misses
chub bundle install project-extrasSharing Across Repos
Bundle files are plain YAML, so you can share them outside .chub/bundles/:
# Install from an absolute path
chub bundle install /shared/company-standards.yaml
# Install from a teammate's repo
chub bundle install ../other-project/.chub/bundles/common.yamlBundles vs. Profiles
Both help configure what docs an agent sees, but they serve different purposes:
| Bundles | Profiles | |
|---|---|---|
| What | A list of entry IDs to pin | Pins + context docs + agent rules |
| When | One-time setup (install and done) | Active selection (switch between roles) |
| Scope | Just pins | Pins, rules, and project context |
| Typical use | Onboarding, project bootstrap | Day-to-day role switching |
Use bundles to seed the initial set of pins. Use profiles to switch between different working contexts.
JSON Output
All bundle commands support --json for scripting:
chub bundle list --json
chub bundle create mystack --entries "a/b,c/d" --json
chub bundle install mystack --json