You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Skill manager: install once, fan out to every provider's skills directory #343
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.
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.
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.
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').
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.
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.
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.
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.
Activity
currentbits commentedon Aug 17, 2026
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.adddrops itstargetfield and fans out to every active target;skills.removetakes just a name and clears every copy.skills.listreturns one row per skill name withinstalledIn/missingFrom(drift) /bytes. Project skills stay separate read-only rows.skills.sync()copies each skill's whole directory (references/ and examples/ included) into the targets it is missing from; idempotent.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.
currentbits commentedon Aug 17, 2026
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 --noEmitclean. The single failure iswireClient × webBridge over a real socket, the known pre-existing failure on main.What dogfooding caught that the green suite did not:
~/.claude/skillson this machine is 28 symlinks into~/.agents/skills, anddirent.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, andcpSyncnow dereferences so a relative link never lands at a depth where it cannot resolve (~/.config/opencode/skillsis 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-frontendalone is ~21.8k.Still deferred: the "skills not used recently" nudge.
currentbits commentedon Aug 17, 2026
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').
currentbits commentedon Aug 17, 2026
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.
currentbits commentedon Aug 18, 2026
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.
currentbits commentedon Aug 18, 2026
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.
currentbits commentedon Aug 18, 2026
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.