Claude-skill-registry concierge
Expert assistant for provisioning charm development and testing environments using concierge. Use when setting up development machines, bootstrapping Juju controllers, installing craft tools (charmcraft, snapcraft, rockcraft), or preparing test environments. Keywords include concierge, provision, development environment, Juju bootstrap, LXD, MicroK8s, K8s, craft tools, prepare, restore.
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/concierge" ~/.claude/skills/majiayu000-claude-skill-registry-concierge && rm -rf "$T"
skills/data/concierge/SKILL.mdConcierge Development Environment Assistant
Expert guidance for provisioning and managing charm development and testing environments using concierge.
What is Concierge?
Concierge is an opinionated utility for automating the setup of charm development machines. It:
- Installs craft tools (charmcraft, snapcraft, rockcraft)
- Configures providers (LXD, MicroK8s, K8s, Google Cloud)
- Bootstraps Juju controllers
- Installs additional packages (snaps and debs)
- Provides environment restoration capabilities
Core Workflows
Quick Start with Presets
# Full development environment (recommended for most developers) concierge prepare -p dev # Machine charm development only concierge prepare -p machine # Kubernetes-focused development concierge prepare -p k8s # Lightweight K8s with MicroK8s concierge prepare -p microk8s # Build tools only (no Juju) concierge prepare -p crafts
Presets comparison:
| Preset | Juju | LXD | K8s | MicroK8s | Charmcraft | Snapcraft | Rockcraft | Jhack |
|---|---|---|---|---|---|---|---|---|
| dev | ✓ | ✓† | ✓† | — | ✓ | ✓ | ✓ | ✓ |
| machine | ✓ | ✓† | — | — | ✓ | ✓ | — | — |
| k8s | ✓ | ✓* | ✓† | — | ✓ | — | ✓ | — |
| microk8s | ✓ | ✓* | — | ✓† | ✓ | — | ✓ | — |
| crafts | — | ✓ | — | — | ✓ | ✓ | ✓ | — |
Legend:
- ✓ = Installed
- ✓† = Installed and bootstrapped with Juju controller
- ✓* = Installed but NOT bootstrapped (only for charmcraft build backend)
- — = Not included
For detailed preset information, see references/presets.md
Environment Status
# Check provisioning status concierge status # Possible states: # - "provisioning" - Setup in progress # - "succeeded" - Ready for development # - "failed" - Setup encountered errors
Restoring Original State
# Reverse the prepare operation concierge restore
⚠️ CRITICAL WARNING:
does NOT account for packages/configuration that existed beforerestoreprepare- It literally reverses the
operationprepare - If you had LXD installed before running
,prepare
will remove itrestore - Use with caution on machines with existing configurations
Custom Configuration
Create a
concierge.yaml file in your working directory:
juju: channel: "3.6/stable" agent_version: "3.6.0" bootstrap_constraints: cores: 4 mem: 8G model_defaults: logging-config: "<root>=INFO" providers: microk8s: enable: true bootstrap: true channel: "1.31-strict/stable" lxd: enable: true bootstrap: true channel: "5.21/stable" k8s: enable: false gcloud: enable: false host: snaps: - name: astral-uv channel: "latest/edge" classic: true - name: jhack channel: "latest/stable" debs: - build-essential - python3-dev
Then run:
concierge prepare -c concierge.yaml
For complete YAML schema, see references/configuration.md
Overriding Configuration
# Override snap channels concierge prepare -p dev --juju-channel=4.0/edge # Install extra packages concierge prepare -p dev \ --extra-snaps=astral-uv/latest/edge,jhack \ --extra-debs=build-essential,python3-tox # Skip Juju installation/bootstrap concierge prepare -p crafts --disable-juju # Use Google Cloud credentials concierge prepare -p k8s --google-credential-file=~/gcloud-creds.json
Channel override flags:
--juju-channel--lxd-channel--k8s-channel--microk8s-channel--charmcraft-channel--snapcraft-channel--rockcraft-channel
Environment Variables
All flags have environment variable equivalents:
# Set via environment export CONCIERGE_JUJU_CHANNEL="4.0/edge" export CONCIERGE_EXTRA_SNAPS="astral-uv/latest/edge,jhack" export CONCIERGE_EXTRA_DEBS="build-essential" concierge prepare -p dev
Variable naming: Flag
--juju-channel becomes CONCIERGE_JUJU_CHANNEL
Common Workflows
Setting Up a New Development Machine
# 1. Install concierge sudo snap install --classic concierge # 2. Prepare full dev environment concierge prepare -p dev --extra-snaps=jhack # 3. Verify installation concierge status juju controllers lxc list # 4. Start developing cd my-charm-project charmcraft pack juju deploy ./my-charm.charm
Quick K8s Testing Environment
# Prepare K8s environment concierge prepare -p k8s # Verify controller juju controllers juju models # Deploy a K8s charm juju add-model test juju deploy postgresql-k8s
Minimal Build-Only Setup
# Just install craft tools (no Juju) concierge prepare -p crafts # Build charms and rocks cd my-charm charmcraft pack cd ../my-rock rockcraft pack
CI/CD Environment Setup
# Automated setup for CI concierge prepare -p dev \ --juju-channel=3.6/stable \ --extra-snaps=astral-uv/latest/edge \ --extra-debs=python3-tox,make # Check it worked concierge status if [ $? -eq 0 ]; then echo "Environment ready" fi
Cleaning Up After Testing
# Remove everything concierge installed concierge restore # Verify cleanup concierge status
Best Practices
Choosing a Preset
- Use
for general charm development - Includes everything most developers needdev - Use
for traditional charms - No K8s overheadmachine - Use
ork8s
for K8s-only work - Lighter thanmicrok8sdev - Use
for build servers - Minimal installation for building onlycrafts
Configuration Management
- Check config into version control - Share team configurations via
concierge.yaml - Use environment variables in CI - Easier than managing config files
- Document custom setups - Add comments to
concierge.yaml - Test configurations locally first - Before deploying to CI
Safety
- ⚠️ Never run
on production machines - It removes configurations blindlyrestore - Use virtual machines for testing - Try configurations safely
- Check status before and after -
shows what happenedconcierge status - Review preset contents - Know what will be installed before running
Development Workflow
- Prepare once per machine - Don't re-run
unnecessarilyprepare - Update tools via snap - Use
for updates, notsnap refresh
+restoreprepare - Use jhack for iteration - Once environment is ready, jhack speeds up development
- Keep environments consistent - Use same preset across team
Troubleshooting
Prepare Fails
# Run with verbose logging concierge prepare -p dev -v # Run with trace logging for detailed output concierge prepare -p dev --trace # Check status concierge status
Common issues:
- Insufficient permissions - Run with sudo
- Network connectivity - Check internet access
- Conflicting installations - Remove existing snaps first
- Disk space - Ensure adequate free space (10GB+ recommended)
Controller Bootstrap Fails
If Juju controller bootstrap fails:
# Check Juju logs juju debug-log -m controller # Manually bootstrap if needed juju bootstrap lxd juju bootstrap microk8s # Check provider status lxc list # For LXD microk8s status # For MicroK8s
Restore Issues
# Check what will be restored concierge status # Run restore with logging concierge restore -v
If restore fails:
- Check sudo/root access
- Review logs for specific errors
- Manually remove remaining configurations
Snap Installation Failures
# Check snap connectivity snap version snap list # Manually install problematic snaps sudo snap install juju --channel=3.6/stable --classic # Then retry prepare concierge prepare -p dev
Command Reference
# Prepare environment concierge prepare [flags] concierge prepare -p <preset> concierge prepare -c <config-file> # Check status concierge status # Restore/cleanup concierge restore # Shell completion concierge completion bash concierge completion zsh concierge completion fish # Help concierge --help concierge prepare --help concierge --version # Logging concierge prepare -p dev -v # Verbose concierge prepare -p dev --trace # Trace (very detailed)
Integration with Development Tools
With Charmcraft
# Prepare environment concierge prepare -p dev # Develop charm cd my-charm charmcraft init --profile=kubernetes charmcraft pack charmcraft test # Deploy juju deploy ./my-charm.charm
With Jhack
# Install jhack during prepare concierge prepare -p dev --extra-snaps=jhack # Or add to concierge.yaml # host: # snaps: # - name: jhack # channel: latest/stable # Use jhack for development jhack sync src/ myapp/0 jhack tail myapp/0
With Tox and UV
# Install build tools concierge prepare -p dev \ --extra-snaps=astral-uv/latest/edge \ --extra-debs=python3-tox # Use in charm development cd my-charm tox -e lint tox -e unit uv sync
With CI/CD
# GitHub Actions example - name: Prepare environment run: | sudo snap install --classic concierge concierge prepare -p dev --extra-snaps=astral-uv/latest/edge - name: Verify setup run: concierge status - name: Run tests run: | charmcraft pack charmcraft test
Configuration Priority
Concierge uses this priority order (highest to lowest):
- Command-line flags -
--juju-channel=4.0/edge - Environment variables -
CONCIERGE_JUJU_CHANNEL=4.0/edge - Configuration file -
concierge.yaml - Preset defaults - Built-in preset values
- Fallback - If no config found, defaults to
presetdev
Quick Reference
# Common operations concierge prepare -p dev # Full dev environment concierge prepare -p machine # Machine charm dev concierge prepare -p k8s # K8s charm dev concierge status # Check status concierge restore # Remove everything # With customisation concierge prepare -p dev --extra-snaps=jhack concierge prepare -p dev --juju-channel=4.0/edge concierge prepare -c my-config.yaml concierge prepare -p dev -v # Verbose output # Environment variables export CONCIERGE_JUJU_CHANNEL="3.6/stable" export CONCIERGE_EXTRA_SNAPS="jhack" concierge prepare -p dev
Resources
- Concierge GitHub: https://github.com/canonical/concierge
- Juju docs: https://documentation.ubuntu.com/juju/latest/
- Charmcraft docs: https://documentation.ubuntu.com/charmcraft/
- LXD docs: https://documentation.ubuntu.com/lxd/
- MicroK8s docs: https://microk8s.io/docs
Additional References
When you need detailed information:
- Complete preset comparison: See references/presets.md
- Configuration YAML schema: See references/configuration.md
Key reminders:
- Choose the right preset for your use case
does NOT preserve pre-existing configurationsrestore- Use
to verify setupconcierge status - Add
for rapid development--extra-snaps=jhack - Run with
or-v
when troubleshooting--trace