Daily Railway deploy digest in Slack with PR context

By General Input

Every weekday at 9am ET, get a human-readable Slack summary of yesterday's Railway deploys, with PR titles, authors, failed builds, and stale services flagged.

Integrations

  • Railway
  • GitHub
  • Slack

Type

Agentic Task

Categories

  • Engineering

Build me an agent workflow that posts a daily Railway deploy digest into Slack so my engineering team can see what shipped yesterday without scrolling Railway.

Trigger: cron, every weekday (Monday through Friday) at 09:00 America/New_York.

Each run, the agent should do the following:

1. Use Railway's List Projects to enumerate every project the token can see. For each project, use List Environments and pick the environment named "production" (skip preview and ephemeral environments). For each service in that production environment, use List Deployments to get every deployment whose createdAt is within the last 24 hours. Bucket them into successful, failed, and in-progress.

2. For each successful deploy, look at the deployment's meta object for commitHash and prNumber (and the source repo owner/name). If a PR number is present, call GitHub's Get a Pull Request to fetch the PR title, author login, and merged body. Use that to build a one-line "what shipped" entry per service: service name, PR title, author handle, and a link to the PR. If no PR is linked, fall back to the commit message and short SHA.

3. For each failed deploy, use Railway's Get Build Logs to fetch the tail of the build log (last ~50 lines is fine). Have the agent write a single short sentence guessing the cause (for example: "TypeScript compile error in src/server.ts" or "npm install failed: missing peer dep"). Include a link to the Railway deployment URL.

4. For staleness: for every production service across all projects, check the most recent successful deployment. If it is older than 14 days, list the service under a "stale" section with its last-deploy date.

5. Send one Slack message via Send a Message into the channel #engineering (let me change the channel at setup). The message should be structured as three sections, in this order:

• Shipped yesterday: bulleted list of services that successfully deployed, each line showing service name, PR title, author, and a PR link.

• Failed deploys: bulleted list of services where a deploy failed in the last 24 hours, with the cause guess and a link to the Railway deployment.

• Stale services: any service whose last successful production deploy is older than 14 days, with the date.

Constraints:

• One Slack post per run. No thread, no follow-up messages.

• Cap the digest to roughly 15 services. If more shipped, prioritize failures, then stale, then successful, and append a final line like "+ 7 more services shipped".

• If nothing shipped in the last 24 hours, still post a short message saying so, and still include the stale section if there is anything to flag.

• Write the tone like a human release note, not a list of SHAs. Plain English titles, no commit hashes in the main bullets (a SHA fallback is fine only when there is no PR).

Connections needed: Railway (API token from Account Settings), GitHub (read access to the repos behind the Railway services), Slack (workspace plus the destination channel).

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentWin back LiveChat visitors whose chats went unansweredChat quality review board for LiveChat support leadsWin back no-show and cancelled appointments every morningLive Loop returns analytics with product-level drill-downNewsletter pre-flight and approval board for Mailjet sendsTurn a prospect spreadsheet into personalized sequence enrollmentsMailjet email delivery lookup console for support teamsCatch feature flags that never got switched on in productionKajabi customer support console for member access fixes