A Claude Code plugin that connects to your Oolkin persona-memory
workspace and ships skills that use it. The first skill is editorial: an adversarial
multi-persona review pass you can run on any piece of writing.
Bundled in one plugin, so installing it gets you all of it in one shot:
- The Oolkin MCP connector (
.mcp.json) — you authenticate your own account on first use. - A
Stophook that enforces every edit this plugin's skills produce gets diffed and durably stored in Oolkin, not just described in prose. skills/editorial/— the first skill. More skills land underskills/<name>/later, reusing the same connector and hook.
/plugin marketplace add edgarator/oolkin-plugin
/plugin install oolkin@edgarator/oolkin-plugin
The first time a skill in this plugin calls an Oolkin tool, Claude Code will prompt you to authorize your own Oolkin account — the same interactive OAuth flow as any other remote MCP connector. Nothing in this repo authenticates as anyone but you.
/oolkin:editorial path/to/draft.md
or paste content directly after the command, or pipe it in.
What it does, in one pass:
- Shows you a shortlist of personas from your connected Oolkin workspace, fit for content critique — you multi-select who actually reviews this piece.
- Spawns one subagent per selected persona, in parallel. Each embodies its persona (its real accumulated memory, not just a bio) and reacts to the full piece, honestly. Any persona can ask you up to two clarifying questions if something's genuinely unclear.
- If there are questions, you answer them.
- One synthesis pass rewrites the piece using all of the above.
- A unified diff between your original and the rewrite gets computed, the rewrite is
saved as markdown, and the diff is stored as an Oolkin artifact and logged — a real
diff, not a description of one. A
Stophook checks this happened before your session is allowed to end.
No re-scoring loop, no fixed team roles, no CMS assumptions — this is the simple pass. Project-specific richness (a voice corpus, a fixed editorial team shape, a re-scoring loop against a target score) is meant to be layered on top by a project's own wrapper skill that calls into this one, not built into it.
Drop a new folder at skills/<name>/SKILL.md. It automatically gets the bundled Oolkin
connector and the Stop/SubagentStop hooks — no config changes needed anywhere else.
Design principle: oolkin skills orchestrate, persona skills are the lens. A skill in
this plugin owns the method — which personas to invite, how to gather evidence, when to
ask instead of assert, how to consolidate, how to account for the result. It never
hardcodes a rubric. The rubric — what actually counts as good or bad — comes from
whichever persona is embodied, via the skills array get_persona returns. If a
persona-equipped skill (in Oolkin's own catalog, not this plugin) needs to support being
called both standalone and from inside one of this plugin's orchestrated pipelines, give
its own recording step a conditional: standalone records its own memory as usual;
orchestrated returns structured output and lets the caller record once, for the whole
run. heuristic-review (equipped on the Jakob's Gavel persona) is the reference example
of this split.
SubagentStop's exact payload is undocumented. The enforcement hook is written to tolerate either a subagent-scoped or full-session transcript, but this hasn't been empirically confirmed.Stop(which fires once at real session end, with a documentedtranscript_path) is the hook actually load-bearing here; treatSubagentStopas secondary.PreToolUse/PostToolUsecan't isolate a subagent's own tool calls from the main session's — the enforcement script scopes by transcript time-window since the skill's marker instead, which assumes one editorial pass runs at a time per session.- Centralized memory recording is a deliberate deviation from Oolkin's own
oolkin-embodyprotocol (which says a persona should log its own reaction). See the note inskills/editorial/SKILL.mdStep 2 for the reasoning — worth re-measuring once there's real usage to look at.
MIT