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):
php artisan package:release <package-dir> [--major|--minor|--tag=v1.2.0] \
[--message="β¦"] [--all] [--no-ai] [--yes] [--dry-run]The flow:
- Discover the package repositories.
- Resolve the next tag β a patch bump by default; the first release is
v1.0.0. Use--minor/--majorfor a wider bump, or--tag=to pin one. - Stage everything (
git add .). - Write the commit message β generated by a local AI model, or type it
yourself with
--no-ai. - Commit, tag (annotated), and push the branch and tag.
- 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:
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 indexThat'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:
composer update oi-lab/oi-laravel-ts-
AI skills refresh automatically. Each package re-syncs its skill on
post-autoload-dump, socomposer updatealso 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:
bashphp 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 package | composer require oi-lab/oi-laravel-<slug> |
| Update a package | composer update oi-lab/oi-laravel-<slug> |
| Publish its config | php artisan vendor:publish --tag=oi-laravel-<slug>-config |
| Install/refresh its AI skill | php artisan oi:skills <skill-slug> --project |
| Cut a release (maintainer) | php artisan package:release <slug> |