Back to blog
How to Vibe Code

How to Track Todos in a Vibe Coding Project Step by Step

Fast AI build sessions create more loose ends than most people expect. This step-by-step approach shows how to keep track of unfinished work so the next session starts with clarity instead of scavenger hunting.

You finish a good build session in Cursor with half a feature working, one bug partly understood, and three new ideas that came out of the fix. By tomorrow, two of those items will be gone unless you give them a place to live. Tracking todos in a vibe coding project works when you separate what needs action now, what belongs later, and what should be saved because it taught you something.

Here is a concrete way to do that while building a small SaaS dashboard. The goal is simple: when you stop and restart, you know exactly what to do next.

Step 1. Capture todos during the session without sorting them yet

As you build, write down every incomplete action the moment it appears. Do not wait until the end of the session and do not rely on the chat to remember it for you. If a prompt uncovers a bug, a design issue, or a follow-up test, capture that item immediately in plain language.

For a dashboard project, your running list might include items like “fix date filter state,” “add empty state for invoices,” and “test failed login copy.” At this stage, speed matters more than structure. You are collecting loose ends before they disappear.

Step 2. Rewrite each todo so it starts with a verb

Messy todos create messy restarts. Notes like “dashboard weird on mobile” or “auth still broken” may feel familiar today, but they age badly. Rewrite each item into an action you could actually perform.

Good todo phrasing looks like this:

  • fix mobile overflow in dashboard cards
  • trace failed login request in server action
  • add empty state when invoice list is blank
  • test password reset flow from email link

Now the work is legible. You are preserving executable next steps.

Step 3. Split today, next, and later into separate buckets

This is the point where many builders keep one giant task list and then wonder why it becomes useless. A vibe coding project moves too fast for that. Some items belong to the current session, some are the next obvious actions, and some are feature candidates that should not interrupt what you are doing.

Use three buckets:

  • today for items you must finish before you stop
  • next for the first actions to resume with
  • later for ideas that matter but are not urgent

Once you make this split, the project gets calmer. You stop treating every thought like an emergency.

Step 4. Promote stable ideas into the feature plan

Recurring notes can signal an emerging feature. If you write “improve invoice search” three times across different sessions, that is no longer a scratch note. It belongs in a more durable feature list with enough context to revisit later.

This is where a lightweight system earns its keep. In VibeCrumbs, a note from your daily build log can become a feature candidate without copy-pasting it into another tool. That matters because the faster you build, the easier it is for recurring ideas to get stranded between chat history and temporary notes.

A good feature entry usually includes:

  • the problem it solves
  • the smallest version worth shipping
  • anything blocked on earlier work

Step 5. Attach todos to the part of the product they affect

Generic lists become hard to use once the project grows past a few files. Add enough context so each todo points back to a surface in the product. Name the page, component, route, or flow involved.

Compare these two notes:

  • fix bug
  • fix loading spinner flicker on settings page save action

The second one is easier to resume, easier to test, and easier to hand back to an AI tool for help. When you reopen the project, you already know where to look.

A good todo tells your future self where to start, not just that something felt unfinished.

Step 6. End the session by choosing the first restart action

Do not end with a pile. End with an entry point. Before you close the editor, pick one todo from the next bucket and mark it as the first action for the next session.

For the dashboard project, that could be “trace failed login request in server action.” That choice does two things. It removes restart friction, and it prevents the next session from turning into another round of deciding what matters most.

You will feel the benefit the next time you come back tired or short on time. Instead of scanning chats and tabs, you begin with one concrete move.

Step 7. Save the prompt that moved the work forward

Some prompts generate code. Others generate progress. When a prompt helps you isolate a bug, refactor a component cleanly, or produce a useful test plan, save it next to the todo it unlocked.

In practice, that might look like keeping:

  • the prompt that found the auth edge case
  • the prompt that rewrote a brittle component into smaller pieces
  • the prompt that generated a test checklist for form validation

This gives your project memory real leverage. Next time a similar issue appears, you have a reusable starting point instead of another blank chat.

For a fuller system for saving reusable AI prompts, see this guide to storing coding prompts.

A simple todo system you can keep using

How to track todos in a vibe coding project comes down to one habit: capture quickly, sort lightly, and leave a clear restart point. You need notes that survive across sessions and keep ideas from getting mixed with execution.

If you want one place for daily notes, reusable prompts, and feature candidates that can grow with your project, keep it together in VibeCrumbs during the beta.