sandermuller/boost-skills
sandermuller/boost-skills is a Composer-distributed catalog of AI agent skills for PHP and Laravel projects. It ships Markdown-only workflow skills, tag-gated framework extras, and always-on guidelines that Laravel Boost or boost-core syncs into your configured AI agent directories.
Sander Muller's personal Composer-distributed catalog of AI agent skills for PHP projects and Composer packages. Adopt it if your preferences align with Sander's, or use it as a template for your own.
sandermuller/boost-skills is one example of a Composer-distributed AI-skill catalog. It ships a curated mix of generic workflow skills (code review, bug fixing, spec-driven implementation, release checklists, Jira workflows, deployment, and more), tag-gated framework-specific extras, and always-on guidelines — see the full Skills and Guidelines inventories below.
The package carries no runtime code; it's pure Markdown. A sync engine (sandermuller/boost-core or laravel/boost) reads these skills and writes them into each AI agent directory you've configured (Claude Code, Cursor, Copilot, Codex, Gemini, and the rest).
Documentation: https://sandermuller.github.io/boost-core/packages/boost-skills/
Install the catalog next to the family package for your role:
composer require --dev sandermuller/boost-skills sandermuller/package-boost-php
Swap package-boost-php for the member that matches your project — the
picker decides
it in two questions. Then allowlist this vendor, because a catalog ships nothing
until you name it:
return BoostConfig::configure()
->withAgents([Agent::CLAUDE_CODE, Agent::COPILOT, Agent::CODEX])
->withAllowedVendors([
'sandermuller/boost-skills',
'sandermuller/package-boost-php',
])
->withTags(['php', 'github']);
vendor/bin/boost install # the picker offers this vendor; select it
vendor/bin/boost sync
vendor/bin/boost tags shows which tagged content is filtered out, so you can
see what declaring one more tag would unlock.
Under laravel/boost instead of the family engine, follow
its own setup and make sure this package is
among the ones it syncs. Tag filtering and Project Conventions slots go inert
there; the skills carry visible defaults, so a slot still reads as sensible
wording.
| Topic | Page |
|---|---|
| Adopting the catalog, editing a skill | Overview |
| The same inventory, rendered | Skill catalog |
| Where skills come from, and which gates apply | Skill sources |
How tags and boost-requires work |
Tags and dependencies |
| The conventions slot mechanism | Project Conventions |
| Shipping scripts beside a skill | Skill assets |
Re-syncing on composer install |
Automating the sync |
The rest of this README is the inventory: what this catalog ships, under which tags.
| Skill | What it does | Tags |
|---|---|---|
ai-guidelines |
Create and maintain AI skills and guideline files (.ai/, CLAUDE.md, AGENTS.md). |
— |
autoresearch |
Autonomous performance loop: benchmark, change code, then keep or revert by measured result. | php |
backend-quality |
Two-tier PHP quality gate: Pint + related tests on every change, PHPStan + full suite on completion. | php |
bug-fixing |
Test-driven bug workflow: reproduce with a failing test, then fix it. | — |
clarify |
Turn a fuzzy ask into sharp, fact-checked intent — reduce ambiguity, sharpen terms, surface assumptions. Shared core of interview and promptimize. |
— |
clean-specs |
Command-only (/clean-specs): remove spec files whose work is fully implemented and merged to the base branch, keeping only live work. |
— |
code-review |
Review recent changes across functionality, code quality, security, and tests. | — |
codex-review |
Request an independent review from the OpenAI Codex CLI, apply the warranted fixes, re-review until clean. | — |
deploying-laravel-cloud |
Deploy and manage Laravel apps on Laravel Cloud via the cloud CLI — environments, databases, domains, billing. |
laravel-cloud hosting |
eloquent-models |
Create and maintain Eloquent models with column/relation constants, comprehensive docblocks, and FK constants. | laravel |
evaluate |
Self-review a full implementation and fix the issues it surfaces. | — |
eye-verification |
Command-only (/eye-verification): mandatory browser pass over a frontend change — resolve the testables, drive each one, publish the proof screenshots. |
frontend |
final-verification-review |
Closeout verdict: run the full evaluate loop, dry-run the closeout preflight (PR flow or no-PR commit/release), report READY / NOT READY. | github |
frontend-quality |
Frontend quality gate: type-checking, linting, and the JS test suite; browser eye-verify for UI changes, with a shipped harness. | frontend |
github-issue-updates |
Append a user-facing description and QA testables to a GitHub issue after a feature ships. | github-issues |
humanizer |
Remove signs of AI-generated writing so text reads as natural and human. | — |
implement-spec |
Implement a specification file phase by phase with progress tracking. | — |
interview |
Adversarially grill out a complex feature's requirements — code-first, assumptions-audited — before writing its spec. | — |
jira-create |
Create a Jira issue with a well-formed, user-facing description. | jira |
jira-rework |
Research a Jira issue sent back for rework, then propose fix options. | jira github |
jira-updates |
Update a Jira issue after its PR is created; post Blocked-by-Question comments. | jira |
migration-squash |
Create or review a Laravel migration squash safely — pre-flight the dump, then a checklist catching incomplete, contaminated, or data-losing baselines. | laravel |
pr-review-feedback |
Apply PR review comments, evaluating each critically before acting. | github |
pre-release |
Pre-push gauntlet: Rector, Pint, full test suite, PHPStan, and a doc-staleness audit (README, docs site, .ai/). |
php github release-automation |
promptimize |
Turn a rough prompt into one optimized, model-agnostic prompt — close gaps, fact-check against the codebase, rewrite, return only the prompt. | — |
pull-requests |
Create and manage your own GitHub PRs via gh: write the description, verify, route by risk. |
github |
readme |
Author and maintain a high-quality README for a Composer package — stub, comprehensive, or docs-site shape, voice, staleness + docs index/link audits. | release-automation |
release-notes |
Draft GitHub release bodies for Composer packages — structure, voice, breaking-change callouts, what to omit. | release-automation |
resolve-conflicts |
Resolve git merge conflicts without dropping functionality from either side. | — |
test-writing |
Write specific, descriptively named tests that follow Arrange-Act-Assert. | — |
upgrading |
Canonical structure for UPGRADING.md in a Composer package — when to maintain one, what to put in it. | release-automation |
ux-review |
Weigh UX/UI options for a new feature, recommend an approach, and document the decision. | — |
write-spec |
Write implementation-ready specification files with progress-trackable phases. | — |
Most skills and guidelines are universal — they sync to every project. Some carry capability tags naming what the project needs (or has opted in to) for the content to be useful. A project declares its capabilities in boost.php via ->withTags(...), and only matching content syncs.
The tag mechanism (subset-AND match, withTags() declaration in boost.php, metadata.boost-tags in skill frontmatter, the .boost-tags.yaml sidecar manifest for guidelines) is family-canonical — defined by boost-core and applies to any Composer-distributed catalog. The tag vocabulary below is one catalog's choice — Sander's mix of capabilities surfaced by skills and guidelines boost-skills ships. Other catalogs may organize differently. Owner names which boost-family package ships the content using each tag.
boost-core ships a broader Tag enum (SanderMuller\BoostCore\Enums\Tag) with cases not bound to any skill in this catalog — Tag::Filament, Tag::Livewire, Tag::Volt, Tag::Inertia, Tag::Flux, Tag::Pest, Tag::Tailwind, and others. These are forward-compatible slots in the family vocabulary. Declaring them in your withTags(...) is harmless today (no shipped skill targets them yet) and survives boost install picker re-runs per boost-core's declared-but-undiscovered preservation rule. The table below covers only the tags boost-skills itself currently ships content under; see Tag::* in boost-core for the full enum vocabulary.
| Tag | Meaning | Owner |
|---|---|---|
boost-extension |
opt-in — extending boost-core (custom skills + FileEmitters) | package-boost-php |
database |
project has a database | boost-skills |
frontend |
frontend toolchain — type-checking, linting, JS tests | boost-skills |
github |
hosted on GitHub | boost-skills |
github-issues |
issue tracking in GitHub Issues | boost-skills |
hosting |
project deploys to a hosted platform (parent of platform-specific tags) | boost-skills |
jira |
issue tracking in Jira | boost-skills |
laravel |
project uses the Laravel framework (Eloquent, service providers, etc.) | boost-skills |
laravel-cloud |
app deploys to Laravel Cloud (pair with hosting) |
boost-skills |
php |
PHP toolchain — Pint, PHPStan, Rector | boost-skills |
release-automation |
opt-in — release flow content: README authoring, release notes, UPGRADING, CI changelog automation | boost-skills, package-boost-php |
single-issue-scope |
opt-in — enforce single-issue PR/branch/session discipline | boost-skills |
voice |
opt-in — route every writing surface to one voice rule (ASD-STE100 Simplified Technical English) | boost-skills |
github and github-issues are independent. github covers any GitHub-hosted repo (used by PR and release skills); github-issues is the narrower tag for projects that track issues in GitHub Issues specifically. A repo hosted on GitHub but tracking issues in Jira declares github but not github-issues. Both are independently declarable in ->withTags(...).
A skill or guideline can carry more than one tag, and then applies only where the project declares all of them — jira-rework is jira + github. Skill tags live inline in the skill's SKILL.md frontmatter (metadata.boost-tags); guideline tags live in a sidecar .boost-tags.yaml manifest (guidelines stay frontmatter-free for laravel/boost compatibility). Filtering needs boost-core 0.5+ for skills and 0.6+ for the guideline manifest; on older versions or under laravel/boost, the tags are inert and everything in this package syncs.
Alongside skills, the package ships guidelines under resources/boost/guidelines/ — short Markdown files of project-wide conventions that the sync engine folds into CLAUDE.md / AGENTS.md. Unlike skills, guidelines are always active — no on-demand activation.
Guidelines can be tagged, like skills, so one ships only to projects with the matching capability. But a guideline file stays frontmatter-free (for laravel/boost compatibility — it has no guideline frontmatter parser), so the tags live in a sidecar resources/boost/guidelines/.boost-tags.yaml manifest instead. boost-core 0.6.0+ reads it; on older boost-core and under laravel/boost the manifest is inert and every guideline ships.
| Guideline | What it covers | Tags |
|---|---|---|
ask-user-question |
Avoid first/second-person pronouns in AskUserQuestion payloads — name the actor instead. | — |
database-safety |
Never run destructive database commands; treat the test database as test-runner-owned. | database |
javascript |
JS/TS control-structure style — always use curly braces, no single-line conditionals. | frontend |
migrations |
Self-contained migration files; append columns instead of positioning them mid-table. | database |
phpstan-fixing |
Fixing a PHPStan error — write a failing test first when it maps to a runtime bug. | php |
signed-commits |
Never fall back to an unsigned commit when signing is enabled — surface the failure to fix it instead. | — |
single-issue-scope |
Keep each session, branch, and PR focused on exactly one issue. | single-issue-scope (opt-in) |
verification-before-completion |
Run the verification command and read its output before claiming work is done. | — |
voice |
One voice rule per writing surface — a routing table plus the Simplified Technical English rules. | voice (opt-in) |
Each skill is a Markdown file at resources/boost/skills/<name>/SKILL.md with YAML frontmatter — name and description, plus optional metadata (a skill's boost-tags live here) and argument-hint. Guidelines are plain Markdown at resources/boost/guidelines/<name>.md with no frontmatter — they must start directly at a heading, so they render correctly under both boost-core and laravel/boost. Edit both here in this repository, not in a consuming project's synced copy, which boost-core overwrites on the next sync. The ai-guidelines skill documents the frontmatter contract and authoring conventions.
See CHANGELOG.md for release history.
Found a vulnerability? Email [email protected] rather than opening a public issue. See SECURITY.md for the disclosure policy.
MIT. See LICENSE.
How can I help you explore Laravel packages today?