artisan-toolbox/maintainer
Artisan Toolbox Maintainer is a Laravel package that adds maintainer-focused Artisan commands for everyday app upkeep, including maintenance mode, cache clearing, and routine operational tasks. It offers a simple, discoverable CLI workflow for keeping applications healthy and easy to manage.
php artisan vendor:publish), then set the credentials for your AI provider (typically an API key plus a default model in config/ai.php and the package config). Verify the exact key names in the published config file — the release notes confirm no public config keys changed in 1.5.2.LaravelAiReleaseChangelogGenerator, where validation and self::TYPES live), the agent (ReleaseChangelogAgent, which carries #[Strict] and #[UseCheapestModel]), and the package config for the commit range/tag source.type, scope, and description before wiring it into a real release.CHANGELOG.md and commit. This costs one extra step and saves you from a release that fails after the tag exists.RuntimeException explicitly. The message carries the commit hash, a truncated debug representation of the bad type, and the full allowed set. Pipe it straight into your CI log/Slack notification; it is designed to be actionable without further triage.ReleaseChangelogAgent runs with #[Strict] and #[UseCheapestModel], it is a cheap, schema-validated structured-output agent. You can reuse it (or a subclass) to draft PR descriptions, release notes for a minor branch, or a "what changed" summary — anything that should be constrained to Conventional Commit types.type, not on prose. Structured output guarantees the enum, not the judgement. Reviewing whether a refactor was really a perf is the highest-value edit you can make; rewording descriptions is lower value.feature, bugfix, or a free-text category, your release now aborts. Audit any workflow, custom prompt, or fine-tuned model that was producing non-standard types before you upgrade — that is the only realistic migration work.strict: true) constraining entries[].type to feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert. Providers that do not fully honour strict JSON-schema mode may reject the request or silently degrade, so validate on your actual provider and model rather than assuming parity with OpenAI.null and non-string types are now hard failures, not coerced values. If you parse or post-process generator output yourself, do not rely on lenient handling downstream — it will never see those cases again.#[UseCheapestModel] plus #[Strict] is a deliberate trade. Cheap models with schema enforcement are fine for classification, but expect occasional retries or aborts on ambiguous commits. If you see repeated failures, improve the commit subject lines before upgrading the model — garbage-in still dominates here.type enum only.Fix stuff or WIP will either be skipped or produce a chore/revert-ish guess you will have to correct. Add a commit-lint check to the PR pipeline; it is cheaper than debugging a failed release at 6pm on a Friday.How can I help you explore Laravel packages today?