mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-04-09 10:53:34 +08:00
Codex CLI requires YAML frontmatter (---) in SKILL.md files. 6 skills were missing frontmatter entirely; laravel-verification had a bare colon in its description causing an invalid YAML parse error.
180 lines
4.2 KiB
Markdown
180 lines
4.2 KiB
Markdown
---
|
|
name: laravel-verification
|
|
description: "Verification loop for Laravel projects: env checks, linting, static analysis, tests with coverage, security scans, and deployment readiness."
|
|
origin: ECC
|
|
---
|
|
|
|
# Laravel Verification Loop
|
|
|
|
Run before PRs, after major changes, and pre-deploy.
|
|
|
|
## When to Use
|
|
|
|
- Before opening a pull request for a Laravel project
|
|
- After major refactors or dependency upgrades
|
|
- Pre-deployment verification for staging or production
|
|
- Running full lint -> test -> security -> deploy readiness pipeline
|
|
|
|
## How It Works
|
|
|
|
- Run phases sequentially from environment checks through deployment readiness so each layer builds on the last.
|
|
- Environment and Composer checks gate everything else; stop immediately if they fail.
|
|
- Linting/static analysis should be clean before running full tests and coverage.
|
|
- Security and migration reviews happen after tests so you verify behavior before data or release steps.
|
|
- Build/deploy readiness and queue/scheduler checks are final gates; any failure blocks release.
|
|
|
|
## Phase 1: Environment Checks
|
|
|
|
```bash
|
|
php -v
|
|
composer --version
|
|
php artisan --version
|
|
```
|
|
|
|
- Verify `.env` is present and required keys exist
|
|
- Confirm `APP_DEBUG=false` for production environments
|
|
- Confirm `APP_ENV` matches the target deployment (`production`, `staging`)
|
|
|
|
If using Laravel Sail locally:
|
|
|
|
```bash
|
|
./vendor/bin/sail php -v
|
|
./vendor/bin/sail artisan --version
|
|
```
|
|
|
|
## Phase 1.5: Composer and Autoload
|
|
|
|
```bash
|
|
composer validate
|
|
composer dump-autoload -o
|
|
```
|
|
|
|
## Phase 2: Linting and Static Analysis
|
|
|
|
```bash
|
|
vendor/bin/pint --test
|
|
vendor/bin/phpstan analyse
|
|
```
|
|
|
|
If your project uses Psalm instead of PHPStan:
|
|
|
|
```bash
|
|
vendor/bin/psalm
|
|
```
|
|
|
|
## Phase 3: Tests and Coverage
|
|
|
|
```bash
|
|
php artisan test
|
|
```
|
|
|
|
Coverage (CI):
|
|
|
|
```bash
|
|
XDEBUG_MODE=coverage php artisan test --coverage
|
|
```
|
|
|
|
CI example (format -> static analysis -> tests):
|
|
|
|
```bash
|
|
vendor/bin/pint --test
|
|
vendor/bin/phpstan analyse
|
|
XDEBUG_MODE=coverage php artisan test --coverage
|
|
```
|
|
|
|
## Phase 4: Security and Dependency Checks
|
|
|
|
```bash
|
|
composer audit
|
|
```
|
|
|
|
## Phase 5: Database and Migrations
|
|
|
|
```bash
|
|
php artisan migrate --pretend
|
|
php artisan migrate:status
|
|
```
|
|
|
|
- Review destructive migrations carefully
|
|
- Ensure migration filenames follow `Y_m_d_His_*` (e.g., `2025_03_14_154210_create_orders_table.php`) and describe the change clearly
|
|
- Ensure rollbacks are possible
|
|
- Verify `down()` methods and avoid irreversible data loss without explicit backups
|
|
|
|
## Phase 6: Build and Deployment Readiness
|
|
|
|
```bash
|
|
php artisan optimize:clear
|
|
php artisan config:cache
|
|
php artisan route:cache
|
|
php artisan view:cache
|
|
```
|
|
|
|
- Ensure cache warmups succeed in production configuration
|
|
- Verify queue workers and scheduler are configured
|
|
- Confirm `storage/` and `bootstrap/cache/` are writable in the target environment
|
|
|
|
## Phase 7: Queue and Scheduler Checks
|
|
|
|
```bash
|
|
php artisan schedule:list
|
|
php artisan queue:failed
|
|
```
|
|
|
|
If Horizon is used:
|
|
|
|
```bash
|
|
php artisan horizon:status
|
|
```
|
|
|
|
If `queue:monitor` is available, use it to check backlog without processing jobs:
|
|
|
|
```bash
|
|
php artisan queue:monitor default --max=100
|
|
```
|
|
|
|
Active verification (staging only): dispatch a no-op job to a dedicated queue and run a single worker to process it (ensure a non-`sync` queue connection is configured).
|
|
|
|
```bash
|
|
php artisan tinker --execute="dispatch((new App\\Jobs\\QueueHealthcheck())->onQueue('healthcheck'))"
|
|
php artisan queue:work --once --queue=healthcheck
|
|
```
|
|
|
|
Verify the job produced the expected side effect (log entry, healthcheck table row, or metric).
|
|
|
|
Only run this on non-production environments where processing a test job is safe.
|
|
|
|
## Examples
|
|
|
|
Minimal flow:
|
|
|
|
```bash
|
|
php -v
|
|
composer --version
|
|
php artisan --version
|
|
composer validate
|
|
vendor/bin/pint --test
|
|
vendor/bin/phpstan analyse
|
|
php artisan test
|
|
composer audit
|
|
php artisan migrate --pretend
|
|
php artisan config:cache
|
|
php artisan queue:failed
|
|
```
|
|
|
|
CI-style pipeline:
|
|
|
|
```bash
|
|
composer validate
|
|
composer dump-autoload -o
|
|
vendor/bin/pint --test
|
|
vendor/bin/phpstan analyse
|
|
XDEBUG_MODE=coverage php artisan test --coverage
|
|
composer audit
|
|
php artisan migrate --pretend
|
|
php artisan optimize:clear
|
|
php artisan config:cache
|
|
php artisan route:cache
|
|
php artisan view:cache
|
|
php artisan schedule:list
|
|
```
|