@motivation-labs/crosscheck 0.14.0-beta.111 → 0.14.0-beta.114
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +93 -64
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -14,29 +14,12 @@
|
|
|
14
14
|
<img src="./assets/screenshot-watch.png" alt="crosscheck watch — live pipeline view" width="860" />
|
|
15
15
|
</p>
|
|
16
16
|
|
|
17
|
-
<p align="center">
|
|
18
|
-
<sub>
|
|
19
|
-
<b>①</b> Session header — profile, orgs, config path, and registered webhooks at a glance. |
|
|
20
|
-
<b>②</b> Per-PR event row — origin detection (<code>via=commits</code>), assigned reviewer, and elapsed time. |
|
|
21
|
-
<b>③</b> Live pipeline stripe — PR size · CR verdict · Fix count · Recheck status, updating in real time.
|
|
22
|
-
</sub>
|
|
23
|
-
</p>
|
|
24
|
-
|
|
25
17
|
**Auto Code Review Pipeline — customizable PR → Review → Fix → Recheck loop, single-vendor or cross-vendor, zero new infrastructure.**
|
|
26
18
|
|
|
27
19
|
Define the review pipeline in `workflow.yml`: review-only, review + fix, or the full review + fix + recheck cycle. Each step runs through the `claude` or `codex` CLI against your existing subscriptions — no API keys, no per-review cost.
|
|
28
20
|
|
|
29
21
|
---
|
|
30
22
|
|
|
31
|
-
## Highlights
|
|
32
|
-
|
|
33
|
-
- **Configurable pipeline** — compose steps in `workflow.yml`: a `review` step, an optional `fix` step, and an optional `recheck` step. Add per-step `instructions:` and `when:` conditions to control exactly what runs and when.
|
|
34
|
-
- **Single-vendor and cross-vendor modes** — single-vendor uses whatever AI you have enabled. Cross-vendor routes each PR to the rival AI for an independent review (Claude reviews Codex PRs, Codex reviews Claude PRs). Switch with one config line.
|
|
35
|
-
- **Subscription-funded, not token-billed** — runs through the `claude` and `codex` CLIs against your Claude Pro/Max and ChatGPT Plus/Pro plans. No API keys, no per-review cost.
|
|
36
|
-
- **`watch` for personal use, `serve` for your team** — `crosscheck watch` runs on your laptop with an auto-tunnel, ideal for solo use. `crosscheck serve` binds to a fixed port on a shared machine so the whole team is covered.
|
|
37
|
-
|
|
38
|
-
---
|
|
39
|
-
|
|
40
23
|
## Quick start
|
|
41
24
|
|
|
42
25
|
```bash
|
|
@@ -54,69 +37,124 @@ crosscheck watch # personal laptop
|
|
|
54
37
|
crosscheck serve # always-on team server
|
|
55
38
|
```
|
|
56
39
|
|
|
57
|
-
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Commands
|
|
43
|
+
|
|
44
|
+
### `crosscheck onboard`
|
|
45
|
+
|
|
46
|
+
Interactive setup wizard. Picks repos/orgs to monitor, selects single-vendor or cross-vendor mode, configures the review pipeline, and writes `~/.crosscheck/config.yml` and `workflow.yml`.
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
crosscheck onboard # guided setup
|
|
50
|
+
crosscheck onboard --personal # skip persona prompt, go straight to personal mode
|
|
51
|
+
crosscheck onboard --team # skip persona prompt, go straight to team mode
|
|
52
|
+
crosscheck onboard -y # accept all defaults non-interactively
|
|
53
|
+
```
|
|
58
54
|
|
|
59
55
|
---
|
|
60
56
|
|
|
61
|
-
|
|
57
|
+
### `crosscheck watch`
|
|
62
58
|
|
|
59
|
+
Personal mode. Starts an SSH tunnel (localhost.run), registers GitHub webhooks, and listens for PR events. Everything self-cleans on Ctrl+C.
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
crosscheck watch
|
|
63
|
+
crosscheck watch --no-backtrace # skip startup scan for unreviewed open PRs
|
|
64
|
+
crosscheck watch --reconfigure # re-run deployment setup before starting
|
|
63
65
|
```
|
|
64
|
-
$ crosscheck watch
|
|
65
66
|
|
|
66
|
-
|
|
67
|
+
---
|
|
67
68
|
|
|
68
|
-
|
|
69
|
-
pipeline review → fix → recheck
|
|
70
|
-
users your-github-login (5 repos)
|
|
71
|
-
config ./crosscheck.config.yml
|
|
69
|
+
### `crosscheck serve`
|
|
72
70
|
|
|
73
|
-
|
|
74
|
-
✓ webhook registered for your-org/your-repo
|
|
75
|
-
Waiting for PR events — Ctrl+C to stop.
|
|
71
|
+
Team mode. Binds to a fixed port — register the webhook once, cover the whole team. Designed for a mac-mini or home server.
|
|
76
72
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
73
|
+
```bash
|
|
74
|
+
crosscheck serve
|
|
75
|
+
crosscheck serve --no-backtrace # skip startup scan
|
|
76
|
+
crosscheck serve --personal # personal scope this session only
|
|
77
|
+
crosscheck serve --reconfigure # re-run deployment setup
|
|
78
|
+
```
|
|
82
79
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
### `crosscheck review <pr-url>`
|
|
83
|
+
|
|
84
|
+
One-shot review of a single PR. Clones, checks out, reviews, and posts the comment.
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
crosscheck review https://github.com/org/repo/pull/42
|
|
88
|
+
crosscheck review <pr-url> --reviewer claude # force Claude regardless of detection
|
|
89
|
+
crosscheck review <pr-url> --reviewer codex # force Codex regardless of detection
|
|
86
90
|
```
|
|
87
91
|
|
|
88
92
|
---
|
|
89
93
|
|
|
90
|
-
|
|
94
|
+
### `crosscheck run <pr-url>`
|
|
95
|
+
|
|
96
|
+
Runs the full configured workflow against one PR: review → fix → recheck. Same logic as `watch`/`serve`, but triggered manually.
|
|
91
97
|
|
|
92
98
|
```bash
|
|
93
|
-
crosscheck
|
|
94
|
-
crosscheck
|
|
95
|
-
crosscheck
|
|
96
|
-
crosscheck
|
|
97
|
-
crosscheck
|
|
98
|
-
crosscheck status # auth state, config summary, CLI versions
|
|
99
|
+
crosscheck run <pr-url>
|
|
100
|
+
crosscheck run <pr-url> --steps review # only the review step
|
|
101
|
+
crosscheck run <pr-url> --steps fix,recheck # skip initial review
|
|
102
|
+
crosscheck run <pr-url> --reviewer claude # override reviewer assignment
|
|
103
|
+
crosscheck run <pr-url> --dry-run # review without posting or fixing
|
|
99
104
|
```
|
|
100
105
|
|
|
101
|
-
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
### `crosscheck scan`
|
|
109
|
+
|
|
110
|
+
Scans every open PR in the configured monitor scope and reports where each one is in the crosscheck workflow. Results are cached for 60 seconds.
|
|
111
|
+
|
|
112
|
+
States: `PR` (needs review) · `APPROVE` · `NEEDS_WORK` · `BLOCK` · `RECHECK` (fix applied, needs recheck)
|
|
102
113
|
|
|
103
114
|
```bash
|
|
104
|
-
crosscheck
|
|
105
|
-
crosscheck
|
|
106
|
-
crosscheck
|
|
107
|
-
crosscheck
|
|
115
|
+
crosscheck scan # all open PRs, grouped stale/not-stale
|
|
116
|
+
crosscheck scan --tidy # stale actionable rows only
|
|
117
|
+
crosscheck scan --stale-after 4h # custom staleness threshold (default 24h)
|
|
118
|
+
crosscheck scan --force # bypass cache
|
|
119
|
+
crosscheck scan --json # machine-readable output
|
|
108
120
|
```
|
|
109
121
|
|
|
110
122
|
---
|
|
111
123
|
|
|
124
|
+
### `crosscheck kickass`
|
|
125
|
+
|
|
126
|
+
Selects stale PRs from the operator queue and advances them — runs `scan` first, presents a multi-select picker, shows a preflight summary, then executes after confirmation.
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
crosscheck kickass # interactive operator queue
|
|
130
|
+
crosscheck kickass --dry-run # preflight only — no mutations
|
|
131
|
+
crosscheck kickass --stale-after 2h # tighter staleness threshold
|
|
132
|
+
crosscheck kickass --force # bypass scan cache before picking
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Actions: `PR → CR` · `NEEDS_WORK/BLOCK → Fix` · `FIX/RECHECK → Recheck` · `APPROVE → Merge`
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
112
139
|
## Configuration
|
|
113
140
|
|
|
114
|
-
###
|
|
141
|
+
### Review depth (`quality.tier`)
|
|
115
142
|
|
|
116
|
-
|
|
143
|
+
```yaml
|
|
144
|
+
# crosscheck.config.yml
|
|
145
|
+
quality:
|
|
146
|
+
tier: balanced # fast | balanced | thorough
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
| Tier | Claude model | Codex model | Latency |
|
|
150
|
+
|---|---|---|---|
|
|
151
|
+
| `fast` | Haiku | default | ~10s |
|
|
152
|
+
| `balanced` | Sonnet (default) | default | ~30s |
|
|
153
|
+
| `thorough` | Opus | default | ~60s |
|
|
154
|
+
|
|
155
|
+
### Pipeline (`workflow.yml`)
|
|
117
156
|
|
|
118
157
|
```yaml
|
|
119
|
-
# workflow.yml — define the review pipeline
|
|
120
158
|
steps:
|
|
121
159
|
- name: review
|
|
122
160
|
type: review
|
|
@@ -124,7 +162,7 @@ steps:
|
|
|
124
162
|
|
|
125
163
|
- name: fix
|
|
126
164
|
type: fix
|
|
127
|
-
reviewer: origin
|
|
165
|
+
reviewer: origin
|
|
128
166
|
when: review.verdict != 'APPROVE'
|
|
129
167
|
|
|
130
168
|
- name: recheck
|
|
@@ -133,11 +171,10 @@ steps:
|
|
|
133
171
|
when: fix.applied_count > 0
|
|
134
172
|
```
|
|
135
173
|
|
|
136
|
-
### Config
|
|
137
|
-
|
|
138
|
-
Config lives at `~/.crosscheck/config.yml` — one file covers all your repos. Run `crosscheck init` to generate it, or let `crosscheck onboard` write it for you.
|
|
174
|
+
### Config snapshot
|
|
139
175
|
|
|
140
176
|
```yaml
|
|
177
|
+
# ~/.crosscheck/config.yml
|
|
141
178
|
orgs:
|
|
142
179
|
- your-org
|
|
143
180
|
|
|
@@ -154,7 +191,7 @@ vendors:
|
|
|
154
191
|
enabled: true
|
|
155
192
|
|
|
156
193
|
quality:
|
|
157
|
-
tier: balanced
|
|
194
|
+
tier: balanced
|
|
158
195
|
|
|
159
196
|
clone_protocol: ssh # ssh (default) | https
|
|
160
197
|
```
|
|
@@ -163,14 +200,6 @@ Full reference: [get-started.md](./get-started.md)
|
|
|
163
200
|
|
|
164
201
|
---
|
|
165
202
|
|
|
166
|
-
## Deployment
|
|
167
|
-
|
|
168
|
-
**Personal (`crosscheck watch`)** — runs on your laptop. An SSH tunnel through `localhost.run` handles GitHub webhook delivery automatically — no port-forwarding, no cloud account needed. Reconnects if the tunnel drops.
|
|
169
|
-
|
|
170
|
-
**Team (`crosscheck serve`)** — bind to a fixed port on a machine with a public IP or behind a reverse proxy. Register the webhook once; the whole team is covered without anyone's laptop staying on.
|
|
171
|
-
|
|
172
|
-
---
|
|
173
|
-
|
|
174
203
|
## Requirements
|
|
175
204
|
|
|
176
205
|
| | Minimum |
|