A cross-agent Agent Skills repository. It packages reusable SKILL.md skills that work — unmodified — across Claude Code, OpenAI Codex CLI, Google Gemini CLI, and opencode, using the open Agent Skills standard.
Tracked with Libra, the AI-agent-native version control system.
| Skill | What it does |
|---|---|
libra-workflow-and-versioning |
Version-control workflow discipline for Libra repositories — commits, branches, the per-worktree HEAD model, cloud backup/publish, structured output, and stable error codes. |
libra-tools/skills/
├── skills/<name>/ ← CANONICAL. Edit only here.
│ ├── SKILL.md ← decision-level (≤400 lines, enforced)
│ └── references/*.md ← depth, loaded on demand
├── .agents/skills/<name>/ ← generated mirror (Gemini CLI, opencode)
├── .claude/skills/<name>/ ← generated mirror (Claude Code, opencode)
├── .codex/skills/<name>/ ← generated mirror (Codex CLI)
├── hooks/pre-commit.sh ← tracked hook (.libra/ is never tracked)
├── scripts/
│ ├── sync-skills.sh ← regenerate mirrors (--check for CI/hooks)
│ ├── validate-skills.sh ← frontmatter, naming, links, line budget
│ ├── emit-libra-skill.sh ← flatten to the Libra-native format
│ ├── check-against-libra.sh ← cross-check every claim against Libra's source
│ └── install-hooks.sh ← wire the checks into .libra/hooks/
├── install.sh ← contributor install: symlink a working copy
├── .github/workflows/ci.yml ← CI
├── AGENTS.md ← conventions for editing this repo
└── README.md
Single source of truth: the canonical files in skills/. Everything
starting with a dot is generated by scripts/sync-skills.sh;
--check flags any drift, and the pre-commit hook refuses a commit that would land
drift or an invalid skill. Copies rather than symlinks, because a symlink checkout
fails closed on Windows and does not survive a zip download.
SKILL.md is an open standard: a folder containing a SKILL.md file with name + description YAML frontmatter and a Markdown body. Every supported agent reads the same format; the only difference is which directory each one scans. This repo lays the files out so that opening it with any supported agent auto-discovers the skills, and a single install.sh makes them global.
| Agent | Project (workspace) path it scans | Global (user) path |
|---|---|---|
| Claude Code | .claude/skills/ |
~/.claude/skills/ |
| Codex CLI | .codex/skills/, .agents/skills/ |
~/.agents/skills/, ~/.codex/skills/ |
| Gemini CLI | .gemini/skills/ or .agents/skills/ |
~/.gemini/skills/ or ~/.agents/skills/ |
| opencode | .opencode/skills/, .claude/skills/, .agents/skills/ |
~/.config/opencode/skills/, ~/.claude/skills/, ~/.agents/skills/ |
install.sh writes to all five global paths.
This repository follows the open Agent Skills layout, so the ecosystem CLI installs it directly from GitHub. No clone, no npm package, no Libra required:
npx skills add libra-tools/skills # into this project
npx skills add libra-tools/skills -g # globally
npx skills add libra-tools/skills --list # just lookskills supports 77 agents, symlink or
--copy installs, per-agent targeting (-a claude-code -a opencode), and
skills list / update / remove. This is the supported way to install.
libra code is the one agent the skills CLI cannot serve, because its runtime
reads a different format (see the note below). Generate that form from a clone:
scripts/emit-libra-skill.sh # -> ~/.config/libra/skills/
scripts/emit-libra-skill.sh /path/to/repo/.libra/skills
scripts/emit-libra-skill.sh --stdout <skill-name> # inspect, write nothing./install.sh runs this for you as part of a global install (--no-libra opts out).
Clone the repo and open it with any supported agent — the skills are discovered automatically from the directories above.
libra clone https://github.com/libra-tools/skills.git
cd skills
scripts/install-hooks.sh # once, if you intend to commit here
# then run `claude`, `codex`, `gemini`, or `opencode` in this directoryTo add the skills to another project, copy the skill folder into that project's
.agents/skills/ (Gemini + opencode) and .claude/skills/ + .codex/skills/
(Claude + Codex).
install.sh symlinks your working copy, so an edit to skills/ takes effect
immediately in every agent — that is what makes it the contributor tool rather
than npx.
./install.sh # symlink into all five global skill directories
./install.sh --copy # copy instead (Windows, or a repo on removable media)
./install.sh --dry-run # show what would happen
./install.sh --uninstall # remove them againRe-run it after libra pull to pick up updates.
- Claude Code — auto-invoked when your task matches the
description, or type/libra-workflow-and-versioning. - Codex CLI — run
/skills, type$to mention it, or let Codex pick it implicitly by description. - Gemini CLI — auto-discovered; the skill's name + description are injected into the system prompt and loaded on demand.
- opencode — auto-discovered; the agent loads the body on demand via its native
skilltool.
libra codeuses a different format. Its agent runtime loads a single<name>.mdwith TOML frontmatter from.libra/skills/or~/.config/libra/skills/, not a directory with aSKILL.md, and it has no notion of bundled reference files.scripts/emit-libra-skill.shbridges it by flattening the skill — references inlined — into that format, so/skill libra-workflow-and-versioningworks insidelibra code.
- Create or edit
skills/<name>/SKILL.md. Keep the frontmatter portable — onlyname(lowercase, digits, single hyphens, ≤64 chars) anddescription(≤1024 chars) are needed;namemust equal the directory name. Put depth inskills/<name>/references/. - Run
scripts/validate-skills.shandscripts/sync-skills.sh. - Commit with Libra:
libra add ...thenlibra commit -s -m "feat(skill): ...". (See thelibra-workflow-and-versioningskill for the workflow it documents — this repo follows its own advice.)
See AGENTS.md for the full contributor conventions.
MIT.