plugins/laravel-forge-hermit/skills/forge-logs/SKILL.md
Read site deployment logs, server logs, site application/nginx logs, background process logs, and specific deployment logs from Laravel Forge. Includes a triage mode that bundles recent logs with deployment history for rapid incident analysis. Triggers on "show logs", "read logs", "deployment log", "server log", "what happened to the deployment", "triage failing site".
npx skillsauth add gtapps/claude-code-hermit forge-logsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Read deployment and server logs from Forge.
php ${CLAUDE_PLUGIN_ROOT}/php/forge.php logs <server> <site>
Fetches the most recent deployment and returns its full log.
php ${CLAUDE_PLUGIN_ROOT}/php/forge.php deploy-log <server> <site> <deploy-id>
Use deploy-history first to find the deployment ID.
php ${CLAUDE_PLUGIN_ROOT}/php/forge.php server-log <server> <key>
Common keys: php, mysql, cron, daemon, nginx-error, nginx-access. Nginx keys are hyphenated; nginx_error (underscored) returns a 404. The PHP-FPM log key is dot-version notation matching the server's installed PHP (php-8.3, not php) — passing the literal php key auto-resolves it against the server's php_version. mysql/cron/daemon may 404 outright on servers with a custom, non-Forge-provisioned install of that service (no Forge-tracked log path) — a 404 there isn't necessarily a wrong key. Key list depends on the server's installed services.
php ${CLAUDE_PLUGIN_ROOT}/php/forge.php site-log <server> <site> <type>
<type> is one of application (the Laravel app log), nginx-access, nginx-error. Application and access logs leak PII and tokens more readily than deploy logs — the Secret hygiene rules below apply with extra force.
php ${CLAUDE_PLUGIN_ROOT}/php/forge.php background-process-log <server> <process-id>
The log path for apps that run as a Forge Background Process instead of PHP-FPM (Node apps, queue workers, custom daemons). server-log does not cover these. Find the process ID first:
echo '[<server-id>]' | php ${CLAUDE_PLUGIN_ROOT}/php/forge.php call backgroundProcesses
When the operator says something like "what's wrong with myapp.com" or "triage the failing site", bundle context automatically:
php ${CLAUDE_PLUGIN_ROOT}/php/forge.php site <server> <site> — confirm the site is reachable and check status fields.php ${CLAUDE_PLUGIN_ROOT}/php/forge.php deploy-history <server> <site> — surface the last few deployments and their statuses.php ${CLAUDE_PLUGIN_ROOT}/php/forge.php logs <server> <site> — fetch the latest deployment log.Deployment and server logs may contain env dumps, database credentials, and API keys. Apply these rules to every log-reading flow:
compiled/ or raw/ — scrub any credential values to [REDACTED] before persistence.<server> and <site> accept name, hostname, or numeric ID.forge-deploy, the deploy-incident artifact (written by forge-deploy when its watch Monitor sees a failed terminal status) already contains the scrubbed log tail — check compiled/deploy-incident-<site>-<date>.md before re-fetching.commandOutput, scheduledJobOutput, siteScheduledJobOutput, serverEventOutput) are reachable via call <method> with JSON args on stdin; their content comes back JSON-encoded.tools
Composes and delivers the daily fitness brief — a forward-looking morning read (readiness + today's plan) or a backward-looking evening read (today's training, or an earned-rest note, + tomorrow's setup) — in the operator's configured voice. Invoke with /claude-code-fitness-hermit:fitness-brief --morning|--evening|--slot <name>. Becomes the plugin's two daily beats — the morning Strava connectivity check and the evening activity sync, RPE binding, and Run deep-dive.
development
Renew the hermit's long-lived Claude login token over the channel, before it expires. Relays a one-time sign-in link to the operator, takes the code back, installs the new token, and restarts. Activates on messages like 'relogin', 'renew my login', 'reauth', 'the login is expiring', or when doctor's credential-expiry check flags setup-token.
development
Synthesizes the past 7 days of archived briefs into a weekly digest — top stories, emerging vs faded themes, category activity, and per-source performance built from archive frontmatter. Delivers to the operator's configured channel and archives a weekly note. Designed as a weekly routine. Invoke with /feed-hermit:weekly-digest.
development
Manage developing story arcs tracked across briefs — add, resolve, and list active arcs in compiled/story-arcs-*.md. Arc Watch keywords drive the feed-brief arc-tagging enrichment. Invoke with /feed-hermit:story-arcs add|resolve|list.