Skip to content

Consolidate skills onto skills/ as the single source of truth #866

Description

@groksrc

Background

PR #859 vendors the Claude Code plugin, shared skills, Hermes, and OpenClaw into the monorepo. Now that everything is co-located, the two overlapping skill collections can be deduplicated. This split arrived organically and should be cleaned up — it is not an intentional design boundary.

Today:

  • skills/ — 10 framework-agnostic memory-* skills (canonical source)
  • plugins/claude-code/skills/ — 6 hand-maintained skills, several of which duplicate the shared ones

The tell: OpenClaw already treats skills/ as the single source (bun run fetch-skills bundles them). The Claude Code plugin is the outlier — it reinvents its own parallel set. Aligning the plugin to the same "bundle shared skills + add host-specific glue" pattern is the consistent architecture.

Target architecture

One canonical set of memory-* skills in skills/. Both hosts consume it identically:

  • OpenClaw: bundles via fetch-skills (already done)
  • Claude Code plugin: bundles the same shared skills, and layers on only the host-specific glue (the hooks)

Key reframe: most "plugin-specific" skills are actually shared content + a hook trigger. Separate the skill (agent-agnostic logic) from the glue (the hook), and almost everything collapses into skills/.

Disposition checklist

  • researchretire, use shared memory-research (direct duplicate)
  • edit-noteretire, fold into memory-notes (or a shared memory-edit if the edit workflow warrants standing alone)
  • knowledge-organizeretire in favor of memory-defrag + memory-lifecycle⚠️ first verify they cover orphan-detection / relation-suggestion; migrate any unique content
  • placement → move folder-decision logic to a shared memory-placement; keep the PreToolUse hook in the plugin (only the trigger is CC-specific)
  • knowledge-capture → move to shared memory-capture; keep the JSONL session-ID detection as plugin glue (only that part is CC-bound)
  • continue-conversationdecide: retire in favor of the MCP continue_conversation prompt + memory-reflect, or promote to a shared memory-continue

Naming

  • Uniform memory-* namespace everywhere. The prefix earns its keep: shared skills install into flat dirs (e.g. ~/.claude/skills/) where memory-* avoids collisions with other vendors' skills — true regardless of host.
  • Accept the minor cosmetic stutter in plugin slash commands (/basic-memory:memory-research); not worth diverging names to avoid.

End state

  • A single memory-* skill set in skills/
  • Claude Code plugin = hooks + a bundle of shared skills (mirrors OpenClaw)
  • A single "Adding a New Skill" checklist that keeps dirs ↔ README ↔ lock/bundle in sync (see chore(installer): consolidate agent packages #859 review re: stale skills-lock.json)

Follow-up to #859 (not a blocker — co-location is the precondition for this dedup).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions