From Tandem
Core PM Operating Kit rules — closed-set status enum, frontmatter timestamps, Story-Testplan pairing, DoR/DoD gates, hat protocol, ADR-on-the-spot, bug-auto-raise. Use when working anywhere under _00-Project-Management/, when creating or modifying any artefact (epic/feature/story/testplan/bug/ADR), or when uncertain about the project's PM conventions.
How this skill is triggered — by the user, by Claude, or both
Slash command
/Tandem:coreThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are working in a project that uses the Greenfield PM Operating Kit. These rules are mandatory whenever you touch anything under `_00-Project-Management/`.
You are working in a project that uses the Greenfield PM Operating Kit. These rules are mandatory whenever you touch anything under _00-Project-Management/.
This is the one place the lifecycle command order is recorded (ADR-0047). Every per-command Next: pointer in the lifecycle skills must agree with this chain; if a pointer ever disagrees, this record wins and the pointer is the bug.
/Tandem:draft-okrs → /Tandem:draft-prd → /Tandem:draft-epic → /Tandem:split-into-features → /Tandem:split-into-stories → /Tandem:refine-backlog → /Tandem:execution-strategist → /Tandem:execute-batch → /Tandem:run-testplan → /Tandem:close-out-story → /Tandem:close-phase
close-phase is terminal (no Next: pointer). Cadence / utility skills (weekly-monitor, monthly-retro, reflect, session-start, critique, peer-review, document, curate-toolkit, fill-claude-md, execute-story) are not chain members; execute-story is the single-story alternative to execute-batch.
CLAUDE.md — pointers + critical gotchas_00-Project-Management/CLAUDE.md — folder semantics_00-Project-Management/90-Standards/SOP.md — full lifecycle, DoR, DoD, frontmatter contract, subagent policy (§18)_00-Project-Management/90-Standards/PROJECT-CONTEXT.md — this project's stack quirks_00-Project-Management/90-Standards/DAILY-WORKFLOW.md — rhythm + worked example_00-Project-Management/90-Standards/CLAUDE-CODE-CONFIG.md — how this plugin maps to Anthropic's Claude Code best practices_00-Project-Management/91-Templates/Every artefact has three timestamp fields:
created_at: '' # set on file create; ISO 8601 with offset, quoted string
started_at: '' # set when status → in-progress
completed_at: '' # set when status → done | wontfix | duplicate | archived
YYYY-MM-DDTHH:MM:SS±HH:MM. Always quoted.Get-Date -Format "yyyy-MM-ddTHH:mm:sszzz" or date -u +"%Y-%m-%dT%H:%M:%S%z"), not the chat-stated date.not-started) → clear started_at and completed_at to ''.not-started | ready | in-progress | in-review | done | blocked | wontfix | duplicate | archived
Never invent values. Never use open / shipped / completed / fixed / deferred / Planned.
The kit's skills and templates name PM sub-folders in the canonical "full" numbering: 30-Epics, 31-Features, 32-Stories, 33-Testplans, 34-Bugs, 40-Decisions, 42-Monitor, 11-Backlog, …
A project may instead use a "flattened" layout (e.g. 01-EPIC, 02-Features, 03-Stories, 05-Test, 04-Bug, 06-ADR, 00-Monitor) or a custom map.
The scripts resolve the real folder names automatically via _00-Project-Management/93-Scripts/lib/pm-paths.js, driven by .claude-pm-config.json ("layout": "full"|"flattened" and/or a per-key "paths" override). pm:install pins this; pm:doctor reports it.
INSTRUCTION TO CLAUDE: when a skill names a folder like 32-Stories, do not assume that literal path — resolve it to the project's actual folder first (read .claude-pm-config.json, or list _00-Project-Management/ and match by role: epics/features/stories/testplans/bugs/decisions/monitor/backlog). On a flattened project: 32-Stories→03-Stories, 33-Testplans→05-Test, 34-Bugs→04-Bug, 40-Decisions→06-ADR, 42-Monitor→00-Monitor.
When creating a STORY under 32-Stories/EPIC-NN/FEAT-NN.M/, create the paired TESTPLAN at 33-Testplans/EPIC-NN/FEAT-NN.M/TESTPLAN-NN.M.PP-<slug>.md in the same response.
Command: (no manual steps, no "have a human verify").91-Templates/STORY.template.md + 91-Templates/TESTPLAN.template.md.Whenever a TC fails or you observe any defect during exploration/code review, file a BUG at 34-Bugs/EPIC-NN/FEAT-NN.M/BUG-<YYYYMMDD-NN>-<slug>.md in the same response, before reporting in chat.
BUG-YYYYMMDD-NN where NN is the day's sequential counter within that FEAT folder.91-Templates/BUG.template.md.Before flipping a story not-started/ready → in-progress, verify the DoR checklist in SOP.md §6. If a DoR item is missing, stop, list the gap, ask.
Before flipping a story in-review → done, verify the DoD checklist in SOP.md §7. MONITOR.md update is part of the same response.
On any non-obvious decision (library choice, schema field name, threshold setting, scope deferral, divergence from defaults), create 40-Decisions/ADR-<NNNN>-<slug>.md in the same response. Number sequentially across the project. Link from the story's decisions: array.
Every new artefact starts from 91-Templates/<TYPE>.template.md. Do not redraft section headings from memory.
Every EPIC must have okr: or prd_section: in frontmatter. Reject epics without strategic linkage — ask "What business outcome does this move?" before writing.
State which hat at session start: Founder · PM · Dev · QA. Don't mix hats in one session.
| Hat | Owns |
|---|---|
| Founder | Strategy, OKRs, epic approvals, sunset decisions |
| PM | Inbox → Backlog refinement, MONITOR updates |
| Dev | Code, tests, story status Ready → Active → Review |
| QA | Testplan execution, bug raising, DoD sign-off |
A project-global Mode (plan · dev · dual · neutral) groups and enforces the hats across separate chats. It persists in .tandem-mode.json (repo root, git-ignored) and is injected each message by the UserPromptSubmit hook for joined chats. Plan groups Founder/PM/QA-planning; Dev groups Dev/QA-execution. On an out-of-mode request, nudge (switch / go Dual / one-off) — never hard-block. Set it with /mode <plan|dev|dual|neutral>; it auto-resets to Neutral on close-out-story (last story in phase) and close-phase. Full rules: the mode skill.
When a story flips to done, update 42-Monitor/MONITOR.md in the same edit (tick the bar, update shipped count, prepend revision-history one-liner). The dash hook (Stop event) regenerates DASHBOARD.html at session end — you don't need to run npm run pm:dash manually if the plugin is active.
Bring it to the user. Do not invent rules. Do not silently bend.
npx claudepluginhub data-ai-xyz/tandem --plugin TandemGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.