I wanted one clean workflow: send a Slack message and end with a merged PR, using a self-contained VM so the whole process stayed safe, stable, and repeatable.
The story in one run
We started by moving the workflow to a dedicated VM. That gave us isolation from my daily machine and a predictable place to run long tasks. Then we installed OpenClaw, connected model providers, wired Slack, and used that setup to create and refine this blog post through a few short feedback loops.
The important shift was not "AI wrote a draft." The shift was operational: Slack request in, repository changes out, PR updated, done.
The win is not the draft. The win is a repeatable Slack-to-PR loop.
How to set this up (short version)
- Create a dedicated VM so the agent runtime is isolated and persistent.
- Install OpenClaw and initialize your workspace.
- Configure OpenClaw markdown context files:
AGENTS.md,SOUL.md,TOOLS.md,USER.md, andIDENTITY.md. - Connect AI providers (Google and/or OpenRouter) so you have a primary model plus fallback.
- Install GitHub CLI and authenticate with
gh auth login. - Install coding tools you want in the loop (Codex, Claude Code).
- Connect Slack app/events so requests can trigger work and status can post back.
- Run the flow: Slack request -> OpenClaw edits -> review -> push branch -> PR update.
Starter links
- OpenClaw repository
- OpenClaw workspace files (AGENTS.md, SOUL.md, TOOLS.md, USER.md, IDENTITY.md)
- GitHub CLI install and auth
- Slack app setup
- Slack Events API docs
- Google AI Studio
- OpenRouter quickstart
What is next
Next step is a reusable Slack template for content tasks so each request includes goal, tone, and acceptance criteria up front. That should cut revision rounds and keep the loop fast.