bartollo / pipeline-kit
Artisan command that installs/merges the Claude Code + Sloppy + Laravel Boost quality pipeline into a Laravel project
Requires
- php: ^8.1
- illuminate/console: ^10.0|^11.0|^12.0|^13.0
- illuminate/support: ^10.0|^11.0|^12.0|^13.0
Requires (Dev)
- phpunit/phpunit: ^10.0|^11.0|^12.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-10-06 14:38:38 UTC
README
Installs/merges the Claude Code + Sloppy + Laravel Boost quality pipeline
(described in stubs/PIPELINE.md) into another Laravel
project. Available in two forms:
- Standalone script (
install.php) — no installation needed, run from outside the target project. - Composer package with an artisan command (this README) — installed
into the target project and run from inside it via
php artisan pipeline:install.
Installing it in another project
This package's code lives at
github.com/bartollo/pipeline-kit
(tag v1.0.0 onward). While it isn't published on Packagist yet, add it as a
vcs repository in the other project's composer.json:
"repositories": [ { "type": "vcs", "url": "https://github.com/bartollo/pipeline-kit.git" } ]
Then:
composer require --dev bartollo/pipeline-kit:^1.0
If the package is already on Packagist, the repositories step above isn't
needed — composer require --dev bartollo/pipeline-kit resolves it directly.
If both projects sit side by side on disk (as in this monorepo, which uses
pipeline-kit/ itself as a local dependency for dogfooding), a path
repository works too:
"repositories": [ { "type": "path", "url": "../laravel-ai-pipeline/pipeline-kit" } ]
composer require --dev bartollo/pipeline-kit:@dev
The service provider is auto-discovered by Laravel (extra.laravel.providers
in the package's composer.json) — nothing to register manually.
Usage
php artisan pipeline:install # applies it php artisan pipeline:install --dry-run # just shows what it would do php artisan pipeline:install --force # overwrites phpstan.neon, boost.json, # CLAUDE.md and PIPELINE.md if they # already exist (backs up to .bak first)
The command always operates on the project it's run in (base_path()) — it
doesn't take a target path, because it's already installed inside the
project you want to configure.
Same additive/idempotent logic as the standalone script: it never overwrites
hooks, require-dev packages, or scripts already present in the target,
unless you pass --force (and even then, only for the four whole-file
copies, never for composer.json).
Package structure
pipeline-kit/
├── composer.json # package manifest (bartollo/pipeline-kit)
├── src/
│ ├── PipelineKitServiceProvider.php
│ ├── Console/Commands/InstallPipelineCommand.php
│ └── PipelineMerger.php # merge logic, no Laravel dependency
├── stubs/ # bundled copies of .mcp.json, CLAUDE.md, etc.
├── bin/sync-stubs.php # resyncs stubs/ from the source project's real files
└── tests/PipelineMergerTest.php
Maintenance (only relevant to whoever maintains the source repo)
The files under stubs/ are copies — once installed in another project, the
package no longer has access to the source repo's real files. After editing
CLAUDE.md, PIPELINE.md, .mcp.json, .claude/settings*.json,
phpstan.neon, boost.json, or the pipeline's package/script list, run:
php pipeline-kit/bin/sync-stubs.php
Tests
cd pipeline-kit && php ../vendor/bin/phpunit -c phpunit.xml
(PipelineMerger doesn't depend on Laravel, so the tests run with plain
PHPUnit — no need to install the package or use orchestra/testbench.)