Files
opc-skills/README.md
salva 70763091af feat: domain/subdomain/tag bulk ops + enriched INDEX
- domains, subdomains, tags : frontmatter distribution counts
- enable-domain / disable-domain        : bulk by 'domain:' (eg. cybersecurity)
- enable-subdomain / disable-subdomain  : bulk by 'subdomain:' (eg. malware-analysis)
- enable-tag / disable-tag [--all]      : multi-tag union (default) or intersection
- INDEX.json now exposes domain, subdomain, tags[]
- INDEX.md columns expanded; top-domains/subdomains/tags summaries
- PyYAML-first frontmatter parser (regex fallback) — parses 1027/1032 descriptions
  and 758 skills' tags correctly (previous regex parser missed almost everything)
- enable/disable now incrementally update INDEX.json status so bulk ops stay
  consistent without a full reindex
- jq --args bug fix in tag commands ('--' was leaking into ARGS.positional)
2026-04-30 22:09:41 +03:00

4.3 KiB

opc-skills

Small shell utility for toggling opencode skills between a curated "active" set and a full "parked" catalog. Keeps ~/.config/opencode/skills/ small and intentional while preserving the full skill library offline.

This is deliberately a quick, standalone tool — it is not a general AI persona manager. For agent / skill / persona management across multiple AI platforms (Claude Code, opencode, Gemini, Paperclip, ...), see the personas repo.

Install

ln -s ~/Documents/opc-skills/bin/opc-skills ~/.local/bin/opc-skills

Ensure ~/.local/bin is on your PATH.

Layout it expects

~/Documents/opencode-skills-parked/   # full catalog — untracked data dir
  <skill-name>/SKILL.md
  INDEX.json
  INDEX.md
~/.config/opencode/skills/            # only currently-enabled skills
  <skill-name>/SKILL.md

Override via env:

  • OPC_PARKED — parked catalog root (default ~/Documents/opencode-skills-parked)
  • OPC_ACTIVE — active skills root (default ~/.config/opencode/skills)

Commands

Inspection

opc-skills status                     # counts of active vs parked
opc-skills list {active|parked|all}   # skill folder names
opc-skills categories                 # verb-prefix counts (performing, detecting, ...)
opc-skills domains                    # frontmatter `domain:` distribution
opc-skills subdomains                 # frontmatter `subdomain:` distribution
opc-skills tags                       # frontmatter `tags:` distribution

Single-skill operations

opc-skills enable  <folder>           # copy parked → active
opc-skills disable <folder>           # remove from active (parked preserved)
opc-skills disable-all [-y|--yes]     # disable every active skill

Bulk by axis

opc-skills enable-category   <prefix>      # fzf multi-pick within a verb-prefix
opc-skills disable-category  <prefix>
opc-skills enable-domain     <domain>      # bulk by frontmatter domain (eg. cybersecurity)
opc-skills disable-domain    <domain>
opc-skills enable-subdomain  <subdomain>   # bulk by subdomain (eg. malware-analysis)
opc-skills disable-subdomain <subdomain>
opc-skills enable-tag  [--all] <tag>...    # bulk by tags (default: any; --all: intersection)
opc-skills disable-tag [--all] <tag>...
opc-skills pick                       # fzf: category → multi-select → enable
opc-skills disable-pick               # fzf: ACTIVE category → multi-select → disable
opc-skills search [query]             # fzf fuzzy over name+description
opc-skills disable-search [query]     # fzf over ACTIVE only
opc-skills reindex                    # rebuild INDEX.json / INDEX.md

fzf is required for the interactive commands; jq for the bulk-by-axis commands; python3 (with optional PyYAML) for reindex.

INDEX schema

reindex parses each SKILL.md frontmatter and emits records with: folder, name, description, domain, subdomain, tags[], status. enable / disable perform an incremental status update on INDEX.json so enable-domain / disable-tag etc. stay accurate without a full reindex.

Shared reference files

Some skills reference sibling files via ../<name>.md (e.g. the 20 Feynman research skills use ../_platform-mapping.md for cross-platform tool mapping). opc-skills enable auto-syncs any such files from PARKED → ACTIVE so the relative references keep resolving.

Currently synced:

  • _platform-mapping.md — Feynman-skills cross-platform subagent/scheduling/persistence mapping

If you add new shared-reference files at the PARKED root, extend sync_shared_refs() in bin/opc-skills.

Known interaction

The personas repo's build.py --install opencode currently wipes and repopulates ~/.config/opencode/skills/ as part of installation, which destroys the active set curated here. Use opc-skills after any personas install, or skip the skills half of build.py installs.

build.py --install opencode and build.py --install claude-skills both emit _platform-mapping.md at the skills-root alongside the 20 Feynman skills (deep-research, literature-review, paper-code-audit, peer-review, paper-writing, replication, source-comparison, summarize, alpha-research, eli5, autoresearch, docker, modal-compute, runpod-compute, session-log, session-search, jobs, watch, preview, contributing).