MSH · Team tutorial

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

  1. Install Claude Code (CLI or desktop app).
  2. Install the plugin: claude plugin install ./msh-framework — or it arrives via the organization's plugin settings.
  3. When prompted, enter your Plane API key (Plane → Settings → API Tokens), workspace slug voicenter, and base URL https://plane.voicenter.co.
  4. Type /msh:help — if it shows your current projects, you're connected.
  5. 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 / runWhat happens
A new idea or feature that needs shaping/msh:startInteractive triage sizes it and builds the plan in Plane
Work you already discussed — “just create the tasks”/msh:start → TrackOne Brief + linked FE/BE/DB/design tasks. No documents, no gates
A tiny DB-only change (new column, lookup row)/msh:start → HotfixSchema delta + review, done
A small FE/BE fix, copy or config change (no DB)/msh:start → TrackBrief + 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:syncReads your commits, reconciles Plane with reality
“Where does {Feature} stand?”/msh:status · /msh:briefStatus table / full interactive deep-dive with Q&A
“Is the board healthy?”/msh:doctorRead-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-workYour 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