CLIco skills
DocsCLIco skills

co skills

Scan skill files across your AI coding agents (Claude Code, Codex, Cursor, Kiro) and import the ones you want into ~/.co/skills/ so ConnectOnion can use them.

Quick Start

code
# Scan every known agent skill directory co skills discover # Pull a discovered skill into ~/.co/skills/ co skills copy ship-feature # See what's already imported co skills list

Why

Skills you've written for one tool (for example Claude Code) are usually stored in that tool's own directory, such as ~/.claude/skills/. co skills gives ConnectOnion a normal import path — co ai loads skills from .co/skills/ and ~/.co/skills/, and importing makes publishing and manifest generation consistent.

~/.claude/skills/<name>/SKILL.md   ─┐
~/.codex/skills/<name>/SKILL.md    ─┤
~/.cursor/rules/<name>.mdc         ─┼─→  co skills discover  →  ~/.co/skills/index.json
~/.kiro/steering/<name>.md         ─┤                              │
~/.co/skills/<name>/SKILL.md       ─┘                              ▼
                                                          co skills copy <name>
                                                                   │
                                                                   ▼
                                                      ~/.co/skills/<name>/SKILL.md
                                                      (now visible to co ai, skills plugin, publishing)

Commands

co skills discover

Walks every known skill root, parses YAML frontmatter (name, description), and writes an index to ~/.co/skills/index.json. Plugin-namespaced entries (names containing :) are filtered out by default (--include-namespaced keeps them). --no-save prints without writing; --json prints the raw index.

code
co skills discover
output
Discovered skills (57)
┏━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳────────────────────────────┓
┃ Name ┃ Source ┃ Description ┃
┡━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇────────────────────────────┩
│ ship-feature │ claude │ Ship a feature end-to-end… │
│ frontend-test │ claude │ Use browser agent to test… │
│ ship-feature │ codex │ Ship a feature end-to-end… │
└───────────────────────┴────────┴────────────────────────────┘
Index written to /Users/you/.co/skills/index.json

The index is a cache, not a database — regenerated on every run, so stale entries disappear automatically.

co skills copy <name>

Copy a discovered skill into ~/.co/skills/<name>/ — sibling files alongside SKILL.md (READMEs, helper scripts) come with it.

Terminalbash
$co skills copy ship-feature
$co skills copy ship-feature x-reply tweet
$co skills copy --all
$co skills copy --all --source claude
$co skills copy --all --force

If the same skill name exists in multiple sources, a single copy refuses and asks you to disambiguate with --source. With --all, collisions resolve automatically by priority: co-project > co-user > claude > codex > cursor > kiro.

co skills link

The other direction. discover/copy pull skills in from your agent tools; link pushes ConnectOnion's bundled skills out to them — into ~/.claude/skills/ and ~/.codex/skills/ — so Claude Code and Codex can use co browser, co gmail, co gdrive and the rest without you writing anything.

code
co skills link
output
Linking 5 bundled skill(s)
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┓
┃ Skill ┃ claude ┃ codex ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━┩
│ browser-workflow-skill-builder │ linked │ linked │
│ co-browser │ linked │ already linked │
│ co-mail-and-drive │ linked │ linked │
│ install-connectonion │ linked │ linked │
│ ship-feature │ already linked │ already linked │
└────────────────────────────────┴────────────────┴────────────────┘

Idempotent — safe to re-run, and it's how you pick up skills added by a ConnectOnion upgrade. It will not overwrite a directory you own: if ~/.claude/skills/co-browser/ is a real directory rather than a link, that's your own skill of the same name and it's left alone (reported as exists, not ours — skipped). Pass --force to replace it.

On macOS and Linux these are symlinks, so an upgrade updates the skills in place. On Windows, where symlinks need Developer Mode or elevation, the files are copied instead — re-run co skills link after upgrading.

co skills manifest

Build skill metadata from a skills directory and merge it into agent.json["skills"] — the shape publishing needs.

Terminalbash
$co skills manifest
$co skills manifest --path ./skills
$co skills manifest --stdout

Defaults: --path ~/.co/skills/, merges into ~/.co/agent.json. When merging, any prior signature / signer fields are removed (content changed, must re-sign). Each entry gets publish: false by default; existing values are preserved on refresh.

co skills list

List skills currently installed in ~/.co/skills/. Runs by default if you type co skills with no subcommand.

Terminalbash
$co skills list

Sources

Source IDRootLayout
co-project./.co/skills/<name>/SKILL.md
co-user~/.co/skills/<name>/SKILL.md
claude~/.claude/skills/<name>/SKILL.md
codex~/.codex/skills/<name>/SKILL.md
cursor~/.cursor/rules/<name>.mdc
kiro~/.kiro/steering/<name>.md

Missing roots are silently skipped.

How It Composes

co skills discover        ← scan agent dirs → index.json
co skills copy --all      ← materialize ~/.co/skills/
co skills link            ← push bundled skills out to ~/.claude/ and ~/.codex/
co skills manifest        ← merge skill metadata into ~/.co/agent.json
co ai                     ← auto-loads .co/skills/ and ~/.co/skills/
co setup                  ← runs the full setup sequence
publish workflow          ← sign + announce ~/.co/agent.json

See Also

  • co setup — runs discover/copy/manifest for you
  • co sub — subscribe to skills other people published
  • co copy — copy built-in tools/plugins/prompts (different command, similar idea)
  • Skills — runtime auto-discovery in your agents

Star us on GitHub

If ConnectOnion saves you time, a ⭐ goes a long way — and earns you a coffee chat with our founder.