Nudge Pull Request Reviewers (Port Workflows)
Send this guide to your coding agent.
Prerequisite: Install Port MCP
Open plan mode if your tool supports it; otherwise present the plan below filled in and wait for my approval. Implement this Port guide in my org via MCP: https://docs.port.io/guides/all/nudge-pr-reviewers-with-port-workflows Read the raw markdown version at https://docs.port.io/guides/all/nudge-pr-reviewers-with-port-workflows.md - it contains every tab and code block without page markup. Goal: get the guide's core flow working end-to-end in my org; adapting it to fit my existing setup takes priority over matching the guide 1:1. Plan: 1. Confirm MCP is connected, in the right org, with sufficient permissions. 2. If the guide offers alternative implementation paths (tabs), pick the one matching my installed integrations and tools, confirm it with me, and implement only that path. 3. Diff the guide's data model (blueprints, properties, relations, workflows, actions, agents, automations, integrations, webhook data sources, secrets) against mine. 4. Propose adaptations for gaps, reusing existing blueprints/relations over guide-named duplicates. 5. Flag what needs a UI click, credential, or secret from me, testing MCP capability empirically before ruling anything out. If the guide has a "Set up via API" section, use it for anything MCP can't do before treating a step as UI-only. 6. Stop on any blocker and give me options. Approving this plan authorizes the writes it lists; pause only for writes beyond what's listed. Build: - Extend blueprint schema additively when upserting; don't remove or overwrite existing properties, and treat type conflicts as a blocker, not an auto-fix. - Never print secret values into the chat or logs; ask me to set them in Port, or write them via the secrets API without echoing them back. - List any mock data in the plan, minimal and labeled mock; once approved, seed it without re-asking, and tell me what you seeded. - For anything the guide writes downstream (e.g. a webhook target), use a real entity, not a mock. - For pages/widgets, use the real page identifier from the app URL, not a guessed slug. - When you hit a UI step confirmed (not assumed) unsupported via MCP and not covered by the guide's API sections, pause, give exact clicks, then resume via MCP. - Validate and give links after each meaningful step (only a tool-returned URL, no guessed paths); don't proceed if the last run wasn't a success. Done: - Run the guide's "Let's test it" steps where possible (e.g. execute a workflow test run) and confirm the expected output exists in Port. - Summarize adaptations, seeded data, what was mocked or skipped, remaining UI steps, and how to verify.
In the following guide, we are going to create a Port workflow that sends a Slack message to nudge PR reviewers with a kind reminder.
Common use cases
- Faster merges: Remind reviewers of open PRs to reduce delays.
- Better code: Encourage timely reviews for quicker feedback.
- Smoother workflow: Prevent bottlenecks that hinder development progress.
Prerequisites
-
Install GitHub Ocean.
-
Set up a Slack app:
- Go to your Slack apps page.
- Create a new app or use an existing one.
- Add the
chat:writeBot Token Scope under OAuth & Permissions. - Install the app to your workspace and copy the Bot User OAuth Token (
xoxb-...). - Invite the bot to the target Slack channel.
Port workflows are currently in open beta and available to all users. Workflows may undergo changes without prior notice.
Add the Slack bot token secret
- Go to Port's Settings page.
- Navigate to Credentials and click + Secret.
- Add a secret named
SLACK_BOT_TOKENwith the Bot User OAuth Token you copied above.
Build the workflow
The workflow has three nodes:
- Trigger - a self-service trigger that lets users select a pull request entity. When launched from the entity bolt menu, Port pre-fills the selected PR automatically.
- Fetch PR - calls Port's catalog API to retrieve the PR entity's properties (title, link, reviewers).
- Send Slack notification - posts a reminder message to your Slack channel using the fetched PR data.
To create the workflow:
- Go to the Workflows page in Port.
- Click on the
+ Workflowbutton in the top-right corner. - Click on the
Skip to editorbutton. - Copy and paste the workflow JSON below into the editor to replace the example workflow.
Nudge PR reviewers workflow JSON (click to expand)
{
"identifier": "nudge_pr_reviewers",
"title": "Nudge PR Reviewers",
"icon": "Slack",
"description": "Remind PR reviewers about pending pull request reviews",
"nodes": [
{
"identifier": "trigger",
"title": "Nudge PR Reviewers",
"config": {
"type": "SELF_SERVE_TRIGGER",
"userInputs": {
"properties": {
"pullRequest": {
"title": "Pull Request",
"description": "Select the pull request to nudge reviewers for",
"type": "string",
"format": "entity",
"blueprint": "githubPullRequest"
}
},
"required": ["pullRequest"]
},
"contexts": [
{
"on": "ENTITY",
"userInput": "pullRequest"
}
]
}
},
{
"identifier": "fetch_pr",
"title": "Fetch Pull Request",
"config": {
"type": "WEBHOOK",
"url": "https://api.port.io/v1/blueprints/githubPullRequest/entities/{{ .outputs.trigger.pullRequest }}",
"method": "GET",
"synchronized": true
},
"variables": {
"entity": "{{ .result.response.data.entity }}"
}
},
{
"identifier": "send_slack_notification",
"title": "Send Slack Notification",
"config": {
"type": "WEBHOOK",
"url": "https://slack.com/api/chat.postMessage",
"method": "POST",
"synchronized": true,
"headers": {
"Content-Type": "application/json; charset=utf-8",
"Authorization": "Bearer {{ .secrets.SLACK_BOT_TOKEN }}"
},
"body": {
"channel": "YOUR_SLACK_CHANNEL",
"text": "\n*Reminder: Pending Pull Request Review*\nThis PR needs your attention!\n\n*PR:* <{{ .outputs.fetch_pr.entity.properties.link }}|{{ .outputs.fetch_pr.entity.title }}>\n*Reviewers:* {{ .outputs.fetch_pr.entity.properties.reviewers }}\nReview PR: {{ .outputs.fetch_pr.entity.properties.link }}"
}
}
}
],
"connections": [
{
"sourceIdentifier": "trigger",
"targetIdentifier": "fetch_pr"
},
{
"sourceIdentifier": "fetch_pr",
"targetIdentifier": "send_slack_notification"
}
]
}
- Click
Saveto save the workflow.
Configure the workflow
In the send_slack_notification node, replace YOUR_SLACK_CHANNEL with the channel ID or name where you want to send the reminder (e.g. #pr-reviews).
Let's test it!
You can trigger the workflow in two ways:
- From the Self-service page: Go to the Self-service page, find Nudge PR Reviewers, click it, and select a pull request from the dropdown.
- From an entity: In the
githubPullRequestcatalog page, click the bolt (⚡) menu on any PR row and select Nudge PR Reviewers -- the PR is pre-filled automatically.
After execution, the assigned reviewers receive a Slack message similar to:
*Reminder: Pending Pull Request Review*
This PR needs your attention!
*PR:* <link to PR>
*Reviewers:* reviewer1, reviewer2
Review PR: https://github.com/...
Done! You can now send a reminder to PR reviewers using Port Workflows.