What I Learned Vibe-Coding My First Project in Cursor AI
A creative coder’s first impressions, insights and takeaways.
Welcome to the Dawn of “Vibe Coding”
Back in 2021, I watched a live demo of OpenAI’s Codex during which two engineers developed a working web browser game by chatting with an AI in plain English.
They’d type, and the AI would write the code, auto-magically.
As someone with a creative background, and just enough coding experience to be dangerous, I couldn’t wait to try it someday.
Codex went on to power GitHub Copilot (and still survives in the Terminal, if you’re into that).
But today, tools like Cursor AI, Replit, and Lovable are offering this very same chat-to-code potential to designers, artists, and indie builders who want to prototype quickly.
Vibe Coding?
In February of 2025, OpenAI co-founder Andrej Karpathy coined the term “vibe coding” to describe AI tools that allow hobbyists to build apps and websites by typing plain language prompts.
It’s also called that because, in practice, vibe coding it isn’t exactly concerned with stuffy old ideas like proper syntax or structure.
As Karpathy puts it:
“I just see things, say things, run things, and copy-paste things, and it mostly works.”
(Did you feel that? It was as if a million Senior Engineers cried out on Stack Overflow and were suddenly silenced…)
But for creative coders and experimentalists (or anyone looking to make it big with their own app idea), this loose, cowboy-style approach to slingin’ code is actually a huge part of the appeal.
In theory, you don’t need deep knowledge, just a sense of what you’re trying to build and a willingness to chat your way toward the finish line.
The Project: Magic Mirrors
To test Cursor, I decided to recreate an old interactive webcam piece of mine from 2017 called Magic Mirrors. The original version was created in Processing, took a few weeks create, and only ever worked offline.
I wanted to see whether I could use Cursor to create a new version (from scratch) that would run in the browser using Three.js — a fast graphics engine designed especially for the web.
I had a working prototype up and running in less than 90 minutes.
I spent a few hours happily inventing new mirror modes, and then whittled the collection down to a select few.
And I took a few more hours to refine the user interface and make everything mobile-friendly. (Most of this was me telling Cursor to fix each bug I encountered.)
In the end, I was able to to take this experiment from a concept to a working demo in less than a full work day.
Check out the Magic Mirrors interactive art experiment, then read on to see what I learned about vibe coding with Cursor.
Lessons Learned
Here’s a small collection of tips and tricks I figured out along the way while creating this experiment.
(If you’re wondering how to start, just create an empty folder on your computer, named after your project. Next, use File>Open inside of Cursor and select that folder. Now you can start vibing.)
1. Start with something you know
Rebuilding a project that I already understood at a fundamental level gave me a clear creative goal, and a mental model of how things ought to work.
This made it easier to evaluate Cursor’s suggestions, spot errors quickly, and know when to trust the AI or take back control.
2. Ask vs. Agent
Cursor has a couple of different chat modes that you can toggle between at any time, including:
- Ask mode: Relax, we’re just talking here
- Agent mode: I will edit your code, organize files on your machine, and occasionally go rogue and implement my own ideas
Ask mode is great for asking questions about code, or getting suggestions from Cursor. You can actually stay in Ask mode at all times, writing and editing code by yourself, and relying on Cursor only for advice and examples.
Or you can let it loose in Agent mode, and it will write and edit code all by itself, based on your prompts. I relied on Agent mode almost exclusively for Magic Mirrors.
However, sometimes when I merely asked Agent mode a question, Cursor would eagerly start editing my code, as if to demonstrate the answer. Switching over to Ask mode temporarily ensures that Cursor won’t mess with things until you’ve both agreed on next steps.
(It seems like Cursor has gotten much better about this lately. You can also declare explicit rules in the Settings, like: “Explain what you’ll do first and ask for my confirmation before coding.”)
3. Restore Checkpoint
If you and/or Cursor try something that doesn’t work out, don’t despair. You can scroll up in the chat history and choose Restore Checkpoint from any earlier prompt.
Clicking this button next to a previous chat message reverts the codebase, and lets you edit the original prompt, and/or provide additional context. It’s a lifesaver when a code solution fails miserably (or when Cursor goes off-script).
4. Ask Stupid Questions
Stumped by an error? Wondering how a particular chunk of code actually works? Curious to know more about a popular code library? Just ask.
Cursor draws on ChatGPT’s knowledge behind the scenes. And ChatGPT was trained on countless public codebases, documentation, user manuals, and API docs. All of your answers are likely just a question away.
In fact, whatever you’re making, Cursor’s seen this movie before. It already has a good idea of how to approach your project, even if you don’t.
I like asking Cursor for a few different ways to solve a given problem. It’ll often give me the pros and cons of each, along with its well-reasoned recommendations. I can decide from there what we’ll implement.
This is a great way to learn, and to ensure you’re following best practices, too. So don’t miss the opportunity to pause on development and ask for some education.
5. Screenshot-Based Debugging!
Cursor understands images, and you can paste them right into the chat. So whenever a project doesn’t behave as expected, I will share pictures of the on-screen results. This is a powerfully cool feature.
When I left Magic Mirrors running overnight and it crashed my browser, I complained to Cursor. So it asked me to share screenshots of the Memory panel in my browser’s Developer Tools.
Through a series of edits, while taking new snapshots of the Memory panel along the way, we were able to plug the leaks, improve efficiency across the different modes, and make the app purr like a kitten.
6. Vibing ≠ Shipping
Over the past couple of weeks, I’ve started to fall in love with vibe coding. I’ve been using it to create more art experiments, a playable video game prototype, and a new portfolio website for my generative art practice.
But I wouldn’t rely on these systems to build a production-grade app just yet. Pesky little things like security, testing, performance, and accessibility still require hands-on expertise that vibe coding just can’t deliver.
Then again, new products like CodeAnt AI and Code Threat have already started stepping in to fill the gap. These platforms leverage AI to automate testing and quality assurance, promising to turn your Franken-code into something compliant, performant, and secure.
(Quick Bonus Tips)
Since I started to write this article, I’ve learned a couple more high-value tricks for those who might be a little more serious about this stuff:
- Plan Ahead — Describe your project to ChatGPT or Gemini, and tell it you’re buid it using Cursor (or the AI coder of your choice). Then ask it to generate a Project Requirements Document (PRD) that includes Technical Recommendations and a Roadmap. You can provide this document to Cursor via its settings and then follow the plan together.
- Use a Code Repository — Set up a free GitHub account, for example, and ask Cursor to use it. That way, you’ll have something to roll back to if it all goes sideways at some point.
So, Should I Try Vibe Coding?
If you’ve got even a tiny bit of code knowledge, and a side project you’ve never had time to build, you should absolutely give it a shot.
In fact, if you’re a UX Designer, UI Designer or Product Designer, you may want to start getting acquainted ASAP. As vibe coding continues to mature, delivering a set of wire frames or a static UI design may no longer be enough.
Pretty soon, claiming you “don’t do code” might not cut it when, as Karpathy posted on X, “The hottest new programming language is English.”
Ready to Start?
Just pick an AI app and get rolling. I happened to try Cursor first, but it’s hardly the only robo-coder in town.
Other reputable and beginner-friendly products include: Lovable, Bolt, v0 by Vercel, Firebase Studio and Replit, just for starters.
If you’re not sure where to begin, describe your project idea and experience level to Gemini or ChatGPT, and ask it which AI coding assistant it would recommend for you.
Still Not Sure?
Rosebud.ai is a free product that lets you vibe code 3D games in the browser using templates. It might be an easy, low-stakes way to experience the magic of “chat-to-code” with very little pressure.