ov-coder/skills/gh/SKILL.md
GitHub CLI, git, and git-lfs — the single-responsibility home for all git/GitHub tooling as of 2026-04. Ships the noscripts + post-install dance for git-lfs so the RPM's systemd trigger doesn't fail at build time. Use when composing git + gh + git-lfs into an image, or when deciding which layer should own a git-related binary.
npx skillsauth add overthinkos/overthink-plugins ghInstall 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 | layer.yml (packages + one post-install task) |
| Depends | (none) |
--setopt=tsflags=noscripts): gh, git, git-lfsgithub-cli, git, git-lfstsflags=noscripts + a post-install taskThe git-lfs RPM's %post scriptlet runs git-lfs install --system
which tries to modify /etc/ and talk to systemd — operations that
fail (loudly or silently) inside a buildah container. Per the same
pattern dev-tools used to carry, we install with noscripts and then
run the git-lfs hook configuration manually:
tasks:
- cmd: /usr/bin/git-lfs install --system --skip-repo 2>/dev/null || true
user: root
The || true tolerates distros/versions where the command layout
differs; --skip-repo prevents git-lfs from trying to touch a repo
that doesn't exist in the build container.
Previously /ov-coder:dev-tools ALSO installed gh and git-lfs
— two layers with overlapping responsibility, duplicate test ids
(gh-binary collision), and unclear ownership ("which layer do I
look at to update the git-lfs version?"). In 2026-04 the git tooling
was moved exclusively here; dev-tools dropped gh, git-lfs, and
the git-lfs post-install task.
Effect for layer authors: anywhere an image previously got git
tooling via dev-tools, it now needs to compose gh explicitly.
The four power-user images (arch-ov, fedora-ov, fedora-coder,
githubrunner via the ov-full chain) already list gh
explicitly so they were unaffected.
Six build-scope tests:
| Test | Purpose |
|---|---|
| gh-binary | /usr/bin/gh exists |
| gh-version | gh --version exits 0 |
| git-binary | /usr/bin/git exists |
| git-version | git --version exits 0 |
| git-lfs-binary | /usr/bin/git-lfs exists |
| git-lfs-version | git-lfs --version exits 0 |
rpm: (Fedora — from the github-cli COPR / community repo), pac: (Arch — github-cli from extra), deb: (Debian/Ubuntu — adds https://cli.github.com/packages as an apt repo with signed-by key; ships gh, git, git-lfs). Full parity across all three package families.
# image.yml or layer.yml
layers:
- gh
/ov-coder:arch-ov, /ov-foundation:fedora-ov, /ov-coder:fedora-coder — power-user images that compose gh explicitly/ov-selkies:selkies-desktop-ov — streaming-desktop siblinghermes-full/ov-coder:dev-tools — no longer installs git/gh/git-lfs (2026-04 split)/ov-foundation:agent-forwarding — pairs with gh for SSH/GPG agent access (you usually want both when driving gh from inside a container with the host's GPG keys forwarded)/ov-foundation:github-runner — self-hosted Actions runner; different layer, different purpose/ov-coder:github-actions — installs act + actionlint for local Actions testing; also different from this layer/ov-build:secrets — provision GITHUB_TOKEN for gh auth login/ov-core:shell — run gh interactively inside a containerMUST be invoked when:
gh, git, or git-lfs to any other layer's packages).git-lfs install fails at build time (the noscripts +
post-install pattern here is the fix)./ov-coder:dev-tools no longer installs gh
(the 2026-04 single-responsibility split lives here)./ov-build:layer — layer authoring reference (layer.yml schema, task verbs, service declarations)/ov-build:eval — declarative testing (eval: block, ov eval image, ov eval live)tools
OpenCharly CLI (charly) binary installed into container/VM images for in-container use. Use when working with charly binary deployment inside containers, native D-Bus support, or the full charly toolchain (charly binary + virtualization + gocryptfs + socat).
development
Operator CachyOS workstation profile — a kind:local template + target:local deploy that installs the full dev stack (30 candies) onto a CachyOS host via ShellExecutor. Lives in the overthinkos/cachyos submodule. MUST be invoked before editing or applying the charly-cachyos workstation profile.
tools
Fedora box with the full charly toolchain using shared candies. Rootless-first — runs as uid=1000 with passwordless sudo (no root, no cap_add: ALL). Same candy list as charly-arch. Includes NVIDIA GPU runtime. MUST be invoked before building, deploying, configuring, or troubleshooting the charly-fedora box.
tools
Arch Linux box with the full charly toolchain. Rootless-first — runs as uid=1000 with passwordless sudo (no root, no cap_add: ALL). Composes /charly-coder:charly-mcp so the box is reachable as an MCP gateway on port 18765. NVIDIA GPU runtime composed in. MUST be invoked before building, deploying, configuring, or troubleshooting the charly-arch box.