okf skill
Put the format's expertise next to your agent.
When to use it
- To teach a coding agent OKF: the skill carries the playbooks (produce, maintain, consume, curate, doctor), the spec, the templates, and a reference for every CLI verb.
- When you use the gem without Claude Code's plugin. In Claude Code, the plugin installs this same skill plus a curation hook; everywhere else,
okf skillis the path. - After upgrading the gem, to refresh an installed copy (
--force) so the skill and the executable stay in step.
How it works
okf skill <dest> copies the skill tree out of the installed gem. Because the skill ships inside the gem, installing the gem already put it on your machine, and its CLI reference can never drift from the executable it was released with.
The destination is required (no default), and the tree settles into <dest>/skills/okf so a shared skills directory never gets the files loose. Two exceptions keep paths natural: a <dest> already ending in skills gets <dest>/okf, and one ending in okf is used as-is. Pass --here to paste the tree straight into <dest>, wherever it is. The resolved directory must be empty unless you pass --force, so a customized skill is never clobbered. The skill page covers what the installed tree teaches an agent to do.
Try it
okf skill .claude
installed the okf skill (15 files) -> .claude/skills/okf
SKILL.md
playbooks/consume.md
playbooks/curate.md
playbooks/doctor.md
playbooks/maintain.md
playbooks/menu.md
playbooks/produce.md
reference/APACHE-2.0.txt
reference/SPEC.md
reference/authoring.md
reference/cli.md
templates/concept.md
templates/index.md
templates/log.md
templates/root-index.md
your agent picks it up from .claude/skills/okf (needs the `okf` CLI, which you already have).
There is no --json here; the printed file list is the whole story.
Pitfalls
- The destination is required. There is no magic default;
okf skillwithout one is a usage error (exit2). You always decide where your agent picks the skill up. - A non-empty destination is refused without
--force. That is protection, not friction: it keeps an install from silently overwriting a skill you have customized. Pass--forceonly when replacing the copy is the point. - Mind the nesting rules before
--here.okf skill .claudealready lands in.claude/skills/okf;--hereskips the nesting entirely and pastes into<dest>itself, which is rarely what a shared skills directory wants. - In Claude Code, prefer the plugin. It carries the identical skill plus the post-edit curation hook; installing both by hand just gives you two copies to keep in sync.