How to Generate Release Notes with OpenClaw in Paradime
Feb 26, 2026
Automate Customer-Facing Release Notes with Paradime and OpenClaw
Every shipped feature deserves a changelog entry. Here's how to generate release notes automatically—no stale docs, no tribal knowledge, no missing context.
The Problem: Stale Docs, Missing Context, and Tribal Knowledge
Every data team has been there. A sprint closes, 14 pull requests merge, and the release notes are… an empty Confluence page with last quarter's date.
The symptoms are predictable:
Stale documentation — Changelogs written weeks after code shipped, if they're written at all. Details are fuzzy, nuance is lost, and the document drifts further from reality with every release.
Missing context — Stakeholders ask "what changed?" and the answer lives in a Slack thread that's already been archived. Customer success teams scramble to reverse-engineer feature announcements from commit messages.
Tribal knowledge — Only one engineer knows what the
refactor-billing-v3branch actually did. When that person is on vacation, the release note reads "misc improvements."
These aren't minor annoyances—they're compounding risks. Stale release notes erode customer trust. Missing context causes support tickets. Tribal knowledge creates single points of failure.
Figure 1: The vicious cycle of manual release notes—every skipped changelog compounds downstream confusion.
The fix isn't "write better docs." The fix is automation that generates customer-facing release notes the moment code ships, with categorization, context, and zero human intervention.
This guide walks you through exactly that workflow using Paradime and OpenClaw.
What Is Paradime?
Paradime is an AI-native data platform often described as "Cursor for Data." It replaces dbt Cloud™ with a unified environment for coding, shipping, and scaling data pipelines—spanning analytics and AI workloads.
The platform has three core pillars:
Pillar | What It Does |
|---|---|
Code IDE | AI-assisted dbt™ and Python development with full lineage, data previews, and DinoAI integration. Cuts development time by 83%+. |
Bolt | Production orchestration—schedules, CI/CD, API triggers, and webhook-based pipelines. Deploys jobs 50% faster than dbt Cloud™. |
Radar | FinOps engine that reduces Snowflake and BigQuery warehouse costs. |
For this workflow, we care most about Bolt—specifically its ability to trigger pipelines via API and run arbitrary Python scripts as part of a schedule.
Bolt supports four trigger types:
Scheduled Run — Cron-based time triggers
On Run Completion — Fires when another schedule finishes
On Merge — Executes when code merges into a Git branch
Bolt API — Programmatic triggers via REST API endpoints
That last one—Bolt API—is what makes this automation possible. You can call a Paradime endpoint from any external system (a GitHub Action, a CI pipeline, or an OpenClaw skill) to kick off a release notes generation job.
What Is OpenClaw?
OpenClaw is an open-source AI agent platform that runs on your own infrastructure. Originally known as Clawdbot, it connects to LLMs (like Anthropic's Claude or OpenAI's GPT) and integrates with messaging platforms—WhatsApp, Telegram, Discord, Slack, Microsoft Teams.
But OpenClaw's real power lies in its Skills system. A Skill is a directory containing a SKILL.md file that gives the LLM instructions and optionally includes scripts, tools, or API integrations. Skills can:
Execute shell commands and Python scripts
Call external REST APIs with managed credentials
Run on configurable schedules via cron
Gate behind environment variables (skills auto-disable when required keys are missing)
For this workflow, we'll build a custom OpenClaw skill that:
Fetches merged PRs from GitHub since the last release tag
Categorizes them (features, fixes, breaking changes)
Generates polished, customer-facing release notes using the connected LLM
Triggers a Paradime Bolt schedule to persist and distribute the output
Setup: openclaw-sdk + GitHub API
Prerequisites
Before building the automation, ensure you have:
OpenClaw installed and running (
curl -fsSL https://openclaw.ai/install.sh | bash)Python 3.9+ with
uvfor dependency managementA GitHub Personal Access Token with
reposcopeParadime API credentials (API Key + API Secret with "Bolt Schedules Admin" capability)
An LLM provider API key configured in OpenClaw (Anthropic, OpenAI, etc.)
Step 1: Generate Paradime API Keys
In Paradime, navigate to Account Settings → Workspace Settings
Scroll to the bottom and click Generate API Keys
Name the key (e.g.,
release-notes-bot)Grant the Bolt schedules admin capability
Store the
API_KEY,API_SECRET, andAPI_ENDPOINTsecurely
Step 2: Create a GitHub Personal Access Token
Generate a fine-grained or classic token with
reposcopeStore the token as
GITHUB_TOKEN
Step 3: Create the OpenClaw Skill Directory
Step 4: Configure Environment Variables in OpenClaw
Add your credentials to ~/.openclaw/.env:
Or configure them in ~/.openclaw/openclaw.json using the skill-scoped configuration:
Security note: OpenClaw's skill-scoped
envvalues are injected only during skill execution and cleared when the agent run ends—no shell leakage.
Figure 2: Setup checklist—four steps to get your environment ready for the release notes automation.
Script: Fetch, Categorize, and Generate Release Notes
This is the core automation. The Python script performs three jobs:
Fetch merged PRs from GitHub since the last release tag
Categorize each PR as a feature, fix, or breaking change
Generate customer-facing release notes in Markdown
The SKILL.md File
Create ~/.openclaw/workspace/skills/release-notes-generator/SKILL.md:
Arguments
--owner: GitHub organization or user (required)--repo: Repository name (required)--output: Output file path (default: release_notes.md)--trigger-bolt: If provided, triggers the named Paradime Bolt schedule after generation
Example
How the Categorization Works
Figure 3: PR categorization logic—labels take priority over title pattern matching for more accurate classification.
Env Vars: GITHUB_TOKEN, OPENCLAW_API_KEY
The automation depends on a small set of environment variables. Here's the full reference:
Variable | Where It's Used | How to Get It |
|---|---|---|
| Python script → GitHub API calls | GitHub Settings → Personal Access Tokens. Requires |
| OpenClaw → LLM provider authentication | Your LLM provider's API key (Anthropic, OpenAI, etc.). Configured in |
| Python script → Paradime Bolt API | Paradime Account Settings → Workspace Settings → Generate API Keys. Requires "Bolt Schedules Admin" capability. |
| Python script → Paradime Bolt API | Generated alongside |
| Python script → Paradime Bolt API | Provided when generating API keys. Workspace-specific GraphQL endpoint. |
Setting Variables in Paradime (for Bolt Schedules)
If you want the Bolt schedule itself to have access to GITHUB_TOKEN:
Navigate to Settings → Workspaces → Environment Variables
In the Bolt Schedules section, click Add New
Enter
GITHUB_TOKENas the Key and your token as the ValueClick Save 💾
These variables are injected into every Bolt schedule run. You can also override them at the individual schedule level.
Setting Variables in OpenClaw
OpenClaw resolves environment variables with the following precedence (highest to lowest):
Process environment (parent shell/daemon)
.envin working directoryGlobal
.envat~/.openclaw/.envConfig
envblock in~/.openclaw/openclaw.jsonLogin-shell import (opt-in)
For skill-scoped secrets, use the openclaw.json approach shown in the Setup section—it ensures credentials are only available during skill execution.
Bolt Schedule: API Trigger on Release
Now let's wire the automation so that a release event in GitHub triggers the entire pipeline.
Step 1: Create the Bolt Schedule in Paradime
In Paradime, navigate to Bolt → Create Schedule
Name it
release-notes-pipelineSet the trigger type to Scheduled Run and click the OFF button to disable the time-based trigger—this makes it an API-only schedule
Add your commands:
Save the schedule
Step 2: Trigger from OpenClaw (Manual)
Ask your OpenClaw agent:
"Generate release notes for paradime-io/analytics-pipeline"
The skill will execute, fetch PRs, generate notes, and optionally trigger the Bolt schedule.
Step 3: Trigger from GitHub Actions (Automated)
Create .github/workflows/release-notes.yml in your repository:
Step 3b: Trigger via Paradime Python SDK
For more control, use the Python SDK in your CI pipeline:
Figure 4: End-to-end sequence—from release event to published release notes, fully automated.
Monitoring and Debugging
Once the automation is running, you need visibility into what's happening at each stage.
Monitoring Bolt Runs
Paradime provides comprehensive monitoring for Bolt schedule runs:
Schedule List View — Navigate to Bolt in Paradime to see all schedules with their latest run status
Run History — Click into any schedule to see a detailed list of all executions, including Run ID, status (Success/Error/Skipped), trigger source, branch, timestamp, and duration
Execution Time History — A graphical view of the last 30 days showing success/error rates and duration trends
Run Log Details — Click any Run ID to see command-by-command console output, artifacts (
run_results.json,manifest.json), and timing breakdowns
Setting Up Webhooks for Alerting
Configure Paradime webhooks to get notified on run completion:
Navigate to Account Settings → Webhooks
Click + Add Endpoint
Enter your notification endpoint URL (Slack webhook, PagerDuty, etc.)
Select the
bolt.run.completedevent
The webhook payload includes full execution details plus query fields for extracting raw console logs and artifacts per dbt™ command.
Monitoring OpenClaw
For the OpenClaw side of the pipeline:
Troubleshooting Common Issues
Issue 1: GitHub API Rate Limiting
Symptom: The script fails with a 403 or 429 response.
Cause: GitHub's REST API allows 5,000 requests/hour for authenticated users. Large repos with hundreds of PRs may exhaust this.
Fix:
Ensure
GITHUB_TOKENis set (unauthenticated requests are limited to 60/hour)Use pagination efficiently (the script already does this)
For very large repos, narrow the time window by checking the tag date
Issue 2: Bolt Schedule Doesn't Trigger
Symptom: The trigger_run() call returns successfully but the schedule doesn't execute.
Cause: The schedule is disabled, or the API key lacks the required capability.
Fix:
Verify the schedule exists and is active in the Bolt UI
Confirm your API key has the Bolt Schedules Admin capability (not just Metadata Viewer)
Check that the schedule name matches exactly (case-sensitive)
Issue 3: OpenClaw Skill Not Loading
Symptom: Asking the agent to generate release notes produces no response or a generic fallback.
Cause: Missing environment variables, incorrect directory structure, or the skill wasn't indexed.
Fix:
Verify the skill directory exists at
~/.openclaw/workspace/skills/release-notes-generator/Confirm
SKILL.mdhas valid YAML frontmatterCheck that required env vars are set:
Refresh skills: ask the agent "refresh skills" or restart the gateway
Run diagnostics:
Issue 4: PRs Not Being Categorized Correctly
Symptom: All PRs land in the "Other" category.
Cause: PRs lack conventional labels and titles don't match expected patterns.
Fix:
Enforce conventional commit prefixes in PR titles (
feat:,fix:,breaking:...)Add GitHub labels (
feature,bug,breaking-change) to your PR workflowExtend the
CATEGORY_PATTERNSdictionary in the script to match your team's naming conventions
Issue 5: OpenClaw Gateway Won't Start
Symptom: openclaw status reports the gateway as not running.
Fix: Run the triage sequence:
Common causes:
gateway.modenot set to"local"→ runopenclaw configurePort conflict (
EADDRINUSE) → change the gateway port in configMissing authentication for non-loopback bind → set a gateway token
Figure 5: Troubleshooting decision tree—quickly identify which component needs attention.
Wrapping Up
Manual release notes are a documentation debt that compounds with every sprint. The workflow in this guide eliminates that debt entirely:
OpenClaw provides the AI agent layer—a skill that can be invoked manually ("generate release notes for our repo") or scheduled via cron
GitHub API supplies the raw data—merged PRs, authors, labels, timestamps
Pattern-based categorization sorts changes into features, fixes, breaking changes, and other
Paradime Bolt orchestrates the pipeline in production—triggered via API, monitored through run history, and integrated with your existing notification stack via webhooks
The result is near-100% coverage: every merged PR appears in the changelog, correctly categorized, with attribution—the moment a release ships.
What This Workflow Replaces
Before | After |
|---|---|
Stale Confluence pages updated weeks late | Release notes generated the instant a release is published |
"Ask Sarah, she knows what that branch did" | Every PR is fetched, categorized, and attributed automatically |
Missing context for customer success teams | Customer-facing Markdown with features, fixes, and breaking changes clearly separated |
Manual copy-paste from Git logs | One command or one GitHub event triggers the entire pipeline |
Next Steps
Customize the categories — Add your team's label conventions to the
CATEGORY_PATTERNSdictionaryEnrich with LLM summaries — Pipe the raw PR data through OpenClaw's connected LLM to generate plain-English descriptions for non-technical stakeholders
Distribute automatically — Use Paradime Bolt webhooks to push the generated notes to Slack, email, or your documentation site on
bolt.run.completedVersion bump automation — Extend the script to automatically create a new GitHub release with the generated notes as the body
Ship code. Ship notes. Ship confidence.
Paradime documentation: docs.paradime.io · OpenClaw documentation: docs.openclaw.ai · OpenClaw GitHub: github.com/openclaw/openclaw

