mirror of
https://github.com/openclaw/openclaw.git
synced 2026-07-20 09:47:53 +00:00
docs: explain pull request automation workflow (#101748)
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com> Co-authored-by: PollyBot13 <261872620+PollyBot13@users.noreply.github.com>
This commit is contained in:
co-authored by
clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
PollyBot13
parent
bd2bf34b41
commit
2a2b2b830c
+6
-15
@@ -50,7 +50,7 @@ For coordinated change sets that genuinely need more than 20 PRs, join the **#cl
|
||||
- Use **Node 24.15+** for source checkouts when possible. OpenClaw also supports Node 22.22.3+ and Node 25.9+, but Node 23, Node 22 before 22.22.3, and Node 24 before 24.15 are below the repository engine floor and can fail before `pnpm` commands run. See [Node install guidance](docs/install/node.md) if your local version is too old.
|
||||
- Test locally with your OpenClaw instance
|
||||
- External PRs must describe the user, product, or operational problem in **What Problem This Solves** and include useful validation in **Evidence**. Focused tests, CI results, screenshots, recordings, terminal output, live observations, redacted logs, and artifact links all count. Reviewers will inspect the code, tests, and CI; use the PR body to explain intent and make validation easy to understand.
|
||||
- When ClawSweeper, Codex, Barnacle, or a maintainer asks for more context or evidence, edit the PR description instead of only replying in a new comment. Keep **What Problem This Solves**, **Why This Change Was Made**, **User Impact**, and **Evidence** current; a short comment can point reviewers to the update, but the PR body should remain the durable explanation for maintainers and bots.
|
||||
- When ClawSweeper, Barnacle, or a maintainer asks for more context or evidence, edit the PR description instead of only replying in a new comment. Keep **What Problem This Solves**, **Why This Change Was Made**, **User Impact**, and **Evidence** current; a short comment can point reviewers to the update, but the PR body should remain the durable explanation for maintainers and bots.
|
||||
- Keep PRs takeover-ready: open them from a branch maintainers can push to. For fork PRs, leave GitHub's **Allow edits by maintainers** option enabled so maintainers can finish urgent fixes, changelog entries, or merge prep when needed. If GitHub shows **Allow edits and access to secrets by maintainers**, enable it only when that workflow/secrets access is acceptable and say so in the PR.
|
||||
- Do not edit `CHANGELOG.md` in contributor PRs. Maintainers or ClawSweeper add the changelog entry when landing user-facing changes.
|
||||
- Run tests: `pnpm build && pnpm check && pnpm test`
|
||||
@@ -67,29 +67,20 @@ For coordinated change sets that genuinely need more than 20 PRs, join the **#cl
|
||||
- `node scripts/check-sdk-package-extension-import-boundary.mjs --json` for `src/plugin-sdk/**` and `packages/**`
|
||||
- `node scripts/check-test-helper-extension-import-boundary.mjs --json` for `test/helpers/**`
|
||||
- Shared test helpers must use `src/test-utils/bundled-plugin-public-surface.ts` instead of repo-relative `extensions/**` imports. Keep plugin-local deep mocks inside the owning bundled plugin package.
|
||||
- If you have access to Codex, run `codex review --base origin/main` locally before opening or updating your PR. Treat this as the current highest standard of AI review, even if GitHub Codex review also runs.
|
||||
- If you are using an AI coding agent with OpenClaw skills available, run the `autoreview` skill before opening or updating your PR. Address accepted/actionable findings before asking for review.
|
||||
- Do not submit refactor-only PRs unless a maintainer explicitly requested that refactor for an active fix or deliverable.
|
||||
- Do not submit test or CI-config fixes for failures already red on `main` CI. If a failure is already visible in the [main branch CI runs](https://github.com/openclaw/openclaw/actions), it's a known issue the Maintainer team is tracking, and a PR that only addresses those failures will be closed automatically. If you spot a _new_ regression not yet shown in main CI, report it as an issue first.
|
||||
- Do not submit test-only PRs that just try to make known `main` CI failures pass. Test changes are acceptable when they are required to validate a new fix or cover new behavior in the same PR.
|
||||
- Ensure CI checks pass
|
||||
- Keep PRs focused (one thing per PR; do not mix unrelated concerns)
|
||||
- Describe what & why
|
||||
- Reply to or resolve bot review conversations you addressed before asking for review again
|
||||
- **Include screenshots** — one showing the problem/before, one showing the fix/after (for UI or visual changes)
|
||||
- Use American English spelling and grammar in code, comments, docs, and UI strings
|
||||
- Do not edit files covered by `CODEOWNERS` security ownership unless a listed owner explicitly asked for the change or is already reviewing it with you. Treat those paths as restricted review surfaces, not opportunistic cleanup targets.
|
||||
|
||||
## Review Conversations Are Author-Owned
|
||||
|
||||
If a review bot leaves review conversations on your PR, you are expected to handle the follow-through:
|
||||
|
||||
- Resolve the conversation yourself once the code or explanation fully addresses the bot's concern
|
||||
- Reply and leave it open only when you need maintainer or reviewer judgment
|
||||
- Do not leave "fixed" bot review conversations for maintainers to clean up for you
|
||||
- If Codex leaves comments, address every relevant one or resolve it with a short explanation when it is not applicable to your change
|
||||
- If GitHub Codex review does not trigger for some reason, run `codex review --base origin/main` locally anyway and treat that output as required review work
|
||||
|
||||
This applies to both human-authored and AI-assisted PRs.
|
||||
After your PR receives Barnacle, ClawSweeper, or maintainer feedback, read the [pull request review flow](https://docs.openclaw.ai/reference/pull-request-review-flow) for how to interpret rank-up moves, proof guidance, re-review requests, and review conversation follow-up.
|
||||
|
||||
## Control UI Decorators
|
||||
|
||||
@@ -116,10 +107,10 @@ Please include in your PR:
|
||||
- [ ] Include a concise **Evidence** section with the most useful validation. Reviewers will inspect the code, tests, and CI rather than relying on the PR body alone.
|
||||
- [ ] Include prompts or session logs if possible (super helpful!)
|
||||
- [ ] Confirm you understand what the code does
|
||||
- [ ] If you have access to Codex, run `codex review --base origin/main` locally and address the findings before asking for review
|
||||
- [ ] Resolve or reply to bot review conversations after you address them
|
||||
- [ ] Run the `autoreview` skill when available and address accepted/actionable findings
|
||||
- [ ] Follow the [pull request review flow](https://docs.openclaw.ai/reference/pull-request-review-flow) after Barnacle, ClawSweeper, or maintainer feedback
|
||||
|
||||
AI PRs are first-class citizens here. We just want transparency so reviewers know what to look for. If you are using an LLM coding agent, instruct it to resolve bot review conversations it has addressed instead of leaving them for maintainers.
|
||||
AI PRs are first-class citizens here. We just want transparency so reviewers know what to look for.
|
||||
|
||||
## Current Focus & Roadmap 🗺
|
||||
|
||||
|
||||
@@ -78,5 +78,13 @@
|
||||
{
|
||||
"source": "Webhook",
|
||||
"target": "Webhook"
|
||||
},
|
||||
{
|
||||
"source": "Pull request review flow",
|
||||
"target": "تدفق مراجعة طلب السحب"
|
||||
},
|
||||
{
|
||||
"source": "CI pipeline",
|
||||
"target": "مسار CI"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -78,5 +78,13 @@
|
||||
{
|
||||
"source": "Webhook",
|
||||
"target": "Webhook"
|
||||
},
|
||||
{
|
||||
"source": "Pull request review flow",
|
||||
"target": "Pull-Request-Review-Ablauf"
|
||||
},
|
||||
{
|
||||
"source": "CI pipeline",
|
||||
"target": "CI-Pipeline"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -78,5 +78,13 @@
|
||||
{
|
||||
"source": "Webhook",
|
||||
"target": "Webhook"
|
||||
},
|
||||
{
|
||||
"source": "Pull request review flow",
|
||||
"target": "Flujo de revisión de pull requests"
|
||||
},
|
||||
{
|
||||
"source": "CI pipeline",
|
||||
"target": "Pipeline de CI"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -78,5 +78,13 @@
|
||||
{
|
||||
"source": "Webhook",
|
||||
"target": "Webhook"
|
||||
},
|
||||
{
|
||||
"source": "Pull request review flow",
|
||||
"target": "جریان بازبینی Pull request"
|
||||
},
|
||||
{
|
||||
"source": "CI pipeline",
|
||||
"target": "پایپلاین CI"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -78,5 +78,13 @@
|
||||
{
|
||||
"source": "Webhook",
|
||||
"target": "Webhook"
|
||||
},
|
||||
{
|
||||
"source": "Pull request review flow",
|
||||
"target": "Flux de revue des pull requests"
|
||||
},
|
||||
{
|
||||
"source": "CI pipeline",
|
||||
"target": "Pipeline CI"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -78,5 +78,13 @@
|
||||
{
|
||||
"source": "Webhook",
|
||||
"target": "Webhook"
|
||||
},
|
||||
{
|
||||
"source": "Pull request review flow",
|
||||
"target": "पुल रिक्वेस्ट समीक्षा प्रवाह"
|
||||
},
|
||||
{
|
||||
"source": "CI pipeline",
|
||||
"target": "CI पाइपलाइन"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -78,5 +78,13 @@
|
||||
{
|
||||
"source": "Webhook",
|
||||
"target": "Webhook"
|
||||
},
|
||||
{
|
||||
"source": "Pull request review flow",
|
||||
"target": "Alur review pull request"
|
||||
},
|
||||
{
|
||||
"source": "CI pipeline",
|
||||
"target": "Pipeline CI"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -78,5 +78,13 @@
|
||||
{
|
||||
"source": "Webhook",
|
||||
"target": "Webhook"
|
||||
},
|
||||
{
|
||||
"source": "Pull request review flow",
|
||||
"target": "Flusso di revisione delle pull request"
|
||||
},
|
||||
{
|
||||
"source": "CI pipeline",
|
||||
"target": "Pipeline CI"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -98,5 +98,13 @@
|
||||
{
|
||||
"source": "wizard",
|
||||
"target": "ウィザード"
|
||||
},
|
||||
{
|
||||
"source": "Pull request review flow",
|
||||
"target": "プルリクエストレビューの流れ"
|
||||
},
|
||||
{
|
||||
"source": "CI pipeline",
|
||||
"target": "CI パイプライン"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -78,5 +78,13 @@
|
||||
{
|
||||
"source": "Webhook",
|
||||
"target": "Webhook"
|
||||
},
|
||||
{
|
||||
"source": "Pull request review flow",
|
||||
"target": "풀 리퀘스트 리뷰 흐름"
|
||||
},
|
||||
{
|
||||
"source": "CI pipeline",
|
||||
"target": "CI 파이프라인"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -78,5 +78,13 @@
|
||||
{
|
||||
"source": "Webhook",
|
||||
"target": "Webhook"
|
||||
},
|
||||
{
|
||||
"source": "Pull request review flow",
|
||||
"target": "Reviewflow voor pull requests"
|
||||
},
|
||||
{
|
||||
"source": "CI pipeline",
|
||||
"target": "CI-pijplijn"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -78,5 +78,13 @@
|
||||
{
|
||||
"source": "Webhook",
|
||||
"target": "Webhook"
|
||||
},
|
||||
{
|
||||
"source": "Pull request review flow",
|
||||
"target": "Przepływ przeglądu pull requestów"
|
||||
},
|
||||
{
|
||||
"source": "CI pipeline",
|
||||
"target": "Potok CI"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -78,5 +78,13 @@
|
||||
{
|
||||
"source": "Webhook",
|
||||
"target": "Webhook"
|
||||
},
|
||||
{
|
||||
"source": "Pull request review flow",
|
||||
"target": "Fluxo de revisão de pull requests"
|
||||
},
|
||||
{
|
||||
"source": "CI pipeline",
|
||||
"target": "Pipeline de CI"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -74,5 +74,13 @@
|
||||
{
|
||||
"source": "Webhook",
|
||||
"target": "Webhook"
|
||||
},
|
||||
{
|
||||
"source": "Pull request review flow",
|
||||
"target": "Процесс ревью pull request"
|
||||
},
|
||||
{
|
||||
"source": "CI pipeline",
|
||||
"target": "CI-пайплайн"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -78,5 +78,13 @@
|
||||
{
|
||||
"source": "Webhook",
|
||||
"target": "Webhook"
|
||||
},
|
||||
{
|
||||
"source": "Pull request review flow",
|
||||
"target": "ขั้นตอนการรีวิว pull request"
|
||||
},
|
||||
{
|
||||
"source": "CI pipeline",
|
||||
"target": "ไปป์ไลน์ CI"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -78,5 +78,13 @@
|
||||
{
|
||||
"source": "Webhook",
|
||||
"target": "Webhook"
|
||||
},
|
||||
{
|
||||
"source": "Pull request review flow",
|
||||
"target": "Pull request inceleme akışı"
|
||||
},
|
||||
{
|
||||
"source": "CI pipeline",
|
||||
"target": "CI işlem hattı"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -78,5 +78,13 @@
|
||||
{
|
||||
"source": "Webhook",
|
||||
"target": "Webhook"
|
||||
},
|
||||
{
|
||||
"source": "Pull request review flow",
|
||||
"target": "Процес ревʼю pull request"
|
||||
},
|
||||
{
|
||||
"source": "CI pipeline",
|
||||
"target": "CI-конвеєр"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -78,5 +78,13 @@
|
||||
{
|
||||
"source": "Webhook",
|
||||
"target": "Webhook"
|
||||
},
|
||||
{
|
||||
"source": "Pull request review flow",
|
||||
"target": "Luồng review pull request"
|
||||
},
|
||||
{
|
||||
"source": "CI pipeline",
|
||||
"target": "Pipeline CI"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1403,10 +1403,18 @@
|
||||
"source": "Operator scopes",
|
||||
"target": "操作员权限范围"
|
||||
},
|
||||
{
|
||||
"source": "Pull request review flow",
|
||||
"target": "PR 审查流程"
|
||||
},
|
||||
{
|
||||
"source": "Scheduled tasks vs heartbeat",
|
||||
"target": "定时任务与心跳对比"
|
||||
},
|
||||
{
|
||||
"source": "CI pipeline",
|
||||
"target": "CI 流水线"
|
||||
},
|
||||
{
|
||||
"source": "Scheduled tasks: Troubleshooting",
|
||||
"target": "定时任务:故障排查"
|
||||
|
||||
@@ -158,5 +158,13 @@
|
||||
{
|
||||
"source": "Zalo personal",
|
||||
"target": "Zalo Personal"
|
||||
},
|
||||
{
|
||||
"source": "Pull request review flow",
|
||||
"target": "PR 審查流程"
|
||||
},
|
||||
{
|
||||
"source": "CI pipeline",
|
||||
"target": "CI 流水線"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1961,6 +1961,12 @@
|
||||
"reference/credits"
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": "Contributing",
|
||||
"pages": [
|
||||
"reference/pull-request-review-flow"
|
||||
]
|
||||
},
|
||||
{
|
||||
"group": "Release and CI",
|
||||
"pages": [
|
||||
|
||||
@@ -8737,6 +8737,18 @@ Do not edit it by hand; run `pnpm docs:map:gen`.
|
||||
- H2: Quick troubleshooting
|
||||
- H2: Related
|
||||
|
||||
## reference/pull-request-review-flow.md
|
||||
|
||||
- Route: /reference/pull-request-review-flow
|
||||
- Headings:
|
||||
- H2: Barnacle
|
||||
- H2: ClawSweeper
|
||||
- H2: Improve a PR during review
|
||||
- H2: When automation stays quiet
|
||||
- H2: Troubleshooting
|
||||
- H2: Forking the automation
|
||||
- H2: Related
|
||||
|
||||
## reference/release-performance-sweep.md
|
||||
|
||||
- Route: /reference/release-performance-sweep
|
||||
|
||||
@@ -0,0 +1,160 @@
|
||||
---
|
||||
summary: "How Barnacle and ClawSweeper feedback helps move OpenClaw pull requests through review."
|
||||
read_when:
|
||||
- Following up after Barnacle or ClawSweeper feedback
|
||||
- Asking ClawSweeper for review
|
||||
- Debugging Barnacle, ClawSweeper, stale labels, or auto-closures
|
||||
title: "Pull request review flow"
|
||||
sidebarTitle: "PR review flow"
|
||||
---
|
||||
|
||||
This page explains the review flow after you open or update an OpenClaw pull
|
||||
request: what Barnacle and ClawSweeper do, how to improve the PR from their
|
||||
feedback, and what to check when automation stays quiet.
|
||||
|
||||
Barnacle and ClawSweeper help maintainers keep the review queue usable. They do
|
||||
not replace maintainer judgment.
|
||||
|
||||
## Barnacle
|
||||
|
||||
Barnacle is deterministic GitHub triage. It looks for known queue-management
|
||||
cases and responds with labels, comments, or closures.
|
||||
|
||||
Barnacle may act when:
|
||||
|
||||
- a PR body is mostly empty or missing problem context;
|
||||
- a PR has no useful evidence;
|
||||
- a docs-only, test-only, refactor-only, CI-only, or infra change lacks linked
|
||||
maintainer context;
|
||||
- a change looks like it belongs in ClawHub or a plugin instead of core;
|
||||
- a branch carries unrelated work;
|
||||
- an author has more than 20 open PRs.
|
||||
|
||||
Barnacle runs from trusted repository workflow code. It does not check out or
|
||||
run contributor code.
|
||||
|
||||
Most routing labels are maintainer or automation signals, so contributors do
|
||||
not need to add labels themselves.
|
||||
|
||||
## ClawSweeper
|
||||
|
||||
ClawSweeper is the AI-assisted review and maintenance bot for OpenClaw
|
||||
repositories. It can review PRs, evaluate proof, leave durable review comments,
|
||||
and help maintainers with guarded repair or automerge flows.
|
||||
|
||||
A positive ClawSweeper result is supporting evidence, not maintainer approval.
|
||||
Maintainers still decide whether and when a PR is ready to merge.
|
||||
|
||||
ClawSweeper is queue-based. Do not expect an immediate response after opening a
|
||||
PR, pushing a commit, or adding a review request. Label updates after a
|
||||
ClawSweeper run can also take time.
|
||||
|
||||
New PRs enter the ClawSweeper review queue. Maintainers can also queue review,
|
||||
repair, or automerge flows with labels or commands. For ordinary contributor
|
||||
updates, ask ClawSweeper for another review only after you have updated the
|
||||
branch, PR description, proof, or code. Then request a fresh review with a new
|
||||
PR comment:
|
||||
|
||||
```text
|
||||
@clawsweeper re-review
|
||||
```
|
||||
|
||||
PR authors can also use `@clawsweeper re-run`; users with repository write
|
||||
access can use either command on any open item. The plain
|
||||
`@clawsweeper review` command is maintainer-only. Be patient: asking again
|
||||
before the requested changes are present just adds queue noise.
|
||||
|
||||
When ClawSweeper leaves review conversations, treat them like normal review
|
||||
feedback and use the follow-up checklist below.
|
||||
|
||||
If a human contributor or maintainer has taken over the PR and is actively
|
||||
working on it, do not summon ClawSweeper or otherwise work on the PR at the same
|
||||
time. Let the human review or repair finish first. If activity stops, check
|
||||
whether the author was asked to provide proof or make other updates.
|
||||
|
||||
## Improve a PR during review
|
||||
|
||||
Once Barnacle, ClawSweeper, or a maintainer responds, use that feedback as the
|
||||
next-step checklist for the PR.
|
||||
|
||||
1. Read ClawSweeper's `Rank-up moves:` and `Proof guidance:` as the action list
|
||||
for that PR. Ratings and labels are review signals, not fixed merge targets.
|
||||
2. Push the requested code or docs change, and update the PR description when
|
||||
the problem, solution, user impact, or evidence has changed.
|
||||
3. Add the requested proof, using evidence that matches the change.
|
||||
4. Resolve addressed review conversations yourself. Reply and leave a
|
||||
conversation open only when you need maintainer or reviewer judgment.
|
||||
5. Ask for a re-review only after the branch, PR description, evidence, and
|
||||
relevant CI results are current. Multiple update and review cycles between the
|
||||
author, maintainer, and ClawSweeper are normal.
|
||||
6. Keep discussion on the PR when possible. Move to `#clawtributors` on Discord
|
||||
only when the PR needs maintainer coordination, automation appears blocked,
|
||||
or the next decision is hard to settle in GitHub comments. Include the PR
|
||||
link, current status, and the specific question or remaining evidence.
|
||||
|
||||
Keep the PR body current. Comments help with discussion, but the PR
|
||||
description is the durable summary maintainers and automation revisit.
|
||||
|
||||
`status: ⏳ waiting on author` means the next action is with the PR author:
|
||||
update the branch, PR description, proof, or reply with the missing context
|
||||
before asking for another review.
|
||||
|
||||
Useful evidence includes focused test output, CI results, screenshots,
|
||||
recordings, terminal output, live observations, redacted logs, or artifact
|
||||
links. For visual changes, include before and after screenshots when practical.
|
||||
For proof files, prefer linking CI artifacts, GitHub-uploaded screenshots or
|
||||
recordings, or a short redacted log excerpt. Do not commit generated proof files
|
||||
unless they are part of the actual docs, tests, or product change.
|
||||
|
||||
Redacting sensitive data is the contributor's responsibility. Remove secrets,
|
||||
tokens, private URLs, user data, and unrelated logs before posting proof.
|
||||
|
||||
OpenClaw also uses separate stale automation. Unassigned issues and PRs can be
|
||||
marked stale after 14 days of inactivity, then closed after 7 more idle days.
|
||||
Assigned PRs are marked stale 27 days after opening, regardless of later
|
||||
updates, then closed after 7 stale days without activity. If an assigned PR is
|
||||
still active, coordinate with the maintainer working on it.
|
||||
|
||||
## When automation stays quiet
|
||||
|
||||
Automation may stay quiet when a maintainer is already handling the item, a
|
||||
review or repair request is still queued, the event is routine, or the
|
||||
ClawSweeper lane is not configured for the requested action.
|
||||
|
||||
It may also avoid action when a trusted workflow would need to run untrusted
|
||||
contributor code. In that case, maintainers use normal review or a safer
|
||||
workflow instead.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
If ClawSweeper does not respond immediately, wait before retrying. The service is
|
||||
queue-based, and repeated comments or label changes can make the thread harder
|
||||
to review without making the queue faster.
|
||||
|
||||
Before asking for help, check:
|
||||
|
||||
- the PR description is current;
|
||||
- the latest commit contains the requested change;
|
||||
- CI has finished, or the PR body explains why any remaining failure is
|
||||
unrelated to the PR;
|
||||
- the latest review request was made as a PR comment:
|
||||
`@clawsweeper re-review`;
|
||||
- a maintainer or contributor is not already actively working on the PR;
|
||||
- the latest request is not still within the normal ClawSweeper queue delay.
|
||||
|
||||
If there is still no ClawSweeper response several hours after the PR is current,
|
||||
or if the PR appears blocked by automation, ask in `#clawtributors` on Discord.
|
||||
Include the PR link, what you expected, when you asked, and what changed since
|
||||
the last bot comment.
|
||||
|
||||
## Forking the automation
|
||||
|
||||
Projects that want similar review automation can study or fork ClawSweeper:
|
||||
|
||||
- [openclaw/clawsweeper](https://github.com/openclaw/clawsweeper)
|
||||
- [ClawSweeper docs](https://clawsweeper.bot/)
|
||||
|
||||
## Related
|
||||
|
||||
- [Contributing](https://github.com/openclaw/openclaw/blob/main/CONTRIBUTING.md)
|
||||
- [CI pipeline](/ci)
|
||||
Reference in New Issue
Block a user