vibey-engine-adapterslisted
Install: claude install-skill adammatthewsteinberger/vibey
# vibey engine adapters
Vibey drives four autonomous session runners: `claudeloop`, `codexloop`,
`cursorloop`, `agyloop`. Each has its own CLI surface, effort vocabulary,
state directory, and done marker. Vibey abstracts these differences via
`EngineAdapter`, a `Protocol` defined in `application/interfaces/engines.py`
and re-exported from `application/ports.py`.
## The adapter pattern
`EngineAdapter` (read the real definition before relying on this summary —
it's short):
- `descriptor: EngineDescriptor` — a property, the engine's static facts
- `async def preflight() -> PreflightResult` — runs `<engine> doctor`;
classifies auth + availability
- `async def start(spec: RunSpec) -> RunHandle` — builds argv from
`descriptor.effort_projection` + isolation flags, spawns the runner,
returns a handle over its run directory
- `def tail(handle: RunHandle) -> AsyncIterator[EngineEvent]` — streams the
runner's `events.jsonl`, translated into vibey's own event vocabulary
- `async def send_prompt(handle, text, *, now: bool) -> None` — writes the
runner's control-plane inbox
- `async def stop(handle: RunHandle) -> StopSummary` — soft-stops the run;
collects `stop-summary.md` and the final snapshot
- `async def snapshot(handle: RunHandle) -> SnapshotRef | None`
`start()` internally calls `infrastructure/engines/argv.py::build_argv()` —
that's a plain function, not an adapter method; it takes both the descriptor
and the `RunSpec` (`build_argv(descriptor, spec)`), not just the