Newsletter Archive

Skipper 3.5.0: talk to your schema with AI

Sent July 3, 2026 · Release · Skipper 3.5.0

CLI
AI
Automation

Skipper 3.5.0 was released in July 2026. It added a command-line interface that runs without the GUI and lets scripts, CI pipelines and AI assistants read and change a Skipper model. The application is a normal release, and the AI and automation features were marked as beta.

Now you can talk to your schema. A complete CLI + AI automation interface.

Hi everyone,

We hope you're doing well! A while ago we hinted that AI-powered workflows were coming to Skipper, and today we're genuinely excited to put the first version in your hands.

Skipper 3.5.0 introduces a brand-new way to work with your data model: you can now drive Skipper without the GUI, from scripts, from your CI/CD pipeline, and, for the first time, through AI assistants like Claude. Your favorite visual ORM designer is becoming a programmable platform on top of your schema, too.

Skipper 3.5.0 is available now and arrives through the in-app auto-update as usual, so you'll be offered it automatically.

⭐ AI-assisted schema design

This is the one we're most excited about. Your AI assistant can now read and modify your .skipper model through precise, structured operations: add an entity, a field, a relation, an index, an ORM attribute… You describe what you want in plain language, and the AI makes the exact change in your project.

To make this work out of the box, the installer now ships an AI-ready "skill" document (in DocumentationAi/), so your assistant immediately knows how to operate Skipper. Everything runs through clean, structured JSON, so it stays parsable and scriptable.

⭐ A headless CLI for automation & CI/CD

Under the hood is a full command-line interface: 18 command-line verbs, all runnable with no GUI required. There's a dedicated SkipperCli.exe build for CI/CD and scripting, and it runs fully headless on Linux and macOS too (automatically, no X server needed), as well as on Windows.

New here? The CLI & automation documentation walks you through the whole interface.

Programmable schema changes

  • apply-patch: 36 operations across every object type — entities, fields, relations, indexes, M:N, embedded objects, inheritance, and ORM attributes — including polymorphic (morph) relations. Operations can reference one another within a single patch ($ref), so you can create an object and wire it up in one call.
  • apply-merge: a declarative "target state". You describe how the schema should look, and Skipper figures out the changes.
  • Thoughtful ergonomics: a primary key is auto-created for a new entity, a join entity is auto-generated for M:N relations, and namespaces tolerate both / and \.

Introspection, validation, diff & export

  • schema-summary: your whole model as JSON, ORM attributes included.
  • list-orm-attributes: discover which framework-specific ORM attributes (e.g. association onDelete/onUpdate) are settable before you write them — handy for an AI that wants to get the attribute right the first time.
  • validate: schema-quality checks (empty index, nullable primary key, invalid data types…).
  • compare: the difference between two versions of a project, ideal for reviewing data-model changes.
  • export-ops: emit the exact apply-patch op-list that rebuilds your schema — the inverse of apply-patch, ideal for round-tripping and diffing a model with an AI.
  • export: generate code and migrations. export-diagram renders an ER diagram to PNG or PDF straight from the command line.
  • create-migration / set-migration-sql: create migration revisions and inject your own custom SQL (up/down, before/after) into them.
  • create-project, import-project, import-database: the full project lifecycle.

What you can do with it

  • Talk to your model: let your AI assistant add tables and relations, and have it edit the actual .skipper project for you.
  • Generate code & migrations in CI on every commit, so your schema becomes the single source of truth.
  • A schema-quality gate: run validate as a pre-commit or pipeline check so a broken schema never makes it downstream.
  • Repeatable, bulk schema changes by script instead of clicking through the GUI.
  • Always-current ER diagrams generated automatically for your docs.

We also put real work into making this dependable: we audited the interface systematically (every argument of every operation actually lands in the model) and hardened it (security, JSON output integrity), so you can rely on it in automation.

⚠️ Please note, the AI & automation features are in beta

Skipper 3.5.0 itself is a full release and reaches you through the in-app auto-update as usual. It's the new AI-assisted design and CLI automation that are in beta, so we'd suggest trying those on a copy of your project, outside production for now.

We'd love your feedback

This beta exists precisely so we can fine-tune the interface around real-world use. Try it out and tell us what works, what doesn't, and what you'd like to see, through our support forum or at [email protected].

Thank you for actively using Skipper.

Have a wonderful day!

Your Skipper Team

