SUMMARY
This is a brief guide on:
This post is compiles the work of a few days, and is going to be about how to just use Cursor agents for everything, and not spread thin across multiple platforms.

Being greeted with this empty screen once again made me feel a bit uneasy.
Knowing that agents work best in a task-based format, the challenge was to create these tasks. The sheer expanse of this planning phase had just hit me.
I started off with the idea of a writing a PRD myself and keeping it in Notion as a working document because I wanted to speak to the agent only about code.
I opened an empty Notion page and quickly changed my mind.
I'm trying to vibecode an entire app.
Maybe I could try to vibecreate a PRD too.
Moving over to ChatGPT, I entered in my prompt.

Looking back, the response was incomplete but only because my prompt asked to generate a PRD and other supporting docs from the very limited information I put in.
LLMs are also pretty bad at being a critic, so it did exactly as told while treating me like the intellectual I'm not.

ChatGPT generated a PRD (a very small, vague document), and also gave me the code for what it called "the building blocks of the app".
PRD
# Love-All — Product Requirements Document
## Objective
Build an iOS app that allows tennis players to track their match scores quickly and accurately.
## Target Audience
Casual tennis players, coaches, and amateur tournament organizers.
## Core Requirements
1. Create a new match with player names and match type
2. Track points, games, and sets
3. Automatically handle tennis scoring rules
4. Save completed matches for review
## Constraints
- Must be fast and usable with one hand
- Work offline
## Non-Goals
- No online multiplayer
- No integration with professional tournament APIs (initially)
A fairly large conversation later, and after specifically mentioning that I planned on doing this on Cursor, ChatGPT gave me a bunch of files in Markdown format so that I could move them into the project.

Obstacle #1: No Task List
I am not a software engineer, and that gap became extremely blatant when it was time to finally start. I could just ask it to "create a screen where I can input and keep a track of points", but I'd come to understand that being very specific is the best predictor of results and that statement would get no medals.
I asked ChatGPT what my first prompt should be.
For all my talk about being specific to get the best results, this was a bad request because of how unspecific it was, and the starting prompt was a direct reflection staring me in the face.
ChatGPT gave me a file to add into the root folder (!) that contained the prompt to run (!!). The noob I was, I added it to my root folder and asked the agent to read and run it.
Yikes.
INITIAL TASK LIST
## Tasks to Start
1
Create a SwiftUI home screen:
- “Start New Match” button
- List of saved matches
- Delete match option
2
Build “New Match” setup view:
- Enter player names
- Choose `gamesPerSet` (default 6) and `bestOfSets` (default 3)
3
Build “Live Match” view:
- Show player names
- Show current set/game/points
- Indicate server
- Add buttons to increment points
- Apply tennis rules using `match.settings`
4
Ensure all views read scoring rules from `MatchSettings` instead of hardcoding numbers.
The agent did a surprising amount of work in one go. Too much, in fact.
Watching it code, I started to worry about how many tokens were being consumed and if I'd have any left to do later tasks. This brought me to:
Obstacle #2: Lack of Control
The agent was relentless. It didn't take a break ended up hitting my monthly (!) limit pretty quickly. This was the free plan, but it got me thinking that I need to break my tasks down into far more specific and controlled blocks.

I also had no tasks to follow these, so I was at an impasse yet again.
Obstacle #3: Multi-tool Inefficiencies
ChatGPT to plan. Cursor to code. Notion to document.
Far too time consuming, especially for managing updates.


THE TL;DW VERSION
Cursor allows for the creation of a custom set of rules. Create these files and set them as "Rules" that Cursor will follow (most of the time). These are going to be instructions for the agent to:

Mention that the PRD and the tasks you ask the agent to create are for a junior developer. The tasks are then created from an engineering standpoint (I don't know how much of it is tehncially accurate, but it looked goos to start on).
SAMPLE TASK LIST
1.0 Implement deterministic tennis rules engine
1.1
Define domain types: `PointEvent`, `GameState`, `SetState`, `MatchState`, `ServeState`, `SideOfCourt`.
1.2
Implement game scoring transitions with traditional advantage and No-Ad modes.
1.3
Implement set progression, including 7-point tie-break at 6–6 for every set.
1.4
Implement tie-break serve pattern: first point single-serve, then two serves alternating; carry correct server into next set.

