🧪 AI Development, Part 5: RIPER in Action — Real Examples from Production
🧠 AI Development: Table Of Content
- Part 1: The Moment It Became Real
- Part 2: Cursor — Your New Pair Programmer
- Part 3: Why Structure Matters — Introducing the RIPER Workflow
- Part 4: Teaching Cursor to Think — Memory Banks & Rule Files
- Part 5: RIPER in Action — Real Examples from Production
- Part 6: How We Write E2E and API Tests with Cursor
- Part 7: When Cursor Hallucinates — How We Keep It Grounded
- Part 8: What’s Next — Scaling AI Workflows Across Teams
“When you do it right, Cursor does the right work.”
So far in this series, we’ve covered the theory:
- Why AI development is now viable
- How Cursor works as an IDE
- What RIPER brings to the table
- How memory banks and rule files give structure
But none of that means much without real-world results.
This post is all about showing what happens when theory meets execution — when Cursor and RIPER help ship actual features. No demos. No Hello World. These are real stories from GrowthSpace production systems.
📡 Example 1: Rolling Out Telemetry Across Microservices
Challenge:
We had partial telemetry coverage across our NestJS and ExpressJS microservices — some had the GSRequestContext module wired in, others didn’t. Manually auditing and adding it was going to be tedious.
Approach with RIPER:
/research→ Asked Cursor to identify which microservices already had telemetry and which didn’t.- It scanned the repo and generated a breakdown, identifying modules with missing telemetry.
/plan→ Asked it to prepare a checklist of changes, one microservice per commit.- Adjusted the plan manually (skipped deprecated or unused services).
/execute→ Cursor added imports, initialized middleware, and validated builds./review→ We checked that changes matched the checklist and passed all tests.
🧠 Cursor even flagged microservices that were technically using the telemetry module, but weren’t initializing it correctly.
Result:
A clean, commit-per-service migration with build/test validation — 90% of the work was done by Cursor.
🗂️ Example 2: Migrating Angular Material to MDC Components
Challenge:
Angular 16 dropped support for legacy Material imports. We had to migrate hundreds of components across shared libraries and the main app.
Approach with RIPER:
- Supplied Cursor with:
- Legacy and new import formats
- Angular’s migration doc
- A single example of a legacy component
/research→ Identified all non-legacy Material imports./plan→ Created a multi-phase checklist:- Migrate buttons, form fields, selects, etc.
- Update shared library first
- Run manual QA after each phase
/execute→ Migrated each group of components- Also generated a QA test checklist:
- Included specific components
- Mapped to UI pages where changes occurred
🧠 Cursor tried skipping QA focus at first — we corrected it, and it regenerated the plan to include test cases and target screens.
Result:
A hybrid migration strategy + QA plan, with Cursor handling the heavy lifting and tracking which pages needed testing.
💬 Example 3: Building a Shared Chat History Viewer
Challenge:
We wanted to share successful Cursor chat histories with the team. The idea: a GitHub Pages-based viewer that could display .md logs in a readable UI.
Approach with Cursor:
- Started a new project folder.
/plan→ Described a GitHub Pages viewer using a basic UI.- Cursor generated:
- A React frontend to display Markdown chats
- Routing with shareable query params
- UI that highlights specific messages
- Added Markdown enhancements like rendering tables correctly
/execute→ Built and tested with Cursor/review→ Adjusted UI responsiveness and added permalinks to messages
Result:
A fully working shared chat viewer written almost entirely by Cursor — now used by the entire R&D org to share good examples.
🔍 One More: Improving Error Reporting in Our Tests
Mini-win:
When synthetic data failed due to a wrong HTTP status, the logs were unclear.
Cursor Fix:
- Located error-prone sections
- Proposed improving printed error messages
- Added readable diffs between expected/actual status codes
Now our test failures actually explain why they failed.
🧠 What These Examples Show
- Cursor isn't just a code monkey — with RIPER, it becomes a feature-level contributor.
- We still need to correct and review, especially when hallucinations creep in.
- But the productivity gain is undeniable — more done, less tedium.
- And it works best when you guide it like a teammate — not just prompt it like a chatbot.
Coming Next: How We Write AI-Generated Tests (That Actually Work)
In the next post, Romario’s going to walk you through how we:
- Generate E2E tests with step-by-step precision
- Use Playwright’s MCP to explore UIs
- Write API tests that follow internal standards
- Iterate safely with Cursor across dev/test cycles
Until then, try this:
Open Cursor and ask:/research which parts of this codebase don't use telemetry yet?
It might just find something you missed.

