Sitemap

What I Learned Vibe-Coding My First Project in Cursor AI

8 min readMay 20, 2025

--

A creative coder’s first impressions, insights and takeaways.

Screenshot of “Magic Mirrors”, a webcam art experiment created through vibe coding

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.

Screenshot from the Codex demo (OpenAI, 2021)

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…)

Screenshot of Cursor AI showing files at left, code in the centre and chat at the right.
Screenshot of Cursor AI showing files at left, code in the centre and chat at the right.

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.

Installation views of “Magic Mirrors” (2017)

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.

Testing various mirror modes on mobile

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.

LAUNCH: MAGIC MIRRORS

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
It’s easy to overlook this crucial drop-down menu just below Cursor’s chat field

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.

Undo! Undo!

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.

Ask a curious question and you’ll get a robust lesson

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.

Paste screenshots right into the chat (and Cursor will thank you)

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.

The Memory window may mean little to me, but Cursor sure gets excited about it!

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.

Screenshot of The Sky Surfer, a fun little game I found on Rosebud.ai

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.

Thanks for reading, and good vibes! 😎🌴

--

--

Kirk Clyne
Kirk Clyne

Written by Kirk Clyne

Digital artist and Creative Director musing about the future creative technologies.

No responses yet