From theclauu
Use for Railway operations — deploy, logs, status. Replaces /railway-deploy, /railway-logs, /railway-status.
npx claudepluginhub artemis-xyz/theclauu --plugin theclauuThis skill uses the workspace's default tool permissions.
Three modes. Pick based on intent:
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Three modes. Pick based on intent:
========================================
Deploy to Railway with pre-flight checks, build monitoring, health verification, and post-deploy log review.
Follow these steps exactly in order. Do NOT skip the user confirmation gate in Step 2.
Run these checks in order. Stop at the first failure and guide the user.
1. CLI installed?
railway --version
npm install -g @railway/cli or brew install railway2. Version check (minimum 4.27.3):
railway --version
npm update -g @railway/cli3. Authenticated?
railway whoami --json
railway login4. Project linked?
railway status --json
railway link to select a projectGather context about what's about to be deployed.
Railway context:
railway status --json
Parse: project name, linked service, current environment.
Git context:
git log -1 --oneline
git status --porcelain
Warn if uncommitted changes exist. Railway deploys the working directory contents — uncommitted changes WILL be included in the deploy but NOT in git history, which causes drift.
Present a pre-deploy summary:
Deploy Summary
═══════════════════════════════════════════════════════
Project: [name]
Service: [service]
Environment: [env]
Branch: [git branch]
Commit: [short hash] [message]
Uncommitted: [Y/N — warn if Y]
═══════════════════════════════════════════════════════
Ask the user: "Ready to deploy? (y/n)"
Do NOT proceed until the user explicitly confirms. If they say no, stop and ask what they'd like to change.
CI mode (streams build logs inline):
railway up --ci -m "<descriptive deploy message>"
Always use -m with a meaningful message. Derive it from:
If the project uses auto-deploy on git push:
Tell the user: "This project appears to use auto-deploy. Push your changes with git push and I'll monitor the deployment."
Then monitor:
railway deployment list --limit 1 --json
Poll until the deployment status changes from BUILDING to SUCCESS or FAILED.
After the build completes and the deployment is live:
Check public domains:
railway status --json
Parse the JSON output to extract domain URLs.
For each domain:
curl -s -o /dev/null -w "%{http_code}" https://<domain>
200-299 → healthy301-399 → redirect (follow it and check final destination)4xx/5xx → unhealthy, flag immediatelyIf no public domain exists, ask the user: "No public domain found. Do you have a health endpoint I should check?"
railway logs --lines 50 --json
Check for:
@level:error entries since deployPresent a final summary:
Deploy Report
═══════════════════════════════════════════════════════
Status: [SUCCESS / FAILED / DEGRADED]
Service: [service name]
Environment: [environment]
Commit: [hash] [message]
Deploy msg: [the -m message used]
Build: [duration if available]
Health: [HTTP status for each domain]
Errors: [count of error-level logs since deploy]
═══════════════════════════════════════════════════════
If the deploy failed or health checks are unhealthy:
railway logs --filter "@level:error" --lines 100railway down -y stops the current deployment (service stays, deploy stops)railway down stops the deployment but does NOT delete the service$ARGUMENTS
========================================
View and filter Railway service logs. Supports JSON output, level filtering, time ranges, and pattern matching.
Follow these steps exactly in order.
Run these checks in order. Stop at the first failure and guide the user.
1. CLI installed?
railway --version
npm install -g @railway/cli or brew install railway2. Version check (minimum 4.27.3):
railway --version
npm update -g @railway/cli3. Authenticated?
railway whoami --json
railway login4. Project linked?
railway status --json
railway link to select a projectDefault (last 100 lines):
railway logs --lines 100 --json
Specific service:
railway logs --service <name> --lines 100 --json
With level filter:
railway logs --filter "@level:error" --lines 100 --json
With time range (relative):
railway logs --lines 100 --json # then filter by timestamp
Parse the JSON output and apply any user-requested filters.
Built-in filters:
@level:error — errors only@level:warn — warnings only@level:info — info messages onlyPattern-based filtering:
railway logs --lines 200 --json
Parse the JSON output yourself to find entries whose message field matches the user's search pattern (case-insensitive). Do NOT pipe through jq -- read and filter the JSON directly.
Recent errors:
railway logs --filter "@level:error" --lines 100 --json
Deployment startup issues:
railway logs --lines 50 --service <name> --json
Memory / OOM issues:
railway logs --lines 200 --json
Parse the JSON output to find entries with messages matching: memory, oom, killed (case-insensitive).
Connection issues:
railway logs --lines 200 --json
Parse the JSON output to find entries with messages matching: ECONNREFUSED, timeout, ETIMEDOUT (case-insensitive).
Crash loops:
railway logs --lines 200 --json
Parse the JSON output to find entries with messages matching: exit, crash, restart, signal (case-insensitive).
Format log output clearly:
JSON (default — best for parsing):
railway logs --lines 100 --json
Save to file:
railway logs --lines 500 --json
If the user wants logs saved to a file, write the output to /tmp/railway-logs.json using the Write tool.
Structured view:
railway logs --lines 100 --json
Parse the JSON output and present each entry as a structured record with timestamp, level, and message fields. Do NOT pipe through jq.
$ARGUMENTS
========================================
Quick dashboard for your Railway project. Shows project info, services, recent deployments, environments, and resource metrics at a glance.
Follow these steps exactly in order.
Run these checks in order. Stop at the first failure and guide the user.
1. CLI installed?
railway --version
npm install -g @railway/cli or brew install railway2. Version check (minimum 4.27.3):
railway --version
npm update -g @railway/cli3. Authenticated?
railway whoami --json
railway login4. Project linked?
railway status --json
railway link to select a projectrailway status --json
Parse and present: project name, project ID, current environment, linked service.
railway service list --json
List all services with their current deployment status.
railway deployment list --limit 5 --json
Show the 5 most recent deployments: status, service, trigger, timestamp, commit.
railway environment list --json
List all environments (production, staging, PR environments, etc.).
railway variables list --json
List variable names only — never display values. Note any common variables that appear unset.
Attempt to query Railway's GraphQL API for CPU and memory metrics of active services.
First, read the Railway config to get the auth token:
cat ~/.railway/config.json
Parse the JSON output to extract the value at .user.token. If the file doesn't exist or the token field is missing, skip this step and note: "GraphQL metrics unavailable -- token not found in ~/.railway/config.json"
Next, get the project ID:
railway status --json
Parse the JSON output to extract the projectId value.
Then, query the Railway GraphQL API using the extracted token and project ID (substitute the actual values into the command):
curl -s https://backboard.railway.com/graphql/v2 -H "Authorization: Bearer <TOKEN>" -H "Content-Type: application/json" -d "{\"query\": \"query { project(id: \\\"<PROJECT_ID>\\\") { services { edges { node { id name serviceInstances { edges { node { latestDeployment { id status } } } } } } } } }\"}"
Parse the JSON response to extract service names, deployment IDs, and statuses.
If the token is missing or any query fails, skip this step and note: "GraphQL metrics unavailable -- token not found in ~/.railway/config.json"
Format all output as a clean summary:
Railway Dashboard
═══════════════════════════════════════════════════════
Project: [name] ([id])
Environment: [current env]
Linked: [service name]
═══════════════════════════════════════════════════════
Services
┌──────────────────┬───────────┬─────────────────────┐
│ Service │ Status │ Last Deploy │
├──────────────────┼───────────┼─────────────────────┤
│ ... │ ... │ ... │
└──────────────────┴───────────┴─────────────────────┘
Recent Deployments
┌──────────────────┬───────────┬──────────┬──────────┐
│ Service │ Status │ Trigger │ When │
├──────────────────┼───────────┼──────────┼──────────┤
│ ... │ ... │ ... │ ... │
└──────────────────┴───────────┴──────────┴──────────┘
Environments: [list]
Variables: [count] variables set (names only shown above)
Metrics: [CPU/memory if available, or "unavailable"]
========================================
Consolidated from legacy claudefather skills. Pick the mode based on intent.