Files
adolf/.agents/skills/openclaw-landable-bug-sweep/SKILL.md
alvis bedb527145
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
Vendor OpenClaw source as Adolf fork baseline
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
2026-07-05 09:36:54 +00:00

7.3 KiB

name, description
name description
openclaw-landable-bug-sweep Find or repair a requested batch of small high-confidence non-SDK-boundary OpenClaw bugfix PRs until they are landable.

OpenClaw Landable Bug Sweep

Autonomous maintainer workflow for producing a requested batch of landable OpenClaw bugfix PR URLs. Use for broad issue/PR sweeps where the bar is high and the output is PRs, not notes. Do not use for plugin SDK/API boundary work; those need separate architecture review.

Target

Use batch_size from the request, defaulting to 5 and capped at 20. Return up to that many qualified PR URLs, each with:

  • bug summary
  • why the fix is low-risk
  • proof: rebased-head local/Testbox/live commands or run IDs
  • autoreview: clean result on the exact head being shown
  • CI green on the exact pushed PR head
  • issue/duplicate cleanup done or still pending

The URLs may be existing PRs that were reviewed/fixed, or new PRs created from issues/clusters. Do not present a PR URL to the maintainer until it has been refreshed on current main, left-tested, autoreviewed clean, pushed, and verified green in live GitHub CI. If code, tests, changelog, PR body, or branch base changes after autoreview, rerun autoreview before showing the URL. Do not pad a batch when the bounded search yields fewer qualified PRs.

Inputs

  • batch_size: requested number of landable PRs; default 5, maximum 20.
  • source_mode: discovery or provided-prs; default discovery.
  • provided_prs: explicit PR refs when source_mode=provided-prs.

In provided-prs mode, inspect only the supplied PRs plus directly linked duplicate/canonical refs unless broader discovery is required to prove the best fix.

Companion Skills

Use $gitcrawl for discovery/clustering, $openclaw-pr-maintainer for live GitHub mutation rules, $github-author-context when contributor trust matters, $openclaw-testing for proof choice, $autoreview before publishing/landing, and $crabbox for broad/E2E/live proof.

Candidate Bar

Accept only when all are true:

  • bug or paper cut, not feature/product/support/docs-only
  • root cause is proven in current code
  • dependency behavior checked via upstream docs/source/types when relevant
  • production/runtime diff is small, ideally much smaller than 500 LOC and always below 500 LOC
  • tests may be larger, but focused
  • no new dependency
  • no new config option
  • no backward-incompatible behavior
  • no security/product/owner-boundary decision needed
  • no plugin SDK, public plugin API, or src/plugin-sdk/** boundary change
  • no broad refactor smell
  • focused proof is feasible
  • branch can be rebased/refreshed and pushed, or a replacement PR can be created

Good examples:

  • provider parameter mismatch proven against dependency/API contract
  • CLI command diverges from adjacent command behavior
  • narrow runtime state/serialization bug with failing test
  • issue already fixed on current main, with proof and closeable duplicates

Reject:

  • feature requests, new knobs, migrations, release work, workflow policy, support
  • plugin SDK/API boundary changes, including compatibility shims, new SDK methods, SDK exports, or plugin-facing channel/provider seams
  • auth/security boundary changes unless explicitly assigned
  • bugs needing live credentials that are unavailable
  • PRs with red CI unless you fix, rebase, push, and recheck them green
  • PRs you only reviewed locally but did not refresh/push/check live
  • PRs whose final head has not passed $autoreview
  • fixes whose clean shape is a larger architecture move
  • speculative reports without reproducible/provable cause
  • UI/UX changes requiring product judgment

Sweep Loop

  1. Start clean:
    • git status -sb
    • git pull --ff-only
    • verify branch is expected, usually main
  2. Build candidate clusters:
    • gitcrawl open issues/PRs, neighbors, and search
    • live gh issue/pr view
    • include PRs linked from issues and duplicates
  3. For each cluster:
    • read issue/PR body, comments, labels, linked refs, current source, adjacent tests
    • suppress maintainer-owned queue noise unless it is the best fix path
    • identify opener/author and preserve credit
    • decide: repair-existing-pr, create-new-pr, close-fixed-on-main, close-duplicate, or reject
  4. Prove before patching:
    • failing test, focused repro, log/source proof, or dependency contract proof
    • if already fixed on main, prove with current source/test/commit and close kindly
  5. Patch:
    • prefer existing PR when good and writable
    • if unwritable or wrong shape, create own PR and preserve useful contributor credit
    • if no PR exists, create one
    • add regression test when it fits
    • release-note context for user-facing fixes in PR body or commit message; credit human reporter/contributor when known
  6. Review, refresh, and publish:
    • rebase or otherwise refresh the PR branch on current origin/main
    • resolve drift, including newly exposed CI failures, rather than counting the PR as ready
    • do not add CHANGELOG.md during normal sweep PRs; release automation generates it from PRs and commits
    • left-test the rebased head with the smallest meaningful local/Testbox/live command that proves the bug
    • run $autoreview until no accepted/actionable findings remain before creating, updating, or presenting the PR URL
    • create/update PR with real body and proof fields
    • push the exact reviewed head
    • verify live GitHub CI is green for that pushed head; do not count pending, red, dirty, conflicting, or externally blocked PRs in the five
  7. Hygiene:
    • close duplicates and fixed-on-main issues/PRs with proof as soon as you notice them during the sweep
    • never mutate more than five associated items in one cluster without explicit confirmation
    • comments must be kind, concrete, and include proof/PR/commit links
  8. Repeat until batch_size landable PR URLs are ready or the bounded qualified queue is exhausted.

PR Body Proof

Use the repo PR template. Include authored ## What Problem This Solves and ## Evidence sections. Keep the body focused on intent and the most useful validation evidence; inspect the code, tests, and CI before judging correctness.

Existing PR Rules

  • Review code path beyond the diff before trusting it.
  • If PR is good: rebase/refresh on current main, fix small issues, left-test, autoreview clean, push, and get CI green before showing or counting it.
  • If PR is not good but has a useful idea: recreate locally, co-author when warranted, close original with thanks and explanation.
  • If PR is duplicate or fixed on main: comment proof, close.
  • If maintainer cannot push to contributor branch: create own branch/PR, preserve useful commits or credit.
  • If CI turns red after local proof, treat that as normal work: inspect the failing job, fix or reject, rerun, and only count the PR once green.

Output Ledger

Maintain a running ledger:

accepted:
- PR URL:
  source refs:
  bug:
  root cause:
  fix:
  risk:
  rebase/head:
  left-test:
  autoreview:
  CI:
  credit/thanks:
  cleanup:

rejected:
- ref:
  reason:

closed:
- ref:
  reason:
  proof/comment:

Final answer:

  • the requested number of accepted PR URLs, or the smaller qualified count with the exhausted-search reason
  • 2-4 sentence explainer per PR
  • proof/CI state per PR
  • closed duplicates/fixed-on-main refs
  • current branch/status