惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
U
Unit 42
GbyAI
GbyAI
M
MIT News - Artificial intelligence
美团技术团队
罗磊的独立博客
雷峰网
雷峰网
量子位
博客园 - 【当耐特】
Last Week in AI
Last Week in AI
D
Docker
小众软件
小众软件
S
SegmentFault 最新的问题
Blog — PlanetScale
Blog — PlanetScale
阮一峰的网络日志
阮一峰的网络日志
宝玉的分享
宝玉的分享
T
Tailwind CSS Blog
WordPress大学
WordPress大学
V
V2EX
博客园_首页
腾讯CDC
The Cloudflare Blog
A
About on SuperTechFans
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC

Recent Commits to openclaw:main

test: merge chat side-result checks · openclaw/openclaw@ddd2c2a test: merge cron history checks · openclaw/openclaw@f7eb746 test: merge responsive navigation shell checks · openclaw/openclaw@c2e4b47 docs(changelog): add codex oauth fixes · openclaw/openclaw@628e6cd test: merge navigation routing cases · openclaw/openclaw@5d8cecb Tests: mock channel registry bundled fallback · openclaw/openclaw@2b08233 Secrets: avoid broad web search discovery for single plugin config · openclaw/openclaw@a464f59 test: merge config view browser checks · openclaw/openclaw@20cf511 fix(status): align oauth health with runtime · openclaw/openclaw@eed7116 feat: add macOS screen snapshots for monitor preview (#67954) thanks … · openclaw/openclaw@f377db1 fix: report shared auth scopes in hello-ok (#67810) thanks @BunsDev · openclaw/openclaw@0b6c39b Auto-reply: avoid eager bundled route fallback · openclaw/openclaw@3ea1bf4 Tests: narrow session binding contract setup · openclaw/openclaw@54e4e16 fix(macOS): enable undo/redo in webchat composer text input (#34962) · openclaw/openclaw@00951dc Tests: speed up channel setup promotion · openclaw/openclaw@82b529a Docs: refresh agent instructions · openclaw/openclaw@5775fe2 fix(auth): serialize OAuth refresh across agents to fix #26322 (#67876) · openclaw/openclaw@8e79080 test: allow ollama public surface boundary test · openclaw/openclaw@7d4f1a6 Docs: add test performance guardrails · openclaw/openclaw@89706d3 Tests: restore context-engine usage proof · openclaw/openclaw@e4c4f95 Tests: slim context engine runtime coverage · openclaw/openclaw@74c198f ci: retry failed custom checkouts · openclaw/openclaw@0ee5baf test: trim duplicate provider auth onboarding cases · openclaw/openclaw@1ffc02e matrix: fix sessions_spawn --thread subagent session spawning (#67643) · openclaw/openclaw@1ce2596 test: reduce auth choice fixture churn · openclaw/openclaw@857b9cd test: mock health status config boundaries · openclaw/openclaw@9d5ab4a test: mock onboard config io boundary · openclaw/openclaw@299694d test: mock legacy state plugin boundaries · openclaw/openclaw@2713089 test: mock channel install boundaries · openclaw/openclaw@b945248 test: mock doctor preview channel boundaries · openclaw/openclaw@b1a3ad4
docs: add clawdtributor triage skill · openclaw/openclaw@...
steipete · 2026-05-13 · via Recent Commits to openclaw:main

@@ -0,0 +1,156 @@

1+

---

2+

name: clawdtributor

3+

description: Use when asked to scan the OpenClaw clawtributors Discord channel for PRs/issues, find new/open contributor work, recheck which surfaced items remain open, deep-review candidates, group them by topic, or produce the compact colored triage list with @handle, LOC, PR/Issue marker, type, blast radius, and verification hint.

4+

---

5+6+

# Clawdtributor

7+8+

Use for the `#clawtributors` queue: Discord-discovered OpenClaw PRs/issues that need live GitHub status plus maintainer-quality review.

9+10+

## Compose with other skills

11+12+

- `$discrawl`: local Discord archive sync/search.

13+

- `$openclaw-pr-maintainer`: live GitHub PR/issue review, duplicate search, close/land rules.

14+

- `$gitcrawl`: related issue/PR and current-main/stale-proof search.

15+

- `$openclaw-testing` / `$crabbox`: proof choice when a candidate needs real validation.

16+17+

## Archive flow

18+19+

Local archive first; verify freshness for current questions.

20+21+

```bash

22+

discrawl status --json

23+

discrawl sync

24+

```

25+26+

Resolve channel if needed:

27+28+

```bash

29+

sqlite3 "$HOME/.discrawl/discrawl.db" \

30+

"select id,name from channels where name like '%clawtributor%' order by name;"

31+

```

32+33+

Current known channel id from prior work: `1458141495701012561`. Re-resolve if it stops matching.

34+35+

Extract recent refs:

36+37+

```bash

38+

sqlite3 "$HOME/.discrawl/discrawl.db" "

39+

select m.created_at, coalesce(nullif(mm.username,''), m.author_id), m.content

40+

from messages m

41+

left join members mm on mm.guild_id=m.guild_id and mm.user_id=m.author_id

42+

where m.channel_id='1458141495701012561'

43+

and m.created_at >= '<ISO cutoff>'

44+

order by m.created_at desc;" |

45+

perl -nE 'while(m{github\.com/openclaw/openclaw/(pull|issues)/(\d+)}g){say "$1\t$2\t$_"}'

46+

```

47+48+

Map a PR/issue back to the Discord handle:

49+50+

```bash

51+

sqlite3 -separator $'\t' "$HOME/.discrawl/discrawl.db" "

52+

select m.created_at,

53+

coalesce(nullif(mm.username,''), nullif(mm.global_name,''), m.author_id)

54+

from messages m

55+

left join members mm on mm.guild_id=m.guild_id and mm.user_id=m.author_id

56+

where m.channel_id='1458141495701012561'

57+

and m.content like '%github.com/openclaw/openclaw/<pull-or-issues>/<number>%'

58+

order by m.created_at desc

59+

limit 1;"

60+

```

61+62+

Show only `@handle` in the final list. Do not write the word Discord unless the user asks for source details.

63+64+

## Live GitHub recheck

65+66+

Always recheck live state before listing, closing, or saying "open".

67+68+

```bash

69+

GITHUB_TOKEN= GITHUB_TOKEN_NODIFF= GH_TOKEN= \

70+

gh api repos/openclaw/openclaw/pulls/<number> \

71+

--jq '. | {number,title,state,merged,mergeable,draft,author:.user.login,url:.html_url,updatedAt:.updated_at,additions,deletions,changedFiles:.changed_files}'

72+

```

73+74+

For issues:

75+76+

```bash

77+

GITHUB_TOKEN= GITHUB_TOKEN_NODIFF= GH_TOKEN= \

78+

gh api repos/openclaw/openclaw/issues/<number> \

79+

--jq '. | {number,title,state,author:.user.login,url:.html_url,updatedAt:.updated_at,pull_request}'

80+

```

81+82+

If `gh` says bad credentials, clear env vars with empty assignments as above. Use `--jq '. | {...}'` for object projections.

83+84+

## Review depth

85+86+

For each open item, inspect enough to classify risk:

87+88+

- PR body, linked issue, comments, files, additions/deletions, checks.

89+

- Current `origin/main` code path and adjacent tests.

90+

- Related threads with `gitcrawl neighbors/search`.

91+

- Whether main already fixed it, the PR is obsolete, or the idea is invalid.

92+

- Blast radius: touched runtime surfaces, config/schema, plugin/core boundary, user-visible behavior, release/package surface.

93+

- Verification: say if local unit/docs proof is enough, live/provider proof is needed, or it is not directly verifiable.

94+95+

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.

96+97+

## Candidate selection

98+99+

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.

100+101+

Prefer:

102+103+

- Fresh, open, external contributor work.

104+

- Small, high-confidence bugfixes.

105+

- Clear repro, tests, or obvious code-path proof.

106+107+

Demote:

108+109+

- Broad product/features without owner decision.

110+

- Large rewrites with unclear contract.

111+

- PRs already in progress, merged, closed, duplicate, or fixed on main.

112+113+

## Topic grouping

114+115+

Group only when useful or requested:

116+117+

- Agents/tooling

118+

- Providers/auth/models

119+

- Channels/messaging

120+

- UI/web

121+

- Gateway/protocol/runtime

122+

- Config/memory/cache

123+

- Docker/install/release

124+

- Docs/tests/chore

125+

- Closed/obsolete

126+127+

Infer topic from labels, touched files, title/body, and actual code path.

128+129+

## Output format

130+131+

No Markdown tables. Compact bullets. Use color/risk markers:

132+133+

- 🟢 low/narrow

134+

- 🟡 medium or needs targeted proof

135+

- 🔴 broad/high runtime risk

136+

- 🟣 security/policy/owner-boundary slow review

137+

- ✅ merged

138+

- ⚪ closed unmerged

139+140+

Required line shape:

141+142+

```markdown

143+

- **PR #81244** `@whatsskill.` `+118/-1` `bug` 🟢 verifiable: yes. This prevents chat action buttons from overlapping short assistant replies. Blast: web chat rendering, low.

144+

- **Issue #81245** `@alice` `LOC n/a` `bug` 🟡 verifiable: partial. This reports duplicate Telegram replies when reconnecting after gateway restart. Blast: Telegram channel runtime, medium.

145+

```

146+147+

Rules:

148+149+

- Bold the `PR #n` or `Issue #n` marker.

150+

- Use `@handle`, not author bio text.

151+

- PR LOC is `+additions/-deletions`; issue LOC is `LOC n/a`.

152+

- Type: `bug`, `feature`, `perf`, `security`, `docs`, `test`, `chore`, or `refactor`.

153+

- Write a full sentence for what it does.

154+

- Always include blast radius in one phrase.

155+

- Always include `verifiable: yes|partial|no` plus the shortest proof hint when helpful.

156+

- If status is not open, still show it only when the user asked for all surfaced refs; use ✅ or ⚪ and state merged/closed.