OpenSpecPM — Spec-driven PM Agent Skill
A sibling of CCPM with five differences: OpenSpec authors the specs (with a heuristic BDD linter plus an optional LLM judge), adapters make the PM backend pluggable (GitHub / Azure DevOps / Jira / Linear / GitLab), the wizard is friendly to non-engineers, every command is audit-logged by default, and depends_on: reaches across features so next/blocked reflect the whole project.
Workflow
idea → openspecpm propose <feature> (OpenSpec authors proposal.md, design.md, tasks.md, specs/)
→ review BDD scenarios (Given/When/Then)
→ openspecpm sync <feature> (push to chosen PM backend, idempotent)
→ openspecpm status / standup (track local + remote)
→ openspecpm ship <feature> (close + archive)
Phases
| Phase |
When to read |
Reference |
| Plan |
User wants to define a new feature with BDD scenarios. |
references/plan.md |
| Structure |
A proposal exists and needs decomposition into tasks. |
references/structure.md |
| Sync |
Local OpenSpec change needs to become PM-tool work items. |
references/sync.md |
| Execute |
User wants to start work on a tracked item. |
references/execute.md |
| Track |
User asks status / standup / what's next / what's blocked. |
references/track.md |
Conventions
Before any work, read references/conventions.md for file paths, frontmatter schemas, and BDD format rules.
Script-first rule
Deterministic operations run through the Node CLI directly — same shape as CCPM's bash scripts, but cross-platform:
| What the user wants |
Command |
| First-time setup |
npx openspecpm init |
| Auth health check |
npx openspecpm doctor |
| Install missing tooling hints |
npx openspecpm doctor --install |
| PAT/token creation hints |
npx openspecpm doctor --setup-auth |
| Create a proposal |
npx openspecpm propose <feature> [--llm] |
| Decompose proposal → tasks |
npx openspecpm decompose <feature> |
| Push to PM tool |
npx openspecpm sync <feature> [--llm] |
| Push every change at once |
npx openspecpm sync --all |
| Broadcast progress |
npx openspecpm comment <feature> <task> |
| Pull remote state back |
npx openspecpm reconcile <feature> |
| Assign / sprint / story-points |
npx openspecpm assign <feature> <task> [--assignee X] [--sprint Y] |
| File a regression |
npx openspecpm bug-report <feature> <task> --title "..." |
| Status snapshot |
npx openspecpm status |
| Standup digest |
npx openspecpm standup |
| What to work on next |
npx openspecpm next |
| What's blocked |
npx openspecpm blocked |
| Validate everything |
npx openspecpm validate [--llm] |
| Re-lint on file change |
npx openspecpm watch [feature] |
| Search across changes |
npx openspecpm search <query> |
| Fan-out parallel agents |
npx openspecpm fan-out <feature> |
| Close + archive |
npx openspecpm ship <feature> |
| Ship every ready change |
npx openspecpm ship --all-ready |
| Phase-grouped help |
npx openspecpm help-table |
Every command writes an audit entry to .openspecpm/audit.log (JSONL, secrets scrubbed).
Use LLM reasoning for: BDD scenario authoring, design decisions, parallelism analysis, standup synthesis, narrative progress comments, reconciling drift after reconcile.
Disambiguation vs CCPM
This skill and ccpm overlap intentionally. Routing rules:
- User says "OpenSpec", "BDD", "Given/When/Then", "Jira", "Azure DevOps", or names a non-GitHub backend → openspecpm.
- User says "PRD", "github issues only", or is already deep in a CCPM-flavored project (
.claude/prds/ exists) → ccpm.
- Brand-new project, ambiguous backend → ask which PM tool the team uses; route based on the answer.
1---2name: openspecpm3description: OpenSpecPM — spec-driven, BDD-shaped project management for any PM backend: OpenSpec proposal → BDD specs (Given/When/Then) → tasks → GitHub Issues / Azure DevOps Boards / Jira / Linear / GitLab → shipped code. Use this skill when the user wants to (a) author a proposal with rigorous BDD scenarios ('write a proposal for X', 'spec out X', 'turn this into Given/When/Then'), (b) decompose a proposal into tasks ('break down the X proposal', 'split this into work items'), (c) sync work to a PM backend ('push X to GitHub', 'sync the X epic to Jira', 'create work items in Azure DevOps', 'push to Linear', 'create GitLab issues'), (d) broadcast progress or reconcile drift ('post my update on task Y', 'pull remote state back', 'reconcile the X feature'), (e) check progress ('status', 'standup', 'what should I work on next', 'what's blocked', 'validate', 'search the proposals for Z'), (f) coordinate parallel work ('fan out the X epic', 'dispatch parallel agents'), (g) assign or schedule synced work ('assign task Y to Z'4---56# OpenSpecPM — Spec-driven PM Agent Skill78A sibling of CCPM with five differences: **OpenSpec** authors the specs (with a heuristic BDD linter plus an optional LLM judge), **adapters** make the PM backend pluggable (GitHub / Azure DevOps / Jira / Linear / GitLab), the wizard is **friendly to non-engineers**, every command is **audit-logged** by default, and `depends_on:` reaches **across features** so `next`/`blocked` reflect the whole project.910## Workflow1112```13idea → openspecpm propose <feature> (OpenSpec authors proposal.md, design.md, tasks.md, specs/)14 → review BDD scenarios (Given/When/Then)15 → openspecpm sync <feature> (push to chosen PM backend, idempotent)16 → openspecpm status / standup (track local + remote)17 → openspecpm ship <feature> (close + archive)18```1920## Phases2122| Phase | When to read | Reference |23|---|---|---|24| **Plan** | User wants to define a new feature with BDD scenarios. | `references/plan.md` |25| **Structure** | A proposal exists and needs decomposition into tasks. | `references/structure.md` |26| **Sync** | Local OpenSpec change needs to become PM-tool work items. | `references/sync.md` |27| **Execute** | User wants to start work on a tracked item. | `references/execute.md` |28| **Track** | User asks status / standup / what's next / what's blocked. | `references/track.md` |2930## Conventions3132Before any work, read [`references/conventions.md`](references/conventions.md) for file paths, frontmatter schemas, and BDD format rules.3334## Script-first rule3536Deterministic operations run through the Node CLI directly — same shape as CCPM's bash scripts, but cross-platform:3738| What the user wants | Command |39|---|---|40| First-time setup | `npx openspecpm init` |41| Auth health check | `npx openspecpm doctor` |42| Install missing tooling hints | `npx openspecpm doctor --install` |43| PAT/token creation hints | `npx openspecpm doctor --setup-auth` |44| Create a proposal | `npx openspecpm propose <feature> [--llm]` |45| Decompose proposal → tasks | `npx openspecpm decompose <feature>` |46| Push to PM tool | `npx openspecpm sync <feature> [--llm]` |47| Push every change at once | `npx openspecpm sync --all` |48| Broadcast progress | `npx openspecpm comment <feature> <task>` |49| Pull remote state back | `npx openspecpm reconcile <feature>` |50| Assign / sprint / story-points | `npx openspecpm assign <feature> <task> [--assignee X] [--sprint Y]` |51| File a regression | `npx openspecpm bug-report <feature> <task> --title "..."` |52| Status snapshot | `npx openspecpm status` |53| Standup digest | `npx openspecpm standup` |54| What to work on next | `npx openspecpm next` |55| What's blocked | `npx openspecpm blocked` |56| Validate everything | `npx openspecpm validate [--llm]` |57| Re-lint on file change | `npx openspecpm watch [feature]` |58| Search across changes | `npx openspecpm search <query>` |59| Fan-out parallel agents | `npx openspecpm fan-out <feature>` |60| Close + archive | `npx openspecpm ship <feature>` |61| Ship every ready change | `npx openspecpm ship --all-ready` |62| Phase-grouped help | `npx openspecpm help-table` |6364Every command writes an audit entry to `.openspecpm/audit.log` (JSONL, secrets scrubbed).6566Use LLM reasoning for: BDD scenario authoring, design decisions, parallelism analysis, standup synthesis, narrative progress comments, reconciling drift after `reconcile`.6768## Disambiguation vs CCPM6970This skill and `ccpm` overlap intentionally. Routing rules:7172- User says "OpenSpec", "BDD", "Given/When/Then", "Jira", "Azure DevOps", or names a non-GitHub backend → **openspecpm**.73- User says "PRD", "github issues only", or is already deep in a CCPM-flavored project (`.claude/prds/` exists) → **ccpm**.74- Brand-new project, ambiguous backend → ask which PM tool the team uses; route based on the answer.