vm/skills/ubuntu/SKILL.md
Ubuntu bootstrap VM (kind:vm ubuntu-debootstrap) — source.kind: bootstrap via ubuntu-debootstrap-builder + debootstrap, ext4 rootfs, uefi-insecure. Plus the disposable check-ubuntu-debootstrap-vm deploy. Lives in the overthinkos/ubuntu submodule. MUST be invoked before editing ubuntu-debootstrap or its check bed.
npx skillsauth add overthinkos/overthink-plugins ubuntuInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
source.kind: bootstrap VM that builds an Ubuntu 24.04 rootfs from scratch via
debootstrap (using /charly-distros:ubuntu-debootstrap-builder), then boots it
under libvirt/QEMU.
The ubuntu-debootstrap VM entity and its check-ubuntu-debootstrap-vm disposable
test bed live in the overthinkos/ubuntu repo (git submodule at
box/ubuntu), all in that repo's unified charly.yml. The bed is a
disposable: true deploy (a check bed is just a deploy carrying disposable: true
— there is no separate bed kind), driven by charly check run check-ubuntu-debootstrap-vm. Drive the VM lifecycle from the submodule:
charly -C box/ubuntu vm build ubuntu-debootstrap +
charly -C box/ubuntu vm create ubuntu-debootstrap (or
charly --repo overthinkos/ubuntu …).
| Setting | Value |
|---|---|
| Source | kind: bootstrap, builder: debootstrap, builder_image: ubuntu-debootstrap-builder |
| Distro | ubuntu |
| rootfs | ext4 |
| Disk / RAM / CPU | 20G / 4G / 2 |
| Machine / firmware | q35 / uefi-insecure |
| Network | user mode |
| SSH | user ubuntu, port 12229, key_source generate |
The ubuntu distro config (inherits: debian; debootstrap suite noble,
mirror, base packages) comes from the embedded build vocabulary
(charly/charly.yml, baked into the charly binary), available to every repo
without an import. The embedded vocabulary carries BOTH distro configs, so
inherits: debian resolves without referencing overthinkos/debian.
check-ubuntu-debootstrap-vm is a disposable: true deploy
(vm: {from: ubuntu-debootstrap, disposable: true}), so
charly -C box/ubuntu check run check-ubuntu-debootstrap-vm runs the full R10 sequence
unattended (the equivalent charly update check-ubuntu-debootstrap-vm rebuild also works,
since the bundle is folded into the Bundle map).
charly vm build ubuntu-debootstrap runs debootstrap inside the privileged
ubuntu-debootstrap-builder to build the rootfs, then writes a bootable disk +
cloud-init seed ISO. The bootstrap path is privileged + network-heavy
(debootstrap downloads the base packages from the Ubuntu mirror). The
Docker-Hub /charly-distros:ubuntu container base remains the faster path when you
don't need a VM disk.
/charly-distros:ubuntu-debootstrap-builder — the builder image this VM uses/charly-distros:ubuntu-debootstrap — the container equivalent of this bootstrap path/charly-vm:debian — the Debian sibling bootstrap VM/charly-vm:arch — the canonical cloud_image VM (BIOS/virtio-gpu/sizing rationale)/charly-vm:vm — VM lifecycle commands + BIOS/UEFI matrix/charly-vm:vms-catalog — VmSpec authoring referenceMUST be invoked when editing ubuntu-debootstrap or its check bed, or
authoring an Ubuntu VM. Invoke BEFORE reading source code or launching Explore agents.
tools
Use when authoring or modifying a charly PLUGIN — a candy with a `plugin:` block that contributes Providers (verbs/kinds/deploy-targets/steps/builders/commands), its own CUE schema, builtin (compiled-in) or external (out-of-tree git repo). Covers the unified Provider model, the per-plugin CUE-schema contract (single source → Go params for dev + schema-over-Describe RPC for runtime), the SDK, and the loader.
tools
The CUE data-validation / configuration CLI (cue), pinned to v0.16.1. Use when working with the cue candy, installing the cue binary into a box or onto a target:local dev host, or running the offline schema-vendoring pipeline that feeds charly's egress validation.
tools
CUE EGRESS validation — validating (and, where it adds value, generating) the config files charly WRITES to a system BEFORE the bytes hit disk. MUST be invoked before working on charly/egress.go, the vendored schemas under candy/plugin-egress/egress-schemas/vendor/, the ValidateEgress / registerVendoredEgressKind path, the offline `task cue:vendor` pipeline, or adding an egress schema for any written artifact (cloud-init, k8s manifests, traefik routes, runtime config, install ledger, systemd/quadlet units, ssh_config, libvirt XML).
tools
Kubernetes cluster-probe declarative check verb — the `kube:` check verb (nodes, pods, ingress, storage class, addon health, apply/delete, and arbitrary resource GETs) served out-of-process by the candy/plugin-kube plugin (vendored client-go; no external kubectl required).