4 min read

🔧 AI Development, Part 3: Why Structure Matters — Introducing the RIPER Workflow

“You need to onboard Cursor like a new teammate.”
— Neil Kalman

If you’ve read the first two posts, you know this much:

  • AI coding tools like Cursor are powerful.
  • But they don’t know your system unless you teach them.
  • And without structure, they’ll follow any instruction — even the bad ones.

So how do you stop an AI from hallucinating half-broken helpers, skipping your conventions, or rewriting things you never asked for?

You don’t just prompt better.
You build a system.


🧠 RIPER: Structure for AI-First Development

RIPER is short for:
Research → Innovate → Plan → Execute → Review

It’s a simple but powerful framework we built around Cursor to give the AI context, discipline, and a shared mental model of how our team works.

Think of it as teaching your AI assistant how to work like a real developer — not just write code, but understand how features evolve, how teams reason, and how plans turn into commits.


🛠️ The Core Idea: One Mode, One Responsibility

Each RIPER phase is designed to focus Cursor's attention on exactly one thing at a time. That’s key.

PhasePurposeCursor Behavior
ResearchUnderstand existing code + contextNo code changes allowed
InnovateBrainstorm solutions + tradeoffsNo decisions made yet
PlanCreate a detailed implementation checklistClarifying questions encouraged
ExecuteImplement exactly what was approvedFollows checklist step-by-step
ReviewCompare the result to the planFlags deviations, asks for validation
💡 “It’s like teaching Cursor to work the way we want developers to work — focused, deliberate, and traceable.”

🔍 Phase Breakdown: What Each Step Looks Like

Let’s break it down in human terms, using real phrasing from the presentation.


🧪 Research — “Don’t let it touch the code yet”

“Cursor starts by gathering information, just like a developer reading the docs.”
  • Use this to investigate how a system works.
  • Ask it to trace flows, find related code, or summarize existing logic.
  • Reference Figma, PRDs, or architectural decisions.

Example Prompt:
/research how the authentication middleware flows through the CLI


💡 Innovate — “Let’s brainstorm, not build”

“You’re just discussing possible approaches — nothing is being implemented yet.”
  • Explore design patterns or architectural options.
  • Compare tradeoffs.
  • Discuss constraints before locking in a solution.

Example Prompt:
/innovate what’s the best way to isolate synthetic data generation from the CLI into its own module?


📝 Plan — “Make it real, but don’t start coding”

“Cursor starts asking questions back — that’s when you know it’s thinking.”
  • Convert your chosen approach into a detailed, actionable plan.
  • Cursor builds a numbered checklist.
  • You validate it before writing any code.

Example Prompt:
/plan a step-by-step migration from Angular Material v15 to v16, using legacy imports


🛠️ Execute — “Stick to the plan”

“It writes code now — but only what you approved.”
  • Executes the plan one step at a time.
  • Waits for confirmation if it needs to run commands or modify critical files.
  • Won’t move ahead unless you say so.

Example Prompt:
/execute steps 1-3 from the migration plan


🔍 Review — “Did we do what we said we’d do?”

“Treat this like a PR review — Cursor helps validate against the plan.”
  • Confirms that implementation matched the checklist.
  • Flags anything that wasn’t expected.
  • You can prompt it to update the memory bank or suggest follow-up fixes.

Example Prompt:
/review steps 1-5 and update projectbrief.md with the results


🔐 Why RIPER Works

Here’s what we gained from introducing RIPER into our Cursor workflows:

  • Safety: No unexpected code changes in early phases
  • Continuity: Memory bank keeps context across sessions
  • Clarity: Every action is tied to a phase
  • Team Consistency: Shared process = shared expectations
  • Debugging Power: If something breaks, we know which step failed
“It’s less vibe-coding, more real team discipline — except with an AI.”

📘 Coming Next: How to Teach Cursor About Your System

In the next post, we’ll open up the .cursor/ folder and talk about Memory Banks and Rule Files — the secret sauce that gives Cursor a long-term memory and a working personality.

You’ll see how we taught Cursor our tech stack, microservice boundaries, testing strategy, and even our ESLint rules — all in plain English.

Until then, try this:
Open Cursor. Type /research how authentication is handled in this project.
Then stop it before it changes anything. You just did the first step of RIPER.
🧠 AI Development, Part 4: Teaching Cursor to Think — Memory Banks & Rule Files
“Cursor is smart, but it doesn’t know your architecture — until you teach it.” In the last post, we introduced RIPER — a structured way to guide Cursor through the development process. But RIPER is more than just a philosophy. Behind the scenes, there’s infrastructure powering it: files that define