From laravel-forge-hermit
Scans Laravel Forge estate for sites with failed deployments. Runs daily as a scheduled check, reporting findings through the proposal pipeline for reliability monitoring.
How this skill is triggered — by the user, by Claude, or both
Slash command
/laravel-forge-hermit:forge-failed-deploysThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Scheduled-check skill: scans the org-wide site list and flags any sites whose latest deployment status is `failed`, `failed-build`, or `cancelled`.
Scheduled-check skill: scans the org-wide site list and flags any sites whose latest deployment status is failed, failed-build, or cancelled.
Contract: idempotent, read-only, no self-scheduling, short-running. Returns findings or silence — never creates proposals itself.
Run the estate scan.
php ${CLAUDE_PLUGIN_ROOT}/php/forge.php failed-deploys --json
This pages through the org-wide site list via organizationSites()->lazy() and fetches the deployment_status field on each site. For sites in a failure state it fetches the latest deployments() detail. Rate limiting (429) is handled internally with conservative pacing.
Parse the JSON output. Each entry has: site_id, site_name, server_id, status, optionally deploy_id, deploy_status, commit. An entry whose detail fetch was rate-limited instead carries an error key (and no deploy_id/commit) — treat those as "failure, detail unavailable" and omit the commit line. Never assume all keys are present.
Output the findings block. Always output to stdout, regardless of outcome. reflect --scheduled-checks classifies the result.
Failures found:
forge-failed-deploys findings — <YYYY-MM-DD>
Failed deployments: <N>
- [deploy-failure] <site_name> (server: <server_id>): status <status><commit line if available>
One bullet per failed site.
No failures:
forge-failed-deploys findings — <YYYY-MM-DD>
No actionable findings.
Do not fetch deployment logs. This scan surfaces sites with failures; the forge-logs or forge-deploy skills handle remediation. Fetching logs per failure during the scan would hit rate limits on large estates.
reflect --scheduled-checks./laravel-forge-hermit:hatch step 8 via a scheduled_checks config entry (interval_days: 1). The core daily scheduled-checks routine fires reflect --scheduled-checks, which picks it up once 1+ day has elapsed since last_run.[reliability] proposals via the normal pipeline.organizationSites() does not carry deployment_status in your Forge plan/API version, the scan will report zero findings (not an error). Scope to watched_sites (set at hatch step 6) if org-wide scan is unavailable.npx claudepluginhub p/gtapps-laravel-forge-hermit-plugins-laravel-forge-hermitTriggers a deployment on a Laravel Forge site with a surface-then-approve flow: previews the target, asks for confirmation, then fires the deployment and watches for completion via hermit.
Verifies production site health post-deploy via canary monitoring: checks HTTP status, response time, and error patterns, compares against baseline to detect regressions, and guides rollback decisions.
Performs SSH reconnaissance on WordPress servers to gather debug logs, PHP errors, recent file changes in wp-content, and server health for diagnostic planning.