Skip to main content
skill CX Codex

pm-planning — Claude Code skill: turn ARCH into Beads tasks

Turns an approved architecture document into a Beads task list with dependencies, time-boxes and acceptance criteria. Built for the pm agent handing work to senior-dev.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add avelikiy/great_cto --skill pm-planning -a claude-code
Open on GitHub

What pm-planning does

The skill spells out how the pm agent should break an ARCH-*.md into two outputs: a PLAN-<feature>.md for people and a run of bd create tasks that senior-dev can claim. A plan passes if someone with no prior context picks up those tasks and ships without asking questions.

The rules leave little room. No task runs past 4 hours — anything larger gets split. Each one yields a single artefact: a code file, a migration, a test, a docs edit or a config change. Dependencies go in through --blocks-on with the predecessor's id, and the orchestrator reads bd ready --assignee senior-dev, so blocked work stays invisible. Every task ends with a “Done when:” list: which status POST /signup returns, which error codes come back, how the password is hashed.

The pm agent may refuse to plan at all. If the ARCH lacks success criteria, never says what failure looks like, or contradicts an existing ADR, the skill sends it back to the architect with a re-arch label and the plan stays blocked. Tool access is limited to Read, Write and Bash(bd:*) — without bd on the machine nothing gets created.

What it helps with

  • split a large feature into tasks under 4 hours each
  • wire dependencies between tasks with --blocks-on
  • write acceptance criteria an implementer can stop on
  • reject an incomplete ARCH and route it back to the architect
  • run independent tasks in parallel across agents

Example prompts for the agent

  • Decompose docs/architecture/ARCH-billing.md into Beads tasks and write PLAN-billing.md
  • Create the senior-dev tasks with dependencies and labels
  • Check the ARCH for completeness and send it back if success criteria are missing

How to install pm-planning

1Skills CLI (Vercel)

npx skills add avelikiy/great_cto --skill pm-planning -a claude-code

2Manually: put the files in place

~/.claude/skills/pm-planning/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/pm-planning/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about pm-planning

How do I install pm-planning in Claude Code?

Run npx skills add avelikiy/great_cto --skill pm-planning -a claude-code. The skill lands at ~/.claude/skills/pm-planning/SKILL.md.

What does pm-planning do?

It sets the decomposition rules for the pm agent: how to turn an approved ARCH into a plan and a Beads task list with dependencies, time-boxes and acceptance criteria.

What does the skill need to work?

A working bd install — the skill only calls Read, Write and Bash(bd:*). No tasks get created without it.

Source text

SKILL.md · MIT
---
name: pm-planning
description: Decomposition methodology for pm agent — turns an approved ARCH document into a Beads task list with explicit dependencies, time-boxes, and acceptance criteria. The pipeline can only orchestrate work it can see; this skill defines what "seeable work" looks like.
when_to_use: |
  Apply when:
  - pm agent receives an approved ARCH-*.md from architect
  - pm needs to write PLAN-*.md
  - pm creates Beads tasks for senior-dev to claim
  Do NOT apply for:
  - nano archetypes (pm phase is skipped — senior-dev claims one task directly)
  - bug-fixes with a one-line repro (no decomposition needed)
effort: medium
allowed-tools: Read, Write, Bash(bd:*)
paths:
  - "docs/architecture/**"
  - "docs/plans/**"
---

# PM planning — decompose ARCH into tasks

The pm agent's job is to take the architect's ARCH document and produce
2 things:
1. A `PLAN-<feature>.md` for humans
2. A sequence of `bd create` tasks for senior-dev to claim

The plan is good if a fresh senior-dev (no prior context) can pick up
the bd tasks and ship without coming back for clarification.

## The decomposition rules

### Rule 1. Tasks ≤ 4 hours

Anything bigger gets split. If the task is "build the auth system",
split into:
- Schema migration for user table
- Signup endpoint with hashing
- Login endpoint with JWT issuance
- Logout / token revocation
- Tests

Each ≤ 4h. If you can't split, the task is unclear — go back to ARCH
and clarify.

### Rule 2. Single output artefact per task

Each task produces ONE of:
- A code file (new or modified)
- A database migration
- A test file
- A documentation update
- A config change

If a task produces multiple unrelated artefacts, split it.

### Rule 3. Explicit dependencies via `--blocks`

When task B requires task A's output:

```bash
bd create "Task A: schema migration" -p P1
# returns id: my-proj-001-abc

bd create "Task B: signup endpoint" -p P1 \
  --blocks-on my-proj-001-abc \
  --label senior-dev
```

The pipeline orchestrator reads `bd ready --assignee senior-dev` to know
what's claimable. Tasks blocked on incomplete predecessors don't appear.

### Rule 4. Acceptance criteria — what does "done" mean?

