doc/plans/2026-03-14-adapter-skill-sync-rollout.md
Status: Implemented for local adapters; gateway remains unsupported Date: 2026-03-14 Audience: Product and engineering Related:
doc/plans/2026-03-14-skills-ui-product-plan.mddoc/plans/2026-03-13-company-import-export-v2.mddocs/companies/companies-spec.mdThis document defines the rollout plan for adapter-wide skill support in Paperclip.
The goal is not just “show a skills tab.” The goal is:
Paperclip currently has these adapters:
claude_localcodex_localcursorgemini_localgrok_localacpx_localopencode_localpi_localopenclaw_gatewayThe current skill API supports:
unsupportedpersistentephemeralCurrent implementation state:
codex_local: implemented, ephemeralclaude_local: implemented, ephemeralcursor: implemented, persistentgemini_local: implemented, persistentpi_local: implemented, persistentopencode_local: implemented, persistent, with shared Claude skills home caveatsacpx_local: implemented, ephemeral for Claude/Codex sub-agents and unsupported for custom commandsgrok_local: implemented, ephemeralopenclaw_gateway: not yet implemented; blocked on gateway protocol support, so unsupported for nowThese adapters have a stable local skills directory that Paperclip can read and manage.
Candidates:
cursorgemini_localpi_localopencode_local with caveatsExpected UX:
syncThese adapters do not have a meaningful Paperclip-owned persistent install state.
Current adapter:
codex_localclaude_localacpx_local when configured for Claude or Codexgrok_localExpected UX:
These adapters cannot support skill sync without new external capabilities.
Current adapter:
acpx_local when configured for custom commandsopenclaw_gatewayExpected UX:
unsupportedTarget mode:
ephemeralCurrent state:
Requirements to finish:
CODEX_HOME/skills mutation scoped to heartbeat execution, not skills/syncSuccess criteria:
CODEX_HOME/skills during runsskills/syncTarget mode:
ephemeralCurrent state:
Requirements to finish:
Success criteria:
Target mode:
persistentTechnical basis:
~/.cursor/skillsCurrent state:
Testing:
Success criteria:
Target mode:
persistentTechnical basis:
~/.gemini/skillsCurrent state:
Potential caveat:
Success criteria:
Target mode:
persistentTechnical basis:
~/.pi/agent/skillsCurrent state:
Success criteria:
Target mode:
persistentSpecial case:
~/.claude/skillsThis is product-risky because:
Plan:
listSkills and syncSkillspersistentPhase 2:
Success criteria:
Target mode:
unsupported until gateway protocol support existsRequired external work:
Until then:
Future target:
Target mode:
ephemeral for built-in Claude/Codex ACPX sub-agentsunsupported for custom ACP commandsSuccess criteria:
Target mode:
ephemeralSuccess criteria:
skills/syncNear-term adapter contract remains:
listSkills(ctx)syncSkills(ctx, desiredSkills)This is enough for all local adapters.
Add only if needed after the first broad rollout:
skillHomeLabelsharedHome: booleansupportsExternalDiscovery: booleansupportsDestructiveSync: booleanThese should be optional metadata additions to the snapshot, not required new adapter methods.
The company-level skill library can stay adapter-neutral.
The agent-level Skills tab must become adapter-aware by copy and status:
persistent: installed / missing / stale / externalephemeral: mounted on next run / external / desired onlyunsupported: desired only, adapter cannot report actual stateAdditional UI requirement for shared-home adapters:
Ship:
cursorgemini_localpi_localStatus:
Ship:
opencode_localStatus:
Decide:
openclaw_gateway unsupported for V1My recommendation:
Adapter-wide skill support is ready when all are true:
persistentephemeralunsupportedlistSkillssyncSkillsopenclaw_gateway is either:
The recommended immediate order is:
cursorgemini_localpi_localopencode_localopenclaw_gatewayThe local-adapter family now has explicit truth models. The remaining V1 boundary is openclaw_gateway, which should stay unsupported until the gateway protocol can report real remote skill state.