Skip to content

Skill manager: install once, fan out to every provider's skills directory #343

Closed

Description

@currentbits

From the plugin-economy round: SKILL.md is now a de-facto cross-agent standard (25+ platforms; Cursor natively loads .claude/skills and .codex/skills), and each provider has its own discovery directory. Nobody in the GUI-orchestrator space owns skill management.

A Solenta skill manager: install/update/audit a skill once, fan out to each provider's directory, show context-cost per skill, and nudge about skills not used recently (Anthropic's own marketplace now does both). Ties to #305 (install-time scanning) for the trust layer.

Activity

  1. currentbits commented on Aug 17, 2026

    @currentbits
    OwnerAuthor

    Implementation started on worktree 91ca5c74.

    Shape agreed and committed as a shared contract (src/shared/ipc.ts, electron/preload.js):

    • SkillTarget = claude | agents | codex | grok | opencode | kimi, each mapped to its real skills dir (opencode is ~/.config/opencode/skills). A target is active only when that CLI's config dir exists, so we never create dirs for an uninstalled CLI.
    • skills.add drops its target field and fans out to every active target; skills.remove takes just a name and clears every copy.
    • skills.list returns one row per skill name with installedIn / missingFrom (drift) / bytes. Project skills stay separate read-only rows.
    • New skills.sync() copies each skill's whole directory (references/ and examples/ included) into the targets it is missing from; idempotent.
    • Context cost = SKILL.md bytes, rendered as ~tokens in the UI. Reference files load on demand and never enter context, so they are not counted.

    Two grok workers are implementing the halves in parallel: main process (electron/skills.js, electron/ipc.js, tests) and renderer (SkillsTab, dev/fake twins, tests).

    Deferred: the "skills not used recently" nudge. That needs per-skill invocation tracking across five CLIs that do not report it — a separate piece of work from the fan-out, and worth filing on its own once this lands.

  2. added and removed on Aug 17, 2026
  3. currentbits commented on Aug 17, 2026

    @currentbits
    OwnerAuthor

    Both halves landed on coder/skill-manager-install-once-fan-out-to-ev-91ca5c (grok workers, main-process and renderer, merged clean — disjoint file sets).

    Verification: electron 1011/1012, renderer 842/842, tsc --noEmit clean. The single failure is wireClient × webBridge over a real socket, the known pre-existing failure on main.

    What dogfooding caught that the green suite did not: ~/.claude/skills on this machine is 28 symlinks into ~/.agents/skills, and dirent.isDirectory() is false for a symlink. Every skill read as missing from Claude, so Sync would have copied ~130k of content over a deliberate symlink farm. Fixed: scan accepts symlinked entries, and cpSync now dereferences so a relative link never lands at a depth where it cannot resolve (~/.config/opencode/skills is one level deeper than ~/.claude/skills). Also guarded: a marketplace-installed dir whose name our rule rejects used to abort the entire sync.

    Live numbers from the real dirs: 31 skills, all present in claude+agents, all genuinely missing from codex/grok/opencode/kimi. Context cost totals ~131k tokens if every skill were invoked; design-taste-frontend alone is ~21.8k.

    Still deferred: the "skills not used recently" nudge.

  4. currentbits commented on Aug 17, 2026

    @currentbits
    OwnerAuthor

    Deep-dive details: (1) Conductor's sync-configs-across-harnesses button — copy skills/slash commands/MCP servers between provider configs, fighting capability drift (#324). (2) From the skills-ecosystem round: nobody can tell when a skill fired or whether it helped — Solenta sits at the harness layer, so log skill activations per thread and correlate with outcomes ('which skills earn their context').

  5. currentbits commented on Aug 17, 2026

    @currentbits
    OwnerAuthor

    Research note (Obsidian Skills lesson): Solenta's threads, planboard items, automation definitions, and checkpoints are file formats — publish a Solenta Skills pack teaching any connected agent how to read/write them correctly. One pack, all five providers. Also from fleet ops: a versioned team skill registry with publish/rollback is the team-scale version.

  6. currentbits commented on Aug 18, 2026

    @currentbits
    OwnerAuthor

    Research note (package-manager round): two developments make skills-via-packages real. (1) pnpm RFC (discussion #13422, July 2026): a standard way for packages to communicate with AI coding agents AT INSTALL TIME — support it when it lands. (2) The agent-skill-coordinator npm package: discovers skills shipped INSIDE installed npm packages and registers them into AGENTS.md. Skill discovery should scan node_modules, not just remote registries.

  7. currentbits commented on Aug 18, 2026

    @currentbits
    OwnerAuthor

    Deep-dive (Zed skills): the constraints that make skills safe — a 50KB total catalog budget (name+description only, bodies loaded on demand via progressive disclosure), project-local skills load only from TRUSTED worktrees, and the agent can NEVER edit SKILL.md without explicit authorization (a compromised conversation must not rewrite future-conversation instructions). The last rule maps directly onto memory-server write policy.

  8. currentbits commented on Aug 18, 2026

    @currentbits
    OwnerAuthor

    Round 26 note for the record (issue is closed, skill manager shipped): the plugin ecosystem is consolidating around a formal cross-vendor standard, agent-plugins.org, and Goose (now aaif-goose under the Linux Foundation) has an adoption issue open (aaif-goose/goose#11043). Codex CLI 0.147.0 already speaks portable Agent Plugins manifests with local/personal/workspace/remote catalogs, and Copilot's spec plugins moved under a namespaced directory layout. If the skill manager ever grows a plugin layer beyond SKILL.md fan-out, agent-plugins.org is the manifest format to target rather than any vendor's proprietary one.

  9. added and removed on Sep 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions