{"slug": "specmanager-a-full-agile-team-for-founders-as-a-claude-code-plugin", "title": "SpecManager – a full agile team for founders, as a Claude Code plugin", "summary": "SpecManager, a Claude Code plugin that replaces ad-hoc vibe coding with a gated spec-driven development lifecycle, has been released as an MIT-licensed open-source tool. The plugin enforces a PRD-to-walkthrough workflow with a localhost kanban board backed by plain markdown, targeting single-user, fully local use for founders. It is available via GitHub and requires Node 20+ and Claude Code.", "body_md": "Spec-driven development for Claude Code. A Claude Code plugin that replaces ad-hoc vibe coding with a gated lifecycle — PRD → Architecture → (Design) → Plan + tasks → Build → Walkthroughs — rendered as a localhost kanban board backed by plain markdown in your repo.\n\nClaude *drafts* each stage from the previous approved one **and your existing codebase**; you *edit and approve* in the board. Every artifact is git-tracked markdown, so it diffs, reviews, and travels with the code. Single-user, fully local, no auth, bound to `127.0.0.1`\n\n.\n\n[specmanager.org](https://specmanager.org) · MIT licensed\n\n```\n# 1. Add the marketplace (from GitHub)\n/plugin marketplace add joanseg/specmanager\n\n# 2. Install\n/plugin install specmanager@specmanager\n\n# 3. Reload plugins\n/reload-plugins\n\n# 4. Reconnect MCP server\n/mcp       ## If plugin:specmanager:specmanager ✘ failed select and click enter to reconnect\n\n# 4. In your project, scaffold SpecManager and open the board\n/specmanager-init\n/specmanager-board\n```\n\nExample of a Specmanager board:\n\nThat's it — no build step. The compiled server and UI are committed, and a `SessionStart`\n\nhook installs runtime dependencies into the plugin's data dir on first launch.\n\n**Requirements:** Node 20+ and Claude Code. The board runs at `http://127.0.0.1:4317`\n\n(change the port in the plugin's user config).\n\nEach **feature** is a row on the board that flows left to right through the lifecycle. You drive it with slash commands; Claude does the drafting via dedicated subagents, and you approve each stage in the board before the next unlocks.\n\n```\n/specmanager-interview \"Checkout corridor\" # OPTIONAL pre-PRD interview — extracts & stress-tests the idea\n/specmanager-prd \"Checkout corridor\"       # create the feature + draft its PRD → approve in board\n/specmanager-architecture   <feature>       # draft the Architecture   → approve in board\n/specmanager-design         <feature>       # OPTIONAL high-fi HTML mockups → approve\n/specmanager-plan           <feature>       # plan.md + phased tasks   → approve in board\n/specmanager-build          <feature> next  # build one phase at a time\n/specmanager-walkthrough    <feature> <phase>   # per-phase walkthrough\n/specmanager-walkthrough    <feature> final     # feature-level roll-up\n/specmanager-board                          # open the kanban board anytime\n```\n\n`<feature>`\n\nis the feature's slug or id (reported by `/specmanager-prd`\n\nwhen it creates the feature).\n\n`/specmanager-interview`\n\nis optional: a multi-turn interview in your Claude session that pulls the idea out of your head and challenges it (using the [gstack office-hours](https://github.com/garrytan/gstack/tree/main/office-hours) forcing-question method) before any PRD exists. The result can be stored as `interview.md`\n\nin the feature's PRD folder — shown as a chip on the board, never gating anything — and the PRD drafter grounds itself in it when present.\n\n| Stage | Produces | Unlocks when |\n|---|---|---|\nPRD |\n`press-release.md` , `prd.md` |\nalways (the entry point) |\nArchitecture |\n`architecture.md` |\nPRD approved |\nDesign (optional) |\nhigh-fidelity HTML mockups | PRD approved (runs in parallel with Architecture) |\nPlan |\n`plan.md` + task records (`tasks.json` , rollup) |\nArchitecture approved (and Design, if one exists, approved) |\nBuild |\nno doc — it's execution |\nPlan approved |\nWalkthroughs |\n`<slug>.md` per phase + a final roll-up |\nthe phase's tasks are all `done` |\n\nGates are enforced in shared code, not in prompts — Claude **cannot** draft a stage whose gate is closed. Plans are organised into **phases**, each a testable, runnable increment; tasks carry a Fibonacci `complexity`\n\nscore and anything over 3 must be split. `/specmanager-build`\n\nbuilds one phase and stops at its boundary.\n\n`approved`\n\nis a commitment, not a freeze. Reopen an approved doc and every downstream doc that depended on it gets a non-blocking **stale** badge — a \"the basis changed, review me\" signal. Regenerate or re-approve to clear it.\n\n`/specmanager-board`\n\nopens a grid: **one row per feature, one column per stage** (PRD · Architecture · Design · Plan · Build · Walkthroughs). It updates live over websockets as Claude writes docs or you edit them.\n\n- Each cell is a card showing status (\n`draft`\n\n/`approved`\n\n), a stale badge, and whether it was generated by agent or human. - Clicking a card opens a\n**doc panel** drawer over the dimmed board to read, edit, and approve. Design docs get a CodeMirror HTML editor with a live sandboxed`<iframe>`\n\npreview. - The\n**Build** cell groups tasks under collapsible phase headers with per-phase progress bars instead of a document. - The\n**Walkthrough** column shows one card per phase plus a final roll-up card that stays locked until every phase walkthrough is approved.\n\nEdits you make in the board and writes Claude makes both flow through the same shared logic layer, so the two views never drift. AI writes use optimistic concurrency, so a stale agent write can't clobber your manual edits.\n\nEverything is markdown with YAML frontmatter under your project, version-controlled by git:\n\n```\n<your-project>/\n  CLAUDE.md                         # carries a managed SpecManager block (between markers)\n  docs/DESIGN.md                    # managed design-system spec (inferred from your UI)\n  .claude/specs/\n    manifest.json                   # rebuildable board index (derived from frontmatter)\n    features/<slug>/\n      feature.json\n      prd/        press-release.md, prd.md\n      architecture/ architecture.md\n      design/     <mockups>.html\n      plan/       plan.md, tasks.md, tasks.json\n      walkthroughs/ <slug>.md\n```\n\nFrontmatter is authoritative; `manifest.json`\n\nis a cache you can delete and rebuild. The managed regions in `CLAUDE.md`\n\nand `DESIGN.md`\n\nlive strictly between `<!-- specmanager:start -->`\n\n/ `<!-- specmanager:end -->`\n\nmarkers — nothing outside them is ever touched.\n\nThe plugin ships its compiled `server/dist`\n\nand `ui/dist`\n\n, so users install with no build step. Rebuild before committing source changes:\n\n```\ncd plugins/specmanager/server\nnpm install\nnpm run build\nnpm run selftest          # core flow against a tmp dir\nnpm run selftest-board    # boots board: REST + WS + file watcher\nnpm run selftest-phases   # phase rollup + Fibonacci ≤3 validation\nnpm run selftest-build    # per-phase gates + walkthrough storage\nnpm run smoke-mcp         # MCP wire protocol + tools registered\n\ncd ../ui\nnpm install\nnpm run build             # → ui/dist, served by the board server\n```\n\nThen reinstall in a test repo:\n\n```\n/plugin marketplace update specmanager\n/plugin install specmanager@specmanager\n/reload-plugins\n```\n\nCLose all Claude Code sessions. Then open CLaude Code sesion and reconnect mcp:\n\n```\n/mcp      ## select specmanager:specmanager, click enter and reconnect\n```\n\n**Tech stack:** Node 20+, TypeScript, MCP stdio transport, Fastify + `ws`\n\n, `chokidar`\n\n, `gray-matter`\n\n, `zod`\n\n, React 18 + Vite, CodeMirror 6. One shared `@specmanager/core`\n\nlibrary backs both the MCP server (Claude's interface) and the board server (the UI's interface); one MCP process boots the board.\n\n**Repo layout:** the marketplace manifest is at the repo root (`.claude-plugin/marketplace.json`\n\n); the plugin itself lives in `plugins/specmanager/`\n\n. Design docs are under `docs/`\n\n(the original full spec is archived at `docs/temp/original-specs/architecture-and-spec.md`\n\n).\n\n— select it and reconnect. If it persists, fully restart: quit Claude (`/mcp`\n\nshows specmanager failed`Ctrl-C`\n\ntwice),`claude daemon stop`\n\n, kill stragglers (`ps aux | grep mcp.js`\n\n), confirm the port is free (`lsof -nP -iTCP:4317 -sTCP:LISTEN`\n\n), then relaunch`claude`\n\nfrom your project.**Board won't open**— the MCP process boots the board server on startup; if it isn't running, restart your Claude session.`/specmanager-board`\n\nreports the URL so you can open it manually.— do the full restart above rather than retrying the reload.`/reload-plugins`\n\nreports a load error\n\n- Website:\n[https://specmanager.org](https://specmanager.org)", "url": "https://wpnews.pro/news/specmanager-a-full-agile-team-for-founders-as-a-claude-code-plugin", "canonical_source": "https://github.com/joanseg/specmanager", "published_at": "2026-06-29 08:59:10+00:00", "updated_at": "2026-06-29 09:28:42.352787+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools", "large-language-models"], "entities": ["Claude Code", "SpecManager", "GitHub", "Node", "gstack", "joanseg/specmanager"], "alternates": {"html": "https://wpnews.pro/news/specmanager-a-full-agile-team-for-founders-as-a-claude-code-plugin", "markdown": "https://wpnews.pro/news/specmanager-a-full-agile-team-for-founders-as-a-claude-code-plugin.md", "text": "https://wpnews.pro/news/specmanager-a-full-agile-team-for-founders-as-a-claude-code-plugin.txt", "jsonld": "https://wpnews.pro/news/specmanager-a-full-agile-team-for-founders-as-a-claude-code-plugin.jsonld"}}