A personal Claude Code plugin marketplace.
Ships three plugins:
early-prototype— the timeteam suite: Product/PM/Worker session lifecycle as installable skills, hooks, and an agent.peer-board— agent-to-agent coordination over GitHub Discussions, so parallel Claude Code sessions on one repo stop duplicating each other's work.dewormer— an optional output style and skill that strip the performed-quality tics out of Claude's prose: the praise reflex, the emphasis markers, the borrowed engineering slang.
You sit down to work. /early-prototype:teamtime opens a PM session (you're now in "review, decide, delegate" mode). /early-prototype:worktime clocks in a Worker task — your description goes on _kanban.md and the Stop hook starts producing handoffs. /early-prototype:clocktime closes the task (moves it to DONE via a review gate). /early-prototype:sleeptime closes the PM session and writes a session log.
When a Worker session ends, a §6-format handoff lands in .claude/inbox/pm/ automatically. Next time you /early-prototype:teamtime, unread handoffs are surfaced.
/early-prototype:prodtime opens a Product session above PM — the seat that frames what a cycle should build, for whom, and why, then hands a written brief down to PM; /early-prototype:prodout closes it.
It's session lifecycle as ambient infrastructure: kanban state, handoffs, and session-end audit happen via hooks, not via you remembering to invoke them.
# 1. Register this marketplace (once)
/plugin marketplace add earlyprototype/early-prototype
# 2. Install whichever plugin you want
/plugin install early-prototype@early-prototype
/plugin install peer-board@early-prototype
/plugin install dewormer@early-prototypeAfter installing, skills are namespaced under the plugin:
/early-prototype:prodtime— open Product session/early-prototype:prodout— close Product session/early-prototype:teamtime— open PM session/early-prototype:sleeptime— close PM session/early-prototype:worktime— open Worker task (fresh)/early-prototype:chosetime— open Worker task (from queue)/early-prototype:clocktime— close Worker task/early-prototype:notetime— mid-task note/early-prototype:queuetime— queue a task for later/early-prototype:readtime— acknowledge a handoff/early-prototype:check-handoffs— surface inbox/early-prototype:cleantime— wipe all session state in this project
early-prototype/ (this repo = the marketplace)
├── .claude-plugin/
│ └── marketplace.json # catalog (lists plugins)
├── README.md
└── plugins/
└── early-prototype/ # the plugin
├── .claude-plugin/
│ └── plugin.json
├── skills/ # 13 skills, each a folder with SKILL.md
├── hooks/
│ ├── hooks.json # hook registration
│ ├── worker-completion-signal.js (Stop)
│ ├── pm-handoff-discovery.js (SessionStart)
│ └── lib/ # shared modules (handoff template, kanban mover)
│ └── agents/
│ └── kanban-worker.md # Haiku subagent for kanban MCP grunt
└── peer-board/ # the second plugin
├── .claude-plugin/
│ └── plugin.json
├── commands/ # /peer-board:board, /peer-board:board-install
├── skills/peer-board/ # the protocol agents follow unprompted
└── assets/ # GitHub Actions workflows, copied into your repo
└── dewormer/ # the third plugin
├── .claude-plugin/
│ └── plugin.json
├── output-styles/
│ └── dewormer.md # the optional `Dewormer` style
└── skills/dewormer/ # full term list, rewrites, audit grep
Several Claude Code sessions on one repo can't see each other, so they duplicate work and collide on hand-assigned identifiers. peer-board gives them GitHub Discussions threads they can open, join, reply in, leave and close, plus a snapshot branch they can read to see who is in a thread and whether anyone replied. Run /peer-board:board-install in a repo to copy the workflows in; full detail in plugins/peer-board/README.md.
Substance carries itself, so prose should never label itself. A sentence saying "the key insight is" has produced an announcement, not an insight; a reply opening "let me be blunt" has asked to be read as blunt instead of being blunt. Preference training gave every desirable property a cheap lexical proxy, and the proxy costs one phrase where the property costs work, so it arrives first. dewormer names the nine families this happens in and lists the roughly ninety phrases that carry it. Select the Dewormer output style for every turn, or invoke the dewormer skill when editing a document; detail in plugins/dewormer/README.md.
early-prototype
- kanbanger MCP — the lifecycle skills delegate kanban mutations to it. Without kanbanger,
worktime/chosetime/clocktime/queuetimelose their kanban-side effect. - Node.js on
PATH— the hooks are Node scripts.
dewormer
- None. Markdown only, no hooks and no code.
peer-board
- GitHub MCP server — agents reach the board through
actions_run_triggerandget_file_contents. - GitHub Discussions enabled on each repo, with
Agent BoardandPR Boardcategories. No PAT or secrets needed.
- Skills and commands inside a plugin are always namespaced as
/<plugin-name>:<name>— soearly-prototype:,peer-board:anddewormer:respectively. - The
Dewormeroutput style is opt-in. Installing the plugin does not switch it on; pick it in/configunder Output style, or set"outputStyle": "Dewormer"in a settings file. - Plugins execute code (hooks). Only install marketplaces you trust.
- Session state lives in each project's
.claude/folder (markers, inbox, notes). The plugin reads/writes there at runtime; no global state.