feat/api-doc-audit/main
develop
code-review
references/smells.md
jsc-review:api-doc
knowledges/QUESTION
QUESTION_FB8DF0B5
skills/api-doc/SKILL.md
tools/swagger-detect.sh
0
1
2
skills/code-review/SKILL.md
api-doc
README.md
swagger-detect.sh
plugin.json
.claude-plugin/plugin.json
.codex-plugin/plugin.json
ProducesResponseType
@ApiResponse
responses=
@extend_schema
jsc-sdlc:implement
tools/ste100-lint.sh
support=
stack=
package=
config=
jsc-sdlc
implement
What:references/smells.md 第 5 組擴充。5.1 的方法描述後面要接條列式的處理步驟 與規則,5.3 的回傳值是自訂資料模型時要附上型別定義的導向連結;新增 5.6 內含 功能的導向連結、5.7 XML 註解標籤各占一行、5.8 註解裡的專有名詞與變數依語言 慣例標示。文末的嚴重度分級補上一張表,逐項標明這五個新項目的級別與理由。 Why:使用者提出的產出物文件品質規則裡,有三條講的都是原始碼註解要寫到什麼 程度。動手前先比對過既有內容,第 5 組已經涵蓋大部分,缺的是條列步驟、導向 連結與標示語法這三塊。另開一支技能會跟 code-review 的目標重疊,所以直接擴充 第 5 組。新項目多半屬於可讀性層級,混在原本「註解缺漏」一句話裡分不出輕重, 所以級別另外列。 How:5.1 與 5.3 在原有定義後面接上新要求,偵測訊號與建議重構手法同步補列, 原本的判準一個都不動。5.6 到 5.8 照既有小節的四段結構寫:定義、偵測訊號、 建議重構手法、注意事項。5.8 的標示語法用表格對照 XML 與 JSDoc、docstring 兩類格式。5.6 與 5.7 都寫明註解格式不支援時不適用,避免硬造連結字串,也避免 把 XML 的排版規則套到沒有結束標籤的格式上。 Who:jsc-review 的壞味道參考清單,第 5 組註解契約。
What:新增 tools/swagger-detect.sh,判斷一個專案有沒有真的啟用 Swagger 文件。 涵蓋 dotnet、nodejs、python 三種技術棧,輸出 support=、stack=、package=、 config= 四類欄位;結束碼 0 支援、1 不支援、2 參數個數不對或專案路徑不存在。 Why:API 文件稽核只對產得出 Swagger 文件的專案有意義。支不支援如果交給 agent 自己看程式碼判斷,同一個專案可能這次說支援、下次說不支援。判定寫成腳本,呼叫端 讀結束碼分支就好,不必自己猜。 How:雙重確認,套件與設定缺一不算支援。第一關在套件宣告檔裡找已知的 Swagger 套件,第二關在原始碼裡找真的把 Swagger 接上去的呼叫或裝飾子。設定關鍵字一律 挑接線動作,不挑 import 或 require——光是引入套件不代表文件真的掛上去了。裝了 套件卻沒啟用的專案很常見,只看套件會誤判,讓稽核跑在一個根本產不出文件的專案 上。輸出刻意做成一行一個 key=value,呼叫端逐行讀就好。 Who:jsc-review 的 api-doc 技能,以及 jsc-sdlc 實作階段的收尾稽核。
What:新增 skills/api-doc/SKILL.md。六步流程:偵測 Swagger 支援、不支援就回報 並停手、列出稽核範圍、分三個面向各開一個 sub agent 稽核、彙整去重排序、回報 發現。三個面向分別是狀態碼的回覆類型、參數說明與範例、資料模型遞迴。本技能 只回報「檔案:行號」、嚴重度與建議修法,不改程式碼。 Why:支援 Swagger 的專案要把控制器文件補全:所有可能出現的狀態碼都宣告回覆 類型,輸入輸出都要有說明與真實資料範例,參數是資料模型就每個屬性都套用、內含 模型再往下遞迴。這是 code-review 六組沒碰過的領域,跟第 5 組的原始碼註解契約 也不是同一件事,所以獨立成一支技能,不塞進既有的六組裡。 How:第一步跑 tools/swagger-detect.sh,讀結束碼決定走下去還是停手,不支援時 一個 sub agent 都不開,直接回報未啟用。範例優先取專案的真實資料,資料庫、 種子資料、測試夾具都算;真的取不到才依邏輯推導,並在文件裡標上「推導值」, 讓後面讀的人知道這個值沒被觀察過。取自資料庫的範例一律去識別化,個人資料不 進 Swagger 文件。分工另立一節:本技能只管 Swagger 文件屬性,原始碼註解契約 歸 code-review 第 5 組,同一個缺失不會被回報兩次。 Who:jsc-review 新增的 api-doc 技能,由 jsc-sdlc 的 implement 收尾時呼叫。
What:skills/code-review/SKILL.md 的審查範圍表,第 5 組由原本一句 「smells.md group 5」改成明確的 5.1 到 5.8,並點名 5.6、5.7、5.8 三個新項目; Notes 加一行分工,Swagger 文件稽核歸 api-doc。README.md 新增 api-doc 的技能 小節,另補一張工具表格列出 swagger-detect.sh。 Why:sub agent 讀的是 SKILL.md 的審查範圍表,範圍表沒寫清楚,新增的 5.6 到 5.8 就不會被查。使用者讀的是 README.md,新技能與新工具沒列出來就找不到。 兩支技能都碰註解與文件,界線不寫明就會對同一個缺失重複回報。 How:範圍表的第 5 組直接列出三個新項目與各自的判準重點,完整清單仍指向 references/smells.md。Notes 寫明 api-doc 負責狀態碼的回覆類型、Swagger 參數 說明與範例,第 5 組只負責原始碼註解契約。README.md 的技能小節寫明偵測先行、 只裝套件沒掛接就停手;工具表格列出 swagger-detect.sh 的用途、輸出欄位與結束碼。 Who:jsc-review 的 code-review 技能與存取庫說明文件。
What:plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json 三份 manifest 的 version 由 0.0.5 改為 0.0.6。 Why:這批新增了 api-doc 技能與 swagger-detect.sh,也擴充了第 5 組的審查項目, 屬於功能異動。版本沒跟著升,各 CLI 端的外掛版本護欄就分不出新舊,已安裝的 使用者也收不到更新。 How:三份 manifest 只改 version 欄位,其餘欄位維持原樣,三處版本號保持一致。 Who:jsc-review 外掛的安裝與更新流程。
Reviewed-on: #10 Reviewed-by: 系統管理員 <1+admin@noreply.localhost>
No dependencies set.
The note is not visible to the blocked user.
PR 描述
摘要
code-review的references/smells.md第 5 組本來就是註解契約,已涵蓋 R7 的大部分,所以 R6 到 R8 擴充第 5 組而不新建技能;只有 R5 稽核的是 Swagger 文件屬性、不是原始碼註解,才獨立成jsc-review:api-doc。決策紀錄在 wikiknowledges/QUESTION的QUESTION_FB8DF0B5(2026-08-27 兩節共 12 題)。本 PR 是主幹feat/api-doc-audit/main併回develop的釋出 PR,內容為已合併的子功能 PR #10。變更內容
skills/api-doc/SKILL.mdtools/swagger-detect.sh0支援、1不支援、2參數或路徑有錯references/smells.mdskills/code-review/SKILL.mdapi-doc的分工:這裡只管原始碼註解契約,Swagger 文件屬性歸api-doc,同一個缺口不重複回報兩次README.mdapi-doc,並記下swagger-detect.sh的用途與退出碼plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json設計重點
api-doc看的是 Swagger 文件屬性(ProducesResponseType、@ApiResponse、FastAPI 的responses=、drf-spectacular 的@extend_schema),第 5 組看的是原始碼註解。兩者的證據來源、修法與工具都不一樣,混在一支技能裡會讓「文件沒寫」與「註解沒寫」互相蓋掉。swagger-detect.sh兩者都要成立才回0,因此「裝了但沒啟用」會回1,技能據實回報不支援並停下。api-doc一處。jsc-sdlc:implement那一端只寫「呼叫這支技能」與退出碼分流,不抄項目清單。抄一份就會有兩套標準,改了一邊忘了另一邊。測試結果
tools/ste100-lint.sh掃本存取庫全綠。plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json)版本一致,皆為 0.0.6。tools/swagger-detect.sh三種技術棧各驗兩種情境,共六筆:dotnet、nodejs、python 的「套件加掛接」回0(support=、stack=、package=、config=四行齊全),「只有套件沒掛接」回1,四行輸出仍印出,符合技能第 2 步據實回報的前提。api-doc的三個面向都是 sub agent 逐檔判讀,需要一個真的有控制器與資料庫的專案才驗得出發現品質,本批只驗到偵測與分流這一層。技能執行結果的準確度尚未有實測證據。前置 Push Request
jsc-sdlc的implement呼叫本存取庫的tools/swagger-detect.sh與jsc-review:api-doc,因此 sdlc 那支釋出 PR 依賴本 PR,本 PR 自己沒有前置。子功能 PR #10 已合併進主幹feat/api-doc-audit/main,本 PR 只是把主幹併回develop,沒有未結清的前置 PR。