{"id":"6cf73c98-abb5-4cd7-9e68-dd9095f8c127","slug":"openplanr-openplanr","kind":"skill","name":"OpenPlanr","summary":"Plan first, then let your coding agent build. 25+ planning, design, review and delivery skills for Claude Code, Codex and Cursor, plus the openplanr CLI. Specs, stories and tasks live in your repo und","owner":"openplanr","repoUrl":"https://github.com/openplanr/OpenPlanr","license":"MIT","licenseTier":"permissive","trust":"community","stars":5,"match":null,"fewStars":false,"format":"skill","createdAt":"2026-03-25T22:19:14.000Z","addedAt":"2026-10-14T11:36:55.100Z","logoUrl":"https://avatars.githubusercontent.com/u/273764861?v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["developer-tools","design-media","productivity"],"tags":["agile","cli","planning","project-management","sprint-planning","task-management","ai-agents","claude-code"],"runtime":"node","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-14T21:29:34.061Z","sample":false,"url":"https://conduits.dev/tools/openplanr-openplanr","language":"JavaScript","transports":["stdio"],"install":{"npm":"planr-pipeline"},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"<p align=\"center\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"docs/assets/brand/openplanr-lockup-on-dark.png\">\n    <img alt=\"OpenPlanr\" width=\"440\" src=\"docs/assets/brand/openplanr-lockup-on-light.png\">\n  </picture>\n</p>\n\n<h3 align=\"center\">Close the loop from intent to delivery.</h3>\n\n<p align=\"center\">\n  OpenPlanr is the shared delivery loop for product teams and their AI agents.<br>\n  Plan, design, build, review, and operate from durable context in your repository:<br>\n  25+ skills for Claude Code, Codex, and Cursor, plus the deterministic <code>openplanr</code> CLI.\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/openplanr\"><img alt=\"npm version\" src=\"https://img.shields.io/npm/v/openplanr?style=flat-square&labelColor=08080C&color=237A72&label=openplanr\"></a>\n  <a href=\"https://www.npmjs.com/package/openplanr\"><img alt=\"npm downloads\" src=\"https://img.shields.io/npm/dm/openplanr?style=flat-square&labelColor=08080C&color=237A72\"></a>\n  <a href=\"https://github.com/openplanr/OpenPlanr/actions/workflows/ci.yml\"><img alt=\"Workspace CI\" src=\"https://img.shields.io/github/actions/workflow/status/openplanr/OpenPlanr/ci.yml?branch=main&style=flat-square&labelColor=08080C&color=237A72&label=CI\"></a>\n  <a href=\"packages/cli/package.json\"><img alt=\"Supported Node.js versions\" src=\"https://img.shields.io/node/v/openplanr?style=flat-square&labelColor=08080C&color=237A72\"></a>\n  <a href=\"LICENSE\"><img alt=\"MIT license\" src=\"https://img.shields.io/badge/license-MIT-237A72?style=flat-square&labelColor=08080C\"></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://openplanr.dev/docs\">Docs</a> ·\n  <a href=\"docs/getting-started.md\">Getting started</a> ·\n  <a href=\"docs/generated/skills.md\">Skills</a> ·\n  <a href=\"packages/cli/docs/CLI.md\">CLI reference</a> ·\n  <a href=\"docs/architecture/README.md\">Architecture</a> ·\n  <a href=\"SUPPORT.md\">Support</a>\n</p>\n\n---\n\n## What it is\n\n- **Skills, not a second model.** Every skill runs inside the coding agent you already use.\n  Skills and the openplanr CLI add no model calls or telemetry.\n  The CLI contacts the network only for features you invoke: Linear sync (linear.app), artifact\n  sharing (share.openplanr.dev) and company sign-in (api.openplanr.dev).\n- **Plans are files.** Specifications, user stories, tasks, and provenance live under `.planr/`\n  in your repository, reviewed and versioned like code.\n- **A deterministic CLI.** `openplanr` stores and validates planning files, renders diagrams and\n  reports, installs the skills into each host, diagnoses installations, and syncs with GitHub\n  Issues and Linear.\n- **One repository, MIT licensed.** Three npm packages: [`openplanr`](packages/cli) (the CLI and\n  host packages), [`planr-pipeline`](packages/pipeline) (the delivery pipeline), and\n  [`@openplanr/protocol`](packages/protocol) (schemas and registries).\n\nOpenPlanr is not a hosted project tracker and does not replace your issue tracker. It closes the\nloop: the agent reads the plan before it changes code, and what it ships flows back as evidence\nfor the next review.\n\n## Quick start\n\n```bash\nnpm install -g openplanr\n\nopenplanr setup --runtime claude --scope user\n# Codex:  openplanr setup --runtime codex --scope user --skill-mode unified-plugin\n# Cursor: openplanr setup --runtime cursor --scope project\ncd your-project\nopenplanr init\n```\n\nRestart the coding agent so it loads the new skills, then start with a specification:\n\n```text\n/planr:spec \"Add passwordless sign-in for existing accounts\"     # Claude Code\n$planr:spec \"Add passwordless sign-in for existing accounts\"     # Codex\n```\n\nIn Cursor, mention the `planr-spec` rule in Composer. Follow with `plan` to decompose the\nspecification into stories and tasks, and `ship` to implement one task. Plan and ship stay\nseparate steps that you invoke.\n\nAlternatives: `npx openplanr@latest setup` without a global install, or\n`curl -fsSL https://openplanr.dev/install.sh | sh` (`irm https://openplanr.dev/install.ps1 | iex`\non Windows). OpenPlanr requires a supported Node.js version (see [package metadata](packages/cli/package.json)). The\n[getting started guide](docs/getting-started.md) covers scopes, what setup writes, and how to\nundo it.\n\nIn Claude Code you can install the plugin from the public marketplace instead of running\n`openplanr setup --runtime claude`. Several skills call the `openplanr` CLI, so install it first:\n\n```text\n/plugin marketplace add openplanr/marketplace\n/plugin install planr@openplanr\n```\n\n## How it works\n\n<p align=\"center\">\n  <a href=\"docs/diagrams/delivery-loop/delivery-loop.svg\">\n    <img alt=\"The OpenPlanr delivery loop: you invoke the spec, plan, ship, and land skills in your coding agent; spec and plan write the plans under .planr/ in your repository, ship reads the plan first and implements one task, and land assesses release readiness before you merge; the openplanr CLI validates the planning files offline and keeps GitHub Issues or Linear in step; review skills and operate readouts return the evidence for the next request\" width=\"880\" src=\"docs/diagrams/delivery-loop/delivery-loop.svg\">\n  </a>\n</p>\n\nReasoning stays in the host agent. The CLI never calls a model; it validates what the agent\nwrote, renders it, and keeps trackers in step.\n\n### One feature, end to end\n\n<p align=\"center\">\n  <a href=\"docs/diagrams/one-feature/one-feature.svg\">\n    <img alt=\"One feature from specification to operate readout: you invoke spec, plan, ship, land, release, and operate in your coding agent; the agent writes the specification, stories, and tasks into your repository, reads the plan before it implements each task, and returns the merge commands; openplanr sync validates the planning files offline; you open the PR and merge on GitHub\" width=\"880\" src=\"docs/diagrams/one-feature/one-feature.svg\">\n  </a>\n</p>\n\nThe plan is a file in your repository that you review like code, and the agent reads it before\nit changes code. `ship` implements one task at a time, verified and small enough to review as\none pull request, and the CLI validates the planning files offline, never by a model.\n\n## Capabilities\n\nPlan. Design. Build. Review. Operate. Every step is a skill the agent selects from its\ndescription, or that you invoke by name.\n\n| Family | Skills | CLI utility the skill may call |\n| --- | --- | --- |\n| Plan and specify | `spec`, `plan`, `plan-review`, `sprint` | `openplanr spec`, `openplanr sprint` |\n| Implement | `ship` (dispatches native role agents in Claude Code) | — |\n| Review and QA | `browser-qa` | — |\n| Design | `design`, `design-loop`, `design-review` | `openplanr artifact` |\n| Diagrams | `diagram` | `openplanr diagram` |\n| Artifact reviews | `artifact` | `openplanr artifact` |\n| Land and release | `land`, `release` | `openplanr land` |\n| Setup and diagnostics | `doctor`, `investigate`, `connect` | `openplanr doctor`, `openplanr upgrade` |\n| Status, routing, and sync | `status`, `sync`, `share`, `dashboard`, `openplanr` (routes a request to the best skill) | `openplanr status`, `openplanr sync`, `openplanr dashboard` |\n| Operate | `operate` with `ceo`, `cto`, `cpo`, `cmo`, `coo`, `challenger`, and `chair` reviews | `openplanr operate` |\n\nInvoke a skill as `/planr:<skill>` in Claude Code or `$planr:<skill>` in Codex; in Cursor,\nmention the `planr-<skill>` rule. `share` and `connect` run only when you invoke them. The [skill catalog](docs/generated/skills.md) is generated from\nthe registry and lists every trigger, deferral, and packaged reference.\n\n## Diagram engine\n\n<p align=\"center\">\n  <a href=\"docs/diagrams/planning-artifacts/planning-artifacts.svg\">\n    <img alt=\"Planning artifacts: the spec, plan, and ship skills write the specification, the stories and tasks, and the provenance log under .planr/; the openplanr CLI validates them offline and keeps GitHub Issues and Linear in step\" width=\"880\" src=\"docs/diagrams/planning-artifacts/planning-artifacts.svg\">\n  </a>\n</p>\n\n<p align=\"center\"><sub>Rendered by <code>openplanr diagram render</code> from\n<a href=\"docs/diagrams/planning-artifacts/planning-artifacts.planr-diagram.json\">a canonical document</a>,\nas are the diagrams under How it works; verified in CI by <code>openplanr diagram check</code>.\nThe <code>openplanr</code> theme adapts each SVG to the viewer's light or dark scheme.</sub></p>\n\n`planr-diagram` turns intent into a canonical semantic document, and the offline engine lays\nit out deterministically across 39 grammars (architecture, sequence, ER, Gantt, story map,\nWardley, and more). Every render produces SVG, PNG, accessible HTML, quality and fidelity\nreports, and a manifest that binds the set.\n\n```bash\nopenplanr diagram gallery                                          # list grammars\nopenplanr diagram render ./architecture.planr-diagram.json --json  # render a set\nopenplanr diagram check ./diagrams/architecture/architecture.manifest.json --json\n```\n\nSee [authoring and verifying diagrams](docs/diagrams/authoring.md).\n\n## Hosts\n\n| Host | Install | Invoke | Notes |\n| --- | --- | --- | --- |\n| Claude Code | `openplanr setup --runtime claude --scope user` | `/planr:<skill>` | OpenPlanr plugin with native role agents for `plan` and `ship` |\n| Codex | `openplanr setup --runtime codex --scope user --skill-mode unified-plugin` | `$planr:<skill>` | OpenPlanr plugin; `--skill-mode direct` installs individual skills instead |\n| Cursor | `openplanr setup --runtime cursor --scope project` | mention the `planr-<skill>` rule | Project rules under `.cursor/rules/` |\n\n### Connections\n\nSkills reach chat, project trackers and source control through connectors you add\nto your host. OpenPlanr bundles no connectors; they and their credentials live in your host.\nTwo optional features need a token: Linear sync (`openplanr linear`) and company sign-in\n(`openplanr company login`). Only when you use them does OpenPlanr store a token, in your OS\nkeychain, or in an encrypted file at `~/.planr/credentials.enc` if you set\n`PLANR_CREDENTIAL_FILE_PASSPHRASE`. For Linear you can instead set `PLANR_LINEAR_TOKEN` and\nnothing is stored. Tokens are sent only to Linear or to the company server you sign in to.\n`openplanr company logout` removes company tokens. Run `connect` to see what is connected\nand how to add the rest, and `share` to post an update to chat as a draft you approve. See\n[connections](docs/connections.md) and the per-host [connect steps](docs/generated/connectors.md).\n\n`openplanr rules generate` adds an `## OpenPlanr capabilities` section to `CLAUDE.md` or `AGENTS.md`\nso the agent knows every skill and when to reach for it. See the\n[host matrix](docs/skills/host-matrix.md) for what each projection may and may not change.\n\n## Architecture\n\n```mermaid\n%%{init: {\"theme\":\"base\",\"themeVariables\":{\"fontFamily\":\"DM Sans, ui-sans-serif, system-ui, sans-serif\",\"fontSize\":\"14px\",\"primaryColor\":\"#5EEAD4\",\"primaryTextColor\":\"#08080C\",\"primaryBorderColor\":\"#237A72\",\"secondaryColor\":\"#F5F7F7\",\"secondaryTextColor\":\"#08080C\",\"secondaryBorderColor\":\"#237A72\",\"tertiaryColor\":\"#F5F7F7\",\"tertiaryTextColor\":\"#08080C\",\"tertiaryBorderColor\":\"#237A72\",\"lineColor\":\"#237A72\",\"textColor\":\"#08080C\",\"edgeLabelBackground\":\"#F5F7F7\",\"clusterBkg\":\"#F5F7F7\",\"clusterBorder\":\"#237A72\",\"noteBkgColor\":\"#F5F7F7\",\"noteTextColor\":\"#08080C\",\"noteBorderColor\":\"#237A72\"}}}%%\nflowchart LR\n    subgraph sources[\"Canonical sources\"]\n        direction TB\n        skills[\"skills/ · agents/\"]\n        protocol[\"@openplanr/protocol<br/>schemas · registries\"]\n    end\n    generate([\"npm run generate\"])\n    subgraph packages[\"Published packages\"]\n        direction TB\n        cli[\"openplanr<br/>CLI + host packages\"]\n        pipeline[\"planr-pipeline<br/>delivery pipeline\"]\n    end\n    subgraph hosts[\"Installed into hosts\"]\n        direction TB\n        claude[\"Claude Code plugin\"]\n        codex[\"Codex plugin\"]\n        cursor[\"Cursor rules\"]\n    end\n    skills --> generate\n    protocol --> generate\n    generate --> cli\n    generate --> pipeline\n    protocol --> pipeline\n    pipeline -. exact optional dependency .-> cli\n    cli --> claude\n    cli --> codex\n    cli --> cursor\n```\n\nOne canonical skill graph is generated into host-native projections; generated files are\noutputs, never sources. The CLI composes five command groups (foundation, planning, delivery,\noperations, intelligence) over the Protocol contracts, and internal workspaces (`operate`,\n`artifact`, `design`, `skill-runtime`, the dashboard) are projected into the public packages at\ngeneration time. See the [architecture guide](docs/architecture/README.md).\n\n## Documentation\n\n**Use**\n[Docs](https://openplanr.dev/docs) ·\n[Getting started](docs/getting-started.md) ·\n[Skill catalog](docs/generated/skills.md) ·\n[Connections](docs/connections.md) ·\n[CLI reference](packages/cli/docs/CLI.md) ·\n[Troubleshooting](packages/cli/docs/TROUBLESHOOTING.md) ·\n[Diagrams](docs/diagrams/authoring.md)\n\n**Contribute**\n[Contributing](CONTRIBUTING.md) ·\n[Architecture](docs/architecture/README.md) ·\n[Working from a checkout](docs/contributing/dogfooding.md) ·\n[Skill authoring](docs/skills/authoring.md) ·\n[Releasing](docs/RELEASING.md)\n\n**Integrate**\n[Protocol package](packages/protocol/README.md) ·\n[Pipeline package](packages/pipeline/README.md) ·\n[Host matrix](docs/skills/host-matrix.md) ·\n[Skill versioning](docs/skills/versioning-and-impact.md) ·\n[Verifying a release](docs/PROVENANCE.md)\n\n## Community and license\n\n**Beta:** try OpenPlanr on one real feature and tell us what you'd change in the\n[beta discussion](https://github.com/openplanr/OpenPlanr/discussions/324).\n\nAsk questions and share what you built in\n[Discussions](https://github.com/openplanr/OpenPlanr/discussions); report bugs through the\n[issue forms](https://github.com/openplanr/OpenPlanr/issues/new/choose). [SUPPORT.md](SUPPORT.md)\nexplains what to include. Security reports follow [SECURITY.md](SECURITY.md); participation\nfollows the [code of conduct](CODE_OF_CONDUCT.md).\n\nOpenPlanr is [MIT licensed](LICENSE). The name and logo are covered by the\n[trademark policy](TRADEMARKS.md); the boundary between this repository and the hosted service\nis described in [COMMERCIAL.md](COMMERCIAL.md).\n\nFounded and maintained by Asem Abdo\n([GitHub](https://github.com/AsemDevs) · [LinkedIn](https://www.linkedin.com/in/asemabdo/)).\n"}