|
Some checks are pending
Pre-commit / run (ubuntu-latest) (push) Waiting to run
feat: add Claude Code marketplace plugin with service and expert tiers Add comprehensive Claude Code marketplace plugin supporting two paradigms for managing markdown vaults: - reme-service: Service-tier plugin with high-level MCP tools (retrieve/remember/maintain) where reme2 internals handle R-M-W loop - reme-expert: Expert-tier plugin where Claude Code agent runs R-M-W loop directly using raw memory_* primitives guided by reme protocol skill Both plugins implement identical 4-phase work paradigm: - Recall: Retrieve relevant context with ranking by relevance/proximity - Log: Record event facts and raw materials via idempotent event-folder upsert - Distill: Promote events to topic graph via R-M-W loop - Maintain: Vault hygiene sweep with lint and decay operations Include marketplace configuration, documentation, MCP server setup, subagents (reme-distiller, reme-curator), hooks (PreCompact, SessionEnd, Stop), and slash commands (/reme-distill, /reme-recall, /reme-clean). Remove outdated plugin entries from gitignore. ``` |
||
|---|---|---|
| .. | ||
| .claude-plugin | ||
| plugins | ||
| README.md | ||
reme — Claude Code marketplace
Two paradigms for managing a markdown vault from Claude Code, packaged as two installable plugins. The 4-phase work paradigm is identical across both — only the locus of computation for the LLM-driven phases (Distill, Maintain) differs.
The 4-phase paradigm (both plugins)
Every interaction with the vault falls into one of four phases:
| Phase | What | Trigger |
|---|---|---|
| Recall | Retrieve relevant context (chunks ranked by relevance + graph proximity). | Intent-driven: user asks about prior work or the task needs prior context. |
| Log | Record event facts + raw materials into an idempotent event-folder upsert. | (a) intent-driven during the task; (b) PreCompact hook to dump volatile state. |
| Distill | Promote events into the topic graph via R-M-W (read → mutate → write). | (a) intent-driven at task wrap; (b) SessionEnd hook; (c) Stop hook warns if skipped. |
| Maintain | Vault hygiene sweep — lint + decay. | Periodic / user suspects drift. No hook auto-fires. |
The triggers + hook set are identical in both plugins. What changes is which tool / mechanism realizes each phase, and where the LLM-driven loops actually run.
Service tier vs Expert tier
| Phase | reme-service — work runs inside reme2 |
reme-expert — work runs outside reme2 |
|---|---|---|
| Recall | retrieve MCP tool |
memory_search / memory_graph_search MCP tools, /reme-recall slash |
| Log | remember(mode=log, name=...) MCP tool |
sync(name=...) MCP tool (+ memory_update / memory_property_update for surgical edits) |
| Distill | remember(mode=distill, ...) MCP tool → Ingestor's internal ReActAgent runs the R-M-W loop inside reme2 |
/reme-distill slash → reme-distiller subagent runs the R-M-W loop outside reme2 (own context window) |
| Maintain | maintain(...) MCP tool → Maintainer class runs the sweep inside reme2 |
/reme-clean slash → reme-curator subagent runs the sweep outside reme2 |
Both plugins ship the same hook set: PreCompact / SessionEnd / Stop. The prompt content differs only in which tool / slash command to call. Recall and Log are thin no-LLM primitives in both modes — only the MCP names differ.
Both plugins are built on ReMe2 (file_store + watcher + the
three memory services) and the 4-axis Memory schema in
reme2/memory/schema/. Both ship a copy of the canonical
reme2/memory/protocol.md so the rules (4-axis schema, status state
machine, claim-role confidence, wikilink uniqueness, R-M-W decision
tree) are the same single source of truth across plugin and reme2.
Pick one
reme-service |
reme-expert |
|
|---|---|---|
| Cognitive load | Low — call three high-level tools and trust the loops | High — agent runs its own R-M-W following the protocol |
| Best when | The agent should focus on its primary task; memory is plumbing | The agent should be a first-class citizen of the vault — every R-M-W decision visible and auditable |
| Subagents | None | reme-distiller, reme-curator |
| Slash commands | None (the three MCP tools are enough) | /reme-distill, /reme-recall, /reme-clean |
Install
/plugin marketplace add /Users/huangsen/codes/ReMe/reme-plugin
/plugin install reme-service # OR
/plugin install reme-expert
Restart Claude Code so the MCP server / hooks pick up.
Set VAULT_PATH so the MCP server points at your vault directory:
export VAULT_PATH=/path/to/your/vault
If unset, falls back to ./vault relative to launch CWD (the dev default).
Layout
reme-plugin/
├── .claude-plugin/
│ └── marketplace.json # lists both plugins
├── README.md # this file
└── plugins/
├── reme-service/ # Service-tier
│ ├── .claude-plugin/plugin.json
│ ├── .mcp.json # config=reme2/config/service.yaml
│ ├── protocol.md # canonical protocol (copied from reme2/)
│ ├── skills/reme-service/SKILL.md
│ ├── hooks/ # PreCompact / SessionEnd / Stop
│ └── README.md
└── reme-expert/ # Expert-tier
├── .claude-plugin/plugin.json
├── .mcp.json # config=reme2/config/expert.yaml
├── protocol.md # canonical protocol (copied from reme2/)
├── skills/reme-expert/SKILL.md
├── hooks/ # PreCompact / SessionEnd / Stop
├── agents/ # reme-distiller, reme-curator subagents
├── commands/ # /reme-distill, /reme-recall, /reme-clean
└── README.md
Each plugin's MCP server is python -m reme2.mcp.server with
PYTHONPATH=${CLAUDE_PLUGIN_ROOT}/../../.. so it resolves the sibling
reme2/ package without pip install. The two plugins differ only in
which config they pin (service.yaml vs expert.yaml).
Switching modes
Both modes write through the same MFS engine and read the same files, so the vault is portable across modes. To switch:
/plugin uninstall reme-{service|expert}/plugin install reme-{expert|service}- Restart Claude Code.
You can keep both installed simultaneously as long as you don't run two MCP servers at the same vault — the file_store cache will fight.
Switch from service → expert when:
- You need fine-grained control over what gets created/edited.
- You want every memory mutation visible in the main session's tool log.
- You want subagents to handle distillation as bounded background work.
Switch from expert → service when:
- The agent's main task is what matters; memory should be invisible plumbing.
- You don't want to maintain or read the protocol.
- You're OK with the Ingestor's defaults around topic creation, claim confidence, and wikilink uniqueness.