jorgecortesdev / laravel-claudify
Configure Claude Code for Laravel projects. Installs skills, agents, plugins, permissions, hooks, and MCP server configs automatically.
Package info
github.com/jorgecortesdev/laravel-claudify
pkg:composer/jorgecortesdev/laravel-claudify
Requires
- php: ^8.2
- illuminate/console: ^11.0|^12.0|^13.0
- illuminate/filesystem: ^11.0|^12.0|^13.0
- illuminate/support: ^11.0|^12.0|^13.0
Requires (Dev)
- laravel/pint: ^1.0
- orchestra/testbench: ^9.0|^10.0|^11.0
- pestphp/pest: ^3.0|^4.0
Suggests
- laravel/boost: Provides MCP tools, guidelines, and skills for Claude Code (^2.0)
README
Configure Claude Code for Laravel projects with a single command.
Claudify detects your stack from composer.json and package.json, then sets up permissions, hooks, skills, and plugins — so you don't configure Claude Code manually for every Laravel app.
Requirements
- PHP 8.2+
- Laravel 11, 12, or 13
- Claude Code CLI
Installation
composer require jorgecortesdev/laravel-claudify --dev
Then run the install command:
php artisan claudify:install
What it does
The install command runs these steps in order:
1. Checks for Claude Code CLI
Exits with an error if claude is not in your PATH.
2. Detects your stack
Reads composer.json and package.json to detect:
- Pest, Pint, Boost (from
require-dev) - Node, Prettier, ESLint (from
package.json)
3. Offers to install Laravel Boost
If laravel/boost is not installed and your Laravel version supports it (11.45.3+, 12.41.1+, or 13+), you'll be asked whether to install it. Boost provides MCP tools, guidelines, and skills for Claude Code.
4. Installs hooks
Copies auto-format scripts to .claude/hooks/ based on detected formatters:
| Hook | Condition | What it does |
|---|---|---|
pint-format.sh |
Pint detected | Runs Pint on .php files after edits |
prettier-format.sh |
Prettier detected | Runs Prettier on non-PHP files after edits |
5. Writes .claude/settings.json
Generates permissions and deny rules based on your stack:
Base permissions (always included):
Bash(php:*),Bash(php artisan:*),Bash(composer:*)
Conditional permissions (when detected):
| Condition | Permissions added |
|---|---|
| Pest | Bash(vendor/bin/pest:*) |
| Pint | Bash(vendor/bin/pint:*), Bash(vendor/bin/pint --dirty:*) |
| Node | Bash(npm:*), Bash(npx:*) |
| Boost | All 9 Boost MCP tools: search-docs, application-info, database-query, database-schema, database-connections, read-log-entries, browser-logs, get-absolute-url, last-error |
Deny rules (always included):
Edit(.env*),Write(.env*)
Hooks (when formatters detected):
- PostToolUse on Edit/Write: runs Pint on
.phpfiles, Prettier on non-PHP files
If .claude/settings.json already exists, new settings are merged without overwriting your existing configuration. Duplicate permissions are deduplicated automatically.
6. Installs skills
Copies Laravel-specific skills to .claude/skills/:
| Skill | What it provides |
|---|---|
laravel-debugging |
Root-cause debugging: log inspection, reproduction tests, common bug patterns (N+1, mass assignment, middleware order, queue serialization) |
laravel-tdd-pest |
TDD with Pest: red-green-refactor cycle, HTTP testing, fakes, factories, database assertions, Sanctum/Gate/Inertia patterns |
laravel-conventions |
Coding standards: strict types, type hints, readonly DTOs, enums, naming conventions, file organization |
laravel-security |
Security patterns: input validation, Sanctum auth, policies, SQL injection, XSS, CSRF, rate limiting, file uploads |
laravel-architecture |
Application structure: services vs actions, when to extract, repositories (usually not), events vs observers, jobs, scaling patterns |
laravel-testing-browser |
Browser testing with Pest 4: visit(), interactions, assertions, smoke tests, mobile/device testing, dark mode, accessibility, visual regression, debugging |
Skills are tracked via a .claudify-manifest.json file so user-created skills in .claude/skills/ are never touched.
7. Installs plugins
Installs Claude Code plugins per-project using the claude CLI:
| Plugin | Condition |
|---|---|
laravel-simplifier@laravel |
Always |
php-lsp@claude-plugins-official |
Always |
typescript-lsp@claude-plugins-official |
Node dependencies detected |
Plugins already installed at any scope (user, project, or local) are skipped.
Dry run
Preview what would be configured without writing files:
php artisan claudify:install --dry-run
This shows the settings JSON, hook scripts, and skills that would be installed. It does not preview Boost installation or plugin installation since those require network access.
Auto-update on composer update
Add the update command to your composer.json so Claudify refreshes automatically when the package is updated:
{
"scripts": {
"post-update-cmd": [
"@php artisan claudify:update --ansi"
]
}
}
The update command re-runs guidelines, hooks, settings, and skills non-interactively. It skips Boost installation and plugin installation — those are first-install concerns handled by claudify:install.
Re-running
Safe to re-run claudify:install at any time. Settings are merged (not overwritten), skills are updated, and plugins already installed are skipped. Run it again after adding packages like Pest or Prettier to pick up new permissions and hooks.
Testing
composer test
Formatting
composer format
Acknowledgements
This package was inspired by Laravel Boost and its approach to configuring AI tools for Laravel projects. Some of the bundled skills were informed by community-shared Claude Code skills found across GitHub, rewritten and adapted for consistency and correctness.
License
MIT License. See LICENSE for details.