SLOPSHOPPER

personas

PIANO-esque cognitive layer: persona-keyed state, heartbeat liveness, controller with classify/actuate

new
★ 1v?no licenseupdated 2026-10-08SApplefeld/Plugins/plugins/personas
A shopper browsing a rack in a slop shop
Preview could not run: hooks.json names ./index.ts as the hooks module, but the repository has no such file
README

plugins

Four Claude Code plugins install from this one marketplace, applefeld. Each folder under plugins/ holds one plugin's runtime files and nothing else. A publish job in each plugin's own repository replaces its folder in one commit, so an install follows those commits.

Install

Add the marketplace once, then install the plugins you want:

claude plugin marketplace add SApplefeld/plugins
claude plugin install grimoire@applefeld
claude plugin install personas@applefeld
claude plugin install relay@applefeld
claude plugin install wiki@applefeld

A machine that already registered another marketplace named applefeld removes it first, since one machine cannot hold two marketplaces under one name.

After Installing

Some plugins need a step past the install. Each step below runs from the plugin's installed folder, <plugin cache>/applefeld/<plugin>/<sha>/, where <plugin cache> is ~/.claude/plugins/cache.

  • grimoire. While ~/.claude/CLAUDE.md lacks the kit's doctrine import, the kit's session hook offers to add it. The kit's doctor checks the machine, and on Windows it runs from the installed payload at <plugin cache>/applefeld/grimoire/<sha>/doctor/doctor.cmd, or as /grimoire:kit-doctor in any session. Add -Fix to apply its repairs.
  • personas. The plugin runs in any session as installed. Its optional supervisor, bin/supervise.sh, runs from the installed folder.
  • relay. The plugin is a shim that reaches a broker on the host. That broker needs a host install, from the install scripts in this repository's plugins/relay/ folder, before a session can connect.
  • wiki. The engine's setup script runs from its installed folder, per the walkthrough shipped beside it.

Updating

claude plugin marketplace update applefeld reads the latest commit, and claude plugin update <plugin>@applefeld takes it. No plugin here carries a version number, so each publish is a new version.

Source 1 files
hooks/personas.d.ts 21 lines
1// The type contract .claude-plugin/plugin.json names under "types": the
2// values this plugin holds in $.state, which the host keeps across a reload
3// of the plugin's code and never persists. memqLaunchDir is the launch
4// directory kitMemq runs memq from, written once by the first session.start
5// that captures one. launchInstructions is the whole text of the latest
6// [SUPERVISOR-PRIMING] prompt the supervisor wrote with the sdk origin,
7// which session.compact repeats directly after a compaction's summary.
8// compactionVerdicts is the compaction pass's verdict cache, one entry per
9// tool result judged this session, by tool_use_id: the verdict the pass
10// applies, the option Jev answered, and whether the stamp fell on the
11// journal's holdout split, where the applied verdict is keep.
12declare module "claude-code" {
13  interface PluginState {
14    "personas": {
15      memqLaunchDir: string;
16      launchInstructions: string;
17      compactionVerdicts: Record<string, { verdict: "keep" | "cut" | "drop"; answered: string; holdout: boolean }>;
18    };
19  }
20}
21