no-mistakes: Cổng AI cho các lần git push sạch
no-mistakes là một công cụ Go làm cổng gác git push, đứng giữa nhánh của bạn và remote thật: thay vì `git push origin`, bạn push tới `no-mistakes`, nó dựng một worktree tạm và chạy một pipeline AI — review, test, docs, lint — trước khi chuyển tiếp nhánh và mở PR. Không gì chạm tới push target của bạn cho tới khi mọi bước đều xanh.
Hãy chọn no-mistakes nếu bạn xuất ra nhiều code do AI sinh và muốn một chốt chặn bắt lỗi slop trước khi nó lọt vào PR — nó chạy review, test, lint và docs trong một worktree cô lập, và chỉ chuyển tiếp nhánh khi mọi thứ đã qua. Bỏ qua nếu bạn chưa chạy sẵn một coding agent như Claude hay Codex, vì mỗi lần gác đều cần một cái và mỗi lần chạy tốn API token thật; với các kiểm tra lint-và-test tất định, một pre-commit hook thường rẻ hơn.
Vấn đề nó giải quyết
Coding agent sinh ra rất nhiều output rất nhanh, và không phải cái nào cũng sạch — chỉnh sửa dở dang, test bị bỏ qua, docs cũ, lint nhiễu. Duyệt tất cả bằng tay trước mỗi lần push thì mệt, còn push thẳng lên `origin` nghĩa là mớ đó rơi vào một PR, nơi một người phải bắt lỗi. Chẳng có chốt chặn tiêu chuẩn nào giữa 'agent làm xong' và 'cái này sẵn sàng để review.'
Đây là gì?
no-mistakes là một công cụ Go mã nguồn mở (giấy phép MIT) đóng vai trò cổng gác git — một git proxy cục bộ mà bạn push tới thay cho `origin`. Khi bạn chạy `git push no-mistakes`, nó tạo một worktree tạm, chạy một pipeline kiểm định do AI điều khiển (review → test → docs → lint), và chỉ chuyển tiếp nhánh tới push target đã cấu hình khi mọi bước đều qua, rồi mở PR giúp bạn. Nó không phụ thuộc một agent cụ thể — chạy được với claude, codex, opencode, copilot và các agent khác — và có thể điều khiển theo ba cách: bằng git push, bằng một TUI tương tác, hoặc bằng một skill `/no-mistakes` mà coding agent của bạn gọi trực tiếp.
Vì sao đang được chú ý
Nó nhắm thẳng vào vấn đề 'AI slop' — chính khẩu hiệu của kho là 'Kill all the slop. Raise clean PR.' Khi ngày càng nhiều đội để coding agent viết code, một chốt chặn gác output đó trước khi vào PR là đúng thời điểm. README có gắn huy hiệu Trendshift, và theo metadata GitHub, dự án đã đạt gần 5.900 sao; nó cũng chạy với các agent phổ biến (claude, codex, opencode, copilot) thay vì khóa bạn vào một cái.
Tính năng chính
- ✓Một git proxy cục bộ: push tới remote `no-mistakes` thay vì `origin`, và nó gác nhánh trước khi bất cứ thứ gì chạm tới remote thật
- ✓Chạy pipeline trong một worktree tạm, nên cây làm việc của bạn không bị đụng tới trong lúc kiểm tra
- ✓Các bước kiểm định do AI điều khiển — review, test, docs, lint — rồi tới push, tạo PR và theo dõi CI
- ✓Không phụ thuộc agent cụ thể: chạy với claude, codex, rovodev, opencode, pi, copilot, hoặc một acp target qua acpx, có fallback theo thứ tự
- ✓Tự áp các sửa an toàn, máy móc và đẩy những gì chạm tới ý định của bạn lên để bạn duyệt, sửa, hoặc bỏ qua
- ✓Ba điểm vào cùng một pipeline: `git push no-mistakes`, một TUI tương tác, hoặc skill agent `/no-mistakes`
- ✓Tự mở một PR sạch khi mọi bước đều xanh — không cần `git push origin` thủ công và không phải viết tay nội dung PR
Trường hợp dùng tốt nhất
- •Gác các nhánh do AI sinh để chỉnh sửa dở dang, test bị bỏ qua, hay docs cũ bị bắt trước khi vào PR
- •Để một coding agent chạy một tác vụ và tự gác nó không cần tương tác qua skill `/no-mistakes`
- •Chuẩn hóa một checklist trước PR (review, test, lint, docs) cho cả đội mà không phải dựng bước CI riêng cho từng cái
- •Tạo các PR sạch đồng nhất với nội dung được sinh sẵn thay vì viết tay từng cái
Cách cài đặt / dùng thử
Trên macOS hoặc Linux, cài bằng script một dòng từ kho: `curl -fsSL https://raw.githubusercontent.com/kunchenguid/no-mistakes/main/docs/install.sh | sh`. README trỏ tới một hướng dẫn cài đặt riêng cho Windows, `go install`, và build từ mã nguồn. Sau khi cài, chạy `no-mistakes init` trong một kho để thiết lập remote cổng gác và cài skill `/no-mistakes` cho các agent của bạn.
Cách sử dụng
Khởi tạo một lần với `no-mistakes init`, rồi làm việc trên một nhánh như bình thường. Khi sẵn sàng, chạy `git push no-mistakes` để đưa nhánh qua cổng gác, hoặc chỉ chạy `no-mistakes` để mở TUI (nó có thể tạo nhánh, commit và push giúp bạn). Từ TUI bạn xử lý từng finding — loại auto-fix được áp sẵn, loại cần phán đoán thì bạn duyệt, sửa, hoặc bỏ qua. Khi mọi bước đều xanh, cổng gác chuyển tiếp nhánh và mở PR. Một agent có thể điều khiển cùng luồng đó với `/no-mistakes <task>`.
Điểm mạnh
- ✓Đặt một chốt chặn thật giữa output của agent và một PR, thay vì trông vào một người duyệt để bắt slop sau khi mọi chuyện đã rồi
- ✓Thiết kế worktree tạm nghĩa là kiểm tra chạy mà không làm gián đoạn cây làm việc của bạn
- ✓Không buộc vào một agent — claude, codex, opencode, copilot và các agent khác đều chạy, có fallback theo thứ tự
- ✓Ba điểm vào (git push, TUI, skill agent) bao cả luồng thủ công lẫn không tương tác từ cùng một pipeline
- ✓Giấy phép MIT và đa nền tảng (macOS, Linux, Windows), viết bằng Go
Hạn chế & rủi ro
- △Mỗi lần gác đều cần một coding agent đã cấu hình và chạy được (claude, codex, opencode, v.v.) — không có thì không có pipeline, và mỗi lần chạy tốn API token và thời gian thật
- △Việc kiểm định do AI điều khiển nên mang tính không tất định: cùng một nhánh có thể ra các finding khác nhau qua các lần chạy, và agent có thể báo lỗi giả hoặc bỏ sót lỗi thật
- △Nó thay đổi cách bạn push — bạn gửi nhánh tới một remote `no-mistakes` và làm việc theo luồng finding/TUI thay vì `git push origin`, là một đường cong học tập cho bạn và mọi cộng tác viên
- △Việc thiết lập dựa vào một script cài `curl | sh` (Windows và build từ nguồn được tài liệu hóa riêng), và dự án còn đủ mới nên luồng làm việc có thể còn thay đổi
Lựa chọn thay thế
Ai nên thử — và ai nên bỏ qua
Lập trình viên và đội nhóm dựa vào coding agent (Claude, Codex, opencode, Copilot) và muốn một cổng gác đồng nhất giữa code được sinh và một PR. Nếu bạn đã chạy sẵn một agent và push nhiều nhánh do máy viết, pipeline trước PR đáng công. Nếu bạn không dùng coding agent, hoặc chỉ cần các hook lint-và-test tất định, một thiết lập pre-commit đơn giản hơn và miễn phí.
Câu hỏi thường gặp
no-mistakes là một công cụ Go mã nguồn mở đóng vai trò cổng gác git: bạn push một nhánh tới remote `no-mistakes` cục bộ thay vì `origin`, nó chạy một pipeline review/test/docs/lint do AI điều khiển trong một worktree tạm, và chỉ chuyển tiếp nhánh cùng mở PR khi mọi bước đều qua.
Nó đặt một git proxy cục bộ trước remote thật của bạn. `git push no-mistakes` dựng một worktree dùng một lần, chạy pipeline, tự áp các sửa an toàn, đẩy lên những gì chạm tới ý định của bạn, và chỉ chuyển tiếp tới push target khi mọi thứ đã xanh.
Theo README nó không phụ thuộc agent cụ thể — claude, codex, rovodev, opencode, pi, copilot, hoặc một acp target qua acpx, có fallback theo thứ tự. Mỗi lần gác cần ít nhất một agent chạy được và đã cấu hình.
Không hẳn. Nó chạy kiểm tra trước PR và có thể theo dõi CI cùng tự sửa lỗi sau khi mở PR, nhưng nó phụ thuộc một coding agent để chạy pipeline và vẫn push tới remote cùng CI thường của bạn. Hãy xem nó như một cổng gác trước PR đặt lên trên thiết lập sẵn có.
Công cụ có giấy phép MIT và mã nguồn mở, nhưng pipeline chạy qua một coding agent, nên mỗi lần gác tiêu tốn bất kỳ API quota hay token nào mà agent đó dùng.