In your editor
One command sets it up, and then python-vibe answers from the chat panel or the command palette without you leaving the file.
python-vibe editors cursor # or: vscode, zed
That writes .cursor/mcp.json and .vscode/tasks.json pointing at this
folder. Reload the window, enable python-vibe under Customize → MCP,
and it is there.
Everything below is a real answer from that connection, with the time it took. Nothing is written by hand.
Where am I?
Open a project you have not seen before and ask for a summary.
brief
10 Python and Markdown files, 2.9 KB in total.
Small enough that python-vibe can read all of it, so you can
ask about any part.
Files:
README.md 681 B
src/orders.py 467 B
...
Under a tenth of a second, and no model. It counts the files, sizes
them, and tells you whether the project is small enough to ask about
freely or large enough to need a --scope.
What is tangled here?
layout
layout: 1 finding(s), worst first.
[cycle] src/render.py and src/report.py import each other
Next move (do only this one): Move what they share into a new
module both import.
Also instant, also no model. It reports import cycles, a folder with no grouping, and a module much larger than its neighbours — and gives one next move rather than a list, because a list gets four things changed at once.
That cycle is real: render.py imports build_report, report.py
imports render_line.
What does this function do?
Put the question in the chat panel while you are looking at the file.
ask what does apply_discount do?
The `apply_discount` function computes the total after reducing
it by a whole percentage, i.e. `-> int`. (3.0s)
ask what does compute_total return?
"int" — the function computes the sum of the line prices of one
order. (14.3s)
This one calls the model, so it takes seconds rather than none, and the answer is held to saying what the function computes rather than reading its type back.
Changing something
run find a real NameError in src/orders.py and fix it
this server is read-only. Restart it with --allow-writes, or
run python-vibe run in the terminal.
The editor connection is read-only until you say otherwise, and it says
so plainly rather than failing quietly. With --allow-writes the same
request repairs the misspelling and runs the tests, in about a tenth of
a second, without a model:
bound unique NameError typo (subtotl → subtotal) in
src/orders.py. Tests passed.
What to reach for, and what not to
The two that need no model — brief and layout — are the ones worth
having in an editor. They answer instantly, they give the same answer
every time, and they cannot be wrong about what they found.
ask is good on a named function and slower.
run is worth it for the repairs the harness makes itself: a misspelled
name with one candidate, a missing import, a test for something already
covered. For anything the model has to reason about, read
Experiments first
— on a real repository, writing scored one in twelve.
A recorded VS Code session is on VS Code. A recorded Cursor session is on Cursor.
Set-up detail for each editor: VS Code · Cursor · local editor · IDE plugins.