plane
Plane is a team behavior observatory — synthesize Plane API data into observations about how teams actually behave under pressure, not just ticket state. Five compound commands surface cycle velocity vs. plan, stale-ticket ownership churn, reviewer gate strength, stated-vs-actual priority drift, and cross-project workload concentration. Reads from the live mcp__plane MCP server when present; documentation-only otherwise. Use when investigating "why is this team's plan diverging from reality", auditing cycle health, finding orphan tickets, identifying review bottlenecks, or onboarding to a new project. Trigger with "/plane-cycle-velocity", "/plane-stale-tickets", "/plane-reviewer-gate-strength", "/plane-priority-drift", "/plane-cross-project-load", "audit Plane cycle", "team behavior plane", "how is my team behaving".
Allowed Tools
Provided by Plugin
plane
Plane is a team behavior observatory — synthesize Plane API data into observations about how teams actually behave under pressure (cycle velocity vs. plan, ownership churn, reviewer gate strength, priority drift, cross-project load). Reads from the live mcp__plane MCP server.
Installation
This skill is included in the plane plugin:
/plugin install plane@claude-code-plugins-plus
Click to copy
Instructions
Plane — Team Behavior Observatory
A behavioral observation layer on top of Plane's project-tracking API. This skill does not wrap Plane CRUD — mcp__plane already does that and you should call it directly for ticket entry, status changes, etc.
Instead, this skill answers behavioral questions about how a team is actually performing under pressure: cycle velocity vs. plan, ownership churn, reviewer gate strength, priority drift, and cross-project load. Each question is answered by a compound command that synthesizes data across multiple Plane endpoints — observations no single endpoint exposes.
Overview
The NOI (references/noi.md) is the design anchor: Plane is a team behavior observatory. Five compound commands derive from that framing:
/plane-cycle-velocity— does cycle close-out match cycle planning?/plane-stale-tickets— whichIn Progresstickets are quietly failing under shared ownership?/plane-reviewer-gate-strength— which reviewers gate-keep harder than the spec demands?/plane-priority-drift— does the team plan high-priority work but ship low-priority work?/plane-cross-project-load— which engineers are spread across too many active projects?
None of these are answerable from any single Plane API call. Each requires cross-endpoint synthesis. That synthesis is the value.
Prerequisites
mcp_planeMCP server installed and configured (env varsPLANEAPIKEY,PLANEWORKSPACESLUG,PLANEAPIHOSTURL)- A Plane workspace with at least one project, cycle, and active issues (otherwise the commands return informative empty states)
Authentication
This skill does not handle credentials directly. Auth is delegated to the MCP server. See references/api-surface.md for the env-var setup; if mcp__plane returns an auth error, the skill surfaces the error verbatim and instructs the user to verify their token.
Instructions
Mode detection
Determine user intent from their prompt:
- Compound query mode (default): user asks about cycle health, team behavior, stale tickets, reviewer patterns, priority drift, or workload distribution → route to
plane-analystagent (seeagents/plane-analyst.md) which orchestrates the compound commands. - API help mode: user asks "how do I query X in Plane" or "what endpoint does Y" → route to
plane-expertagent (seeagents/plane-expert.md) which answers fromreferences/api-surface.mdwithout firing live API calls. - Skill metadata: user asks "what does this skill do" / "explain plane skill" → return the Overview above + the 5 commands.
If unclear, use AskUserQuestion:
> Are you asking about (a) team behavior / cycle health / patterns, or (b) how to use a specific Plane API endpoint?
Step 1: Resolve target project
Most compound commands operate on a specific project. Extract the project slug or readable identifier (e.g., BRAVES, OPS) from the user's prompt.
If absent, list available projects via mcpplaneget_projects and ask which one. Cache the chosen project for the rest of the conversation.
Step 2: Route to compound command
Match user intent to one of the five commands:
| User asks about... | Command |
|---|---|
| cycle velocity, sprint completion, overrun | /plane-cycle-velocity |
| stale tickets, orphan work, ownership churn | /plane-stale-tickets |
| reviewer bottlenecks, blocked PRs, gate-keeping | /plane-reviewer-gate-strength |
| priority drift, planning vs. reality, P1 vs. P3 | /plane-priority-drift |
| workload distribution, project sprawl, focus | /plane-cross-project-load |
Read references/compound-commands.md for the exact endpoint sequence and output format per command.
Step 3: Execute via plane-analyst agent
Invoke the analyst agent (agents/plane-analyst.md) with the chosen command + project. The agent:
- Calls the relevant
mcpplane*tools in sequence - Performs the JOIN logic
- Computes the behavioral score per the command's formula
- Renders the output table per the format in
compound-commands.md - Adds a "Behavioral signal" interpretation paragraph
If mcp__plane is unavailable, the agent emits a documentation-only response: shows what the command WOULD return, plus the install hint.
Step 4: Interpret the signal
The output is observations, not prescriptions. The skill says "this team plans P1s and ships P3s — the planning conversation is theater." It does NOT say "fire the planner." Interpretation belongs to the human reading the report.
Output
Each compound command produces:
- A table of metrics specific to that observation
- A "Behavioral signal" paragraph that names the pattern in plain language
- Optionally, a follow-up suggestion (e.g., "consolidate projects" / "split this queue") — framed as a question the team can take to its retro
Error Handling
| Error | Recovery |
|---|---|
mcp__plane unavailable |
Emit documentation-only output + install hint pointing at ~/.claude.json MCP config |
| API rate limit (429) | Back off + retry with exponential delay; if persistent, advise user to wait and re-run |
| Empty project (no cycles / issues) | Return informative empty state explaining why the command can't compute |
| Auth error (401/403) | Surface verbatim + instruct user to verify env vars or re-issue token |
| Workspace member lookup fails | Fall back to assignee UUIDs in output (less readable but functional) |
Examples
"How is my team performing on cycle velocity?"
/plane-cycle-velocity BRAVES
→ Renders the cycle-velocity table from references/compound-commands.md § Command 1.
"Are we shipping what we plan?"
/plane-priority-drift BRAVES
→ Renders the priority-drift table; surfaces the gap between planned and shipped priorities.
"Which engineers are stretched too thin?"
/plane-cross-project-load
→ Walks the entire workspace; lists engineers with their active-project / active-cycle / open-issue counts; flags crisis-level stretch.
Resources
- NOI — the secret-identity statement that anchors every command
- API surface — endpoints consumed + auth + pagination
- Compound commands — exact endpoint sequence + output format per command
- Plane docs — upstream API reference
mcp__planeMCP server — direct CRUD wrapper this skill builds on top of