agentsclimarketplace

Deploy checklist

Skill edulazaro/laraclaude/skills/deploy-checklist

Verify the project is production-ready with a comprehensive checklist.From its SKILL.md

Install
npx -y skills add edulazaro/laraclaude --skill deploy-checklist

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 12 stars12 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

8.2 KB, as published. Nobody here has run it

Deploy Checklist

Verify that a Laravel project is production-ready by checking configuration, security, performance, and code quality. Reports a pass/fail checklist with remediation steps for each failure.

Subcommands

SubcommandDescription
(no argument)Run the full deployment readiness checklist. Read-only report.

This is an analysis-only skill. It reports findings but does not modify files. Use the suggested remediation steps or other skills (e.g., lc:security-audit, lc:docker-check) to fix issues.

Checklist Categories

1. Environment Configuration

APP_DEBUG

  • Check: Read .env and verify APP_DEBUG=false.
  • Also check: config/app.php uses env('APP_DEBUG', false) (not hardcoded true).
  • PASS: APP_DEBUG=false or not set (defaults to false)
  • FAIL: APP_DEBUG=true
  • Why it matters: Debug mode exposes sensitive information (stack traces, env variables, database credentials) to end users.

APP_ENV

  • Check: Read .env and verify APP_ENV=production.
  • PASS: APP_ENV=production
  • FAIL: APP_ENV=local or APP_ENV=staging
  • Why it matters: Some packages and features behave differently in production vs other environments.

APP_KEY

  • Check: APP_KEY is set and not empty in .env.
  • PASS: APP_KEY=base64:... (non-empty, properly formatted)
  • FAIL: APP_KEY= (empty) or missing
  • Why it matters: The app key is used for encryption. Without it, sessions, encrypted cookies, and other encrypted data are insecure.

APP_URL

  • Check: APP_URL uses https:// (not http://).
  • PASS: Starts with https://
  • FAIL: Starts with http:// or is http://localhost
  • Why it matters: Insecure URLs affect generated links, asset URLs, and OAuth callbacks.

2. Cache Configuration

Cache Driver

  • Check: CACHE_STORE (or CACHE_DRIVER) in .env.
  • PASS: redis, memcached, database, or dynamodb
  • WARN: file (works but slower in production, not suitable for multi-server)
  • FAIL: array or null (no persistent caching)
  • Why it matters: File cache is slow and doesn't work across multiple servers.

Session Driver

  • Check: SESSION_DRIVER in .env.
  • PASS: redis, memcached, database
  • WARN: file (works for single-server deployments)
  • FAIL: array or cookie (no persistence or security concerns)

3. Queue Configuration

Queue Driver

  • Check: QUEUE_CONNECTION in .env.
  • PASS: redis, database, sqs, beanstalkd
  • FAIL: sync (jobs execute inline, blocking the request)
  • Why it matters: Sync queue means email sending, file processing, and other jobs block HTTP requests.

4. Mail Configuration

Mail Driver

  • Check: MAIL_MAILER in .env.
  • PASS: smtp, ses, mailgun, postmark, sendgrid
  • FAIL: log (emails only written to log file, not sent)
  • FAIL: array (emails discarded)
  • Why it matters: Users will not receive emails (password resets, notifications, invitations).

5. Security Checks

HTTPS Enforcement

  • Check: Look for HTTPS enforcement mechanisms:
    • URL::forceScheme('https') in AppServiceProvider
    • HTTPS middleware or \Illuminate\Http\Middleware\TrustProxies
    • .htaccess or nginx config redirecting HTTP to HTTPS
  • PASS: At least one HTTPS enforcement mechanism found
  • FAIL: No HTTPS enforcement detected

CORS Configuration

  • Check: Read config/cors.php.
  • PASS: allowed_origins is specific (not ['*'] in production)
  • WARN: allowed_origins is ['*'] (allows all origins)
  • Why it matters: Wildcard CORS allows any website to make requests to your API.

Rate Limiting on Auth Routes

  • Check: Look for rate limiting on login/registration routes.
  • Use Grep to find throttle middleware on auth routes.
  • PASS: Auth routes have throttle middleware
  • FAIL: No rate limiting on auth routes
  • Why it matters: Without rate limiting, brute-force attacks are possible.

