with one click
juju
Develop and test against a real Juju controller
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Develop and test against a real Juju controller
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Find bugs in Canonical Charm Tech Go repositories (pebble, concierge, and other Go charm ecosystem code). Use when asked to "find bugs", "audit code", "review for bugs", "check for issues", or review Go code in Juju charm infrastructure projects. Specialized for charm ecosystem Go patterns including concurrency/deadlocks, nil map panics, error handling, resource leaks, idempotency, snap API interaction, and Pebble service management. Built from analysis of 143 historical bug fixes across 2 Go repos.
Find bugs in Canonical Charm Tech Python repositories (operator/ops, charmlibs, jubilant, pytest-jubilant, operator-libs-linux, and other Python charm code). Use when asked to "find bugs", "audit code", "review for bugs", "check for issues", or review Python code in any Juju charm framework repository. Specialized for charm ecosystem bug patterns including data mutability, falsy value confusion, relation data, secrets, Pebble containers, testing-production divergence, and snap/Juju CLI interactions. Built from analysis of 344 historical bug fixes across 8 Python repos.
Find bugs in Juju charm operator repositories. Use when asked to "find bugs", "audit code", "review for bugs", "check for issues", "security review", or review Python code in any Juju charm. Specialized for charm-specific bug patterns including Pebble container management, relation data handling, TLS certificate lifecycle, status management, config handling, ingress/networking, Grafana dashboard wiring, and Juju interaction. Built from analysis of 6,116 historical bug fixes across 134 charm repositories spanning 10 teams (Data, Observability, MLOps, IS, Identity, Telco, Commercial Systems, K8s, BootStack, Charm-Tech).
Find bugs in the canonical/operator (ops) Python framework for Juju charms. Use when asked to "find bugs in operator", "audit ops code", "review operator for bugs", "check ops for issues", "find bugs in this charm framework code", or review ops/, testing/, or pebble code for correctness issues. Specialized for Juju operator framework bug patterns including relation data, secrets, Pebble containers, data mutability, and testing-production divergence.
Operate a Juju controller — deploy, configure, integrate, scale, debug, and manage charms on Kubernetes and machine models. Use when asked to "deploy a charm", "add a model", "check status", "debug a unit", "integrate applications", "scale up/down", "manage secrets", "configure an app", "run an action", "destroy a model", or any Juju CLI operation. Keywords include juju, deploy, integrate, relate, model, controller, status, debug-log, config, action, expose, storage, secrets, ssh, scale.
Migrate charm integration tests to Jubilant and pytest-jubilant 2.0. Handles migration from pytest-operator (python-libjuju) or from pytest-jubilant 1.x. Covers async removal, fixture replacement, API translation, dependency updates, and verification. license: Apache-2.0 compatibility: any version of pytest-operator, or v1.x of pytest-jubilant allowed-tools: Read
| name | juju |
| description | Develop and test against a real Juju controller |
Use Juju to develop and test changes in the Ops project. Works on Linux, ideally in a sandboxed environment.
sudo concierge prepare -p dev # Installs all the required packages and bootstraps local clouds and Juju itself
juju switch concierge-lxd # For a machine charm
juju switch concierge-k8s # For a Kubernetes charm
juju add-model claude-[random ID] # Use a consistent prefix
After adding a model ALWAYS tell the user the name of the model and how they can inspect the status, filling in the details:
To inspect the status of the model:
juju status -m [contoller-name]:[model-name]
Or to see the Juju logs:
juju debug-log -m [controller-name]:[model-name]
This must ALWAYS be printed right after a session was started and once again at the end of the tool loop. But the earlier you send it, the happier the user will be.
Use juju debug-log -m [controller-name]:[model-name]. See juju debug-log --help for details.
charmcraft pack - use this to pack a charm so that it can be deployedjuju deploy -m [controller-name]:[model-name] ./path-to-charm.charm - deploy a charm -- see --help for information about providing resourcesjuju status --format json -m [controller-name]:[model-name] - get information about the status of the deployed charmsjuju actions and juju run - run an action that a charm definesjuju config - set configuration for a charmjuju integrate - create a relation between two charmsjuju ssh - open a SSH connection to a charm container, see --help for detailsjuju destroy-model [controller-name]:[model-name]