Files
cli/tools/config-spec.tsv
jiantw83 fb80559159 feat(wiki): 體檢目錄頁改走專用存取庫,並補齊設定規格表
What:CHECK_CONTENTS 改由 wiki-repo CONTENTS 解析並透過 wiki-contents.sh upsert
寫入,CHECK_{HASH} 仍走 wiki-repo CHECK。目錄頁新增一欄裸 HASH 當比對鍵。主機名
改由程式取短名,不再交給模型自由填。

Why:比對鍵原本是含網址的儲存格,換主機或換存取庫就比對不到,每跑一次體檢就替同一台
機器多附一列,畫面上還看不出來。主機名短名與 FQDN 不一致時,同一台機器會分裂成兩張頁,
而助理巡檢那邊是用程式取值的,兩邊對不起來。

How:設定規格表同一輪補齊三處既有缺漏——補上漏掉的 JSC_WIKI_REPO_MONITOR,體檢本來
看不到它而孤兒掃描還會誤報;刪掉指向不存在頁面的 MAINTAIN 內容頁字樣;MAINTAIN 那一列
改成不需要使用者處理,免得體檢叫人去設一支管不到任何頁的變數。整列保留,刪掉會讓孤兒
掃描開始誤報那個變數。

Who:jsc-cli
2026-09-02 11:03:07 +08:00

8.6 KiB

