Skip to content

Commit 9fd0d54

Browse files
committed
Merge remote-tracking branch 'origin/main' into fix/fix-643
# Conflicts: # src/gateway/node-registry.ts # src/gateway/server.node-invoke-approval-bypass.test.ts
2 parents 2649a37 + 59be6d6 commit 9fd0d54

850 files changed

Lines changed: 36038 additions & 4861 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.agents/skills/clawdtributor/SKILL.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@ Do not close from title alone. If closing as done on main or nonsensical, prove
9898

9999
When asked for `5 new`, exclude refs already surfaced in the session and refill from the archive until there are 5 live-open candidates. If fewer than 5 remain open, list all open ones and say how many short.
100100

101+
When asked to `update`, `refresh`, `recheck`, `check again`, or similar, return an updated live-open candidate list. Do not fill the main list with items that merely merged/closed since the last pass; put those numbers in a short bottom line.
102+
101103
Prefer:
102104

103105
- Fresh, open, external contributor work.
@@ -154,3 +156,4 @@ Rules:
154156
- Always include blast radius in one phrase.
155157
- Always include `verifiable: yes|partial|no` plus the shortest proof hint when helpful.
156158
- If status is not open, still show it only when the user asked for all surfaced refs; use ✅ or ⚪ and state merged/closed.
159+
- For refresh-style asks, bottom line: `Merged/closed since last pass: #81016 merged, #81026 closed.` Omit if none.
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
---
2+
name: codex-review
3+
description: "Codex code review closeout: local dirty changes, PR branch vs main, parallel tests."
4+
---
5+
6+
# Codex Review
7+
8+
Run Codex's built-in code review as a closeout check. This is code review (`codex review`), not Guardian `auto_review` approval routing.
9+
10+
Use when:
11+
- user asks for Codex review / autoreview / second-model review
12+
- after non-trivial code edits, before final/commit/ship
13+
- reviewing a local branch or PR branch after fixes
14+
15+
## Contract
16+
17+
- Treat review output as advisory. Never blindly apply it.
18+
- Verify every finding by reading the real code path and adjacent files.
19+
- Read dependency docs/source/types when the finding depends on external behavior.
20+
- Reject unrealistic edge cases, speculative risks, broad rewrites, and fixes that over-complicate the codebase.
21+
- Prefer small fixes at the right ownership boundary; no refactor unless it clearly improves the bug class.
22+
- Keep going until Codex review returns no accepted/actionable findings.
23+
- If a review-triggered fix changes code, rerun focused tests and rerun Codex review.
24+
- If rejecting a finding as intentional/not worth fixing, add a brief inline code comment only when it explains a real invariant or ownership decision that future reviewers should know.
25+
- Do not push just to review. Push only when the user requested push/ship/PR update.
26+
27+
## Pick Target
28+
29+
Dirty local work:
30+
31+
```bash
32+
codex review --uncommitted
33+
```
34+
35+
Branch/PR work:
36+
37+
```bash
38+
git fetch origin
39+
codex review --base origin/main
40+
```
41+
42+
Do not pass an inline prompt with `--base`; current CLI rejects `--base` + `[PROMPT]` even though help text is ambiguous. If custom instructions are needed, run the plain base review first, then do a local/manual follow-up pass.
43+
44+
If an open PR exists, use its actual base:
45+
46+
```bash
47+
base=$(gh pr view --json baseRefName --jq .baseRefName)
48+
codex review --base "origin/$base"
49+
```
50+
51+
Committed single change:
52+
53+
```bash
54+
codex review --commit HEAD
55+
```
56+
57+
## Parallel Closeout
58+
59+
Format first if formatting can change line locations. Then it is OK to run tests and review in parallel:
60+
61+
```bash
62+
scripts/codex-review --parallel-tests "<focused test command>"
63+
```
64+
65+
Tradeoff: tests may force code changes that stale the review. If tests or review lead to code edits, rerun the affected tests and rerun review until no accepted/actionable findings remain.
66+
67+
## Context Efficiency
68+
69+
Codex review is usually noisy. Default to a subagent filter when subagents are available. Ask it to run the review and return only:
70+
- actionable findings it accepts
71+
- findings it rejects, with one-line reason
72+
- exact files/tests to rerun
73+
74+
Run inline only for tiny changes or when subagents are unavailable.
75+
76+
## Helper
77+
78+
Bundled helper:
79+
80+
```bash
81+
~/.codex/skills/codex-review/scripts/codex-review --help
82+
```
83+
84+
If installed from `agent-scripts`, path is:
85+
86+
```bash
87+
/Users/steipete/Projects/agent-scripts/skills/codex-review/scripts/codex-review --help
88+
```
89+
90+
The helper:
91+
- chooses dirty `--uncommitted` first
92+
- otherwise uses current PR base if `gh pr view` works
93+
- otherwise uses `origin/main` for non-main branches
94+
- writes only to stdout unless `--output` or `CODEX_REVIEW_OUTPUT` is set
95+
- supports `--dry-run` and `--parallel-tests`
96+
97+
## Final Report
98+
99+
Include:
100+
- review command used
101+
- tests/proof run
102+
- findings accepted/rejected, briefly why
103+
- final clean review command, or why a remaining finding was consciously rejected
Lines changed: 188 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,188 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
usage() {
5+
cat <<'EOF'
6+
Usage: codex-review [options]
7+
8+
Options:
9+
--mode auto|local|branch Target selection. Default: auto.
10+
--base REF Base ref for branch review. Default: PR base or origin/main.
11+
--codex-bin PATH Codex binary. Default: codex.
12+
--output FILE Also save output to file.
13+
--parallel-tests CMD Run review and test command concurrently.
14+
--dry-run Print selected commands, do not run.
15+
-h, --help Show help.
16+
17+
Modes:
18+
local codex review --uncommitted
19+
branch codex review --base <base>
20+
auto dirty tree -> local, else PR/current branch -> branch
21+
EOF
22+
}
23+
24+
mode=auto
25+
base_ref=
26+
codex_bin=${CODEX_BIN:-codex}
27+
output=${CODEX_REVIEW_OUTPUT:-}
28+
parallel_tests=
29+
dry_run=false
30+
31+
while [[ $# -gt 0 ]]; do
32+
case "$1" in
33+
--mode)
34+
mode=${2:-}
35+
shift 2
36+
;;
37+
--base)
38+
base_ref=${2:-}
39+
shift 2
40+
;;
41+
--codex-bin)
42+
codex_bin=${2:-}
43+
shift 2
44+
;;
45+
--output)
46+
output=${2:-}
47+
shift 2
48+
;;
49+
--parallel-tests)
50+
parallel_tests=${2:-}
51+
shift 2
52+
;;
53+
--dry-run)
54+
dry_run=true
55+
shift
56+
;;
57+
-h|--help)
58+
usage
59+
exit 0
60+
;;
61+
*)
62+
usage >&2
63+
exit 2
64+
;;
65+
esac
66+
done
67+
68+
case "$mode" in
69+
auto|local|branch) ;;
70+
*)
71+
echo "invalid --mode: $mode" >&2
72+
exit 2
73+
;;
74+
esac
75+
76+
git rev-parse --show-toplevel >/dev/null
77+
78+
current_branch=$(git branch --show-current 2>/dev/null || true)
79+
dirty=false
80+
if [[ -n "$(git status --porcelain)" ]]; then
81+
dirty=true
82+
fi
83+
84+
pr_url=
85+
if [[ -z "$base_ref" && "$mode" != local ]] && command -v gh >/dev/null 2>&1; then
86+
if pr_lines=$(gh pr view --json baseRefName,url --jq '[.baseRefName, .url] | @tsv' 2>/dev/null); then
87+
base_name=${pr_lines%%$'\t'*}
88+
pr_url=${pr_lines#*$'\t'}
89+
if [[ -n "$base_name" ]]; then
90+
base_ref="origin/$base_name"
91+
fi
92+
fi
93+
fi
94+
95+
if [[ -z "$base_ref" ]]; then
96+
base_ref=origin/main
97+
fi
98+
99+
review_kind=
100+
if [[ "$mode" == local || ( "$mode" == auto && "$dirty" == true ) ]]; then
101+
review_kind=local
102+
elif [[ "$mode" == branch || ( "$mode" == auto && -n "$current_branch" && "$current_branch" != "main" ) ]]; then
103+
review_kind=branch
104+
else
105+
echo "no review target: clean main checkout and no forced mode" >&2
106+
exit 1
107+
fi
108+
109+
if [[ "$review_kind" == local ]]; then
110+
review_cmd=("$codex_bin" review --uncommitted)
111+
else
112+
review_cmd=("$codex_bin" review --base "$base_ref")
113+
fi
114+
115+
printf 'codex-review target: %s\n' "$review_kind"
116+
printf 'branch: %s\n' "${current_branch:-detached}"
117+
if [[ -n "$pr_url" ]]; then
118+
printf 'pr: %s\n' "$pr_url"
119+
fi
120+
printf 'review:'
121+
printf ' %q' "${review_cmd[@]}"
122+
printf '\n'
123+
if [[ -n "$parallel_tests" ]]; then
124+
printf 'tests: %s\n' "$parallel_tests"
125+
fi
126+
if [[ "$review_kind" == branch ]]; then
127+
printf 'fetch: git fetch origin --quiet\n'
128+
fi
129+
if [[ -n "$output" ]]; then
130+
printf 'output: %s\n' "$output"
131+
fi
132+
133+
if [[ "$dry_run" == true ]]; then
134+
exit 0
135+
fi
136+
137+
if [[ "$review_kind" == branch ]]; then
138+
git fetch origin --quiet || {
139+
echo "warning: git fetch origin failed; reviewing with existing refs" >&2
140+
}
141+
fi
142+
143+
run_review() {
144+
if [[ -n "$output" ]]; then
145+
mkdir -p "$(dirname "$output")"
146+
"${review_cmd[@]}" 2>&1 | tee "$output"
147+
else
148+
"${review_cmd[@]}"
149+
fi
150+
}
151+
152+
if [[ -z "$parallel_tests" ]]; then
153+
run_review
154+
exit $?
155+
fi
156+
157+
review_status_file=$(mktemp)
158+
tests_status_file=$(mktemp)
159+
160+
(
161+
set +e
162+
run_review
163+
status=$?
164+
printf '%s\n' "$status" > "$review_status_file"
165+
) &
166+
review_pid=$!
167+
168+
(
169+
set +e
170+
bash -lc "$parallel_tests"
171+
status=$?
172+
printf '%s\n' "$status" > "$tests_status_file"
173+
) &
174+
tests_pid=$!
175+
176+
wait "$review_pid" || true
177+
wait "$tests_pid" || true
178+
179+
review_status=$(cat "$review_status_file")
180+
tests_status=$(cat "$tests_status_file")
181+
rm -f "$review_status_file" "$tests_status_file"
182+
183+
printf 'codex-review exit: %s\n' "$review_status"
184+
printf 'tests exit: %s\n' "$tests_status"
185+
186+
if [[ "$review_status" != 0 || "$tests_status" != 0 ]]; then
187+
exit 1
188+
fi

0 commit comments

Comments
 (0)