6 Commits

Author SHA1 Message Date
salvacybersec
cd937efc01 docs: add Architecture section to README
ASCII diagrams + prose covering:
- Storage model: one parked source-of-truth fanned out to 3 lazy mirrors
- Data flow for enable/disable (incremental INDEX updates, no global reindex)
- INDEX.json schema with per-target active[] array
- Interactive pick / disable-pick flows incl. target-picker UX
- The fzf {} shell-escape gotcha and the correct quoting pattern
2026-05-01 13:26:36 +03:00
salvacybersec
44daf2b969 feat: feynman target + interactive target picker + fzf preview fix
- Add feynman as third target (~/.feynman/agent/skills) alongside opencode
  and claude. Default targets now: opencode,claude,feynman.
- Fix fzf {} preview shell-escape bug: {} in fzf is shell-escaped (wrapped
  in single quotes), so "$PARKED/{}/SKILL.md" embedded literal quotes into
  the path and broke preview. Switched to "$PARKED"/{}/SKILL.md (variable
  quoted, {} unquoted) so bash concatenation yields a clean path.
- pick: after skill multi-select, prompt target picker (all / opencode /
  claude / feynman, TAB for multi). ENTER on highlighted "all" = all three.
- disable-pick: rewritten to show union of actives across all 3 targets
  with [oc,cl,fy] indicators, then target picker for which to disable from.
- cmd_status: 3-target output with all-three intersection counter.
- reindex: tracks per-target active arrays for all 3.
- New env vars: OPC_FEYNMAN_ACTIVE.
2026-05-01 13:13:55 +03:00
salva
a6e9fedf72 feat: multi-target (opencode + claude) — single archive source-of-truth
- Default targets: opencode + claude (override via --target / OPC_TARGETS)
- enable/disable/disable-all now iterate over selected targets
- INDEX schema: per-target 'active' array (replaces legacy 'status' enum)
- Status command shows per-target counts + parked
- Reindex scans both ~/.config/opencode/skills and ~/.claude/skills
- PARKED moved to ~/Documents/personas/skills-archive (backward-compat symlink kept)
- bulk filters (domain/subdomain/tag) updated to per-target schema
- jq filters no longer reference legacy 'status' values

Migration: previous OPC_PARKED at ~/Documents/opencode-skills-parked is now a
symlink to personas/skills-archive — existing scripts continue to work.

This addresses the opencode 1.14 'external skills' bloat: opencode auto-scans
~/.claude/skills as well as its own dir, so a 1000-skill Claude archive bloats
the prompt. opc-skills now manages both targets explicitly + lazily.
2026-04-30 23:47:02 +03:00
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
salvacybersec
1f67aaab63 refine: README + opc-skills binary iteration
Post-initial commit refinement of the standalone opc tool.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 01:35:18 +03:00
3fefae319e initial: opc-skills standalone tool
Moved out of ~/Documents/opencode-skills-parked/bin/ (data dir) so the
tool has its own versioned home independent of the skill catalog it
manages.
2026-04-18 19:07:00 +03:00