DEV Community

Farooq Shabbir
Farooq Shabbir

Posted on

I Built a 24/7 Freelance Operations Agent with OpenClaw — It Runs My Business While I Sleep

OpenClaw Challenge Submission 🦞

No Python. No Node. Three skill files, one Lobster workflow, and my consultancy now runs on autopilot.


What I Built

A fully autonomous freelance operations agent I call Claw-Ops that handles the three biggest time drains in running a dev consultancy:

  1. Morning dev briefing — PR triage from GitHub, action items pulled from Slack, delivered to Telegram at 8AM
  2. Client status drafting — every Friday, reads merged PRs + closed Linear tickets, writes the weekly update email, sends me the draft to approve with one tap
  3. Inbox zero on follow-ups — detects unanswered client emails older than 48 hours, drafts a polite follow-up, asks me on Telegram whether to send it

Before this: ~9 hours a week on context-switching, manual status writing, and email chasing.
After: I review a Telegram message in the morning and say yes or no.


The Stack

  • OpenClaw (gateway running on a Mac Mini, always on)
  • Claude via Anthropic API (the brain)
  • Telegram (my interface — DMs and one-tap approvals)
  • Three custom skills + one Lobster workflow (no external services beyond what I already used)

Zero new subscriptions. Zero new dashboards. Everything surfaces in the app I already have open: Telegram.


Skill 1: pr-morning-digest

# pr-morning-digest

When triggered (or on schedule), check all GitHub repos accessible via the gh CLI.

Find pull requests that match ANY of these:
- Open more than 24 hours with no review activity
- CI checks failing
- Labeled "urgent" or "blocking"

For each match, output:
- Repo name
- PR title and number
- Current status (awaiting review / CI failing / etc.)
- Direct link

Format as a clean priority list, most urgent first.
Send the result to Telegram.
If nothing matches, send: "All clear — no PRs need attention."

Tools: shell (gh CLI)
Enter fullscreen mode Exit fullscreen mode

Skill 2: slack-action-extractor

# slack-action-extractor

When triggered, read the last 100 messages from the #engineering Slack channel
using the Slack CLI or API.

Identify messages that:
- Mention my name or @handle
- Contain task language ("can you", "please", "need you to", "by EOD", "by Friday")
- Are from the last 24 hours

For each identified message:
- Extract the action item in one sentence
- Note who asked and when
- Note any deadline mentioned (or flag as "no deadline specified")

Append results to ~/tasks.md under today's date heading.
If new items were found, send a Telegram summary.
If nothing new, do nothing.

Tools: shell (Slack CLI), file write
Enter fullscreen mode Exit fullscreen mode

Skill 3: client-status-drafter

# client-status-drafter

Every Friday at 4PM, do the following:

1. Run `gh pr list --state merged --limit 20` to get this week's merged PRs
2. Read closed Linear tickets from the past 7 days via the Linear CLI
3. From memory, recall the client name and their current project context
4. Draft a plain-English weekly status email:
   - 2-3 sentences on what shipped
   - 1 sentence on what's in progress
   - 1 sentence on anything that needs client input or decision
   - Professional but warm tone — no bullet points, just prose
5. Save draft to ~/drafts/status-{YYYY-MM-DD}.md
6. Send me the draft on Telegram with two options:
   - Reply "send" to send it via Gmail immediately
   - Reply "edit [your changes]" to revise before sending

Tools: shell (gh, linear, gmail CLI), file write, memory read
Enter fullscreen mode Exit fullscreen mode

The Lobster Workflow That Chains Everything

name: claw-ops-daily
schedule: "0 8 * * 1-5"

steps:
  - id: prs
    skill: pr-morning-digest
    output: pr_summary

  - id: slack
    skill: slack-action-extractor
    output: action_items

  - id: brief
    action: telegram_send
    message: |
      Good morning. Here's your briefing:

      **PRs needing attention:**
      {{pr_summary}}

      **New action items from Slack:**
      {{action_items}}

  - id: status_draft
    skill: client-status-drafter
    condition: "day_of_week == friday"
    input:
      context: "{{pr_summary}} {{action_items}}"
Enter fullscreen mode Exit fullscreen mode

The Setup (Reproducible in Under an Hour)

Step 1: Install OpenClaw

curl -fsSL https://openclaw.ai/install.sh | bash
openclaw config set anthropic_api_key=YOUR_KEY
Enter fullscreen mode Exit fullscreen mode

Step 2: Create the skill files

mkdir -p ~/.openclaw/skills
nano ~/.openclaw/skills/pr-morning-digest.md
nano ~/.openclaw/skills/slack-action-extractor.md
nano ~/.openclaw/skills/client-status-drafter.md
Enter fullscreen mode Exit fullscreen mode

Step 3: Create the Lobster workflow

nano ~/.openclaw/workflows/claw-ops-daily.yaml
Enter fullscreen mode Exit fullscreen mode

Step 4: Connect Telegram

openclaw connect telegram
# Follow the QR code flow — takes 90 seconds
Enter fullscreen mode Exit fullscreen mode

Step 5: Start the gateway and test

openclaw start
# Message your Telegram bot: "Run claw-ops-daily now"
Enter fullscreen mode Exit fullscreen mode

Total time from zero to running: 47 minutes.


What Actually Happens in Production

Monday 8:02 AM — Telegram:

Good morning. Here's your briefing:

PRs needing attention:
• [URGENT] backend/api — PR #312 "Fix auth token refresh" — CI failing, open 31hrs
• frontend/dashboard — PR #308 "New onboarding flow" — awaiting review, open 26hrs

New action items from Slack:
• Sarah asked you to look at the deployment config by EOD today
• No deadline: Jordan mentioned the staging DB needs a migration check
Enter fullscreen mode Exit fullscreen mode

Friday 4:03 PM — Telegram:

Draft ready: ~/drafts/status-2026-04-25.md

Preview:
"This week we shipped the auth token refresh fix and the new onboarding
flow, both now live in production. We're currently working through the
staging database migration — expect that wrapped by Tuesday. One thing
we'd love your input on: the API rate limit thresholds for the premium
tier. Happy to jump on a quick call Monday if useful."

Reply "send" to send via Gmail or "edit [changes]" to revise.
Enter fullscreen mode Exit fullscreen mode

I reply "send." Done.


The Result

Task Before After
Morning PR triage 25 min manual GitHub scanning 45 sec reading Telegram
Slack action item harvesting ~40 min/day of tab switching Automated, instant summary
Weekly client status 90 min writing + context gathering 30 sec reviewing + one-tap send
Email follow-up chasing 45 min/week Zero — agent handles it
Total ~9 hrs/week ~20 min/week

Honest Notes

What worked immediately: The PR digest and Telegram integration were flawless out of the box.

What needed iteration: The client status email tone took two rounds of refinement in agents.md. Adding "Write like a human who has a strong working relationship with this client. Warm, direct, no corporate filler." to the agent personality fixed it completely.

Security note: I run with --sandbox disabled because I need full shell access for the gh and linear CLIs. This is a deliberate choice with understood risk. Start sandboxed, then selectively enable only the tools each skill genuinely needs.


Fork It

All three skill files and the Lobster workflow are in this GitHub Repository:
https://github.com/FarooqShabbir/claw-ops

The entire point of the skills format is that you're not copying code — you're copying intent. Edit the instructions to match your stack, and the agent adapts automatically.


Submitted for the OpenClaw Writing Challenge on DEV — OpenClaw in Action prompt.

Top comments (0)