
Your AI project manager. Any input in, tracked work out.
MSH runs inside Claude Code and keeps all project state in Plane. Give it any starting point — an idea, a feature request, a decided-but-untracked change, meeting notes, or pushed commits — and it creates and maintains the right amount of tracked, linked work. It scales process to the work: a full spec pipeline when an idea needs shaping, a Brief + linked tasks when it's already understood, a schema delta when it's a tiny DB change.
Plane is the single source of truthDescribe it in plain language — the right skill triggersEvery document reviewed & auditable
One-time · 2 minutes
Setup
- Install Claude Code (CLI or desktop app).
- Install the plugin:
claude plugin install ./msh-framework — or it arrives via the organization's plugin settings. - When prompted, enter your Plane API key (Plane → Settings → API Tokens), workspace slug
voicenter, and base URL https://plane.voicenter.co. - Type
/msh:help — if it shows your current projects, you're connected. - Optional — Plane 3.0 extras (release cutting on close, customer-request intake, enforced workflow transitions): export
PLANE_API_KEY, PLANE_BASE_URL, and PLANE_WORKSPACE_SLUG in your shell profile — the key you entered above lives in the OS keychain where these features can't read it. Without the export everything still works; you just don't get the extras.
Read once, remember forever
The 5 rules of the game
Plane is the single source of truth
Every document — PRD, stories, schema, specs — lives inside a Plane work item's description. No local files, no Google Docs. If it's not in Plane, it doesn't exist.
One phase = one chat
After each pipeline phase, start a NEW Claude chat. /msh:next {Feature} always tells you what to run next — you never need to remember the order.
Your tasks are Plane sub-issues
Labeled ticket:frontend / backend / db / design. New tickets start in Backlog; move yours to Todo when you pick it up, In Progress while working, Done when finished.
Documents pass a quality gate
Every generated document gets an adversarial review with a verdict. A wrong FAIL can be overridden — with a recorded reason — via /msh:override-gate.
PASSCONCERNS — proceed, notedFAIL — rework
Everything is auditable
Every document keeps an append-only Decision Log of who changed what and why. Nothing is edited silently.
By situation
Pick your door
You don't choose the process — you describe what you have, and triage sizes the process to it. This is the full map.
| You have… | Say / run | What happens |
|---|
| A new idea or feature that needs shaping | /msh:start | Interactive triage sizes it and builds the plan in Plane |
| Work you already discussed — “just create the tasks” | /msh:start → Track | One Brief + linked FE/BE/DB/design tasks. No documents, no gates |
| A tiny DB-only change (new column, lookup row) | /msh:start → Hotfix | Schema delta + review, done |
| A small FE/BE fix, copy or config change (no DB) | /msh:start → Track | Brief + the one or two tickets |
| Meeting notes, a call transcript, “we decided X” | /msh:ingest {Feature} | Updates affected documents, flags stale ones, creates tickets. Also picks up Plane customer requests linked to the feature (3.0) |
| Code you just pushed | /msh:sync | Reads your commits, reconciles Plane with reality |
| “Where does {Feature} stand?” | /msh:status · /msh:brief | Status table / full interactive deep-dive with Q&A |
| “Is the board healthy?” | /msh:doctor | Read-only audit: stuck phases, missing artifacts, expired overrides |
| “What do I do next on {Feature}?” | /msh:next {Feature} | Finds the first unblocked step and tells you exactly what to run |
| “What should I work on today?” | /msh:my-work | Your personal queue across ALL projects; team = per-person workload rollup |
| A finished version | /msh:close {Feature} | Verifies completeness, closes the cycle, cuts a Plane Release for the version (3.0) |
By role
What this means for you
Idea owner
product · management You describe what and why, in business terms. MSH never requires technical answers from you — though it will use them if you have them.
/msh:start → answer “what should it do?” → confirm the suggested template. - New chat →
/msh:prd-interview {Feature} → answer the interview. The PRD writes itself into Plane and gets reviewed automatically. - After any meeting that changed the plan:
/msh:ingest {Feature} + paste the transcript. MSH figures out which documents change. - Anytime:
/msh:brief {Feature} — a 15-line catch-up plus free-form Q&A.
Team lead
owns the middle of the pipeline and the ticket flow- Drive phases with
/msh:next {Feature}; each spec skill reads everything upstream from Plane, writes its document, passes review, then creates dev tickets and asks once per batch about assignees. - Ticket philosophy: fewer, larger, related tickets — 4–8 endpoints per BE ticket, one ticket per entity family for DB, one per screen for FE.
- Gate stuck or wrong?
/msh:override-gate {Feature} {phase} — reason required, recorded forever, and it offers to create any missing tickets. - Already-scoped multi-team work:
/msh:start → Track → paste your breakdown; it wires blocked_by links (FE task waits for its design task, and so on).
Developer
frontend · backend- Your work: Plane sub-issues labeled
ticket:frontend / ticket:backend. Each ticket is self-contained — scope, implementation notes, acceptance criteria, links to the spec. - Before coding:
/msh:brief {Feature} gives you full context and answers questions (“why is this field here?”, “which endpoint returns X?”). - FE devs:
/msh:voicenter-frontend-dev loads the Voicenter Vue/TS/UI-Plus coding standards for implementation work. - After pushing: run
/msh:sync. It reads your commits and updates Plane so documents don't rot. This is the one habit that keeps the system honest.
- “What's my work today?” →
/msh:my-work. Your queue across everything: finish-first In Progress (with stale flags), committed Todo, available unblocked Backlog, and blocked items with reasons. Say “start CP-61” and it moves the state for you.
Designer
- Your work arrives as
ticket:design sub-issues under a feature's Design Brief, each with a clear Definition of Done: DoD-W (wireframe logic — flows, states, edge cases clear enough for dev) or DoD-U (UI library delta — component variants and states defined). Pixel-perfect Figma is the exception, not the default. - The live product and Voicenter UI Plus are the source of truth for existing behavior — you describe deltas on top, not redraw screens.
/msh:brief {Feature} for context; open questions live in the feature's Brief, and tickets blocked by them are marked Provisional.
Manager checking progress
/msh:status — everything active, at a glance./msh:status {Feature} — one feature in detail./msh:brief {Feature} — “explain it to me” + free-form questions. /msh:doctor — what's stuck, abandoned, or inconsistent.- “Who's working on what?” →
/msh:my-work team. Per-person rollup (In Progress / Todo / Backlog / blocked), overload and stale flags, plus the unassigned-unblocked list. /msh:my-work {name} for one person's queue.
What triage picks between
The templates
Hotfixtiny · DB-only
Schema delta + review. Two steps, done.
Trackunderstood work
One Brief + linked tasks for any team mix. No documents, no gates. This is where most day-to-day work lives.
Lite / Fullneeds shaping
PRD → Stories → Design Brief → DB Schema → Backend Spec → Frontend Spec — each reviewed, tickets generated along the way.
Epiccross-product
Full + architecture review and cross-team coordination steps.
You can always override triage's suggestion — it will log why.
So nobody is surprised
What MSH does not do yet
- No bug-report intake — a messy support report has no dedicated door yet; today, describe the fix to
/msh:start (→ Track). A proper intake/triage front door is planned. - No cross-project priority arbitration — MSH tracks and links work, but a human still decides what's more important when two asks collide. Planned: conflict detection + a named arbiter per project.
- Chat-bot built but not yet deployed — a Google Chat check-in bot (it DMs you your queue, turns your plain-language replies into Plane updates, and arbitrates when @mentioned) lives in
chatbot/ but is not yet wired into production. For now, paste chat or meeting text into /msh:ingest.
MSH ↔ Plane
Glossary
ProductPlane Project
FeaturePlane Module
VersionPlane Cycle
Pipeline stepWork Item (phase)
ReviewGate work item
Your taskSub-issue with a ticket:* label
DocumentThe phase work item's description