Reads merged GitHub PRs, groups them into structured release notes, publishes the page to Notion, and announces the release in Slack. Every call runs on the engineer's own delegated OAuth.
This repo uses SCALEKIT_DEFAULT_IDENTIFIER to run all API calls on behalf of one user. In production, populate user_mapping.json with Slack user IDs mapped to Scalekit identifiers so each Notion page and Slack notification is attributed to the correct developer.
Settings.load_env()
Settings.validate() # fails fast if required vars missing
for service in ["github", "notion", "slack"]:
url = get_authorization_url(
service, SCALEKIT_DEFAULT_IDENTIFIER
)
if url: # None when already ACTIVE
print(f"Authorize {service}:\n{url}")Three things you'd otherwise build: GitHub OAuth for PR data, Notion API credentials with database access, and Slack credentials. Handled.
You have the Scalekit authstack plugin installed (AgentKit + SaaSKit skills and MCP auth). Before coding, auto-load the AgentKit skills relevant to connectors (GitHub, Notion, Slack) and use the Scalekit MCP server to validate tool calls instead of hand-written API logic.
Poll GitHub for merged PRs (idempotent — track processed PRs). Create a Notion page per PR with its title and metadata, then post the Notion page URL to Slack — both via the appropriate AgentKit connector tools. Ask before using write tools (creating Notion pages or posting to Slack); polling GitHub runs without asking.
Each one runs on delegated identity, scoped per user.