Skip to content

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

@groksrc

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions