Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
138 changes: 138 additions & 0 deletions skills/openclaw-native/community-skill-radar/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
---
name: community-skill-radar
version: "1.0"
category: openclaw-native
description: Searches Reddit communities for OpenClaw pain points and feature requests, scores them by signal strength, and writes a prioritized PROPOSALS.md for you to review and act on.
stateful: true
cron: "0 9 */3 * *"
---

# Community Skill Radar

## What it does

Your best skill ideas don't come from guessing — they come from what the community is actually struggling with. Community Skill Radar scans Reddit every 3 days for posts and comments mentioning OpenClaw pain points, feature requests, and skill gaps. It scores them by signal strength (upvotes, comment depth, recurrence) and writes a prioritized `PROPOSALS.md` in the repo root.

You review the proposals. You decide what to build. The radar just makes sure you never miss a signal.

## When to invoke

- Automatically, every 3 days (cron)
- Manually when you want a fresh pulse-check on community needs
- Before planning a new batch of skills

## Subreddits searched

| Subreddit | Why |
|---|---|
| `openclaw` | Primary OpenClaw community |
| `LocalLLaMA` | Local AI users — many run OpenClaw |
| `ClaudeAI` | Claude ecosystem — overlaps with OpenClaw users |
| `MachineLearning` | Broader AI practitioners |
| `AIAgents` | Agent-specific discussions |

Custom subreddits can be configured via `--subreddits`.

## Signal scoring

Each candidate is scored on 5 dimensions:

| Signal | Weight | Source |
|---|---|---|
| Upvotes | 2x | Post/comment score |
| Comment depth | 1.5x | Number of replies — more discussion = stronger signal |
| Recurrence | 3x | Same pain point appearing across multiple posts |
| Keyword density | 1x | Concentration of problem/request keywords |
| Recency | 1.5x | Newer posts score higher (7-day decay) |

## How to use

```bash
python3 radar.py --scan # Full scan, write PROPOSALS.md
python3 radar.py --scan --lookback 7 # Scan last 7 days (default: 3)
python3 radar.py --scan --subreddits openclaw,LocalLLaMA
python3 radar.py --scan --min-score 5.0 # Only proposals scoring ≥5.0
python3 radar.py --status # Last scan summary from state
python3 radar.py --history # Show past scan results
python3 radar.py --format json # Machine-readable output
```

## Cron wakeup behaviour

Every 3 days at 9am:

1. Fetch recent posts from each configured subreddit via Reddit's public JSON API (no auth required)
2. Filter for posts/comments containing OpenClaw-related keywords
3. Extract pain points and feature request signals
4. Score each candidate
5. Deduplicate against previously seen proposals (stored in state)
6. Write `PROPOSALS.md` to the repo root
7. Print summary to stdout

## PROPOSALS.md format

```markdown
# Skill Proposals — Community Radar

*Last scanned: 2026-03-16 09:00 | 5 subreddits | 14 candidates*

## High Signal (score ≥ 8.0)

### 1. Skill auto-update mechanism (score: 12.4)
- **Source:** r/openclaw — "Anyone else manually pulling skill updates?"
- **Signal:** 47 upvotes, 23 comments, seen 3 times across 2 subreddits
- **Pain point:** No way to update installed skills without manual git pull
- **Potential skill:** `skill-auto-updater` — checks upstream repos for new versions

### 2. Context window usage dashboard (score: 9.1)
- **Source:** r/LocalLLaMA — "My openclaw agent keeps losing context mid-task"
- **Signal:** 31 upvotes, 18 comments
- **Pain point:** No visibility into how much context each skill consumes
- **Potential skill:** `context-usage-dashboard` — real-time token budget display

## Medium Signal (score 4.0–8.0)

...

## Previously Seen (already in state — not re-proposed)

...
```

## Procedure

**Step 1 — Let the cron run (or trigger manually)**

```bash
python3 radar.py --scan
```

**Step 2 — Review PROPOSALS.md**

Open `PROPOSALS.md` in the repo root. High-signal proposals are the ones the community is loudest about.

**Step 3 — Act on proposals you want to build**

For each proposal you decide to build, either:
- Ask your agent to create it: `"Build a skill for <pain point> using create-skill"`
- Open a GitHub issue for the community

**Step 4 — Mark proposals as actioned**

```bash
python3 radar.py --mark-actioned "skill-auto-updater"
```

This moves the proposal to the "actioned" list in state so it won't be re-proposed on future scans.

## State

Scan results, seen proposals, and actioned items stored in `~/.openclaw/skill-state/community-skill-radar/state.yaml`.

Fields: `last_scan_at`, `subreddits`, `proposals` list, `actioned` list, `scan_history`.

## Notes

