sandermuller/package-boost

AI-assisted development tooling for Laravel package developers

Maintainers

Package info

github.com/SanderMuller/package-boost

Homepage

pkg:composer/sandermuller/package-boost

Statistics

Installs: 3 230

Dependents: 6

Suggesters: 0

Stars: 1

Open Issues: 0

0.5.0 2026-04-18 22:48 UTC

This package is auto-updated.

Last update: 2026-04-18 23:31:00 UTC


README

AI tooling for Laravel package developers. Bridges the gap between Laravel Boost (designed for applications) and package development with Orchestra Testbench.

What It Does

  • Syncs .ai/skills/ to .claude/skills/ and .github/skills/ so Claude Code, GitHub Copilot, and Codex can use them
  • Syncs .ai/guidelines/ into CLAUDE.md, AGENTS.md, and .github/copilot-instructions.md
  • Generates .mcp.json pointing to vendor/bin/testbench boost:mcp when Boost is installed
  • Ships a package-development skill that teaches AI agents how to work with Testbench

Installation

composer require sandermuller/package-boost --dev

Add the service provider to your testbench.yaml:

providers:
  - SanderMuller\PackageBoost\PackageBoostServiceProvider

Usage

1. Create your skills and guidelines

.ai/
├── guidelines/
│   └── my-conventions.md
└── skills/
    └── my-skill/
        └── SKILL.md

2. Sync to agent directories

vendor/bin/testbench package-boost:sync

3. Commit the generated files

The sync copies your .ai/ files to the directories each AI tool expects. Commit both the source (.ai/) and the generated files (.claude/, .github/, CLAUDE.md, AGENTS.md).

Selective sync

vendor/bin/testbench package-boost:sync --skills
vendor/bin/testbench package-boost:sync --guidelines
vendor/bin/testbench package-boost:sync --mcp

CI drift check

vendor/bin/testbench package-boost:sync --check

Reports planned actions without writing. Exits non-zero if any skill, guideline, or MCP target differs from its source. Use in CI to catch "forgot to sync" commits.

JSON output

vendor/bin/testbench package-boost:sync --check --format=json

Emits a structured JSON document on stdout — parseable by jq or programmatic consumers:

{
    "schema": 1,
    "check": true,
    "drift": false,
    "skills": { "new": [], "updated": [], "removed": [], "unchanged": 6 },
    "guidelines": { "new": [], "updated": [], "removed": [], "unchanged": 3 },
    "mcp": { "action": "unchanged", "target": ".mcp.json" }
}

Example GitHub Actions step that fails the job and lists drifted targets in one go:

- name: Check package-boost sync
  run: |
      report=$(vendor/bin/testbench package-boost:sync --check --format=json || true)
      drift=$(echo "$report" | jq -r '.drift')
      if [ "$drift" = "true" ]; then
          echo "::error::package-boost sync drift detected"
          echo "$report" | jq -r '.guidelines.updated[].target,.skills.new[].target'
          exit 1
      fi

Pass --show-unchanged to turn the unchanged field from an int count into a full array of {target} entries.

Verbose output

vendor/bin/testbench package-boost:sync --show-unchanged

By default, the sync output lists only targets that changed and folds unchanged ones into the total: ... summary. Pass --show-unchanged to print a line per unchanged target as well.

Composer script

{
    "scripts": {
        "sync-ai": "vendor/bin/testbench package-boost:sync"
    }
}

With Laravel Boost

When laravel/boost is also installed as a dev dependency, you get:

  • MCP serverpackage-boost:sync --mcp generates the correct .mcp.json config
  • Doc search — Boost's search-docs tool works out of the box via Testbench
  • Shipped package-development skill — ships via resources/boost/skills/ and is bundled into .claude/skills/ and .github/skills/ by package-boost:sync, so downstream agents always get it regardless of Boost version.
  • Package-tuned foundation — ships resources/boost/guidelines/foundation.md with package-dev framing (Testbench harness, semver, public API discipline). package-boost:sync bundles it into the <package-boost-guidelines> block ahead of any user-authored .ai/guidelines/ content, separated by a horizontal rule.
  • App-only guidelines stripped — defaults exclude foundation (Boost's app-tuned version), Inertia, Livewire, Filament, Volt, Folio, Pennant, Wayfinder, Nightwatch, Pulse, Herd, Sail, Tailwind, Vite, deployments, and laravel/style|api|localization

Customising excluded guidelines

Publish the config and edit config/package-boost.php:

vendor/bin/testbench vendor:publish --tag=package-boost-config

The excluded_boost_guidelines array is merged into boost.guidelines.exclude at boot. Keys match Boost's GuidelineComposer keys exactly (e.g. livewire/core, filament/v4, herd).

How It Differs from Laravel Boost

Laravel Boost Package Boost
For Laravel applications Laravel packages
Runs via php artisan vendor/bin/testbench
Discovers skills From app + vendor packages From .ai/ directory
Generates guidelines Composes from installed packages Copies your markdown files
MCP server Built-in Delegates to Boost when installed

License

MIT