Every task description ends with a bulleted "Done when:" section.

```markdown
## Done when:
- [ ] POST /signup returns 201 with user_id on success
- [ ] Bad email returns 400 with "invalid_email"
- [ ] Duplicate email returns 409 with "email_taken"
- [ ] Password is hashed with argon2 (no plaintext in DB)
- [ ] Unit test in `tests/<area>/<feature>.test.ts` covers all 4 cases
- [ ] `npm test` passes
```

Senior-dev knows EXACTLY what to ship and when to stop.

### Rule 5. Owners and parallelism

If 3 tasks can run in parallel, mark each with the agent it goes to.
Don't bundle them.

```bash
bd create "..." --label senior-dev
bd create "..." --label senior-dev   # parallel
bd create "..." --label devops       # parallel, different agent
```

## The PLAN-*.md template

```markdown
# PLAN — <feature>

Date: <ISO>
Architect ARCH: docs/architecture/ARCH-<feature>.md
Owner: pm

## Summary

2-3 sentences. What problem, what solution. Reference ARCH for detail.

## Cost estimate

(Follow skill: cost-model)

## Tasks

1. **<title>** [P1, ≤2h, senior-dev]
   - Goal: <one-sentence>
   - Done when: <bulleted criteria>
   - bd id: <ID after create>

2. **<title>** [P1, ≤4h, senior-dev]
   - Blocked on: 1
   - Goal: ...
   - Done when: ...

3. **<title>** [P2, ≤1h, qa-engineer]
   - Blocked on: 1, 2

## Pre-mortem

(Follow skill: pre-mortem)

## Gates

(Follow GATES_BY_ARCHETYPE for this archetype + project_size)
- [ ] gate:plan — after pm finishes, before senior-dev starts
- [ ] gate:qa — after qa-engineer, before ship
- [ ] gate:ship — after security-officer, before devops
```

## When pm should push back instead of plan

The pm agent is allowed — and EXPECTED — to refuse a plan if the ARCH is
incomplete. Specifically:

❌ **ARCH is missing acceptance criteria for the feature itself.**
Push back: "ARCH says 'build webhook handler' but doesn't specify what
counts as success. Re-architect with explicit success criteria."

❌ **ARCH doesn't specify the failure mode.**
Push back: "ARCH says 'handle errors gracefully' but doesn't say what
'graceful' means. Define: log + ack? log + retry? log + alert?"

❌ **ARCH conflicts with existing ADRs.**
Push back: "ARCH proposes Postgres but ADR-005 mandated DynamoDB.
Resolve before plan."

Push-back goes to the architect with `bd update` + label `re-arch`. The
plan is BLOCKED until ARCH is refined.

## Anti-patterns

❌ **Tasks named after components, not goals.** "Build UserService" is
ambiguous. "Add POST /signup endpoint that hashes password with argon2"
is clear.

❌ **No dependencies declared.** Two tasks editing the same file with
no `--blocks-on` will conflict. Always declare.

❌ **Estimating without doing one task.** If you genuinely don't know
how long task 1 takes, ask senior-dev to do task 1 first and report
back. THEN estimate 2–N.

❌ **Tasks > 8 hours.** Split. No exceptions.

© avelikiy · MIT · avelikiy/great_cto

Similar skills

All skills for Agent setup: memory, context, orchestration →

From the same set11

verticals A skill for Claude, Codex, Cursor and other agents: hands the agent the domain brief for one SMB industry before it writes a spec or code. CX Codex +1 ★ 107repo stars test-strategy A skill for QA engineers that turns "90% coverage" into a defensible plan: what to test, why that set, and a signal that the tests actually catch bugs. CX Codex +1 ★ 107repo stars signing-preflight Checks before the first commit that the signing key is loaded and unlocked, and asks the operator to unlock it up front. CX Codex +1 ★ 107repo stars prose-style A writing contract for agent output: conclusion first, evidence over adjectives. Useful when a person reads the report, not a parser. CX Codex +1 ★ 107repo stars observability-baseline Bakes error capture in Sentry, request-id structured logs and /healthz plus /readyz endpoints into a freshly generated service. Useful when the app is still being scaffolded and you don't want the first prod failure to go unseen. CX Codex +1 ★ 107repo stars great_cto The skill turns Claude into a pipeline orchestrator: you describe the task in plain words and the right agents run on their own. Useful when one agent drives a whole project. CX Codex +1 ★ 107repo stars deploy-landed The skill checks that the revision being served is the commit you meant, that its env reached the running process, and that the product actually works. Useful after any deploy or restart. CX Codex +1 ★ 107repo stars cost-model Pins down one format for the cost section in plans and architecture docs. Useful when a report claims savings and someone will ask how you got the number. CX Codex +1 ★ 107repo stars

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor