Vibe Coding
Vibe Coding Tools
Pick an editor or terminal agent that can read files, apply diffs, and run commands. The loop stays the same.
What a vibe coding tool must do
Chat that only pastes code into a blank box is not enough. You need a tool that can see your project, change files, and leave a diff you can reject. If it cannot do those three things, you will copy-paste yourself into a mess.
| Must have | Why |
|---|---|
| Read the project folder | Otherwise it invents a second notes.py. |
| Edit files and show a diff | You review a patch, not a wall of text. |
| A terminal you run yourself | pytest -q is evidence. Chat is commentary. |
| Git next to the agent | Every working slice is a restore point. |
Pick one stack for this course and stay with it through the project. Switching tools mid-slice is how you lose the diff and the thread.
Pick a starter stack
Any of these can run the rest of the course. Choose the row that matches how you already work.
| If you… | Use | You will |
|---|---|---|
| Want an editor built around an agent | Cursor | Chat with @files, read diffs in the editor, run pytest in the built-in terminal. |
| Already live in VS Code | VS Code + GitHub Copilot | Use Copilot Chat / Agent on the open folder. Same loop: attach files, review, test, commit. |
| Prefer the terminal | Claude Code or Codex CLI | Run the agent in the project root. You still open the diff in Git and run pytest yourself. |
| Want a free / local-friendly option | Continue in VS Code or JetBrains | Point it at a model you already have. Attach files. Review every edit. |
Windsurf, Zed, and JetBrains AI Assistant also fit if they can edit the repo and show a diff. The brand on the splash screen does not change the job: you direct, the agent drafts, you own Git.
Agent editors
These put chat, files, diffs, and a terminal in one window. Best default for this course.
| Tool | Use it for | How you talk to it |
|---|---|---|
| Cursor | Agent chat, inline edits, project rules | @notes.py in chat. Highlight a function for a local change. Read the diff before Accept. |
| VS Code + GitHub Copilot | Inline complete, chat, and agent edits on a folder you already use | Open Copilot Chat on the workspace. Attach the two files for the slice. Keep the terminal panel for pytest. |
| Windsurf | Cascade-style agent that plans then edits | Same rules: one goal, few files, plan first, review the patch. |
| Zed | A fast editor with an AI panel if you already like Zed | Do not skip the diff. Speed in the UI is not a reason to Accept All. |
| JetBrains IDEs | PyCharm / IntelliJ with AI Assistant or an agent plugin | Stay in the IDE you already debug in. Still run tests yourself. |
Terminal agents
A CLI agent sits in the project root and edits files from the shell. Useful if you already think in Git and pytest. You still review. The agent is not allowed to be your committer.
| Tool | Use it for | Watch-outs |
|---|---|---|
| Claude Code | Multi-file slices with a rules file such as CLAUDE.md or AGENTS.md | Tell it plan-only first. Do not let it run destructive Git commands. |
| Codex CLI (OpenAI) | Same job from a ChatGPT / Codex account | Same loop. You stage files. You write the commit message. |
| Aider | Git-aware CLI that proposes commits from the repo | You still read the diff. Auto-commit is optional — turn it off until you trust the slice. |
| Gemini CLI | A Google-model agent in the terminal | Treat it like any other intern: small slice, tests, review. |
First command in a terminal agent
# From the project root, after git init
# Do not let it edit yet.
List the files here and summarize AGENTS.md.
Do not write or edit anything.Chat-only tools (when they fall short)
ChatGPT, Claude.ai, and Gemini in the browser are fine for explaining a function or drafting a 20-line helper you will paste once. They are a poor vibe coding setup: they cannot see the repo, they cannot apply a diff, and you become the copy-paste layer.
- Use them to learn a concept, then implement in the editor agent.
- Do not paste your whole project,
.env, or production logs into a consumer chat. - If the answer is a 400-line dump, do not drop it into a file. Open the agent on the folder instead.
Copy-paste from a chatbot is how duplicate helpers and leaked secrets appear. If the tool cannot show a diff against your files, it is not your coding agent.
Supporting tools you will actually use
The agent is one piece. These keep you in control.
| Tool | Job in this course |
|---|---|
| Git | Undo. Commit after each green slice. Never let the agent rewrite history. |
| pytest | The done command for Python examples. You run it in your terminal. |
| A rules file | AGENTS.md, CLAUDE.md, Cursor rules, or Copilot instructions. Short standing orders. |
| GitHub / GitLab | Remote backup and pull requests. Review AI diffs there the same way you review a teammate. |
| A linter / formatter | Optional. Let it catch style so the agent does not “clean up” half the repo. |
Some agents can call extra tools: search docs, open a browser, talk to a ticket system. Only connect what you would let a new intern use. If you would not give that intern production credentials, do not give them to the agent.
How you work in each kind of tool
The course loop does not change. Only the clicks do.
| Move | In an editor (Cursor, VS Code, Windsurf) | In a CLI agent |
|---|---|---|
| Point at files | Type @notes.py and @test_notes.py | Name the paths in the prompt: notes.py, test_notes.py |
| Plan first | “Do not write code yet.” Stay in the same chat. | Same sentence. Approve the plan before the next message. |
| Review | Open the diff UI. Reject extra files. | git diff then restore what you did not ask for. |
| Test | Integrated terminal: pytest -q | Your shell: pytest -q. Paste the traceback back. |
| Commit | You stage named files. You write the message. | Same. Turn off auto-commit until the slice is boring. |
Rules files by tool
Standing instructions live in a short file the tool loads. Do not paste a manifesto into every chat.
| Tool | Typical file |
|---|---|
| Most agents, including Cursor | AGENTS.md at the project root |
| Claude Code | CLAUDE.md (or AGENTS.md if the tool reads it) |
| GitHub Copilot | .github/copilot-instructions.md |
| Cursor extra rules | Project rules in .cursor/rules if you need more than one short file |
Keep it to about ten lines: language, test command, no extra deps, small diffs, never commit secrets.Setup has a copy-paste starter.
What not to add yet
- A second agent “for a second opinion” on the same dirty tree. Finish or revert first.
- Image-to-app builders (v0, Bolt, Lovable) as your Python CLI tool. They scaffold UIs. This course is the review loop.
- Auto-run / YOLO modes that apply every edit and skip the diff. Turn those off for the project lesson.
- Browser automation against production. Practice on
vibe-lab.
Try it yourself
Exercise 1: You only have ChatGPT in a browser and a folder of Python files. What is missing for vibe coding as this course means it, and what do you install first?
Show solution
Missing: the tool cannot read the folder or apply a diff. You are the copy-paste layer. Install an agent editor (Cursor or VS Code + Copilot) or a terminal agent (Claude Code), open the project root, then continue. ChatGPT can stay as a tutor, not as the coder.
Exercise 2: Name the four things your chosen tool must let you do in a 30-minute session.
Show solution
Attach or name files, get a plan then a small edit, read a diff and reject extras, run pytest -q (or the done command) yourself. Git is the undo behind all four.
Key takeaways
- A vibe coding tool reads the repo, edits files, and shows a diff. A chatbot dump is not that.
- Cursor, VS Code + Copilot, Windsurf, Claude Code, Codex CLI, Aider, and Continue all work if you keep the loop.
- Pick one stack for the course. Git and pytest are not optional extras.
- Next: open that tool on a practice folder in Setup, then write better prompts.