{"slug": "show-hn-inplan-before-start-coding", "title": "Show HN: Inplan – Before Start Coding", "summary": "Inplan, an open-source interactive planning editor for AI-assisted software development, introduces Planning-Driven Development (PDD) to help coding agents and humans collaborate on a versioned Markdown spec before code is written. The tool, available at inplan.ai and via npm as 'inplan', requires Node.js 22 or newer and bundles a desktop editor and agent skill for Claude Code, Pi, and Codex. It aims to reduce implementation drift and improve alignment between intent and code by allowing agents to draft plans, raise open questions inline, and apply revisions like a PR.", "body_md": "**Plan with your coding agent — before it writes the code.**\n\nA Markdown workspace where you and your AI coding agent turn a vague ask into a real\nspec: the agent drafts, raises the open questions inline, you answer them in place, it\nrevises, and you apply the diff like a PR. Think of it as **vibe coding with a plan** —\nthe agent builds against a versioned spec instead of guessing from a fading chat. The\nhosted edition lives at ** inplan.ai**; this repo is the open core\nyou can run yourself.\n\n**InPlan (Interactive Planning Editor)** brings structure and accountability to\nAI-assisted software development. While AI coding agents are excellent at generating\ncode quickly, they struggle when requirements evolve, context grows, and decisions\naccumulate over time. Traditional AI coding workflows are built around linear\nconversations, making it difficult to track requirements, rationale, implementation\nstatus, and changes in a way that remains consistent as a project grows.\n\nInPlan introduces **Planning-Driven Development (PDD)**, where requirements become a\nliving, collaborative document that evolves alongside the code. Inspired by the\ncollaborative experience of document editors and code reviews, it enables teams to\ncontinuously refine plans, capture decisions, manage requirement updates separately\nfrom bug fixes, and maintain a reliable source of truth that neither humans nor AI\nagents can consistently hold in memory. The result is less implementation drift,\nsafer refactoring, better alignment between intent and code, and a development\nprocess that remains adaptable without sacrificing correctness.\n\nComment on a specific sentence and discuss it with the agent in a thread; when it\nrevises the plan, review the diff and apply it like a PR.\n▶ [Watch with narration](https://github.com/melly-lgtm/inplan/releases/download/demo-assets/inplan-demo.mp4)\n\nYou and the agent edit one Markdown plan, like two people in a shared document:\n\n**Draft the plan.** Write requirements in Markdown. The agent proposes structure and raises open questions as inline comments.**Refine together.** Comment, answer, and revise. Accept the agent's changes automatically (**Auto-accept**) or vet each one (** Review**); work turn-by-turn (** Turn**) or in real time (** Instant**). The plan converges into a shared decision record.** Build with confidence.**The agent implements against the agreed, versioned source of truth — so refactoring is safer and intent stays aligned with the code.\n\nComments live in the document itself, so the plan and its rationale travel together and stay reviewable in Git.\n\n**Requires Node.js 22 or newer.** Install the CLI from npm — it bundles the desktop\neditor and the agent skill:\n\n```\nnpm install -g inplan\ninplan --version\n```\n\nThis puts the `inplan`\n\ncommand on your PATH, bundles the **desktop editor** (launched by\n`inplan open`\n\n), and installs the **agent skill** into any coding agents it detects\n(Claude Code, Pi, Codex — set `INPLAN_NO_SKILL_INSTALL=1`\n\nto skip, or run\n`inplan install-skill`\n\nlater). A coding agent can self-install the same way:\n\n```\ninplan --version || npm install -g inplan\n```\n\n**From source** (TypeScript monorepo, npm workspaces) — for development:\n\n```\ngit clone https://github.com/melly-lgtm/inplan.git\ncd inplan\nnpm install\nnpm run build\n```\n\nPackages: `@inplan/core`\n\n(pure, embeddable editor + plan-format logic),\n`@inplan/cli`\n\n(the `inplan`\n\ncommand — the agent's side of the loop), and\n`@inplan/app`\n\n(the Electron editor — the human's side).\n\nMost users never need to configure anything, but for restricted networks,\nair-gapped/CI, or source checkouts see the\n[environment variables reference](/melly-lgtm/inplan/blob/main/docs/environment.md).\n\nYou don't run `inplan`\n\nyourself — your **coding agent** does. There are two steps:\n\n**1. Install** (once) — this also drops the agent skill into your coding agent (Claude\nCode, Pi, Codex):\n\n```\nnpm install -g inplan\n```\n\n**2. Ask your agent to plan**, in plain language — for example:\n\nLet's plan a tic-tac-toe game.\n\nPlan the auth rewrite with me.\n\nThe skill triggers on any \"plan X\" request: your agent writes `<name>.plan.md`\n\n, **opens\nthe inplan editor**, and poses its open questions as inline comments. You read the draft,\n**answer in the editor** (reply to comments, pick a choice chip, or edit the text\ndirectly), and the agent revises and replies — back-and-forth, like two people on a\nshared doc — until you close the session. Plans are plain Markdown, so they render and\ndiff anywhere.\n\nThat's it. (If your agent doesn't pick it up automatically, just point it at the bundled\nskill, `skill/SKILL.md`\n\n, and ask again.)\n\n## Under the hood / development\n\nThe agent drives the loop through the CLI — `inplan open <file>`\n\n(open the editor and\nblock until you act), `inplan wait <file>`\n\n(resume after the next action), `inplan signal <file> --done`\n\n(suggest the plan is ready; you still decide). When installed from npm,\n`inplan open`\n\nlaunches the **bundled** desktop editor.\n\nFrom a **source checkout**, set `INPLAN_APP_CMD`\n\nto your built `@inplan/app`\n\n(or the CLI\nruns headless); run the editor standalone with `npm run dev -w @inplan/app`\n\n.\n\nThe editor keeps its sidecars (control log, canonical base, backups) centrally under\n`~/.inplan/sidecars/<key>`\n\n(where `<key>`\n\nis derived from the document's absolute path;\noverride the root with `INPLAN_HOME`\n\nor `INPLAN_SIDECAR_DIR`\n\n) — never edit those by hand.\n\nA commented span is an inline Markdown link whose href is the comment id; the comments themselves live in a single trailing HTML-comment block (one JSON array):\n\n```\nThe plan should [use Postgres](#cmt-abfdb1) for storage.\n\n<!--inplan\n[\n  { \"id\": \"cmt-abfdb1\", \"author\": \"User Name <email@email.com>\",\n    \"date\": \"2026-05-28T13:34:00Z\", \"resolved\": false,\n    \"text\": \"The comment content left by the user.\" },\n\n  { \"id\": \"cmt-bbf137\", \"parentId\": \"cmt-abfdb1\", \"author\": \"User Name <email@email.com>\",\n    \"date\": \"2026-05-28T13:44:00Z\", \"resolved\": false, \"text\": \"The reply.\" },\n\n  { \"id\": \"cmt-1e2lef\", \"anchor\": \"doc\", \"author\": \"User Name <email@email.com>\",\n    \"date\": \"2026-05-28T14:34:00Z\", \"resolved\": false, \"text\": \"A document-level comment.\" }\n]\n-->\n```\n\n**Span comment**— exactly one in-body`[text](#cmt-id)`\n\nlink.**Reply**— carries`parentId`\n\n, no link.**Document-level comment**—`\"anchor\": \"doc\"`\n\n, no link.- A\n**question** adds`\"question\": { \"multiSelect\": <bool>, \"choices\": [...] }`\n\n; the human answers by selecting choices (the answer records`\"selected\": [...]`\n\n).\n\nBecause the format is plain Markdown plus one HTML comment, a plan renders fine in any Markdown viewer and diffs cleanly in code review.\n\nThe editor has a handful of keyboard shortcuts (find, undo/redo, save, add comment) —\nsee the [keyboard shortcuts reference](/melly-lgtm/inplan/blob/main/docs/shortcuts.md).\n\ninplan plugs into your coding agent through a bundled **skill** plus relay hooks: on\ninstall it detects the agents present on your machine and drops the skill in for each\n(`inplan install-skill`\n\ndoes this manually). The agent then drives the loop through the\nCLI — `inplan open`\n\n/ `wait`\n\n/ `signal`\n\n— while you review in the editor.\n\n| Agent | Detected at | Support |\n|---|---|---|\nClaude Code |\n`~/.claude` |\nPrimary — actively developed and tested. |\nCodex |\n`~/.codex` |\nWired (skill + hooks installed); lightly exercised. |\nPi |\n`~/.pi/agent` |\nWired (skill + hooks installed); lightly exercised. |\n\nIf your agent isn't detected automatically, point it at the bundled skill\n(`skill/SKILL.md`\n\n) and ask it to plan. Any agent that can read a skill and run the\n`inplan`\n\nCLI can participate.\n\ninplan **aims** to support every combination of:\n\n**OS**— macOS and Windows** Cadence**— turn-taking and instant modes** Agent**— Claude Code, Codex, and Pi\n\n…but so far it is **primarily developed and tested on macOS, in turn mode, with Claude Code**.\nThe other operating systems, modes, and agents are wired but lightly exercised, so expect\nrough edges there.\n\n**Contributions are very welcome** — especially anything that broadens and hardens support for\nthe OSes, modes, and agents above. See [ CONTRIBUTING.md](/melly-lgtm/inplan/blob/main/CONTRIBUTING.md).\n\nNotes from building inplan, on the [blog](https://inplan.ai/blog.html):\n\n— we re-ran a 12-model coding build-off and measured how much of the app you actually**A one-liner builds the minimum. A plan builds the app*** get*: 11–67% from a one-liner vs. 63–91% from a plan, graded with executable tests.— why shared understanding, not the model, is the bottleneck.**Your coding agent doesn't need a better model. It needs a better plan**— a checkout pricing engine, first-pass correctness 4/8 → 8/8.** All you need is more thorough planning**— how a developer, a PM, and an architect work the same plan.** One document, three jobs**\n\ninplan is **dual-licensed**:\n\n**Open source:**[AGPL-3.0-or-later](/melly-lgtm/inplan/blob/main/LICENSE).** Commercial:**a separate license from CrazyIdeaStudio, Inc. for proprietary or SaaS use without the AGPL's copyleft — see, contact`LICENSING.md`\n\n.[licensing@inplan.ai](mailto:licensing@inplan.ai)\n\nContributions require signing the [CLA](/melly-lgtm/inplan/blob/main/CLA.md). See\n[ CONTRIBUTING.md](/melly-lgtm/inplan/blob/main/CONTRIBUTING.md).", "url": "https://wpnews.pro/news/show-hn-inplan-before-start-coding", "canonical_source": "https://github.com/melly-lgtm/inplan", "published_at": "2026-08-14 00:29:28+00:00", "updated_at": "2026-08-14 00:42:27.311127+00:00", "lang": "en", "topics": ["developer-tools", "ai-agents", "ai-products"], "entities": ["Inplan", "inplan.ai", "Claude Code", "Pi", "Codex", "Node.js"], "alternates": {"html": "https://wpnews.pro/news/show-hn-inplan-before-start-coding", "markdown": "https://wpnews.pro/news/show-hn-inplan-before-start-coding.md", "text": "https://wpnews.pro/news/show-hn-inplan-before-start-coding.txt", "jsonld": "https://wpnews.pro/news/show-hn-inplan-before-start-coding.jsonld"}}