Migrate with AI¶
Each migration guide ships a tailored prompt you can paste into Claude, ChatGPT, Cursor, or any LLM. You give it your existing config, it gives you a jarvy.toml.
| Source | Prompt |
|---|---|
GitHub Codespaces / devcontainer.json |
→ from-codespaces guide |
DevPod / devcontainer.json |
→ from-devpod guide |
Gitpod / .gitpod.yml |
→ from-gitpod guide |
| VS Code Dev Containers | → from-dev-containers guide |
Vagrant / Vagrantfile |
→ from-vagrant guide |
Homebrew Bundle / Brewfile |
→ from-homebrew-bundle guide |
mise / mise.toml |
→ from-mise guide |
asdf / .tool-versions |
→ from-asdf guide |
Nix / flake.nix |
→ from-nix guide |
How the prompts are structured¶
Every prompt has the same five sections, with the per-source bits swapped in:
- Role — "you are a config translator"
- Schema cheatsheet — the
jarvy.tomlsections and version syntax the LLM needs to know - Source-specific rules — what translates, what drops, what gets renamed
- Tool-name registry hints — common name corrections (
aws-cli→awscli,postgresql→psql,nodejs→node) - Output contract — output ONLY the TOML, no prose
This structure was designed and tuned against the migration fixture suite and validated against real jarvy validate runs in the promptfoo eval harness.
After the LLM responds¶
Always validate what the model gave you:
# Save the output to a file
$EDITOR jarvy.toml
# Schema check
jarvy validate
# What would happen
jarvy diff
jarvy setup --dry-run
# Provision
jarvy setup
If validate complains:
| Error | Fix |
|---|---|
Unknown tool: 'foo' |
Run jarvy search foo for the canonical name |
Invalid version |
Use one of: "latest", "20", "^3.10", "~3.12", "=1.6.6" |
| Section warnings | The validator's known-section list is conservative — feature blocks like [npm], [pip], [cargo], [git], [network], [drift], [telemetry], [commands] are real; warnings are advisory |
When not to use AI for migration¶
- Single-file tool-version pin (
.tool-versionswith two lines): faster to translate by hand than to prompt. - Highly customized Dockerfiles with build-time scripts, multi-stage builds, or compiled deps: the LLM will flatten too much. Walk it manually.
- Multi-VM Vagrantfiles: Jarvy's model isn't 1:1; the migration deserves a thinking pass, not a one-shot.
For everything in between, the prompts get you 90% of the way; you tune the last 10%.