Skip to content

Commit e0c8b4c

Browse files
committed
feat: structurally disable starks on Codex reviewer side; CI lint; doc polish
- Cross-review (Claude→Codex) now passes -c 'skills.config=[{name="starks",enabled=false}]' so the reviewer cannot even see starks — anti-recursion no longer relies on the reviewed side checking the env guard (verified live: starks absent from the reviewer session's skill list). Codex has no global skill-off switch; remaining skills stay inert under the review prompt's no-skill constraint. - lint.sh: anchors updated for memory recall / rework cap / review templates / skills.config; verify all four prompt templates exist - GitHub Actions workflow to run lint on push/PR - READMEs: recommend the superpowers plugin (hand-off targets)
1 parent 7d3d1f6 commit e0c8b4c

6 files changed

Lines changed: 32 additions & 4 deletions

File tree

.github/workflows/lint.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
name: lint
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
8+
jobs:
9+
lint:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- uses: actions/checkout@v4
13+
- run: bash scripts/lint.sh

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ A single model has systematic blind spots — it tends to miss the same edge cas
3737
- macOS or Linux
3838
- Cross-model review needs the *other* engine's CLI on your `PATH` (`claude` / `codex`)
3939
- Optional: a knowledge base such as Obsidian for the memory step; `gh` (maintenance only)
40+
- Recommended: the [superpowers](https://github.com/obra/superpowers) plugin — starks hands off to its `systematic-debugging` / `writing-skills` / `brainstorming` skills when those situations arise (works fine without it; those hand-offs just won't fire)
4041

4142
## Installation
4243

README.zh-CN.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
- macOS 或 Linux
3636
- 跨模型互审需要**另一端** CLI 在 `PATH` 中(`claude` / `codex`
3737
- 可选:Obsidian(用作记忆层)与 `gh`
38+
- 推荐:[superpowers](https://github.com/obra/superpowers) 插件——遇到 bug / 写 skill / 大型设计时 starks 会转交它的 `systematic-debugging` / `writing-skills` / `brainstorming`;未安装不影响主流程,只是这些转交不生效
3839

3940
## 安装
4041

SKILL.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ digraph starks {
116116
## 跨模型互审怎么做
117117

118118
**前提:用户在第 3 步选了 B(要互审)**。然后把方案全文 + `prompts/cross-review.md` 的审查提示拼好,调**另一个**模型(务必带 `STARKS_CROSS_REVIEW=1` 防递归):
119-
- Claude → Codex:`STARKS_CROSS_REVIEW=1 codex exec -m "$STARKS_REVIEW_MODEL" "<审查提示 + 方案全文>"`
119+
- Claude → Codex:`STARKS_CROSS_REVIEW=1 codex exec -c 'skills.config=[{name="starks",enabled=false}]' -m "$STARKS_REVIEW_MODEL" "<审查提示 + 方案全文>"``-c` 这段结构性禁掉被审端的 starks——reviewer 根本看不见它,防递归不再只靠自觉;Codex 无全局禁 skill 开关,其余 skill 由审查提示里"禁止调用任何 skill"约束)
120120
- Codex → Claude:`STARKS_CROSS_REVIEW=1 claude -p --model "$STARKS_REVIEW_MODEL" "<审查提示 + 方案全文>"`
121121

122122
单轮、同步等结果;超时设 10 分钟左右防 hang(不计 token,但不可卡死)。拿回意见后由你整合成修订版方案,再给用户确认。
@@ -143,7 +143,7 @@ digraph starks {
143143
| 交互式提问 | `AskUserQuestion` | 终端追问 |
144144
| 进度跟踪 | `TodoWrite` | `update_plan` |
145145
| 浏览器可视化 | 复用 superpowers Visual Companion 脚本 | 同脚本(`CODEX_CI` 自动前台) |
146-
| 跨模型互审 | `codex exec -m "$STARKS_REVIEW_MODEL" "…"` | `claude -p --model "$STARKS_REVIEW_MODEL" "…"` |
146+
| 跨模型互审 | `codex exec `(完整命令见"跨模型互审怎么做") | `claude -p --model "$STARKS_REVIEW_MODEL" "…"` |
147147
| 子代理默认模型 | `$STARKS_AGENT_MODEL` | `$STARKS_AGENT_MODEL` |
148148

149149
## 红旗清单(宣称完成前自检)

docs/DESIGN.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,12 @@ invocation when the agent calls the other engine as a reviewer. This is the
158158

159159
This keeps the recursion exactly one level deep, by construction.
160160

161+
When Claude invokes Codex as the reviewer, the guard is doubled structurally:
162+
the invocation also disables the starks skill itself via Codex's per-skill
163+
`skills.config` override, so the reviewer cannot even see starks in its skill
164+
list. (Codex offers no global "load no skills" switch; the remaining skills
165+
are inert under the review prompt's explicit no-skill constraint.)
166+
161167
---
162168

163169
## Memory layer

scripts/lint.sh

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,15 +74,22 @@ fi
7474

7575
# 检查 2:结构 smoke —— 关键锚点存在,缺哪个记哪个。
7676
if [[ -f "$SKILL" ]]; then
77-
anchors=("HARD-GATE" "STARKS_CROSS_REVIEW" "跨模型互审" "记忆收尾" "digraph starks")
77+
anchors=("HARD-GATE" "STARKS_CROSS_REVIEW" "跨模型互审" "记忆收尾" "digraph starks" "记忆唤醒" "最多回炉 2 次" "prompts/spec-review.md" "prompts/code-review.md" "skills.config")
7878
for a in "${anchors[@]}"; do
7979
if ! grep -qF -- "$a" "$SKILL"; then
8080
failures+=("缺少关键锚点: $a")
8181
fi
8282
done
8383
fi
8484

85-
# 检查 3:防 fence 残留 smoke —— 没有任何一行以四个反引号开头。
85+
# 检查 3:SKILL.md 引用的 prompt 模板必须存在。
86+
for p in cross-review memory-writer spec-review code-review; do
87+
if [[ ! -f "$SRC/prompts/$p.md" ]]; then
88+
failures+=("缺少 prompt 模板: prompts/$p.md")
89+
fi
90+
done
91+
92+
# 检查 4:防 fence 残留 smoke —— 没有任何一行以四个反引号开头。
8693
if [[ -f "$SKILL" ]]; then
8794
fence_count="$(grep -c '^````' "$SKILL")"
8895
if [[ "$fence_count" -ne 0 ]]; then

0 commit comments

Comments
 (0)