{"id":49292366,"url":"https://github.com/openplanr/openplanr-pipeline","last_synced_at":"2026-04-26T01:01:26.337Z","repository":{"id":353811983,"uuid":"1220966272","full_name":"openplanr/openplanr-pipeline","owner":"openplanr","description":"Spec-driven AI factory for Claude Code. Two-phase pipeline (PO → review → DEV) with 8 subagents and tool-layer rule enforcement.","archived":false,"fork":false,"pushed_at":"2026-04-25T16:48:26.000Z","size":84,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-25T18:26:04.626Z","etag":null,"topics":["ai-agents","claude-code","claude-code-plugin","code-generation","openplanr","spec-driven","subagents"],"latest_commit_sha":null,"homepage":"https://github.com/openplanr/openplanr-pipeline","language":"Smarty","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openplanr.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-25T15:20:38.000Z","updated_at":"2026-04-25T16:48:30.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/openplanr/openplanr-pipeline","commit_stats":null,"previous_names":["openplanr/openplanr-pipeline"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/openplanr/openplanr-pipeline","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openplanr%2Fopenplanr-pipeline","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openplanr%2Fopenplanr-pipeline/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openplanr%2Fopenplanr-pipeline/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openplanr%2Fopenplanr-pipeline/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openplanr","download_url":"https://codeload.github.com/openplanr/openplanr-pipeline/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openplanr%2Fopenplanr-pipeline/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32282187,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T18:29:39.964Z","status":"ssl_error","status_checked_at":"2026-04-25T18:29:32.149Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agents","claude-code","claude-code-plugin","code-generation","openplanr","spec-driven","subagents"],"created_at":"2026-04-26T01:00:51.260Z","updated_at":"2026-04-26T01:01:26.315Z","avatar_url":"https://github.com/openplanr.png","language":"Smarty","funding_links":[],"categories":[],"sub_categories":[],"readme":"# openplanr-pipeline\n\n\u003e **Spec-driven AI factory.** Two-phase pipeline. Human checkpoint between phases. Plugin for Claude Code.\n\nA Claude Code plugin that turns functional specs into production code via a structured pipeline. Eight specialized subagents (Sonnet 4.6 for analysis, Opus 4.7 for code generation), stack-aware decomposition, and hard rules enforced at the *tool* layer — not just in prompts.\n\n---\n\n## Why this exists\n\nMost AI-assisted development is ad hoc: you talk to the model, it produces code, you fix it, you talk again. No structure, no consistency, no way to inspect the plan before code is written.\n\nThis plugin replaces that with a **repeatable pipeline** with a deliberate human checkpoint:\n\n```\nYou write WHAT (spec) → Agents decompose HOW (US + tasks) → You review → Agents build it\n```\n\nThe split is non-negotiable. **The plugin refuses to auto-chain PO Phase → DEV Phase.** That's the feature, not a limitation. The review gate is where you catch decomposition errors before they become expensive code.\n\n---\n\n## Install\n\n```\n/plugin marketplace add OpenPlanr/marketplace\n/plugin install openplanr-pipeline@openplanr\n/openplanr-pipeline:init\n```\n\nThat's it. Three commands and you have an opinionated, multi-agent code factory in any Claude Code project.\n\n---\n\n## 5-minute walkthrough — build a \"todo list\" feature\n\n```bash\n# 1. Initialize the framework in your project\n/openplanr-pipeline:init my-app\n\n# 2. Edit input/tech/stack.md to match your real stack\n#    (Language, Framework, ORM, BuildCommand, TestCommand)\n\n# 3. Author your first spec interactively\n/openplanr-pipeline:spec todo\n#    → 4 guided questions → input/specs/spec-todo.md\n\n# 4. (Optional) Drop UI mockups for the Designer Agent\ncp ~/Designs/todo-*.png input/ui/feat-todo/\n\n# 5. Run the PO Phase — decomposes into User Stories + tasks\n/openplanr-pipeline:plan todo\n#    → output/feats/feat-todo/ with us-1/, us-2/, ... and tasks per US\n\n# 6. Review the decomposition before any code is written\n/openplanr-pipeline:review todo\n#    → walk a structured checklist; edit US/task files if needed\n\n# 7. Run the DEV Phase — generates code, tests, infra config, docs\n/openplanr-pipeline:ship todo\n#    → src/features/todo/ with components, services, tests\n#    → docker-compose.yml updated\n#    → Docs/feat-todo/ generated\n#    → CLAUDE.md refreshed\n```\n\nTotal time: ~15 minutes of your input + ~10 minutes of agent work. You review, you ship.\n\n---\n\n## The two phases\n\n```\n┌─────────────────────────────────────────────────────────────────────┐\n│  PO PHASE  (Sonnet 4.6 agents — fast, structured)                   │\n│  /openplanr-pipeline:plan {name}                                │\n│                                                                     │\n│  db-agent (if DB) → designer-agent (if PNG) → specification-agent   │\n│  → output/feats/feat-{name}/ (US + tasks + design-spec)             │\n└────────────────────────────┬────────────────────────────────────────┘\n                             ▼\n                   🛑 HUMAN REVIEW (mandatory)\n                   /openplanr-pipeline:review {name}\n                             ▼\n┌─────────────────────────────────────────────────────────────────────┐\n│  DEV PHASE  (Opus 4.7 codegen + Sonnet 4.6 verifiers)               │\n│  /openplanr-pipeline:ship {name}                               │\n│                                                                     │\n│  frontend-agent + backend-agent (per task, parallel) →              │\n│  qa-agent (gate) → devops-agent + doc-gen-agent →                   │\n│  /openplanr-pipeline:snapshot                                       │\n└─────────────────────────────────────────────────────────────────────┘\n```\n\n**PO Phase** is decomposition: read the spec, read PNGs, read the DB schema, produce a tree of User Stories and tasks that name *exact files* to create/modify/preserve. No code is written.\n\n**DEV Phase** is code generation: each task is handed to its specialized subagent, the agent writes code, runs build/test, fixes failures up to 3 times, and writes an `error-report.md` if it fails after 3 iterations.\n\n---\n\n## Slash commands \u0026 skills\n\n| Type | Name | Purpose |\n|---|---|---|\n| Command | `/openplanr-pipeline:plan` | Run PO Phase orchestration for a feature |\n| Command | `/openplanr-pipeline:ship` | Run DEV Phase orchestration for a feature |\n| Skill | `/openplanr-pipeline:init` | Bootstrap a fresh project (idempotent) |\n| Skill | `/openplanr-pipeline:spec` | 4-question guided spec authoring |\n| Skill | `/openplanr-pipeline:stack` | Add a new stack file to `.claude/stacks/` |\n| Skill | `/openplanr-pipeline:review` | Pre-DEV checklist walkthrough |\n| Skill | `/openplanr-pipeline:snapshot` | Refresh `CLAUDE.md` with project state |\n\n---\n\n## Agents\n\n| Agent | Model | Phase | Role | Tool restrictions |\n|---|---|---|---|---|\n| **db-agent** | Sonnet 4.6 | 0.1 | Schema introspection (SQL + Mongo) | READ-ONLY: `Bash(psql:*)`, `Bash(mongosh:*)`, etc. No `Edit`. |\n| **designer-agent** | Sonnet 4.6 | 1 | PNG → design-spec.md | `Read`, `Glob`, `Write` only |\n| **specification-agent** | Sonnet 4.6 | 1 | Spec → US + tasks | `Read`, `Glob`, `Grep`, `Write` |\n| **frontend-agent** | Opus 4.7 | 3 | UI codegen (task-1 UI) | `Read`, `Edit`, `Write`, `Bash(npm:*)` etc. |\n| **backend-agent** | Opus 4.7 | 0.2 + 3 | Backend codegen (task-2 Tech) | Same plus `Bash(prisma:*)`, `Bash(node:*)` |\n| **qa-agent** | Sonnet 4.6 | 3.5 | DoD gate, runs build/test | Read-only on src; `Write` only for qa-report.md |\n| **devops-agent** | Sonnet 4.6 | 3.5 | Docker, CI, env templates | `Read`, `Glob`, `Write`, `Edit`. **No Bash** — non-deploy enforced at tool layer. |\n| **doc-gen-agent** | Sonnet 4.6 | 3.5 | `Docs/feat-{name}/` from US + code | `Read`, `Glob`, `Grep`, `Write` |\n\nSee `docs/agent-model-map.md` for the rationale per agent.\n\n---\n\n## Configuration\n\n### `input/tech/stack.md` (you author this once per project)\n\nSingle source of truth: project identity, database type, language, framework, ORM, build/test commands, naming conventions. Every agent reads this.\n\n```yaml\nAppName: my-app\nDatabaseType: PostgreSQL\nLanguage: TypeScript\nFramework: NestJS\nORM: Prisma\nBuildCommand: npm run build\nTestCommand: npm test -- --run\nActiveStackFiles:\n  - .claude/stacks/backend/nestjs.md   # user override (optional)\n  - .claude/stacks/database/prisma.md\n```\n\n### Stack files (defaults + user overrides)\n\nThe plugin ships defaults at `${CLAUDE_PLUGIN_ROOT}/stacks/{frontend,backend,database,devops}/*.md`. You can override or extend by adding files to your project at `.claude/stacks/...` — **user files always win on filename collision**. Use `/openplanr-pipeline:stack` to scaffold a new stack file interactively.\n\n### Default stacks shipped\n\n- `frontend/nextjs.md`\n- `backend/nestjs.md`\n- `database/prisma.md`, `database/mongodb.md`\n- `devops/docker-compose.md`\n\n---\n\n## The rules (`docs/rules.md`)\n\nThe plugin enforces 9 hard rules. Three are critical:\n\n- **R1** — Never auto-chain PO Phase → DEV Phase. Two separate triggers, mandatory human review between. *Enforced by command structure.*\n- **R3** — Model assignments are fixed (Sonnet for analysis, Opus for codegen). *Enforced by `model:` frontmatter.*\n- **R8** — DB Agent is READ-ONLY. *Enforced by `tools` frontmatter — only read-only DB clients in Bash, no Edit, single Write target.*\n\nR6 — Max 3 correction iterations per task — applies to DEV agents. After 3, the agent stops and writes `error-report.md` per `templates/error-report.md`.\n\nRead the full rule set in [`docs/rules.md`](docs/rules.md).\n\n---\n\n## Relationship to planr\n\n[planr](https://github.com/openplanr/OpenPlanr) is OpenPlanr's agile + spec-driven planning CLI. It owns the **planning** verb.\n\n`openplanr-pipeline` owns the **execution** verb. The two are complementary: planr plans, pipeline ships.\n\n### Bridge to planr spec-driven mode (v0.3.0+)\n\nWhen a project uses planr's **spec-driven mode** (the third planning posture, see `planr spec init`), this plugin reads `.planr/specs/SPEC-NNN-{slug}/` directly — no conversion adapter, no copy step. Both products share the same artifact schema:\n\n- planr authors specs and runs `planr spec decompose` to generate User Stories + Tasks\n- The pipeline plugin (`/openplanr-pipeline:plan {slug}` and `/openplanr-pipeline:ship {slug}`) reads from the planr spec directory and executes\n- planr is the **authoring surface**; openplanr-pipeline is the **executor**\n\nThe pipeline auto-detects spec mode by looking for `.planr/config.json` with `idPrefix.spec` set. If absent, it falls back to the default `output/feats/feat-{name}/` layout — existing pipeline-only workflows are unchanged.\n\nSee [planr's spec-driven proposal](https://github.com/openplanr/OpenPlanr/blob/main/docs/proposals/spec-driven-mode.md) for the design.\n\n---\n\n## Versioning\n\nPre-1.0 semver. Expect minor breaks across `0.1.x → 0.2.x`. Patch bumps (`0.1.0 → 0.1.1`) are doc/prompt clarifications only.\n\nPinned model strings (`claude-sonnet-4-6`, `claude-opus-4-7`) are correct as of April 2026. They will drift; check the CHANGELOG when upgrading.\n\n---\n\n## Contributing\n\n- **Add a stack file:** drop a markdown file in `stacks/{category}/{name}.md` following the shape in existing files. Open a PR.\n- **Propose a new agent:** open an issue describing the role, model, and tool restrictions. Agents that would shrink scope (e.g., split backend-agent into api-agent + db-agent) need a strong case.\n- **Bug reports:** include the full failing command, the contents of the relevant `output/feats/feat-{name}/us-{N}/tasks/error-report.md`, and your `input/tech/stack.md`.\n\n---\n\n## Caveats\n\n- **macOS / Linux / WSL only** for v0.1. The Stop hook uses POSIX shell. Windows-native support lands in v0.2.\n- **No deploy automation, ever** — by design. The DevOps agent generates docker-compose / CI config, but the plugin will not run `docker compose up` or any cloud API. You ship.\n- **Subagents have isolated context.** They can't see your conversation. They read files. Pass information by writing to disk, not by chat.\n\n---\n\n## License\n\nMIT. See [LICENSE](LICENSE).\n\n## Credits\n\nBuilt on the Claude Code plugin system (Anthropic). The two-phase pipeline architecture and rule set were prototyped in [`po-dev-framework`](https://github.com/asemabdou/po-dev-framework) before the plugin migration.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenplanr%2Fopenplanr-pipeline","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenplanr%2Fopenplanr-pipeline","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenplanr%2Fopenplanr-pipeline/lists"}