I built a tool to render Cursor's Markdown plans into live, interactive web UIs

Hey everyone,

I love using Cursor for complex refactors and architecture planning, but I found myself getting constantly frustrated trying to read thousands of lines of Markdown in the narrow chat window. It’s especially tough when the agent proposes complex architectural changes or long step-by-step implementations.

To fix this, I built html-planner.

It’s a lightweight open-source tool that intercepts the markdown plans generated by Cursor and serves them locally as an interactive web app.

Instead of reading a wall of text, Cursor opens a browser tab where you can:

  • Visually review the architecture with auto-generated flowcharts.
  • Approve or reject individual steps with a click (Cursor reads your decisions and adjusts its code generation).
  • Answer clarifying questions in a clean UI before the agent starts writing any code.

How to use it with Cursor: Just run this in your project root:

npx html-planner@latest init .

This automatically detects your IDE and installs the integration into your .cursor/skills/ folder. From then on, just tell Cursor to “use html-planner” when asking for a complex plan.

It’s completely open-source (MIT). Live Demo / Playground: https://html-planner.com

Hey! Cool project it looks really convenient. Reading long plans in chat is really uncomfortable but here you get immediate visuals plus the ability to quickly approve or reject steps.

A couple of questions.

How exactly does the tool return step decisions to the agent? Does it write them to a file inside the project that the agent then reads or is some other mechanism used?

Are you planning support not only for Plan mode? For example visualization of results from large refactors or completed tasks.

Thanks for sharing especially under the MIT license.

Thank you for the feedback.

Decisions are delivered via files and input requests within the same session.

Regarding new features, we plan to add specialized tools for different scenarios to avoid the need to read large amounts of text in the chat.

1 Like