How it works

From changelog to merged pull request.

Deterministic search picks the files, AI writes the edits, and your own tests decide. Nothing reaches your repository unless it passes.

Six steps, one pull request

  1. Changelog

    Versyka starts from the vendor's changelog or migration guide, fetched automatically for known packages.

  2. Rule

    The change becomes a structured rule: which calls are affected, how to rewrite them, and the minimum package version.

  3. Search

    ast-grep finds every affected call site by structure, not text. The model never decides where to edit.

  4. Edit

    Claude rewrites only the matched calls, in your style, inside a disposable sandbox. The package is upgraded when needed.

  5. Tests

    Your own typecheck, build and tests run. Failures go back for a fix, up to three attempts; then Versyka stops and reports.

  6. Pull request

    Passing changes land on a new branch as a pull request listing what changed and which checks passed. You merge.

What it works with

  • Languages

    SupportedTypeScriptJavaScriptPythonGoJavaKotlinComing soonRubyC# / .NETPHPRustSwiftRequest a language →
  • Package managers

    npmpnpmyarnbunpipuvpoetrypipenvGo modulesMavenGradleYour own install, build and test commands: pytest for Python, go test for Go, and your Maven or Gradle tests for Java and Kotlin.
  • Repository layouts

    Single packages and monorepos, with per-repo settings in .versyka.yml.
    Configuration

Every change to Versyka itself is scored on a benchmark of realistic breaking changes (payments, AI SDKs, cloud SDKs): right files found, wrong files left alone, tests passing.

Watch it run

Step through three benchmark migrations, from changelog to pull request.