Archived
feat: 攻擊方 diff 過濾 + 預設檔名更名 #4
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "jsc",
|
||||
"version": "0.0.2",
|
||||
"version": "0.0.3",
|
||||
"description": "JSC 跨 AI 助理共用 plugin 模板(Claude Code / Codex / Antigravity / OpenCode)。所有 skills 以 SKILL.md 為共通標準,於 Claude Code 以 /jsc: 前綴呼叫。",
|
||||
"skills": "./skills",
|
||||
"author": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "jsc",
|
||||
"version": "0.0.2",
|
||||
"version": "0.0.3",
|
||||
"description": "JSC 跨 AI 助理共用 plugin 模板。所有 skills 以 SKILL.md 為共通標準。",
|
||||
"skills": "./skills"
|
||||
}
|
||||
|
||||
@@ -144,9 +144,9 @@ rm -rf ~/.config/opencode/skills/code-review
|
||||
|
||||
| 助理 | headless 指令 | 執行 `code-review` skill |
|
||||
| --- | --- | --- |
|
||||
| Claude Code | `claude -p "<prompt>"` | `claude -p "/jsc:code-review main feature/login all --exclusions .codereview.md --known-issues .codereview-known-issues.md"` |
|
||||
| Codex | `codex exec "<prompt>"` | `codex exec '$code-review main feature/login all --exclusions .codereview.md --known-issues .codereview-known-issues.md'` |
|
||||
| Antigravity | `agy -p "<prompt>"` | `agy -p "/jsc:code-review main feature/login all --exclusions .codereview.md --known-issues .codereview-known-issues.md"` |
|
||||
| Claude Code | `claude -p "<prompt>"` | `claude -p "/jsc:code-review main feature/login all --exclusions exclusions.md --known-issues known-issues.md"` |
|
||||
| Codex | `codex exec "<prompt>"` | `codex exec '$code-review main feature/login all --exclusions exclusions.md --known-issues known-issues.md'` |
|
||||
| Antigravity | `agy -p "<prompt>"` | `agy -p "/jsc:code-review main feature/login all --exclusions exclusions.md --known-issues known-issues.md"` |
|
||||
| OpenCode | `opencode run "<message>"` | `opencode run "用攻防角色 review main 與 feature/login 的差異"` |
|
||||
|
||||
- Claude / Antigravity 支援 `/jsc:` 前綴,直接 `-p "/jsc:<name>"` 即可。
|
||||
@@ -165,11 +165,11 @@ rm -rf ~/.config/opencode/skills/code-review
|
||||
|
||||
### `code-review`
|
||||
|
||||
以 RPG 攻防對決方式審查 `git diff` 的程式碼審查 skill。審查範圍是兩個分支的差異,**來源分支與目標分支缺一不可**(缺漏會反問補齊)。角色分**攻擊方**(吟遊詩人=風格 🎼/法師=邏輯 🔮/盜賊=效率 ⚡/刺客=安全性 🗡️)與**防守方**(聖騎士=裁決 🛡️),每個角色定義在 `skills/code-review/roles/<role>.md`(含英文名稱/專案/個性/徽章/代表色)。攻擊方分析 diff 找出問題(問題/等級/描述/建議/檔案位置/所在行數);防守方依專案根目錄排除事項設定檔、**前次審查紀錄(已知問題=前次發現但未解決的問題)**與原始碼脈絡裁決每條問題(🚫 略過/🔁 已知問題/❌ 誤判/✅ 成立)。使用者可選擇單一角色、整個攻擊方、整個防守方或全部;複選時以 sub agent 並行執行。
|
||||
以 RPG 攻防對決方式審查 `git diff` 的程式碼審查 skill。審查範圍是兩個分支的差異,**來源分支與目標分支缺一不可**(缺漏會反問補齊)。角色分**攻擊方**(吟遊詩人=風格 🎼/法師=邏輯 🔮/盜賊=效率 ⚡/刺客=安全性 🗡️)與**防守方**(聖騎士=裁決 🛡️),每個角色定義在 `skills/code-review/roles/<role>.md`(含英文名稱/專案/個性/徽章/代表色)。攻擊方分析 diff 找出問題(問題/等級/描述/建議/檔案位置/所在行數,審查前自動排除 `.` 開頭資料夾內的內容、以及排除事項檔與前次審查紀錄檔本身);防守方依專案根目錄排除事項設定檔、**前次審查紀錄(已知問題=前次發現但未解決的問題)**與原始碼脈絡裁決每條問題(🚫 略過/🔁 已知問題/❌ 誤判/✅ 成立)。使用者可選擇單一角色、整個攻擊方、整個防守方或全部;複選時以 sub agent 並行執行。
|
||||
|
||||
參數格式:`<target> <source> [角色...] [--exclusions <排除事項檔案路徑>] [--known-issues <前次審查紀錄路徑>]`(目標在前、來源在後;角色可省略,會詢問;`--exclusions`、`--known-issues` 指定對應檔案路徑,省略時若選到防守方會反問)。
|
||||
|
||||
- **Claude Code / Antigravity**:`/jsc:code-review`(反問分支與角色),或帶參數 `/jsc:code-review main feature/login mage`、`/jsc:code-review main feature/login all --exclusions .codereview.md --known-issues .codereview-known-issues.md`
|
||||
- **Claude Code / Antigravity**:`/jsc:code-review`(反問分支與角色),或帶參數 `/jsc:code-review main feature/login mage`、`/jsc:code-review main feature/login all --exclusions exclusions.md --known-issues known-issues.md`
|
||||
- **Codex**:`$code-review main feature/login attack`,或 `$code-review main feature/login all --exclusions docs/review-rules.md --known-issues docs/known-issues.md`,或用 `/skills` 選單
|
||||
- **OpenCode**:描述需求(如「用攻防角色 review main 與 feature/login 的差異,排除事項看 docs/review-rules.md、已知問題看 docs/known-issues.md」)自動觸發
|
||||
|
||||
@@ -179,9 +179,9 @@ rm -rf ~/.config/opencode/skills/code-review
|
||||
|
||||
參數:`--known-issues <前次審查紀錄路徑> --exclusions <排除事項檔案路徑>`(與 code-review 同名旗標,沿用同一組路徑;缺漏會反問)。
|
||||
|
||||
- **Claude Code / Antigravity**:`/jsc:archive-findings --known-issues .codereview-known-issues.md --exclusions .codereview.md`
|
||||
- **Claude Code / Antigravity**:`/jsc:archive-findings --known-issues known-issues.md --exclusions exclusions.md`
|
||||
- **Codex**:`$archive-findings --known-issues docs/known-issues.md --exclusions docs/review-rules.md`,或用 `/skills` 選單
|
||||
- **OpenCode**:描述需求(如「把剛剛 code-review 成立的問題存到 .codereview-known-issues.md、誤判存到 .codereview.md」)自動觸發
|
||||
- **OpenCode**:描述需求(如「把剛剛 code-review 成立的問題存到 known-issues.md、誤判存到 exclusions.md」)自動觸發
|
||||
|
||||
<!-- JSC-SKILLS:END -->
|
||||
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "jsc",
|
||||
"version": "0.0.2",
|
||||
"version": "0.0.3",
|
||||
"description": "JSC 跨 AI 助理共用 plugin 模板。所有 skills 以 SKILL.md 為共通標準;於 Antigravity 以 /jsc: 前綴呼叫。",
|
||||
"skills": "./skills/"
|
||||
}
|
||||
@@ -23,7 +23,7 @@ argument-hint: "--known-issues <前次審查紀錄路徑> --exclusions <排除
|
||||
`--known-issues <前次審查紀錄路徑>` `--exclusions <排除事項檔案路徑>` — **兩者皆必填,一定要指定**。
|
||||
|
||||
- **未提供任一路徑 → 必須先向使用者取得,不可自行採用預設或臆測**(與 code-review 一致:預設檔名僅作詢問時的建議選項)。
|
||||
建議預設:已知問題 `.codereview-known-issues.md`、排除事項 `.codereview.md`(與 code-review 防守方讀的同一檔)。
|
||||
建議預設:已知問題 `known-issues.md`、排除事項 `exclusions.md`(與 code-review 防守方讀的同一檔)。
|
||||
- **檔案本身允許不存在或為空內容**:若目標檔不存在、或內容為空(含只有空白)→ skill 先**依模板建立該檔**(見下方「模板」),再附加條目;既有非空檔則直接附加。
|
||||
- 寫入屬於**更動專案檔案**的行為 → **未獲使用者同意前不可寫入**;拒絕則只輸出將寫入的預覽。
|
||||
- **格式依副檔名自動決定**:`.md` → Markdown(用下方模板);`.json` → top-level JSON array(空/不存在時初始化為 `[]`)。
|
||||
@@ -74,7 +74,7 @@ argument-hint: "--known-issues <前次審查紀錄路徑> --exclusions <排除
|
||||
目標檔不存在時先建立標題:
|
||||
|
||||
- 已知問題檔:`# 前次審查紀錄(已知問題)\n\n由 /jsc:archive-findings 從 code-review【✅ 成立】問題彙整;/jsc:code-review 防守方會讀此檔並標「🔁 已知問題」。`
|
||||
- 排除事項檔(`.codereview.md`):`# Code Review 排除事項\n\n已知技術債/團隊慣例/刻意取捨/已確認的誤判;/jsc:code-review 防守方會讀此檔並標「🚫 略過」。`
|
||||
- 排除事項檔(`exclusions.md`):`# Code Review 排除事項\n\n已知技術債/團隊慣例/刻意取捨/已確認的誤判;/jsc:code-review 防守方會讀此檔並標「🚫 略過」。`
|
||||
|
||||
**已知問題** 每筆:
|
||||
|
||||
@@ -164,6 +164,6 @@ argument-hint: "--known-issues <前次審查紀錄路徑> --exclusions <排除
|
||||
|
||||
| 助理 | 呼叫 |
|
||||
| --- | --- |
|
||||
| Claude Code / Antigravity | `/jsc:archive-findings --known-issues .codereview-known-issues.md --exclusions .codereview.md`(或省略路徑由它反問) |
|
||||
| Claude Code / Antigravity | `/jsc:archive-findings --known-issues known-issues.md --exclusions exclusions.md`(或省略路徑由它反問) |
|
||||
| Codex | `$archive-findings --known-issues docs/known-issues.md --exclusions docs/review-rules.md`,或用 `/skills` 選單 |
|
||||
| OpenCode | 描述需求(如「把剛剛 code-review 成立的問題存到 .codereview-known-issues.md、誤判存到 .codereview.md」)自動觸發 |
|
||||
| OpenCode | 描述需求(如「把剛剛 code-review 成立的問題存到 known-issues.md、誤判存到 exclusions.md」)自動觸發 |
|
||||
|
||||
@@ -32,8 +32,20 @@ description: 以 RPG 攻防對決方式審查 git diff 的程式碼審查 skill
|
||||
`/jsc:code-review main feature/login`。指令為 `git diff <target>...<source>`(比對 source 自分岔點以來的變更)。
|
||||
- **若來源或目標分支任一缺漏 → 必須詢問使用者補齊**,兩個都拿到才繼續;
|
||||
可用 `git branch` 列出可選分支輔助使用者選擇。不可自行臆測或預設某一分支。
|
||||
- 取得兩個分支後執行 `git diff <target>...<source>`。
|
||||
- **diff 為空**(兩分支無差異)→ 回報「無變更可審查」並結束。
|
||||
- 取得兩個分支後執行 `git diff <target>...<source>`,並**排除下列不納入審查的路徑**:
|
||||
- **任何以 `.` 開頭的資料夾內的所有內容**(如 `.git/`、`.github/`、`.claude-plugin/`、`.codex-plugin/`、`.agents/` 等)。
|
||||
- **排除事項檔**與**前次審查紀錄檔**本身(`--exclusions` / `--known-issues` 指定的路徑;未指定時連同預設檔名 `exclusions.md`、`known-issues.md` 一併排除)。
|
||||
- 用 git pathspec 一次完成,例如:
|
||||
|
||||
```bash
|
||||
git diff <target>...<source> -- . \
|
||||
':(exclude,glob)**/.*/**' \
|
||||
':(exclude)<排除事項檔路徑>' \
|
||||
':(exclude)<前次審查紀錄檔路徑>'
|
||||
```
|
||||
|
||||
(`**/.*/**` 排除任意層級的 `.` 開頭資料夾內容;`.` 開頭的**檔案**不在此列,只有上述兩個設定檔被指名排除。)
|
||||
- **過濾後 diff 為空** → 回報「無變更可審查」並結束。
|
||||
|
||||
### 2. 選擇角色
|
||||
|
||||
@@ -52,14 +64,14 @@ slash 參數格式:`/jsc:code-review <target> <source> [角色...] [--exclusio
|
||||
|
||||
防守方需要兩份參照資料,兩者皆位於**專案根目錄**:
|
||||
|
||||
**(a) 排除事項設定檔**(建議檔名 `.codereview.md`,列出已知技術債/團隊慣例/刻意取捨):
|
||||
**(a) 排除事項設定檔**(建議檔名 `exclusions.md`,列出已知技術債/團隊慣例/刻意取捨):
|
||||
|
||||
- **若 slash 參數帶了 `--exclusions <路徑>`** → 即為使用者明確指定,直接採用該路徑,**不需再問**。
|
||||
- **否則只要使用者沒有明確告知檔案路徑 → 一律先詢問**。預設檔名 `.codereview.md` 僅作為詢問時的**建議選項**,
|
||||
- **否則只要使用者沒有明確告知檔案路徑 → 一律先詢問**。預設檔名 `exclusions.md` 僅作為詢問時的**建議選項**,
|
||||
**不可**在未取得使用者明確指定前自行假設或直接採用該預設路徑。
|
||||
- **檔案允許不存在或為空** → 視為「無排除事項」,**不**因缺檔而中斷。
|
||||
|
||||
**(b) 前次審查紀錄檔**(已知問題=前次審查成立但未解決的問題;建議檔名 `.codereview-known-issues.md`):
|
||||
**(b) 前次審查紀錄檔**(已知問題=前次審查成立但未解決的問題;建議檔名 `known-issues.md`):
|
||||
|
||||
- **若 slash 參數帶了 `--known-issues <路徑>`** → 即為使用者明確指定,直接採用該路徑,**不需再問**。
|
||||
- **否則只要使用者沒有明確告知檔案路徑 → 一律先詢問**(規則同上,預設檔名僅為建議選項,不可自行假設)。
|
||||
@@ -78,6 +90,7 @@ slash 參數格式:`/jsc:code-review <target> <source> [角色...] [--exclusio
|
||||
- **等級**:🔴 嚴重 / 🟠 高 / 🟡 中 / 🔵 低。
|
||||
- **檔案位置 / 所在行數**:取自 diff 新檔(`+` 側)的路徑與行號。
|
||||
- 只針對本次 diff 的變更,不對無關舊碼開砲。
|
||||
- 攻擊方審查的是**步驟 1 過濾後**的 diff(已排除 `.` 開頭資料夾內容、排除事項檔與前次審查紀錄檔),不得把這些被排除的路徑列入問題。
|
||||
|
||||
### 5. 防守方裁決(若選到防守方)
|
||||
|
||||
@@ -137,6 +150,6 @@ slash 參數格式:`/jsc:code-review <target> <source> [角色...] [--exclusio
|
||||
|
||||
| 助理 | 呼叫 |
|
||||
| --- | --- |
|
||||
| Claude Code / Antigravity | `/jsc:code-review`(反問分支與角色),或 `/jsc:code-review main feature/login mage`、`/jsc:code-review main feature/login all --exclusions .codereview.md --known-issues .codereview-known-issues.md` |
|
||||
| Claude Code / Antigravity | `/jsc:code-review`(反問分支與角色),或 `/jsc:code-review main feature/login mage`、`/jsc:code-review main feature/login all --exclusions exclusions.md --known-issues known-issues.md` |
|
||||
| Codex | `$code-review main feature/login attack`,或 `$code-review main feature/login all --exclusions docs/review-rules.md --known-issues docs/known-issues.md`,或用 `/skills` 選單 |
|
||||
| OpenCode | 描述需求(如「用攻防角色 review main 與 feature/login 的差異,排除事項看 docs/review-rules.md、已知問題看 docs/known-issues.md」)自動觸發 |
|
||||
|
||||
@@ -20,19 +20,19 @@ personality: 沉穩公正、就事論事,不護短也不冤枉,只依排除
|
||||
|
||||
## 排除事項(裁決前先確認)
|
||||
|
||||
排除事項設定檔位於**專案根目錄**(建議檔名 `.codereview.md`,列出已知技術債/團隊慣例/刻意取捨)。
|
||||
排除事項設定檔位於**專案根目錄**(建議檔名 `exclusions.md`,列出已知技術債/團隊慣例/刻意取捨)。
|
||||
|
||||
1. **若 slash 參數帶了 `--exclusions <路徑>`** → 即為使用者明確指定,直接採用該路徑。
|
||||
2. **否則只要使用者沒有明確告知檔案路徑 → 一律先詢問**。預設檔名 `.codereview.md` 僅是詢問時的**建議選項**,
|
||||
2. **否則只要使用者沒有明確告知檔案路徑 → 一律先詢問**。預設檔名 `exclusions.md` 僅是詢問時的**建議選項**,
|
||||
**不可**在未取得使用者明確指定前自行假設或直接採用該預設路徑。
|
||||
3. **檔案允許不存在或為空** → 視為「無排除事項」,不因缺檔而中斷。
|
||||
|
||||
## 前次審查紀錄(已知問題=前次發現但未解決的問題,裁決前先確認)
|
||||
|
||||
前次審查紀錄檔位於**專案根目錄**(建議檔名 `.codereview-known-issues.md`,記錄歷次審查成立但尚未解決的問題)。
|
||||
前次審查紀錄檔位於**專案根目錄**(建議檔名 `known-issues.md`,記錄歷次審查成立但尚未解決的問題)。
|
||||
|
||||
1. **若 slash 參數帶了 `--known-issues <路徑>`** → 即為使用者明確指定,直接採用該路徑。
|
||||
2. **否則只要使用者沒有明確告知檔案路徑 → 一律先詢問**。預設檔名 `.codereview-known-issues.md` 僅是詢問時的**建議選項**,
|
||||
2. **否則只要使用者沒有明確告知檔案路徑 → 一律先詢問**。預設檔名 `known-issues.md` 僅是詢問時的**建議選項**,
|
||||
**不可**在未取得使用者明確指定前自行假設或直接採用該預設路徑。
|
||||
3. **檔案允許不存在或為空** → 視為「無已知問題」(例如首次審查),不因缺檔而中斷。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user