Changes in version 3.5.0.1878

  • CLI: apply-patch verb with 36 operations for all model object types (New!)
  • Custom SQL in migrations: raw before/after SQL on up()/down() (Laravel, Knex) - via the GUI Migration SQL editor, the Custom migration tab in Create revision, and the -cli-set-migration-sql verb. (New!)
  • CLI: -license-info command shows current license status (New!)
  • CLI: -license-activate command for headless license activation (no GUI/X server needed) (New!)
  • CLI: 16 command-line verbs for headless schema management (New!)
  • CLI: Three new auto-update verbs: check-update queries Harbor, download-update fetches release, apply-update installs (New!)
  • CLI: SkipperCli.exe console build for CI/CD and scripting use (New!)
  • CLI: AI-ready skill document bundled with installer (DocumentationAi/ folder) (New!)
  • CLI: export-diagram renders schema as PNG or PDF from command line (New!)
  • CLI: create-project, import-project, and import-database verbs (New!)
  • CLI: schema-summary, validate, compare, and export verbs (New!)
  • CLI: apply-merge verb for declarative target-state schema updates (New!)
  • CLI: Enhanced module name resolution with case-insensitive and prefix-match fallbacks
  • CLI: License commands (activate/info/unregister) now return structured JSON for automation instead of GUI dialogs
  • CLI: apply-patch returns per-op ids; add_* ops accept inline orm_attributes (incl. M:N per-side); $ref references within one patch; set_orm_attribute supports all object types.
  • CLI: -cli-export-ops round-trips unsigned columns and required polymorphic associations; write ops report errors on failed generation, unknown region, or bad $ref.
  • CLI: License errors in CLI mode now return structured JSON output instead of attempting to open GUI dialogs
  • CLI: Added -license-unregister command to deactivate and remove license via command line
  • Migration log now stores IANA timezone name (e.g., "Europe/Berlin") for deterministic UTC computation across environments
  • CLI: Added exception handling for std::exception and generic exceptions in patch operations
  • CLI: Automatic headless mode on Linux — QT_QPA_PLATFORM=offscreen set automatically when CLI flags detected without DISPLAY
  • CLI: apply-patch update_index accepts fields to add index columns (idempotent)
  • CLI: NULLABLE_PK and other validation warnings for schema quality checks
  • CLI: schema-summary includes orm_attributes on all object types
  • CLI: new entities auto-create PK, many-to-many auto-creates join entity with composite PK
  • CLI: JSON escape auto-correction and forward-slash namespace conversion for AI tools
  • CLI: lifecycle callbacks configurable in single operation via values parameter
  • CLI: ORM attribute manipulation with Entity.field dotted notation for fields
  • CLI: add_many_to_many and update_many_to_many now persist owner/inverse aliases (previously applied in memory but lost on save, leaving the template-generated aliases)
  • Doctrine 2: PHP 8.4 property hooks ({ get; set; }, including by-reference &get) are now preserved when re-exporting an existing entity. Regression introduced in 3.4.4.
  • CLI: license commands (activate/info/unregister) route trace and message output to stderr, keeping stdout clean JSON for automation
  • CLI: apply-patch rejects unknown field data types (e.g. unsignedBigInteger) at write time instead of failing later during validate
  • CLI: update package extraction now blocks Zip Slip path traversal
  • CLI: -cli-export no longer fails with "Directory []" for a relative project path.
  • Migrations: custom before/after SQL is no longer lost on save; multi-query ordering fixed.
  • CLI: entity/module references resolve by full qualified name (fixes duplicate short names across modules).
  • CLI: add_association links a pre-existing same-named foreign-key column instead of creating a duplicate; a column already used by another association still gets its own column.
  • Fixed an application crash during automatic session-state autosave: when the temporary state database file was locked by another process (e.g. a second running Skipper instance), the backup error escaped into the Qt event loop and terminated the application. Autosave failures are now handled safely and the locked-file situation is avoided.
  • Doctrine 2: Re-exporting an existing entity now preserves custom property visibility (public / protected / private) instead of resetting it. Regression introduced in 3.4.4.
  • CLI: add_field/update_field handle unsigned attribute
  • CLI: INDEX_NO_FIELDS validation warning for indexes without field columns
  • CLI: add_index accepts fields parameter as both string and array (previously string was silently dropped)
  • Fixed migration export producing UTC datetime diffs when exporting on a server with a different timezone than the original author
  • CLI: Removed export-classes and export-migrations verbs; export pipeline generates all files in single pass
  • CLI: Fixed silent crash when module names cannot be resolved; added comprehensive exception handling
  • CLI: Fixed attribute inflation; removed unnecessary export metadata, reducing file size ~5x
  • CLI: Fixed temp directory path leaking into saved project files
  • Doctrine2: Fixed export of has-lifecycle-callbacks attribute to PHP 8 attributes format - was incorrectly placed as ORM\Table parameter instead of standalone #[ORM\HasLifecycleCallbacks] attribute
  • CLI: Fixed Linux CLI crash when X11 display forwarding is broken or unavailable
  • CLI: Fixed headless CLI commands hanging indefinitely on Linux when no license is present
  • Fixed viewer license rejected with MAINTENANCE_EXPIRED (viewer has no maintenance field)
  • Fixed ORM attribute path resolution failing for short entity names and forward-slash paths
  • Fixed many-to-many join entity FK fields missing primary key and NOT NULL constraints
  • Fixed entity rename creating copy in temporary module instead of renaming in-place

Build 3.5.0.1878, released July 7, 2026. All previous releases

Try the latest Skipper version

Download
FREE TRIAL