python-vibe

ask, test, fix, add

GitHub

Platform engineering

Platform work is mostly small files: a path helper, a venv layout, a pyproject.toml, a workflow YAML. The failure mode is not “the file is too big.” It is “the draft only works on the author’s laptop.”

python-vibe treats that as a harness problem, not a bigger-model problem.

What the harness already did

Every path the model is shown uses forward slashes (Path.as_posix()). A Windows-style src\app.py is accepted as input and rewritten before the write limit uses it. A virtual environment’s interpreter is bin/python on POSIX and Scripts/python.exe on Windows. Those rules live in harness/paths.py and are tested on every OS the suite runs on.

What this page adds

  1. write-paths skill. One copy-paste Action: edit of pkg/paths.py. pathlib, os.name, both venv layouts, Path.home(). No os.path.join. No hardcoded home paths.
  2. write-workflow skill. One workflow YAML that runs the unit suite. Live 8B treated “add a CI workflow” as add-feature and wrote a function named workflow into src/util.py. The task kind is now looks_like_ops. Drafts with curl|sh, 0.0.0.0, or an inline secret are refused.
  3. Limit which files may be written. Writes may target .py, .pyi, .md, .toml, .yml, .yaml, .cfg, .ini, and .json. Secret names (.env, credentials.json, .pypirc, secrets.json) are refused on read and write. The map and grep skip them.
  4. Compiler-shaped refuses. A draft that joins paths with os.path, hardcodes a home or /tmp, writes bin/python without the Windows branch, opens a text file without encoding="utf-8", or calls chmod without an os.name != "nt" guard is not written. The next Action is named. The model does not get a lecture.

Why this is the professional loop

A hosted IDE agent remembers “Windows uses backslashes” because the context window is huge and the model is large. An 8B on a laptop does not. Classic development for that gap is: pin the Path:, refuse the Windows-hostile draft, keep config files under the same limit as Python.

The 0.5B LoRA is still a style prior. Do not train it on thirty path rows and expect agency. Measure write-paths with scripts/measure/skill_probe.py before calling it everyday-ready.

Honest limits

It still has no free shell, no package manager, and no cloud API. A .sh installer, a remote host, or a secret file is out of scope on purpose. Large trees still need --scope. Public pages do not name other editors or chat products.