1# config-spec.tsv — jsc 技能組的設定規格表。體檢(/jsc-cli:doctor)與設定(/jsc-cli:setup)共用這一份。
2#
3# 這張表是「必要或選擇」的唯一判準。掃描原始碼分不出必要與選擇,也分不出哪些是執行期內部
4# 變數,所以判準用手寫規格表,掃描只負責抓出漏登錄的項目(scan-config.sh orphans)。
5# 新增環境變數或設定檔時,同時補一列進來,體檢才看得到它。
6#
7# 欄位:key<TAB>kind<TAB>scope<TAB>required<TAB>default<TAB>verify<TAB>fix<TAB>desc
8# kind env=環境變數 file=檔案或目錄 internal=執行期內部變數(體檢略過,只為登錄而存在)
9# scope global=整台機器 project=當前工作目錄 runtime=hook 執行當下才存在
10# required yes=缺了就有技能跑不動 no=選擇性,缺了走預設或降級
11# default 未設定時的實際值;沒有預設寫 -
12# verify set=有值即可 dir=目錄要在 file=檔案要在 gitea-api=站台連得上
13# gitea-auth=認證過得了 wiki-repo=值可解析成 {owner}/{repo} none=不驗
14# fix auto=工具算得出,可直接寫入 ask=值要人給,問完才寫 manual=只能人手動處理 -=不需修
15# desc 一句繁中說明,直接印給使用者看
16#
17# wiki 存取庫分兩路:目錄頁({TYPE}_CONTENTS)全部住 JSC_WIKI_REPO_CONTENTS 解出的專用存取庫,
18# 內容頁({TYPE}_{HASH})才看自己的型別變數。目錄頁不退回型別變數,型別變數也管不到目錄頁。
19#
20GITEA_HOSTenvglobalyes-gitea-apiaskGitea 站台位址,所有 wiki 與 PR 操作的去處
21GITEA_TOKENenvglobalyes-gitea-authaskGitea API token;未設定時退回 tea CLI 的登入金鑰
22JSC_HOMEenvglobalno~/.jscdirautohook 資料目錄,放工作階段計時、用量統計、版本快取
23JSC_WIKI_REPOenvglobalno-wiki-repoask未逐類設定時的共用 wiki {owner}/{repo}
24JSC_WIKI_REPO_CONTENTSenvglobalnoJSC_WIKI_REPOwiki-repoask全部目錄頁({TYPE}_CONTENTS)所在存取庫;沒有型別變數可退,只退 JSC_WIKI_REPO
25JSC_WIKI_REPO_QUESTIONenvglobalnoJSC_WIKI_REPOwiki-repoaskQUESTION_{HASH} 內容頁所在存取庫
26JSC_WIKI_REPO_PLANenvglobalnoJSC_WIKI_REPOwiki-repoaskPLAN_{HASH} 內容頁所在存取庫
27JSC_WIKI_REPO_ANALYZEenvglobalnoJSC_WIKI_REPOwiki-repoaskANALYZE_{HASH} 內容頁所在存取庫
28JSC_WIKI_REPO_DELIVERenvglobalnoJSC_WIKI_REPOwiki-repoaskDELIVER_{HASH} 內容頁所在存取庫
29JSC_WIKI_REPO_MAINTAINenvglobalnoJSC_WIKI_REPOnone-保留待用,不必設定:MAINTAIN 只有目錄頁 MAINTAIN_CONTENTS,沒有內容頁,目錄頁又已改看 JSC_WIKI_REPO_CONTENTS,這一列目前沒有頁面可管;留著這一列是為了讓孤兒掃描認得這個變數
30JSC_WIKI_REPO_REPOenvglobalnoJSC_WIKI_REPOwiki-repoaskREPO_{HASH} 內容頁所在存取庫
31JSC_WIKI_REPO_LOGenvglobalnoJSC_WIKI_REPOwiki-repoaskLOG_{HASH} 內容頁所在存取庫
32JSC_WIKI_REPO_LEARNenvglobalnoJSC_WIKI_REPOwiki-repoaskLEARN_{HASH} 內容頁所在存取庫
33JSC_WIKI_REPO_ERRORenvglobalnoJSC_WIKI_REPOwiki-repoaskERROR_{HASH} 內容頁所在存取庫
34JSC_WIKI_REPO_CHECKenvglobalnoJSC_WIKI_REPOwiki-repoaskCHECK_{HASH} 內容頁所在存取庫,體檢紀錄寫在這裡
35JSC_WIKI_REPO_REPORTenvglobalnoJSC_WIKI_REPOwiki-repoaskREPORT_{HASH} 內容頁所在存取庫,年月週日報表寫在這裡
36JSC_VERSION_GUARDenvglobalnoonsetask設成 off 可完全略過版本前置檢查,離線工作時用
37JSC_VERSION_TTLenvglobalno600setask版本查詢快取秒數
38JSC_RESTART_GATEenvglobalnoonsetask設成 off 可略過部署後的重啟提示閘門,判讀在 jsc-hooks
39JSC_WIKI_REPO_SKILLSETenvglobalnoJSC_WIKI_REPOwiki-repoaskSKILLSET_{HASH} 內容頁所在的 {owner}/{repo},技能組異動報告寫在這裡
40JSC_WIKI_REPO_TOOLINGenvglobalnoJSC_WIKI_REPOwiki-repoaskTOOLING_{HASH} 內容頁所在的 {owner}/{repo},技能盤點寫在這裡
41JSC_WIKI_REPO_MONITORenvglobalnoJSC_WIKI_REPOwiki-repoaskMONITOR_{HASH} 內容頁所在存取庫,助理巡檢紀錄寫在這裡
42JSC_LANG_GUARDenvglobalnoonsetask設成 off 可關閉繁中編碼與簡體字守門,誤判時用
43JSC_COMMENT_SCOPEenvglobalnoonsetask設成 off 可關閉註解夾帶文件編號的守門,誤判時用
44JSC_CHANGED_FILEinternalruntimeno-none-非 Claude CLI 傳入的變更檔路徑,註解範圍與繁中編碼守門讀它
45JSC_SIMPLIFIED_FILEinternalruntimeno-none-自訂簡體字表路徑,ste100-lint.sh 讀它取代內建字表
46JSC_PR_WATCH_INTERVALenvglobalno60setaskpr-watch.sh 輪詢 PR 狀態的間隔秒數,實作在 jsc-gitea/tools/pr-watch.sh
47JSC_LOCAL_PLUGINSenvglobalno$JSC_HOME/pluginsdirautoantigravity 安裝來源的本地 plugin 目錄
48JSC_PLUGINS_ROOTenvglobalno-dirask技能組工作目錄根位置,jsc-meta 的工具用它找各 domain
49JSC_CLAUDE_SETTINGS_DIRenvglobalno~/.claudediraskclaude 使用者層設定檔目錄,測試 purge 時才需覆寫
50JSC_COPILOT_INSTRUCTIONSenvglobalno~/.config/copilot/copilot-instructions.mdfileaskcopilot 指引檔位置,STE100 規則段落寫在這裡
51JSC_ANTIGRAVITY_RULESenvglobalno~/.antigravity/AGENTS.mdfileaskantigravity 全域規則檔位置
52JSC_KIRO_SKILLSenvglobalno-diraskkiro 技能目錄,接線與部署都會用到
53JSC_GITEA_TOOLSenvglobalno-diraskjsc-gitea/tools 的位置,跨 domain 呼叫 gitea.sh 時用
54$JSC_HOME/model-tags.tsvfileglobalyes-fileautoSDLC 階段閘門讀的能力標籤表,由 /jsc-cli:models 產生
55$JSC_HOME/models.conffileglobalno-fileask各 SDLC 階段的偏好模型鏈,專案 .jsc/models 可覆寫
56$JSC_HOME/html-styles.conffileglobalno-fileask各類頁面的 HTML 匯出版型與樣式,專案 .jsc/html-styles 可覆寫
57$JSC_HOME/update-guide.mdfileglobalno-filemanual這台機器的更新指引,由 jsc-cli/tools/write-guides.sh 產生;缺了就重跑 /jsc-cli:deploy
58$JSC_HOME/remove-guide.mdfileglobalno-filemanual這台機器的移除指引,由 jsc-cli/tools/write-guides.sh 產生;缺了就重跑 /jsc-cli:deploy
59$JSC_HOME/restart-required.dfileglobalno-none-部署收尾寫下的重啟狀態檔目錄,一支 CLI 一份,執行期暫態;該 CLI 那份不存在代表這支沒有待重啟的部署,jsc-hooks 讀它提示重啟
60.jsc/modelsfileprojectno-fileask本專案的 SDLC 偏好模型鏈,覆寫 $JSC_HOME/models.conf
61.jsc/html-stylesfileprojectno-fileask本專案的 HTML 匯出版型與樣式,覆寫 $JSC_HOME/html-styles.conf
62.claude/settings.jsonfileprojectno-filemanualclaude 的專案層設定;jsc hook 由 plugin 的 hooks.json 接線,這裡不該有 jsc 殘留接線
63AGENTS.mdfileprojectno-filemanualcodex 與 antigravity 讀的專案層指引檔
64.envfileprojectno-nonemanual專案層環境變數;覆寫全域設定時,體檢會標出實際生效值
65.envrcfileprojectno-nonemanualdirenv 設定檔;覆寫全域設定時,體檢會標出實際生效值
66JSC_CLIinternalruntimeno-none-接線時帶入的 CLI 代號,hook 用來分辨宿主
67JSC_SKILLinternalruntimeno-none-目前呼叫的技能名,版本前置檢查與用量統計用
68JSC_SESSION_IDinternalruntimeno-none-工作階段代號,計時與 token 統計用
69JSC_TOOL_NAMEinternalruntimeno-none-目前的工具名,PreToolUse hook 用來比對 matcher
70JSC_SCRIPT_DIRinternalruntimeno-none-呼叫端腳本所在目錄,由 lib.sh 算出
71JSC_HOOKS_DIRinternalruntimeno-none-hooks 目錄位置,包裝啟動器用
72JSC_MODELinternalruntimeno-none-目前模型 id,SDLC 閘門用來比對能力標籤
73JSC_GITEA_OWNERinternalruntimeno-none-批次同步存取庫時鎖定的 owner
74JSC_DEPLOY_DRYRUNinternalruntimeno-none-部署試跑旗標,只印指令不執行
75JSC_WP_GATEinternalruntimeno-none-工作包閘門的逃生門,實作在 jsc-sdlc/tools/wp-gate.sh
76JSC_CONFIG_SPECinternalruntimeno-none-改讀別份設定規格表,測試 scan-config.sh 時用
77JSC_SYNC_DRY_RUNinternalruntimeno-none-同步 domain 存取庫的試跑旗標,只印不動檔案
78JSC_MK_DOMAINinternalruntimeno-none-sync-marketplace.sh 傳給 python 的 domain 名
79JSC_MK_URLinternalruntimeno-none-sync-marketplace.sh 傳給 python 的存取庫網址
80JSC_MK_DESCinternalruntimeno-none-sync-marketplace.sh 傳給 python 的 plugin 描述
81JSC_MK_INinternalruntimeno-none-sync-marketplace.sh 讀入的 marketplace 檔路徑
82JSC_MK_OUTinternalruntimeno-none-sync-marketplace.sh 寫出的 marketplace 檔路徑