6. Storage and Files

Storage Link

  • Check: Verify public/storage symlink exists.
  • Use Bash: ls -la public/storage
  • PASS: Symlink exists and points to storage/app/public
  • FAIL: Symlink missing (run php artisan storage:link)

7. Code Quality

TODO/FIXME/HACK Comments

  • Check: Use Grep to find TODO, FIXME, HACK, XXX, TEMP in PHP and Blade files.
  • PASS: Zero found
  • WARN: Found (list them with file paths and line numbers)
  • Why it matters: These indicate incomplete or temporary code that should be resolved before production.

Debug Statements

  • Check: Use Grep to find debug statements that should not be in production:
    • dd(, dump(, ray( in PHP files
    • console.log( in JS files (except in build/vendor)
    • var_dump(, print_r( in PHP files
  • PASS: Zero found
  • FAIL: Debug statements found (list them)

.env in Version Control

  • Check: Verify .env is in .gitignore.
  • Use Grep to check .gitignore for .env entry.
  • PASS: .env is gitignored
  • FAIL: .env is not gitignored (security risk)

8. Database

Migrations Can Run

  • Check: If Docker is available, note whether migrations appear consistent (do not actually run migrate:fresh -- that is destructive).
  • Look for common migration issues by parsing files (FK ordering, duplicate columns).
  • PASS: No obvious migration issues detected
  • WARN: Potential issues found (reference lc:migration-fresh-test for full test)

Schema Dump

  • Check: Look for database/schema/*.sql files.
  • WARN: Schema dump exists (may cause issues with migrate:fresh, data imports may be lost)
  • PASS: No schema dump

9. Performance

Config Caching

  • Check: Note whether config, route, and view caching commands should be run in deployment.
  • Verify config/app.php does not use env() outside of config files (breaks config caching).
  • Use Grep to find env( calls in app/, routes/, resources/ directories.
  • PASS: No env() calls outside config files
  • FAIL: env() used outside config (breaks config caching)

Eager Loading

  • Note: Reference lc:find-n-plus-one for N+1 query detection.

Report Format

DEPLOYMENT READINESS CHECKLIST
================================

ENVIRONMENT
  [PASS] APP_DEBUG = false
  [FAIL] APP_ENV = local (should be 'production')
  [PASS] APP_KEY is set
  [FAIL] APP_URL uses http:// (should be https://)

CACHE & SESSIONS
  [PASS] CACHE_STORE = redis
  [PASS] SESSION_DRIVER = redis

QUEUE
  [FAIL] QUEUE_CONNECTION = sync (should be redis/database/sqs)

MAIL
  [PASS] MAIL_MAILER = ses

SECURITY
  [PASS] HTTPS enforcement found (URL::forceScheme)
  [WARN] CORS allows all origins (config/cors.php)
  [PASS] Rate limiting on auth routes
  [PASS] .env is gitignored

STORAGE
  [PASS] Storage symlink exists

CODE QUALITY
  [WARN] 3 TODO comments found
  [FAIL] 2 dd() statements found
    - app/Http/Controllers/DashboardController.php:45
    - app/Services/PropertyService.php:102

DATABASE
  [PASS] No obvious migration issues
  [WARN] Schema dump exists at database/schema/mysql-schema.sql

PERFORMANCE
  [FAIL] env() used outside config files:
    - app/Services/StripeService.php:15
    - app/Http/Middleware/CustomMiddleware.php:8

SUMMARY
========
Passed:   10
Warnings:  3
Failed:    4
Score:     59% ready

PRIORITY FIXES (do these first):
1. Set APP_ENV=production
2. Set QUEUE_CONNECTION=redis
3. Remove dd() statements
4. Move env() calls to config files

Notes

  • This checklist is based on static analysis and configuration file inspection. Some checks require runtime verification.
  • Not all warnings are blockers. Some are acceptable trade-offs for specific deployments (e.g., file cache on a single-server setup).
  • The checklist does not check infrastructure concerns (SSL certificates, server configuration, DNS, CDN).
  • For security-specific deep analysis, use lc:security-audit.
  • For Docker configuration, use lc:docker-check.
  • For migration testing, use lc:migration-fresh-test.

Keep looking

Skills are one crate of 628,853. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.