| name | curate |
| description | Review pending Wenlan captures or revisions from Codex. Use for explicit audit walks after /brief or /handoff surfaces pending work. Invoked as /curate captures or /curate revisions.
|
| argument-hint | captures | revisions |
| allowed-tools | ["Bash","mcp__wenlan__list_pending","mcp__wenlan__confirm_memory","mcp__wenlan__forget","mcp__wenlan__capture","mcp__wenlan__recall"] |
| user-invocable | true |
/curate
Power-user audit of Wenlan pending surfaces. Daily flow should stay light:
/brief shows the top pending revisions and /handoff previews recent pending
captures. Use /curate only when the user asks to walk the queue.
Safety protocol
Perform no mutation until the user replies. Ambiguous replies do not mutate.
Cancellation, no reply, or unclear syntax is a no-op.
Render at most four items at a time. Number every item. Ask for explicit action
syntax:
1 accept
2 dismiss
3 skip
4 edit: <replacement text>
Do not rely on hidden pagination state across turns. After applying a batch,
re-list before showing another batch.
/curate revisions
Use the local CLI, not MCP, because revision actions must key on the exact
revision_source_id.
Resolve wenlan:
if command -v wenlan >/dev/null 2>&1; then
W="$(command -v wenlan)"
elif [ -x "$HOME/.wenlan/bin/wenlan" ]; then
W="$HOME/.wenlan/bin/wenlan"
else
echo "wenlan not found"
exit 127
fi
"$W" --format json curate
If wenlan is missing, tell the user to run /setup.
The JSON array contains:
revision_source_id: staged revision id; action key for accept/dismiss.
target_source_id: original memory id; context only.
content: revised text.
source_agent: proposer.
original: current text when available.
diff: ready-made OLD/NEW preview when available.
Render up to four revisions:
Pending revisions:
1. revision_source_id: <rev_id>
target: <target_source_id>
proposed: "<content>"
diff:
<diff or "(original unavailable)">
Reply with: 1 accept, 1 dismiss, 1 skip
Apply only explicit actions:
"$W" curate accept <revision_source_id>
"$W" curate dismiss <revision_source_id>
accept replaces the original memory with that named revision. dismiss
unstages the false revision link and keeps both memories as independent rows.
skip does nothing.
/curate captures
If the user names a space, parse space:<name> and pass it to
mcp__wenlan__list_pending. Otherwise leave space off so the audit covers
all pending captures.
Call:
mcp__wenlan__list_pending(limit=50, space="<only when user named one>")
Render up to four:
Pending captures:
1. <source_id> <memory_type> <source_agent>
"<content>"
Reply with: 1 accept, 1 reject, 1 skip, 1 edit: <replacement text>
Apply only explicit actions:
accept: mcp__wenlan__confirm_memory(memory_id="<source_id>")
reject: mcp__wenlan__forget(memory_id="<source_id>")
skip: no call
edit: <replacement>:
mcp__wenlan__capture(content="<replacement>", supersedes="<source_id>")
mcp__wenlan__forget(memory_id="<source_id>")
Reject and edit delete the original pending capture, so require the numbered
item and action verb in the same reply.
Bare /curate
Default to /curate revisions. Revisions are the conflict surface that most
often needs human judgment. Mention /curate captures only as an opt-in audit.
When not to use
- Specific lookup: use
/recall.
- One-off correction: use
/capture with the corrected fact.