ov-advanced/skills/dbus/SKILL.md
D-Bus interaction inside containers via native Go godbus/dbus/v5. MUST be invoked before any work involving: ov eval dbus commands, desktop notifications, D-Bus method calls, service introspection, or session bus interaction.
npx skillsauth add overthinkos/overthink-plugins dbusInstall 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.
Send desktop notifications, call D-Bus methods, list services, and introspect objects inside running containers. Uses native Go (godbus/dbus/v5) -- no dependency on dbus-send CLI. All commands operate on the container's session bus.
Every ov eval dbus <method> (list/call/introspect/notify) is authorable as a dbus: verb inside a eval: block. Method-specific fields (dest:, path:, method:, args:, text:) are siblings of the verb line. See /ov-build:eval for the full YAML shape. Example: - dbus: list\n stdout:\n contains: "org.freedesktop.Notifications".
| Action | Command | Description |
|--------|---------|-------------|
| Send notification | ov eval dbus notify <image> "title" "body" | Desktop notification via Notifications interface |
| Call method | ov eval dbus call <image> <dest> <path> <method> [args...] | Generic D-Bus method call |
| List services | ov eval dbus list <image> | List all registered session bus services |
| Introspect | ov eval dbus introspect <image> <dest> <path> | Introspect a service's interfaces and methods |
# Simple notification
ov eval dbus notify sway-browser-vnc "Build Complete" "Image built successfully"
# Notification appears via swaync or other notification daemon
# Call any D-Bus method on the session bus
ov eval dbus call sway-browser-vnc org.freedesktop.Notifications /org/freedesktop/Notifications org.freedesktop.Notifications.GetCapabilities
# See all registered services on the container's session bus
ov eval dbus list sway-browser-vnc
# View interfaces, methods, signals, and properties
ov eval dbus introspect sway-browser-vnc org.freedesktop.Notifications /org/freedesktop/Notifications
dbus layer)swaync)ov start <image>)/ov-build:eval -- parent router; ov eval dbus … is how every invocation is dispatched./ov-advanced:cdp -- Chrome DevTools Protocol (sibling verb under ov eval)./ov-advanced:wl -- Wayland desktop automation (sibling verb under ov eval)./ov-advanced:vnc -- VNC desktop automation (sibling verb under ov eval)./ov-core:cmd -- single command execution in running containers/ov-core:shell -- interactive shell access/ov-foundation:dbus -- D-Bus session bus layer configuration/ov-selkies:swaync -- notification daemon layertools
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).