diff --git a/README.md b/README.md index 6bb7d5c3..d07a9463 100644 --- a/README.md +++ b/README.md @@ -19,8 +19,8 @@ Eight opinionated workflow skills for [Claude Code](https://docs.anthropic.com/e |-------|------|--------------| | `/plan-ceo-review` | Founder / CEO | Rethink the problem. Find the 10-star product hiding inside the request. | | `/plan-eng-review` | Eng manager / tech lead | Lock in architecture, data flow, diagrams, edge cases, and tests. | -| `/review` | Paranoid staff engineer | Find the bugs that pass CI but blow up in production. Not a style nitpick pass. | -| `/ship` | Release engineer | Sync main, run tests, push, open PR. For a ready branch, not for deciding what to build. | +| `/review` | Paranoid staff engineer | Find the bugs that pass CI but blow up in production. Triages Greptile review comments. | +| `/ship` | Release engineer | Sync main, run tests, resolve Greptile reviews, push, open PR. For a ready branch, not for deciding what to build. | | `/browse` | QA engineer | Give the agent eyes. It logs in, clicks through your app, takes screenshots, catches breakage. Full QA pass in 60 seconds. | | `/qa` | QA lead | Systematic QA testing with structured reports, health scores, screenshots, and regression tracking. Three modes: full, quick, regression. | | `/setup-browser-cookies` | Session manager | Import cookies from your real browser (Comet, Chrome, Arc, Brave, Edge) into the headless session. Test authenticated pages without logging in manually. | @@ -338,6 +338,70 @@ I want the plane landed. --- +## Greptile integration + +[Greptile](https://greptile.com) is a YC company that reviews your PRs automatically. It catches real bugs — race conditions, security issues, things that pass CI and blow up in production. It has genuinely saved my ass more than once. I love these guys. + +The problem with any automated reviewer is triage. Greptile is good, but not every comment is a real issue. Some are false positives. Some flag things you already fixed three commits ago. Without a triage layer, the comments pile up and you start ignoring them — which defeats the purpose. + +gstack solves this. `/review` and `/ship` are now Greptile-aware. They read Greptile's comments, classify each one, and take action: + +- **Valid issues** get added to the critical findings and fixed before shipping +- **Already-fixed issues** get an auto-reply acknowledging the catch +- **False positives** get pushed back — you confirm, and a reply goes out explaining why it's wrong + +The result is a two-layer review: Greptile catches things asynchronously on the PR, then `/review` and `/ship` triage those findings as part of the normal workflow. Nothing falls through the cracks. + +It also learns. Every false positive you confirm gets saved to `~/.gstack/greptile-history.md`. Future runs auto-skip known FP patterns for your codebase. And `/retro` tracks Greptile's batting average over time — so you can see whether the signal-to-noise ratio is improving. + +### Example + +``` +You: /ship + +Claude: [syncs main, runs tests, pre-landing review...] + + Greptile found 3 comments on this PR: + + [VALID] app/services/payment_service.rb:47 — Race condition: + concurrent charges can double-debit. Recommend DB-level advisory + lock around the charge block. + → https://github.com/you/app/pull/42#discussion_r123 + + [ALREADY FIXED] app/models/user.rb:12 — Missing null check + on email before downcase. + → Already fixed in commit abc1234. Auto-replying. + + [FALSE POSITIVE] lib/auth.rb:88 — "Token comparison should + use constant-time comparison." We already use + ActiveSupport::SecurityUtils.secure_compare here. + → https://github.com/you/app/pull/42#discussion_r125 + + Fixing the race condition in payment_service.rb... + Applied advisory lock. Committed: fix: address Greptile + review — advisory lock on concurrent charges + + The auth token comment is a false positive — we're already + using secure_compare. + + Options for the false positive: + A) Reply to Greptile explaining (recommended) + B) Fix it anyway + C) Ignore + +You: A + +Claude: Replied to Greptile. Re-running tests after the fix... + All tests pass. Continuing to version bump. + + [creates PR with Greptile Review section in body] + PR: https://github.com/you/app/pull/42 +``` + +Three Greptile comments. One real fix. One auto-acknowledged. One false positive pushed back with a reply. Total extra time: about 30 seconds. And the PR body has the full audit trail. + +--- + ## `/browse` This is my **QA engineer mode**. diff --git a/TODO.md b/TODO.md index dc09311f..9c32bbcb 100644 --- a/TODO.md +++ b/TODO.md @@ -103,6 +103,7 @@ - [ ] Trend tracking across QA runs — compare baseline.json over time, detect regressions (P2, S) - [ ] CI/CD integration — `/qa` as GitHub Action step, fail PR if health score drops (P2, M) - [ ] Accessibility audit mode — `--a11y` flag for focused accessibility testing (P3, S) + - [ ] Greptile training feedback loop — export suppression patterns to Greptile team for model improvement (P3, S) ## Ideas & Notes - Browser is the nervous system — every skill should be able to see, interact with, and verify the web