AI agent configuration sync for PHP projects. Author skills and guidelines once in
.ai/, publish to nine agents (Claude Code, Cursor, Copilot, Codex, Gemini, Junie, Kiro, OpenCode, Amp). Framework-free PHP, allowlist-based vendor trust, Rector-style explicit commands.
You don't usually install boost-core directly — it comes in as a dep of one of the bundle packages that match your role:
# PHP application developer
composer require --dev sandermuller/project-boost
# Laravel application developer — use the original, this family doesn't replace it
composer require --dev laravel/boost
# Framework-agnostic Composer package author
composer require --dev sandermuller/package-boost-php
# Laravel package author
composer require --dev sandermuller/package-boost-laravelDirect install for tooling authors who want to ship their own skill bundle:
composer require --dev sandermuller/boost-corecomposer boost:install # generate boost.php (if missing) + interactive picker for agents + vendor allowlist
composer boost:sync # fan out to selected agentsAfter install, every composer install / composer update re-runs boost:sync automatically (post-autoload-dump). Set BOOST_SKIP_AUTOSYNC=1 to disable.
For tooling authors who want to publish their own skills to every AI agent on the user's machine:
composer boost:sync --scope=user # ~/.{agent}/skills/<vendor>__<package>/<skill>/SKILL.mdIn composer global context (composer global require <skill-bearing-package>), the plugin auto-detects the global install and runs user-scope sync for every globally-installed package shipping resources/boost/skills/ — no manual --scope=user invocation required. Paths are namespaced by the full vendor/package slug (with / replaced by __, a sequence forbidden by the Composer name spec so distinct packages always produce distinct slugs), so vendor-a/foo and vendor-b/foo coexist cleanly under their own dirs.
SanderMuller\BoostCore\Scripts\BoostAutoSync::run is a cross-platform Composer script callback that consumer packages can wire into their own post-install-cmd / post-update-cmd hooks:
"scripts": {
"post-install-cmd": [
"SanderMuller\\BoostCore\\Scripts\\BoostAutoSync::run"
],
"post-update-cmd": [
"SanderMuller\\BoostCore\\Scripts\\BoostAutoSync::run"
]
}It checks Event::isDevMode(), resolves composer config.bin-dir, runs vendor/bin/boost sync and surfaces non-zero exits through Composer's IO. Works on Windows + Unix. Honors BOOST_SKIP_AUTOSYNC=1 (same escape hatch as the plugin's auto-sync hook). The plugin's onPostAutoloadDump already runs sync for end-user installs — this callback is for plugin packages in the boost-* family that want an explicit, cross-platform script entry of their own.
For user-invoked scripts (composer sync-ai, etc.) where silence on success reads as a no-op, use BoostAutoSync::runWithSummary instead — same behaviour but streams the binary's one-line success summary through Composer's IO:
"scripts": {
"post-install-cmd": ["SanderMuller\\BoostCore\\Scripts\\BoostAutoSync::run"],
"post-update-cmd": ["SanderMuller\\BoostCore\\Scripts\\BoostAutoSync::run"],
"sync-ai": ["SanderMuller\\BoostCore\\Scripts\\BoostAutoSync::runWithSummary"]
}boost:sync maintains a managed block in .gitignore so generated agent dirs (.claude/skills/, .cursor/skills/, CLAUDE.md, AGENTS.md, ...) stay out of version control. Edit skills in .ai/ only; the fan-out regenerates on next install.
Opt out per project:
return BoostConfig::configure()
->withGitignoreManagement(false)
->withAgents([...]);Or one-off via env var (useful for CI / ephemeral Docker installs):
BOOST_SKIP_GITIGNORE=1 composer installcomposer testThat runs the full Pest suite (unit + integration, including real composer install subprocesses for the standalone-bin, plugin-capability, and global-context surfaces). Coverage report via composer test-coverage.
See UPGRADING.md for breaking-change migrations between majors/minors.
Note
The FileEmitter plugin contract is @experimental — the shape will change before v1.0 stable.
See CHANGELOG.md for the full release history. The GitHub releases page has per-version notes.
See CONTRIBUTING.md for development setup, test conventions, and the pre-release gauntlet.
If you find a security issue, please email github@scode.nl rather than filing a public issue. See SECURITY.md for the disclosure policy.
Heavy inspiration from laravel/boost — this is its framework-free sibling.
MIT. See LICENSE.