ov-advanced/skills/alias/SKILL.md
MUST be invoked before any work involving: host command aliases, ov alias add/remove/install/uninstall, or wrapper scripts that run inside containers.
npx skillsauth add overthinkos/overthink-plugins aliasInstall 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.
ov alias creates distrobox-style wrapper scripts in ~/.local/bin/ that transparently run commands inside containers. Typing the alias name on the host executes the command inside the container via ov shell.
| Action | Command | Description |
|--------|---------|-------------|
| Install defaults | ov alias install <image> | Create wrappers from layer/image config |
| Uninstall all | ov alias uninstall <image> | Remove all wrappers for an image |
| Add manually | ov alias add <name> <image> [command] | Create a single wrapper |
| Remove one | ov alias remove <name> | Remove a single wrapper |
| List all | ov alias list | Show all installed aliases |
ov alias install openclaw # Creates ~/.local/bin/openclaw
openclaw # Runs inside container transparently
ov alias uninstall openclaw # Removes wrapper
ov alias add / ov alias install writes shell scripts to ~/.local/bin/:
#!/bin/sh
# ov-alias
# image: openclaw
# command: openclaw
_ov_q(){ printf "'"; printf '%s' "$1" | sed "s/'/'\\\\''/g"; printf "' "; }
c="openclaw"; for a in "$@"; do c="$c $(_ov_q "$a")"; done
exec ov shell openclaw -c "$c"
Key details:
# ov-alias marker enables safe list/delete scanningov alias remove verifies the marker before deleting_ov_q() helper properly single-quotes each argument (POSIX sh compatible)ov shell <image> -c "<command> <args>"Layer aliases require both name and command:
aliases:
- name: ollama
command: ollama
- name: ollama-run
command: "ollama run"
Image-level aliases default command to name if omitted. Image-level aliases override layer aliases with the same name.
images:
my-app:
aliases:
- name: myapp # command defaults to "myapp"
- name: myctl
command: "myapp ctl"
CollectImageAliases() gathers aliases from the image's own layers (in dependency order) plus image-level config. No base chain traversal -- aliases are leaf-image specific (unlike volumes).
Source: ov/alias.go, ov/layers.go (AliasYAML, HasAliases, Aliases()).
ov alias install openclaw
# Created alias: openclaw -> openclaw (in openclaw)
Installs all aliases declared in the image's layers and image config.
ov alias uninstall openclaw
# Removed alias: openclaw
Removes all wrapper scripts that reference the image.
ov alias add mycommand my-image # command = mycommand
ov alias add mycommand my-image "custom command" # explicit command
ov alias remove mycommand
Only removes if the file contains the # ov-alias marker.
ov alias list
# NAME IMAGE COMMAND
# openclaw openclaw openclaw
# ollama ollama ollama
Scans ~/.local/bin/ for files with the # ov-alias marker.
name and command^[a-zA-Z0-9][a-zA-Z0-9._-]*$command defaults to name if omitted/ov-build:pull -- Prerequisite: fetch the image into local storage; handles remote refs (@github.com/...) and the ErrImageNotLocal recovery path
/ov-core:shell -- How aliases execute commands via ov shell -c
/ov-build:layer -- Declaring aliases in layer.yml
/ov-build:image -- Image-level alias overrides
MUST be invoked when the task involves host command aliases, ov alias commands, or wrapper scripts that run inside containers. Invoke this skill BEFORE reading source code or launching Explore agents.
Workflow position: Post-deployment. Use after a service is running to create host command shortcuts.
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).