Some checks failed
ClawSweeper Dispatch / dispatch (push) Has been cancelled
CodeQL / Security High (actions) (push) Has been cancelled
CodeQL / Security High (channel-runtime-boundary) (push) Has been cancelled
CodeQL / Security High (core-auth-secrets) (push) Has been cancelled
CodeQL / Security High (mcp-process-tool-boundary) (push) Has been cancelled
CodeQL / Security High (network-ssrf-boundary) (push) Has been cancelled
CodeQL / Security High (plugin-trust-boundary) (push) Has been cancelled
CodeQL / Security High (process-exec-boundary) (push) Has been cancelled
Docs Sync Publish Repo / sync-publish-repo (push) Has been cancelled
Docs / docs (push) Has been cancelled
OpenClaw Stable Main Closeout / Resolve stable release closeout inputs (push) Has been cancelled
OpenClaw Stable Main Closeout / Verify stable main closeout (push) Has been cancelled
Workflow Sanity / no-tabs (push) Has been cancelled
Workflow Sanity / actionlint (push) Has been cancelled
Workflow Sanity / generated-doc-baselines (push) Has been cancelled
CI / runner-admission (push) Has been cancelled
CI / preflight (push) Has been cancelled
CI / security-fast (push) Has been cancelled
CI / pnpm-store-warmup (push) Has been cancelled
CI / build-artifacts (push) Has been cancelled
CI / native-i18n (push) Has been cancelled
CI / ${{ matrix.check_name }} (push) Has been cancelled
CI / ${{ matrix.checkName }} (push) Has been cancelled
CI / checks-node-compat-node22 (push) Has been cancelled
CI / check-bundled-channel-config-metadata (push) Has been cancelled
CI / check-dependencies (push) Has been cancelled
CI / check-guards (push) Has been cancelled
CI / check-lint (push) Has been cancelled
CI / check-prod-types (push) Has been cancelled
CI / check-shrinkwrap (push) Has been cancelled
CI / check-test-types (push) Has been cancelled
CI / check-additional-boundaries-a (push) Has been cancelled
CI / check-additional-boundaries-bcd (push) Has been cancelled
CI / check-additional-extension-bundled (push) Has been cancelled
CI / check-additional-extension-channels (push) Has been cancelled
CI / check-additional-extension-package-boundary (push) Has been cancelled
CI / check-additional-runtime-topology-architecture (push) Has been cancelled
CI / check-session-accessor-boundary (push) Has been cancelled
CI / check-session-transcript-reader-boundary (push) Has been cancelled
CI / check-docs (push) Has been cancelled
CI / skills-python (push) Has been cancelled
CI / macos-swift (push) Has been cancelled
CI / ios-build (push) Has been cancelled
CI / ci-timings-summary (push) Has been cancelled
Native App Locale Refresh / Refresh native fa (push) Has been cancelled
Native App Locale Refresh / Refresh native fr (push) Has been cancelled
Native App Locale Refresh / Refresh native hi (push) Has been cancelled
Native App Locale Refresh / Refresh native id (push) Has been cancelled
Native App Locale Refresh / Refresh native it (push) Has been cancelled
Native App Locale Refresh / Refresh native ja-JP (push) Has been cancelled
Control UI Locale Refresh / plan (push) Has been cancelled
Control UI Locale Refresh / Refresh ${{ matrix.locale }} (push) Has been cancelled
Control UI Locale Refresh / Commit control UI locale refresh (push) Has been cancelled
Live Media Runner Image / Build live media runner image (push) Has been cancelled
Native App Locale Refresh / Refresh native ar (push) Has been cancelled
Native App Locale Refresh / Refresh native de (push) Has been cancelled
Native App Locale Refresh / Refresh native es (push) Has been cancelled
Native App Locale Refresh / Refresh native ko (push) Has been cancelled
Native App Locale Refresh / Refresh native nl (push) Has been cancelled
Native App Locale Refresh / Refresh native pl (push) Has been cancelled
Native App Locale Refresh / Refresh native pt-BR (push) Has been cancelled
Native App Locale Refresh / Refresh native ru (push) Has been cancelled
Native App Locale Refresh / Refresh native sv (push) Has been cancelled
Native App Locale Refresh / Refresh native th (push) Has been cancelled
Native App Locale Refresh / Refresh native tr (push) Has been cancelled
Native App Locale Refresh / Refresh native uk (push) Has been cancelled
Native App Locale Refresh / Refresh native vi (push) Has been cancelled
Native App Locale Refresh / Refresh native zh-CN (push) Has been cancelled
Native App Locale Refresh / Refresh native zh-TW (push) Has been cancelled
Native App Locale Refresh / Commit native locale refresh (push) Has been cancelled
Plugin Init Scaffold Validation / Validate provider scaffold (push) Has been cancelled
Plugin NPM Release / preview_plugins_npm (push) Has been cancelled
Plugin NPM Release / Validate release publish approval (push) Has been cancelled
Plugin NPM Release / preview_plugin_pack (push) Has been cancelled
Plugin NPM Release / publish_plugins_npm (push) Has been cancelled
Sandbox Common Smoke / sandbox-common-smoke (push) Has been cancelled
Website Installer Sync / static (push) Has been cancelled
Website Installer Sync / linux-docker (push) Has been cancelled
Website Installer Sync / macos-installer (push) Has been cancelled
Website Installer Sync / windows-installer (push) Has been cancelled
Website Installer Sync / sync-website (push) Has been cancelled
Adolf is a fork/vendored clone of github.com/openclaw/openclaw (v2026.6.11), free to diverge. Tree copied sans upstream .git; upstream remote added for future syncs. Node pinned to 24 (.nvmrc); engines already require >=22.19. Preserves docs/ARCHITECTURE.md. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LeqyaxJF2nbRXJtae2kNB2
162 lines
6.2 KiB
Markdown
162 lines
6.2 KiB
Markdown
---
|
|
name: clawdtributor
|
|
description: "Use for OpenClaw clawtributors PR/issue triage: Discrawl discovery, live-open rechecks, deep review, topic grouping, and compact @handle/LOC/type/blast/verification summaries."
|
|
---
|
|
|
|
# Clawdtributor
|
|
|
|
Use for the `#clawtributors` queue: Discord-discovered OpenClaw PRs/issues that need live GitHub status plus maintainer-quality review.
|
|
|
|
## Compose with other skills
|
|
|
|
- `$discrawl`: local Discord archive sync/search.
|
|
- `$openclaw-pr-maintainer`: live GitHub PR/issue review, duplicate search, close/land rules.
|
|
- `$gitcrawl`: related issue/PR and current-main/stale-proof search.
|
|
- `$openclaw-testing` / `$crabbox`: proof choice when a candidate needs real validation.
|
|
|
|
## Archive flow
|
|
|
|
Local archive first; verify freshness for current questions.
|
|
|
|
```bash
|
|
discrawl status --json
|
|
discrawl sync
|
|
```
|
|
|
|
Resolve channel if needed:
|
|
|
|
```bash
|
|
sqlite3 "$HOME/.discrawl/discrawl.db" \
|
|
"select id,name from channels where name like '%clawtributor%' order by name;"
|
|
```
|
|
|
|
Current known channel id from prior work: `1458141495701012561`. Re-resolve if it stops matching.
|
|
|
|
Extract recent refs:
|
|
|
|
```bash
|
|
sqlite3 "$HOME/.discrawl/discrawl.db" "
|
|
select m.created_at, coalesce(nullif(mm.username,''), m.author_id), m.content
|
|
from messages m
|
|
left join members mm on mm.guild_id=m.guild_id and mm.user_id=m.author_id
|
|
where m.channel_id='1458141495701012561'
|
|
and m.created_at >= '<ISO cutoff>'
|
|
order by m.created_at desc;" |
|
|
perl -nE 'while(m{github\.com/openclaw/openclaw/(pull|issues)/(\d+)}g){say "$1\t$2\t$_"}'
|
|
```
|
|
|
|
Map a PR/issue back to the Discord handle:
|
|
|
|
```bash
|
|
sqlite3 -separator $'\t' "$HOME/.discrawl/discrawl.db" "
|
|
select m.created_at,
|
|
coalesce(nullif(mm.username,''), nullif(mm.global_name,''), m.author_id)
|
|
from messages m
|
|
left join members mm on mm.guild_id=m.guild_id and mm.user_id=m.author_id
|
|
where m.channel_id='1458141495701012561'
|
|
and m.content like '%github.com/openclaw/openclaw/<pull-or-issues>/<number>%'
|
|
order by m.created_at desc
|
|
limit 1;"
|
|
```
|
|
|
|
Show only `@handle` in the final list. Do not write the word Discord unless the user asks for source details.
|
|
|
|
## Live GitHub recheck
|
|
|
|
Always recheck live state before listing, closing, or saying "open".
|
|
|
|
```bash
|
|
GITHUB_TOKEN= GITHUB_TOKEN_NODIFF= GH_TOKEN= \
|
|
gh api repos/openclaw/openclaw/pulls/<number> \
|
|
--jq '. | {number,title,state,merged,mergeable,draft,author:.user.login,url:.html_url,updatedAt:.updated_at,additions,deletions,changedFiles:.changed_files}'
|
|
```
|
|
|
|
For issues:
|
|
|
|
```bash
|
|
GITHUB_TOKEN= GITHUB_TOKEN_NODIFF= GH_TOKEN= \
|
|
gh api repos/openclaw/openclaw/issues/<number> \
|
|
--jq '. | {number,title,state,author:.user.login,url:.html_url,updatedAt:.updated_at,pull_request}'
|
|
```
|
|
|
|
If `gh` says bad credentials, clear env vars with empty assignments as above. Use `--jq '. | {...}'` for object projections.
|
|
|
|
## Review depth
|
|
|
|
For each open item, inspect enough to classify risk:
|
|
|
|
- PR body, linked issue, comments, files, additions/deletions, checks.
|
|
- Current `origin/main` code path and adjacent tests.
|
|
- Related threads with `gitcrawl neighbors/search`.
|
|
- Whether main already fixed it, the PR is obsolete, or the idea is invalid.
|
|
- Blast radius: touched runtime surfaces, config/schema, plugin/core boundary, user-visible behavior, release/package surface.
|
|
- Verification: say if local unit/docs proof is enough, live/provider proof is needed, or it is not directly verifiable.
|
|
|
|
Do not close from title alone. If closing as done on main or nonsensical, prove it against current main and comment first when mutation is requested. Bulk close/reopen above 5 requires explicit scope.
|
|
|
|
## Candidate selection
|
|
|
|
When asked for `5 new`, exclude refs already surfaced in the session and refill from the archive until there are 5 live-open candidates. If fewer than 5 remain open, list all open ones and say how many short.
|
|
|
|
When asked to `update`, `refresh`, `recheck`, `check again`, or similar, return an updated live-open candidate list. Sort by maintainer importance, not recency: high-impact ready fixes first, then useful-but-review-first, then open/not-ready items. Do not include a "changed since last pass" section or bottom-line merged/closed summary unless the user explicitly asks for churn.
|
|
|
|
Prefer:
|
|
|
|
- Fresh, open, external contributor work.
|
|
- Small, high-confidence bugfixes.
|
|
- Clear repro, tests, or obvious code-path proof.
|
|
|
|
Demote:
|
|
|
|
- Broad product/features without owner decision.
|
|
- Large rewrites with unclear contract.
|
|
- PRs already in progress, merged, closed, duplicate, or fixed on main.
|
|
|
|
## Topic grouping
|
|
|
|
Group only when useful or requested:
|
|
|
|
- Agents/tooling
|
|
- Providers/auth/models
|
|
- Channels/messaging
|
|
- UI/web
|
|
- Gateway/protocol/runtime
|
|
- Config/memory/cache
|
|
- Docker/install/release
|
|
- Docs/tests/chore
|
|
- Closed/obsolete
|
|
|
|
Infer topic from labels, touched files, title/body, and actual code path.
|
|
|
|
## Output format
|
|
|
|
No Markdown tables. Compact bullets. Use color/risk markers:
|
|
|
|
- 🟢 low/narrow
|
|
- 🟡 medium or needs targeted proof
|
|
- 🔴 broad/high runtime risk
|
|
- 🟣 security/policy/owner-boundary slow review
|
|
- ✅ merged
|
|
- ⚪ closed unmerged
|
|
|
|
Required line shape:
|
|
|
|
```markdown
|
|
- **PR #81244** `@whatsskill.` `+118/-1` `bug` 🟢 https://github.com/openclaw/openclaw/pull/81244 - Prevents chat action buttons from overlapping short assistant replies. Verifiable: yes. Blast: web chat rendering, low.
|
|
- **Issue #81245** `@alice` `LOC n/a` `bug` 🟡 https://github.com/openclaw/openclaw/issues/81245 - Reports duplicate Telegram replies when reconnecting after gateway restart. Verifiable: partial. Blast: Telegram channel runtime, medium.
|
|
```
|
|
|
|
Rules:
|
|
|
|
- Bold the `PR #n` or `Issue #n` marker.
|
|
- Use `@handle`, not author bio text.
|
|
- Always include the full GitHub URL.
|
|
- Include a one-line description after the URL, separated with `-`.
|
|
- PR LOC is `+additions/-deletions`; issue LOC is `LOC n/a`.
|
|
- Type: `bug`, `feature`, `perf`, `security`, `docs`, `test`, `chore`, or `refactor`.
|
|
- Write a full sentence for what it does.
|
|
- Always include blast radius in one phrase.
|
|
- Always include `verifiable: yes|partial|no` plus the shortest proof hint when helpful.
|
|
- If status is not open, still show it only when the user asked for all surfaced refs; use ✅ or ⚪ and state merged/closed.
|
|
- For refresh-style asks, prefer section order: `Best Open Now`, `Useful But Review First`, `Still Open / Not Ready`. Omit merged/closed churn by default.
|