coder/skills/dev-tools/SKILL.md
Developer tools including bat, ripgrep, neovim, direnv, fd-find, htop, podman-compose, and many more CLI utilities. Use when working with developer tooling, CLI utilities, or container dev environments.
npx skillsauth add overthinkos/overthink-plugins dev-toolsInstall 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.
| Property | Value |
|----------|-------|
| Install files | charly.yml, plan: |
RPM (with --setopt=tsflags=noscripts): android-tools, apptainer, apptainer-suid, arch-install-scripts, asciinema, bat, bcc, bpftop, bpftrace, bridge-utils, debootstrap, direnv, dislocker, ecryptfs-utils, fastfetch, fd-find, fdupes, fuse-devel, fuse-dislocker, fuse3-devel, html2text, htop, jdupes, mosh, neovim, podman-compose, podman-machine, podman-remote, podman-tui, qemu-kvm, qemu-user-binfmt, qemu-user-static, rclone, restic, ripgrep, ShellCheck, squashfuse, strace, sysstat, thefuck, yamllint, yq, zoxide
rpm: (Fedora), pac: (Arch), deb: (Debian + generic Ubuntu), with a ubuntu:24.04: tag-section override. Not every package is available everywhere; per-distro drops are documented inline in charly.yml.
Packages dropped per distro (non-exhaustive):
apptainer-suid, dislocker, ecryptfs-utils, fuse-dislocker, podman-machine, podman-remote, podman-tui — not packaged.arch-install-scripts (obviously) and apptainer itself (only in bookworm-backports, skipped on trixie).fastfetch — package not in noble main. Handled by a ubuntu:24.04: tag section that re-lists the deb packages minus fastfetch.Both Debian and Ubuntu rename bat → batcat in their archives to avoid a namespace collision with a legacy bacula utility. The bat package installs only /usr/bin/batcat; nothing lives at /usr/bin/bat. To keep downstream scripts, docs, and declarative tests portable, the candy ships a distro-tolerant symlink plan step:
# a child step node under the dev-tools candy entity
dev-tools-symlink-bat:
run: symlink batcat to bat on Debian/Ubuntu
command: |
if [ -f /usr/bin/batcat ] && [ ! -e /usr/bin/bat ]; then
ln -sf /usr/bin/batcat /usr/bin/bat
fi
run_as: root
No-op on Fedora/Arch (where /usr/bin/bat already exists from the distro package) — the guard short-circuits. Creates the symlink on Debian/Ubuntu. Idempotent across rebuilds.
exclude_distros: [ubuntu:24.04]The fastfetch-binary test is declared with an exclude_distros: filter:
# an id-named check step node under the dev-tools candy entity
fastfetch-binary:
check: the fastfetch binary is installed (skipped on ubuntu:24.04)
id: fastfetch-binary
file: /usr/bin/fastfetch
exists: true
exclude_distros:
- ubuntu:24.04
On images whose ai.opencharly.platform.distro OCI label includes ubuntu:24.04, the test runner skips this check with a reason — see /charly-check:check "exclude_distros: field". This was added because dropping fastfetch from the ubuntu:24.04: tag section is clean, but the baked test probe would otherwise false-fail.
/charly-coder:ghdev-tools does NOT install gh, git, or git-lfs — those belong
exclusively to /charly-coder:gh, the dedicated GitHub / git tooling candy.
That keeps ownership unambiguous (one candy installs and tests them). If
you want the git tooling, compose /charly-coder:gh alongside
/charly-coder:dev-tools.
# charly.yml — composition is a child node, not a top-level list
my-dev:
candy:
base: fedora
my-dev-candy:
candy:
- dev-tools
/charly-coder:gh — Sibling GitHub CLI commonly paired with dev-tools/charly-coder:devops-tools — Sibling DevOps cloud CLI bundle in bootc images/charly-coder:build-toolchain — Sibling C/C++ toolchain in bootc image stacks/charly-coder:debian-coder, /charly-coder:ubuntu-coder — canonical consumers of the bat→batcat symlink/charly-coder:fedora-coder, /charly-coder:arch-coder — consumers where the symlink plan step is a harmless no-op/charly-build:build — Build boxes that ship the dev-tools package set/charly-core:shell — Interactive shell to use bat/ripgrep/neovim/etc./charly-check:check — exclude_distros: field reference for the fastfetch-binary test/charly-image:layer — authoring reference for distro-tolerant command: plan steps and exclude_distros:Use when the user asks about:
dev-tools candy or its packagestools
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).