|
| 1 | +--- |
| 2 | +id: 3f7a1c8e-9d4b-4e2f-a6c0-5b8d3e1f7a2c |
| 3 | +project: |
| 4 | + id: 00000000-0000-0000-0000-000000000000 |
| 5 | +title: Skill Management Enhancements |
| 6 | +status: draft |
| 7 | +tags: [skills, cli, agents, installation] |
| 8 | +related: |
| 9 | + depends-on: [8a2e4c17-f6d0-4b3a-9e51-3c7d8f1a2b05] |
| 10 | + references: [d4e8f2a1-7c3b-4f5e-9a1d-8e6c4b2a0f3d] |
| 11 | +--- |
| 12 | + |
| 13 | +# Skill Management Enhancements |
| 14 | + |
| 15 | +**Created:** 2026-03-20 |
| 16 | +**Updated:** 2026-03-20 |
| 17 | +**Owner:** aRustyDev |
| 18 | + |
| 19 | +## Objectives |
| 20 | + |
| 21 | +| # | Objective | Measurable | Success Metric | |
| 22 | +|---|-----------|------------|----------------| |
| 23 | +| 1 | Extract and internalize skill management logic from vercel-labs/skills | Yes | All 7 commands (find, add, outdated, update, init, list, remove) working via `just agents skill <verb>` | |
| 24 | +| 2 | Support multi-agent skill installation with agent registry | Yes | Skills installable to any of 44 known agents with auto-detection (config dir presence) | |
| 25 | +| 3 | Enable flexible source references with branch/tag/hash support | Yes | `owner/repo#ref:path@skill` parsed correctly in all commands | |
| 26 | + |
| 27 | +## Current State |
| 28 | + |
| 29 | +| Metric | Current | Target | Gap | |
| 30 | +|--------|---------|--------|-----| |
| 31 | +| CLI skill subcommands | 11 (validate, hash, lint, check-all, deps/*, catalog/*) | 18+ (add find, add, outdated, update, init, list, remove) | 7 new commands | |
| 32 | +| Source URL formats supported | `owner/repo@skill` only | Full URLs, refs, local paths, well-known URIs | No URL parser | |
| 33 | +| Agent targets | Claude Code only (implicit) | 44 agents with auto-detect + `--agent` filter | No agent registry | |
| 34 | +| Interactive prompts | None (all batch/non-interactive) | fzf-style search, multiselect, confirmation | No prompt library | |
| 35 | + |
| 36 | +## Phases |
| 37 | + |
| 38 | +| ID | Name | Status | Dependencies | Success Criteria | |
| 39 | +|----|------|--------|--------------|------------------| |
| 40 | +| phase-1 | Foundation modules | pending | - | source-parser, agents, git, discovery, prompts libraries created with tests | |
| 41 | +| phase-2 | Core commands (add, init, list, filters) | pending | phase-1 | Three commands + filter utilities working end-to-end | |
| 42 | +| phase-3 | Search and discovery (find) | pending | phase-1; phase-2 for install-on-select | find command with JSON output, configurable limits | |
| 43 | +| phase-4 | Update lifecycle (outdated, update) | pending | phase-1 (4.1); phase-2 (4.2) | outdated/update commands with arbitrary data input | |
| 44 | +| phase-5 | Integration (remove, info, refactor, tests, docs) | pending | phase-2, phase-3, phase-4 | remove/info commands, refactored externals, integration tests | |
| 45 | + |
| 46 | +### Phase Details |
| 47 | + |
| 48 | +1. [Phase 1: Foundation Modules](./phase/1-foundation-modules.md) |
| 49 | +2. [Phase 2: Core Commands + Filters](./phase/2-core-commands.md) |
| 50 | +3. [Phase 3: Search and Discovery](./phase/3-search-discovery.md) |
| 51 | +4. [Phase 4: Update Lifecycle](./phase/4-update-lifecycle.md) |
| 52 | +5. [Phase 5: Integration](./phase/5-integration-filters.md) |
| 53 | + |
| 54 | +## Risks |
| 55 | + |
| 56 | +| Risk | Likelihood | Impact | Mitigation | |
| 57 | +|------|------------|--------|------------| |
| 58 | +| Agent registry stale (new agents, changed paths) | High | Low | Data-driven registry from JSON, easy to update; track vercel-labs/skills as upstream | |
| 59 | +| Breaking existing `skill deps` commands | Medium | High | All new code in new files; existing commands untouched until phase-5 integration | |
| 60 | +| Source parser ambiguity (`@` means skill filter vs git ref) | Medium | Medium | Use `#` for ref (like npm), `@` for skill filter — different delimiter than vercel | |
| 61 | +| Symlink permission failures on Windows | Low | Medium | Fall back to copy mode automatically (same as vercel-labs/skills) | |
| 62 | +| Naming collision with existing `skill check-all` | Medium | Medium | New update-detection command named `outdated` (npm convention); existing `check-all` untouched | |
| 63 | +| Over-serialized phases block parallel work | Medium | Medium | Relaxed dependency constraints: phase 3/4 can partially start after phase-1; phase 5.4 refactor starts after phase-1 | |
| 64 | + |
| 65 | +## Timeline |
| 66 | + |
| 67 | +| Milestone | Target | Actual | |
| 68 | +|-----------|--------|--------| |
| 69 | +| Planning complete | 2026-03-20 | | |
| 70 | +| Phase 1 complete | | | |
| 71 | +| Phase 2 complete | | | |
| 72 | +| All phases complete | | | |
| 73 | + |
| 74 | +## Rollback Strategy |
| 75 | + |
| 76 | +All work in a git worktree. If any phase fails, the worktree can be discarded without affecting main. Each phase produces independent modules that don't modify existing code until phase 5. |
| 77 | + |
| 78 | +## Notes |
| 79 | + |
| 80 | +- This work extracts logic from vercel-labs/skills (MIT licensed) but reimplements it in our Bun/Citty/Valibot stack |
| 81 | +- We use `#` for git ref (not `@`) to avoid conflict with the existing `owner/repo@skill` convention |
| 82 | +- The agent registry is data we maintain, not a dependency on vercel-labs/skills |
| 83 | +- All new modules must use the runtime-aware shims from `lib/runtime.ts` (ADR-016) |
| 84 | +- Interactive prompts go in `lib/prompts/` even if initially only used by one command |
| 85 | +- Two new dependencies adopted: `simple-git` (typed git CLI wrapper with AbortController, `raw()` for worktrees/sparse-checkout/archive) and `xdg-basedir` (correct XDG path resolution for agent global dirs) |
| 86 | +- `skill add` is a parallel installation system — it writes to lock files only, does NOT modify `sources.yaml` (the external deps manifest) |
| 87 | +- Agent detection uses config directory presence only (e.g., `~/.cursor` exists), not binary detection |
| 88 | +- Coordinates with the skill-inspection pipeline plan — shares `.catalog.ndjson` and search infrastructure |
| 89 | +- Naming: `outdated` (not `check`) avoids collision with existing `skill deps check` and `skill check-all` |
0 commit comments