{"id":49906450,"url":"https://github.com/openclaw/clawpatch","last_synced_at":"2026-05-21T16:00:54.203Z","repository":{"id":358044011,"uuid":"1239594204","full_name":"openclaw/clawpatch","owner":"openclaw","description":"Review code. Patch bugs. Land PRs.","archived":false,"fork":false,"pushed_at":"2026-05-17T11:35:56.000Z","size":788,"stargazers_count":384,"open_issues_count":2,"forks_count":47,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-05-17T12:20:46.855Z","etag":null,"topics":["bot","review"],"latest_commit_sha":null,"homepage":"https://clawpatch.ai","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openclaw.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":["moltbot"]}},"created_at":"2026-05-15T08:43:03.000Z","updated_at":"2026-05-17T12:11:16.000Z","dependencies_parsed_at":"2026-05-17T12:01:36.297Z","dependency_job_id":null,"html_url":"https://github.com/openclaw/clawpatch","commit_stats":null,"previous_names":["openclaw/clawpatch"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/openclaw/clawpatch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openclaw%2Fclawpatch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openclaw%2Fclawpatch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openclaw%2Fclawpatch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openclaw%2Fclawpatch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openclaw","download_url":"https://codeload.github.com/openclaw/clawpatch/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openclaw%2Fclawpatch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33219368,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-19T07:54:09.561Z","status":"ssl_error","status_checked_at":"2026-05-19T07:54:08.508Z","response_time":58,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bot","review"],"created_at":"2026-05-16T11:00:35.675Z","updated_at":"2026-05-19T14:01:44.769Z","avatar_url":"https://github.com/openclaw.png","language":"TypeScript","funding_links":["https://github.com/sponsors/moltbot"],"categories":["TypeScript"],"sub_categories":[],"readme":"# 🩹 clawpatch\n\nAutomated code review that lands fixes.\n\n`clawpatch` maps a repo into semantic feature slices, reviews each slice with a\nprovider, persists findings, and can run an explicit fix loop for one finding at\na time.\n\nCurrent status: early CLI. Review/report/state are implemented; patching exists\nbehind `clawpatch fix --finding \u003cid\u003e` and still requires manual review of the\nresulting worktree changes.\n\n## Install\n\n```bash\npnpm add -g clawpatch\n```\n\nFrom source:\n\n```bash\npnpm install\npnpm build\npnpm link --global\n```\n\n## Workflow\n\n```bash\nclawpatch init\nclawpatch map\nclawpatch review --limit 3 --jobs 3\nclawpatch review --mode deslopify --limit 3\nclawpatch ci --since origin/main --output clawpatch-report.md\nclawpatch report\nclawpatch next\nclawpatch show --finding \u003cid\u003e\nclawpatch triage --finding \u003cid\u003e --status false-positive --note \"covered by tests\"\nclawpatch fix --finding \u003cid\u003e\nclawpatch open-pr --patch \u003cpatchAttemptId\u003e --draft\nclawpatch revalidate --finding \u003cid\u003e\nclawpatch revalidate --all --status open\n```\n\n`fix` does not commit, push, open PRs, or land changes. It runs configured\nvalidation commands and records a patch attempt under `.clawpatch/`.\n\n## What It Maps Today\n\n- npm package bins\n- selected root and workspace package scripts: `start`, `build`, `test`,\n  `lint`, `typecheck`, `format`\n- Node/TypeScript workspace packages under `apps/*`, `packages/*`, and package\n  workspace patterns\n- package-less Node/TypeScript app roots under monorepo folders such as\n  `apps/*` and `packages/*` when source or positive framework signals are\n  present\n- generic extension/plugin packages under workspace roots such as `extensions/*`\n  and `plugins/*`, including package metadata, source, docs, and nearby tests\n- semantic Node source groups for large packages, including runtime, commands,\n  auth, storage, monitor, webhook, setup, server, and client slices\n- Nx project metadata from `project.json`, including project-scoped validation\n  targets\n- Turborepo task metadata for workspace-aware validation commands and feature\n  context\n- Next.js `app/` and `pages/` routes, including routes inside monorepo apps\n- React Router routes and React components\n- Go package slices from `go list ./...`, including command packages\n- Go package tests and same-repo imports as review context\n- Java/Kotlin Gradle source groups and root Gradle build/test commands\n- JVM semantic roles from Java and Kotlin code evidence such as annotations,\n  imports, interfaces, inheritance, supertypes, and method signatures\n- Kotlin Android semantic roles for UI entrypoints, ViewModels, data\n  boundaries, external clients, and dependency injection, including Metro\n- C#/.NET projects from `.sln`, `.slnx`, `.csproj`, `.fsproj`, and `.vbproj`\n  files, with conservative `dotnet build` / `dotnet test` defaults\n- ASP.NET Core controllers, minimal API endpoints, C#/F#/Visual Basic source\n  groups, and .NET test projects\n- Ruby project metadata, executables, source groups, RSpec/Minitest suites\n- Elixir Mix/Phoenix projects, contexts, Phoenix web slices, runtime config,\n  Ecto migrations, project scripts, and ExUnit suites\n- Rust `src/main.rs`, `src/bin/*.rs`, `src/lib.rs`, `crates/*`, and\n  `tests/*.rs`\n- C/C++ standalone `main()` files, CMake `add_executable` / `add_library`\n  targets, and autotools `bin_PROGRAMS` / `lib_LTLIBRARIES` targets\n- Python project metadata, console scripts, bounded source groups, pytest suites,\n  and Flask/FastAPI/Django routes\n- SwiftPM `Sources/*` targets and `Tests/*` suites\n- Laravel/PHP projects from `composer.json` and `artisan`, including routes,\n  controllers, form requests, Artisan commands, jobs, services, models,\n  migrations, seeders, Composer scripts, and PHP test suites\n- common project config files\n\nDeeper framework mappers and agent-assisted enrichment are next steps.\n\n## Provider\n\nThe default provider is the local Codex CLI.\n\n```bash\ncodex --version\nclawpatch doctor\n```\n\nProvider calls use `codex exec` with strict JSON schemas. Review and revalidate\nrun read-only; fix planning runs with workspace-write because Codex may edit the\nworking tree during the explicit fix command.\n\nSet `CLAWPATCH_CODEX_SANDBOX` to override the Codex sandbox passed by\nClawpatch. Use any Codex sandbox mode, or `bypass`/`none` to pass\n`--dangerously-bypass-approvals-and-sandbox` when the host environment already\nprovides isolation.\n\nSupported provider names today:\n\n- `codex`: local Codex CLI\n- `acpx`: any ACP-compatible coding agent (Codex / Claude / Pi / Gemini / ...) via openclaw/acpx\n- `grok`: local Grok Build CLI\n- `opencode`: local OpenCode CLI\n- `mock`: deterministic test provider\n- `mock-fail`: failure test provider\n\n## Commands\n\n- `clawpatch init`: create `.clawpatch/`, detect project basics, write config\n- `clawpatch map`: write feature records\n- `clawpatch status`: show project, dirty state, feature/finding counts\n- `clawpatch review`: review pending or selected features\n- `clawpatch review --mode deslopify`: review only for locally provable slop cleanup\n- `clawpatch ci`: initialize if needed, map, review, write a report, and append a GitHub step summary\n- `clawpatch report`: print or write a Markdown findings report\n- `clawpatch next`: print the next actionable finding\n- `clawpatch show --finding \u003cid\u003e`: inspect one finding with evidence and suggested validation\n- `clawpatch triage --finding \u003cid\u003e --status \u003cstatus\u003e`: mark a finding with optional history note\n- `clawpatch fix --finding \u003cid\u003e`: run the explicit patch loop for one finding\n- `clawpatch open-pr --patch \u003cid\u003e`: commit an applied patch attempt and open a GitHub PR\n- `clawpatch revalidate --finding \u003cid\u003e`: re-check one finding\n- `clawpatch revalidate --all`: re-check open findings with report-style filters\n- `clawpatch doctor`: check provider availability\n- `clawpatch clean-locks`: clear feature locks\n\nUseful flags:\n\n- `--root \u003cpath\u003e`\n- `--state-dir \u003cpath\u003e`\n- `--config \u003cpath\u003e`\n- `--json`\n- `--plain`\n- `--limit \u003cn\u003e`\n- `--jobs \u003cn\u003e`\n- `--source \u003cheuristic|auto|agent\u003e`\n- `--feature \u003cid\u003e`\n- `--project \u003cname-or-root\u003e`\n- `--finding \u003cid\u003e`\n- `--status \u003cstatus\u003e`\n- `--severity \u003cseverity\u003e`\n- `--provider \u003cname\u003e`\n- `--model \u003cname\u003e`\n- `--reasoning-effort \u003cnone|minimal|low|medium|high|xhigh\u003e`\n- `--skip-git-repo-check`\n- `--output \u003cpath\u003e` / `-o \u003cpath\u003e`\n- `--dry-run`\n- `--force`\n\nUnknown flags fail fast.\n\n## State\n\nState is project-local by default:\n\n```text\n.clawpatch/\n  config.json\n  project.json\n  features/*.json\n  findings/*.json\n  patches/*.json\n  reports/*.md\n  runs/*.json\n```\n\nFeature records are the durable work units. Findings and patch attempts link back\nto features so runs can resume and be audited.\n\n## Safety\n\n- Review does not edit files.\n- Fix is explicit and selected by finding ID.\n- Fix refuses a dirty source worktree by default.\n- Clawpatch commits, pushes, and opens PRs only from explicit patch commands such as `open-pr`.\n- Clawpatch does not land changes today.\n- Provider output is parsed through strict schemas.\n- Symlinked directories and generated build output are skipped during mapping.\n\nSee `docs/spec.md` for the longer product and implementation spec.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenclaw%2Fclawpatch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenclaw%2Fclawpatch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenclaw%2Fclawpatch/lists"}