| name | vibe-cross-platform |
| description | Cross-platform development rules for Mistral Vibe. Use when writing platform-specific logic, handling paths, Windows support, shell compatibility, terminal data streams, or cross-OS testing strategies. |
| metadata | {"display-name":"Vibe Cross-Platform","short-description":"Cross-platform rules and testing for Vibe","default-prompt":"Use $vibe-cross-platform to ensure code and tests work across Linux, macOS, and Windows."} |
Vibe Cross-Platform
Vibe ships on Linux, macOS, and Windows, but CI runs the test suite on Linux only. The machine you develop on is not the machine that gates the PR — code and tests must pass on every platform, and must be provably correct on the platforms CI cannot exercise.
Code rules
- Never rely on host-specific behavior (shell, path separator, line ending, available binaries,
$SHELL, case sensitivity). Assume the same code runs under cmd.exe, Git Bash, zsh, and sh.
- Branch platform-specific logic behind the helpers in
vibe.core.utils.platform (is_windows(), resolve_windows_shell()), not ad-hoc sys.platform checks. Keep POSIX-only assumptions (forward slashes, POSIX shlex escaping, $SHELL) out of shared paths and scope Windows-only handling to is_windows().
- Use
pathlib.Path for path composition; never hardcode / or \\.
Terminal data
- Treat terminal and PTY data as arbitrarily chunked streams: normalize CRLF before interpreting lone
\r as an in-place redraw, buffer incomplete control sequences until their terminator arrives, and add Linux-runnable regression tests covering CRLF plus every split boundary of representative control sequences.
Testing
- Test other-platform code paths on Linux by monkeypatching
sys.platform, env vars, and probes like shutil.which — do not @pytest.mark.skipif them away. A Windows-only behavior with no Linux-runnable test is untested in CI.
- When an assertion depends on the platform, force it explicitly (e.g.
monkeypatch.setattr(module, "is_windows", lambda: True)) instead of letting the test pass only because of the host it happened to run on. A test that would flip its result on a different OS is a bug.