Publishing & updates

How OI Laravel packages are released to Packagist, and how you keep your installed packages and their AI skills up to date

Publishing & updates

The ecosystem shares a single, repeatable release workflow. This page covers both sides: how packages are published, and how you keep them updated.

How packages are published

Each package is its own git repository, with origin pointing at https://github.com/oi-lab/<slug>.git. During development they're consumed through a Composer path repository with "symlink": true, so local changes are picked up instantly without a publish step.

Releases are cut with the package:release command (provided by oi-laravel-development):

bash
php artisan package:release <package-dir> [--major|--minor|--tag=v1.2.0] \
    [--message="…"] [--all] [--no-ai] [--yes] [--dry-run]

The flow:

  1. Discover the package repositories.
  2. Resolve the next tag β€” a patch bump by default; the first release is v1.0.0. Use --minor / --major for a wider bump, or --tag= to pin one.
  3. Stage everything (git add .).
  4. Write the commit message β€” generated by a local AI model, or type it yourself with --no-ai.
  5. Commit, tag (annotated), and push the branch and tag.
  6. Packagist picks up the new GitHub tag and the version goes live.

Versioning follows SemVer, and each package is released independently on its own cadence β€” see Requirements & compatibility.

How documentation is published

Package documentation is authored inside each package under a docs/ tree (the standard four sections: Getting Started, Usage, Configuration, Advanced). It's imported into a host documentation site β€” like this one β€” with the doc:import command from oi-laravel-documentation, then the navigation and search index are regenerated:

bash
php artisan doc:import          # pull a package's docs/ into the site
php artisan doc:gen-nav         # rebuild navigation.json
php artisan doc:gen-index       # rebuild the search index

That's how every package's docs end up on this site with consistent structure and full-text search.

Keeping your installation up to date

As a consumer, updating is ordinary Composer β€” with two OI Lab conveniences:

bash
composer update oi-lab/oi-laravel-ts
  • AI skills refresh automatically. Each package re-syncs its skill on post-autoload-dump, so composer update also updates the committed skill copies. If a package changed its API, your assistant's context updates with it.

  • Refresh CLAUDE.md rules when you want the latest trigger rules or a newly added skill in your project:

    bash
    php artisan oi:skills <skill-slug> --project

See Skills & AI for how the skill sync works in detail.

At a glance

You want to…Run
Install a packagecomposer require oi-lab/oi-laravel-<slug>
Update a packagecomposer update oi-lab/oi-laravel-<slug>
Publish its configphp artisan vendor:publish --tag=oi-laravel-<slug>-config
Install/refresh its AI skillphp artisan oi:skills <skill-slug> --project
Cut a release (maintainer)php artisan package:release <slug>
Project under MIT License.
Design by