Diagnose and fix real problems. Every command here is tested and works.
Works with
AI-first code editor with Composer
Before installing skills in Cursor, ensure your development environment meets these requirements:
node --versionopenclaw-configExecute the skills CLI command in your project's root directory to begin installation:
Fetches openclaw-config from aradotso/trending-skills and configures it for Cursor.
The CLI shows a list of agents. Use arrow keys and space to select Cursor:
Confirm successful installation by checking the skill directory location:
Restart Cursor to activate openclaw-config. Access via /openclaw-config in your agent's command palette.
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your environment. Always review source, verify the publisher, and test in isolation before production.
Submit your Claude Code skill and start earning
Create detailed user stories, acceptance criteria, and feature specs
Example
Generate user stories for 'password reset feature' with acceptance criteria, edge cases, and test scenarios
Reduce spec writing time by 50%, ensure comprehensive coverage
Research competitors, compare features, identify gaps
Example
Analyze 5 competitor products, create feature comparison matrix, suggest differentiation opportunities
Complete competitive research in 2 hours instead of 2 days
Evaluate features using frameworks (RICE, ICE, Kano) and create prioritized backlogs
Example
Score 20 feature ideas using RICE framework, generate prioritized roadmap with rationale
0
total installs
0
this week
22
GitHub stars
0
upvotes
Run in your terminal
0
installs
0
this week
22
stars
Diagnose and fix real problems. Every command here is tested and works.
Run this first when anything seems wrong. Copy-paste the whole block:
echo "=== GATEWAY ===" && \
ps aux | grep -c "[o]penclaw" && \
echo "=== CONFIG JSON ===" && \
python3 -m json.tool ~/.openclaw/openclaw.json > /dev/null 2>&1 && echo "JSON: OK" || echo "JSON: BROKEN" && \
echo "=== CHANNELS ===" && \
cat ~/.openclaw/openclaw.json | jq -r '.channels | to_entries[] | "\(.key): policy=\(.value.dmPolicy // "n/a") enabled=\(.value.enabled // "implicit")"' && \
echo "=== PLUGINS ===" && \
cat ~/.openclaw/openclaw.json | jq -r '.plugins.entries | to_entries[] | "\(.key): \(.value.enabled)"' && \
echo "=== CREDS ===" && \
ls ~/.openclaw/credentials/whatsapp/default/ 2>/dev/null | wc -l | xargs -I{} echo "WhatsApp keys: {} files" && \
for d in ~/.openclaw/credentials/telegram/*/; do bot=$(basename "$d"); [ -f "$d/token.txt" ] && echo "Telegram $bot: OK" || echo "Telegram $bot: MISSING"; done && \
[ -f ~/.openclaw/credentials/bird/cookies.json ] && echo "Bird cookies: OK" || echo "Bird cookies: MISSING" && \
echo "=== CRON ===" && \
cat ~/.openclaw/cron/jobs.json | jq -r '.jobs[] | "\(.name): enabled=\(.enabled) status=\(.state.lastStatus // "never") \(.state.lastError // "")"' && \
echo "=== RECENT ERRORS ===" && \
tail -10 ~/.openclaw/logs/gateway.err.log 2>/dev/null && \
echo "=== MEMORY DB ===" && \
sqlite3 ~/.openclaw/memory/main.sqlite "SELECT COUNT(*) || ' chunks, ' || (SELECT COUNT(*) FROM files) || ' files indexed' FROM chunks;" 2>/dev/null
~/.openclaw/
βββ openclaw.json # MAIN CONFIG β channels, auth, gateway, plugins, skills
βββ openclaw.json.bak* # Auto-backups (.bak, .bak.1, .bak.2 ...)
βββ exec-approvals.json # Exec approval socket config
β
βββ agents/main/
β βββ agent/auth-profiles.json # Anthropic auth tokens
β βββ sessions/
β βββ sessions.json # SESSION INDEX β keys are like agent:main:whatsapp:+1234
β βββ *.jsonl # Session transcripts (one JSON per line)
β
βββ workspace/ # Agent workspace (git-tracked)
β βββ SOUL.md # Personality, writing style, tone rules
β βββ IDENTITY.md # Name, creature type, vibe
β βββ USER.md # Owner context and preferences
β βββ AGENTS.md # Session behavior, memory rules, safety
β βββ BOOT.md # Boot instructions (autopilot notification protocol)
β βββ HEARTBEAT.md # Periodic task checklist (empty = skip heartbeat)
β βββ MEMORY.md # Curated long-term memory (main session only)
β βββ TOOLS.md # Contacts, SSH hosts, device nicknames
β βββ memory/ # Daily logs: YYYY-MM-DD.md, topic-chat.md
β βββ skills/ # Workspace-level skills
β
βββ memory/main.sqlite # Vector memory DB (Gemini embeddings, FTS5 search)
β
βββ logs/
β βββ gateway.log # Runtime: startup, channel init, config reload, shutdown
β βββ gateway.err.log # Errors: connection drops, API failures, timeouts
β βββ commands.log # Command execution log
β
βββ cron/
β βββ jobs.json # Job definitions (schedule, payload, delivery target)
β βββ runs/ # Per-job run logs: {job-uuid}.jsonl
β
βββ credentials/
β βββ whatsapp/default/ # Baileys session: ~1400 app-state-sync-key-*.json files
β βββ telegram/{botname}/token.txt # Bot tokens (one per bot account)
β βββ bird/cookies.json # X/Twitter auth cookies
β
βββ extensions/{name}/ # Custom plugins (TypeScript)
β βββ openclaw.plugin.json # {"id", "channels", "configSchema"}
β βββ index.ts # Entry point
β βββ src/ # channel.ts, actions.ts, runtime.ts, types.ts
β
βββ identity/ # device.json, device-auth.json
βββ devices/ # paired.json, pending.json
βββ media/inbound/ # Received images, audio files
βββ media/browser/ # Browser screenshots
βββ browser/openclaw/user-data/ # Chromium profile (~180MB)
βββ tools/signal-cli/ # Signal CLI binary
βββ subagents/runs.json # Sub-agent execution log
βββ canvas/index.html # Web canvas UI
βββ telegram/
βββ update-offset-coder.json # {"lastUpdateId": N} β Telegram polling cursor
βββ update-offset-sales.json # Reset these to 0 to replay missed messages
This is the #1 issue. The message arrives but the bot doesn't respond. Check in this order:
# 1. Is the bot actually running?
grep -i "whatsapp.*starting\|whatsapp.*listening" ~/.openclaw/logs/gateway.log | tail -5
# 2. Check for 408 timeout drops (WhatsApp web disconnects frequently)
grep -i "408\|499\|retry" ~/.openclaw/logs/gateway.err.log | tail -10
# If you see "Web connection closed (status 408). Retry 1/12" β this is normal,
# it auto-recovers. But if retries reach 12/12, the session dropped completely.
# 3. Check for cross-context messaging blocks
grep -i "cross-context.*denied" ~/.openclaw/logs/gateway.err.log | tail -10
# Common: "Cross-context messaging denied: action=send target provider "whatsapp" while bound to "signal""
# This means the agent was in a Signal session and tried to reply on WhatsApp.
# FIX: The message needs to come through in the WhatsApp session context, not Signal.
# 4. Check the session exists for that contact
cat ~/.openclaw/agents/main/sessions/sessions.json | jq -r 'to_entries[] | select(.key | test("whatsapp")) | "\(.key) | \(.value.origin.label // "?")"'
# 5. Check if the sender is allowed
cat ~/.openclaw/openclaw.json | jq '.channels.whatsapp | {dmPolicy, allowFrom, selfChatMode, groupPolicy}'
# If dmPolicy is "allowlist" and the sender isn't in allowFrom, message is silently dropped.
# 6. Check if it's a group message (groups are disabled by default)
cat ~/.openclaw/openclaw.json | jq '.channels.whatsapp.groupPolicy'
# "disabled" means ALL group messages are ignored.
# 7. Check for lane congestion (agent busy with another task)
grep "lane wait exceeded" ~/.openclaw/logs/gateway.err.log | tail -5
# If the agent is stuck on a long LLM call, new messages queue up.
# 8. Check for agent run timeout
grep "embedded run timeout" ~/.openclaw/logs/gateway.err.log | tail -5
# Hard limit is 600s (10 min). If the agent's response takes longer, it's killed.
# Check credential files exist (should be ~1400 files)
ls ~/.openclaw/credentials/whatsapp/default/ | wc -l
# If 0 files: session was never created or got wiped
# Fix: re-pair with `openclaw configure`
# Check for QR/pairing events
grep -i "pair\|link\|qr\|scan\|logged out" ~/.openclaw/logs/gateway.log | tail -10
# Check for Baileys errors
grep -i "baileys\|DisconnectReason\|logout\|stream:error" ~/.openclaw/logs/gateway.err.log | tail -20
# Nuclear fix: delete credentials and re-pair
# rm -rf ~/.openclaw/credentials/whatsapp/default/
# openclaw configure
Two separate problems that look the same:
# 1. Check for config validation errors (THE COMMON ONE)
grep -i "telegram.*unrecognized\|telegram.*invalid\|telegram.*policy" ~/.openclaw/logs/gateway.err.log | tail -10
# Known issue: the keys "token" and "username" under accounts are not recognized.
# The correct field is "botToken", not "token".
# 2. Check the actual config
cat ~/.openclaw/openclaw.json | jq '.channels.telegram'
# Verify each bot has "botToken" (not "token") and "name" fields.
# 3. Check polling status β bots die after getUpdates timeout
grep -i "telegram.*exit\|telegram.*timeout\|getUpdates" ~/.openclaw/logs/gateway.err.log | tail -10
# "[telegram] [sales] channel exited: Request to 'getUpdates' timed out after 500 seconds"
# This means the bot lost connection to Telegram's API and stopped listening.
# Fix: restart gateway β `openclaw gateway restart`
# 4. Check the polling offset (if bot "forgets" or replays old messages)
cat ~/.openclaw/telegram/update-offset-coder.json
cat ~/.openclaw/telegram/update-offset-sales.json
# If lastUpdateId is stuck or 0, the bot will reprocess old messages.
# To skip to latest: the gateway sets this automatically on restart.
# 5. Check if both bots are starting
grep -i "telegram.*starting\|telegram.*coder\|telegram.*sales" ~/.openclaw/logs/gateway.log | tail -10
# 6. "Bot forgets" β this is usually a session issue, not Telegram
# Each Telegram user gets their own session in sessions.json.
# Check if the session exists:
cat ~/.openclaw/agents/main/sessions/sessions.json | jq -r 'to_entries[] | select(.key | tesMake data-driven prioritization decisions faster
Draft PRDs, status updates, and stakeholder presentations
Example
Create executive summary of Q3 roadmap, monthly progress report, feature launch announcement
Save 3-5 hours/week on communication overhead
Prerequisites
Time Estimate
30-60 minutes to see productivity improvements
Steps
Common Pitfalls
β Do
β Don't
π‘ Pro Tips
β Use when
Use for user story writing, competitive research, roadmap prioritization, stakeholder communication, and PRD drafting. Best for reducing repetitive documentation and research work.
β Avoid when
Avoid for strategic product vision (requires deep customer empathy), pricing decisions (needs market and financial expertise), or when face-to-face customer discovery is more valuable than speed.
mattpocock/skills
parcadei/continuous-claude-v3
cursor/plugins
pproenca/dot-skills
ailabs-393/ai-labs-claude-skills
mattpocock/skills
Useful defaults in openclaw-config β fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
We added openclaw-config from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
openclaw-config has been reliable in day-to-day use. Documentation quality is above average for community skills.
Keeps context tight: openclaw-config is the kind of skill you can hand to a new teammate without a long onboarding doc.
Solid pick for teams standardizing on skills: openclaw-config is focused, and the summary matches what you get after install.
openclaw-config is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.
We added openclaw-config from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
We added openclaw-config from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
openclaw-config fits our agent workflows well β practical, well scoped, and easy to wire into existing repos.
openclaw-config reduced setup friction for our internal harness; good balance of opinion and flexibility.
showing 1-10 of 31