- Uses Reddit's public JSON API at `reddit.com/<subreddit>/search.json`. No authentication required. Rate-limited to 1 request per 2 seconds to respect Reddit's guidelines.
- Does not post, comment, or interact with Reddit in any way — read-only scanning.
- `PROPOSALS.md` is gitignored by default (local working document). Add to `.gitignore` if not already present.
46 changes: 46 additions & 0 deletions skills/openclaw-native/community-skill-radar/STATE_SCHEMA.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
version: "1.0"
description: Community radar scan results, proposal ledger, and actioned tracking.
fields:
last_scan_at:
type: datetime
subreddits:
type: list
description: Subreddits included in the last scan
items:
type: string
proposals:
type: list
description: All proposals from the most recent scan (newest first)
items:
id: { type: string, description: "slug derived from title" }
title: { type: string }
pain_point: { type: string }
potential_skill: { type: string }
score: { type: float }
sources:
type: list
items:
subreddit: { type: string }
post_title: { type: string }
url: { type: string }
upvotes: { type: integer }
comments: { type: integer }
fetched_at: { type: datetime }
first_seen_at: { type: datetime }
times_seen: { type: integer }
actioned:
type: list
description: Proposal IDs that have been acted on (built, filed as issues)
items:
id: { type: string }
actioned_at: { type: datetime }
action: { type: string, description: "built, issue-filed, rejected" }
scan_history:
type: list
description: Rolling log of past scans (last 20)
items:
scanned_at: { type: datetime }
subreddits: { type: integer }
posts_fetched: { type: integer }
candidates_found: { type: integer }
proposals_written: { type: integer }
84 changes: 84 additions & 0 deletions skills/openclaw-native/community-skill-radar/example-state.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# Example runtime state for community-skill-radar
last_scan_at: "2026-03-16T09:00:22.441000"
subreddits:
- openclaw
- LocalLLaMA
- ClaudeAI
- MachineLearning
- AIAgents
proposals:
- id: skill-auto-update-mechanism
title: "Anyone else manually pulling skill updates every time?"
pain_point: "No way to update installed skills without manual git pull"
potential_skill: skill-auto-updater
category: integration
score: 12.4
sources:
- subreddit: openclaw
post_title: "Anyone else manually pulling skill updates every time?"
url: "https://reddit.com/r/openclaw/comments/abc123/..."
upvotes: 47
comments: 23
score: 8.2
fetched_at: "2026-03-16T09:00:20.000000"
- subreddit: LocalLLaMA
post_title: "OpenClaw skills need an update mechanism"
url: "https://reddit.com/r/LocalLLaMA/comments/def456/..."
upvotes: 18
comments: 9
score: 4.2
fetched_at: "2026-03-16T09:00:21.000000"
first_seen_at: "2026-03-13T09:00:00.000000"
times_seen: 3
- id: context-window-usage-dashboard
title: "My openclaw agent keeps losing context mid-task"
pain_point: "No visibility into how much context each skill consumes"
potential_skill: context-usage-dashboard
category: context
score: 9.1
sources:
- subreddit: LocalLLaMA
post_title: "My openclaw agent keeps losing context mid-task"
url: "https://reddit.com/r/LocalLLaMA/comments/ghi789/..."
upvotes: 31
comments: 18
score: 9.1
fetched_at: "2026-03-16T09:00:22.000000"
first_seen_at: "2026-03-16T09:00:22.000000"
times_seen: 1
actioned:
- id: skill-load-failure-detection
actioned_at: "2026-03-15T10:00:00.000000"
action: built
scan_history:
- scanned_at: "2026-03-16T09:00:22.000000"
subreddits: 5
posts_fetched: 142
candidates_found: 8
proposals_written: 8
- scanned_at: "2026-03-13T09:00:00.000000"
subreddits: 5
posts_fetched: 118
candidates_found: 5
proposals_written: 5
# ── Walkthrough ──────────────────────────────────────────────────────────────
# Every 3 days cron runs: python3 radar.py --scan
#
# Community Skill Radar — scanning 5 subreddits (last 3 days)
# ──────────────────────────────────────────────────────────────
# Fetching r/openclaw... 28 posts
# Fetching r/LocalLLaMA... 42 posts
# Fetching r/ClaudeAI... 35 posts
# Fetching r/MachineLearning... 22 posts
# Fetching r/AIAgents... 15 posts
#
# Posts fetched : 142
# Candidates found: 8
# High signal : 2
# Medium signal : 4
# Low signal : 2
#
# Written to: ~/.openclaw/extensions/superpowers/PROPOSALS.md
#
# python3 radar.py --mark-actioned skill-auto-update-mechanism --action built
# ✓ Marked 'skill-auto-update-mechanism' as built. Won't be re-proposed.
Loading
Loading