feat(doctor): 新增執行環境體檢技能
What: 新增 jsc-cli:doctor,一次體檢技能版本、Hook 接線、全域設定與自我設定,只讀不改,結果寫進 wiki CHECK_{HASH}。
Why: 安裝或更新技能組之後,沒有任何工具說得出這台機器還缺什麼。設定散在環境變數、rc 檔與專案目錄,出錯時只能一個一個猜。
How: 版本比對複用 jsc-hooks 的 version-guard.sh report,接線狀態複用新加的 wire-cli.sh status(唯讀),設定則由 tools/scan-config.sh 比對 tools/config-spec.tsv 判定必要或選擇。規格表是必要性的唯一判準,掃描只負責抓出漏登錄的變數。
Who: 體檢與修復流程,搭配 jsc-cli:setup 收尾。
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
# config-spec.tsv — jsc 技能組的設定規格表。體檢(/jsc-cli:doctor)與設定(/jsc-cli:setup)共用這一份。
|
||||
#
|
||||
# 這張表是「必要或選擇」的唯一判準。掃描原始碼分不出必要與選擇,也分不出哪些是執行期內部
|
||||
# 變數,所以判準用手寫規格表,掃描只負責抓出漏登錄的項目(scan-config.sh orphans)。
|
||||
# 新增環境變數或設定檔時,同時補一列進來,體檢才看得到它。
|
||||
#
|
||||
# 欄位:key<TAB>kind<TAB>scope<TAB>required<TAB>default<TAB>verify<TAB>fix<TAB>desc
|
||||
# kind env=環境變數 file=檔案或目錄 internal=執行期內部變數(體檢略過,只為登錄而存在)
|
||||
# scope global=整台機器 project=當前工作目錄 runtime=hook 執行當下才存在
|
||||
# required yes=缺了就有技能跑不動 no=選擇性,缺了走預設或降級
|
||||
# default 未設定時的實際值;沒有預設寫 -
|
||||
# verify set=有值即可 dir=目錄要在 file=檔案要在 gitea-api=站台連得上
|
||||
# gitea-auth=認證過得了 wiki-repo=值可解析成 {owner}/{repo} none=不驗
|
||||
# fix auto=工具算得出,可直接寫入 ask=值要人給,問完才寫 manual=只能人手動處理 -=不需修
|
||||
# desc 一句繁中說明,直接印給使用者看
|
||||
#
|
||||
GITEA_HOST env global yes - gitea-api ask Gitea 站台位址,所有 wiki 與 PR 操作的去處
|
||||
GITEA_TOKEN env global yes - gitea-auth ask Gitea API token;未設定時退回 tea CLI 的登入金鑰
|
||||
JSC_HOME env global no ~/.jsc dir auto hook 資料目錄,放工作階段計時、用量統計、版本快取
|
||||
JSC_WIKI_REPO env global no - wiki-repo ask 未逐類設定時的共用 wiki {owner}/{repo}
|
||||
JSC_WIKI_REPO_QUESTION env global no JSC_WIKI_REPO wiki-repo ask QUESTION_CONTENTS、QUESTION_{HASH} 所在存取庫
|
||||
JSC_WIKI_REPO_PLAN env global no JSC_WIKI_REPO wiki-repo ask PLAN_CONTENTS、PLAN_{HASH} 所在存取庫
|
||||
JSC_WIKI_REPO_ANALYZE env global no JSC_WIKI_REPO wiki-repo ask ANALYZE_CONTENTS、ANALYZE_{HASH} 所在存取庫
|
||||
JSC_WIKI_REPO_DELIVER env global no JSC_WIKI_REPO wiki-repo ask DELIVER_CONTENTS、DELIVER_{HASH} 所在存取庫
|
||||
JSC_WIKI_REPO_MAINTAIN env global no JSC_WIKI_REPO wiki-repo ask MAINTAIN_CONTENTS、MAINTAIN_{HASH} 所在存取庫
|
||||
JSC_WIKI_REPO_REPO env global no JSC_WIKI_REPO wiki-repo ask REPO_CONTENTS、REPO_{HASH} 所在存取庫
|
||||
JSC_WIKI_REPO_LOG env global no JSC_WIKI_REPO wiki-repo ask LOG_CONTENTS、LOG_{HASH} 所在存取庫
|
||||
JSC_WIKI_REPO_LEARN env global no JSC_WIKI_REPO wiki-repo ask LEARN_CONTENTS、LEARN_{HASH} 所在存取庫
|
||||
JSC_WIKI_REPO_ERROR env global no JSC_WIKI_REPO wiki-repo ask ERROR_CONTENTS、ERROR_{HASH} 所在存取庫
|
||||
JSC_WIKI_REPO_CHECK env global no JSC_WIKI_REPO wiki-repo ask CHECK_CONTENTS、CHECK_{HASH} 所在存取庫,體檢紀錄寫在這裡
|
||||
JSC_WIKI_REPO_REPORT env global no JSC_WIKI_REPO wiki-repo ask REPORT_CONTENTS、REPORT_{HASH} 所在存取庫,年月週日報表寫在這裡
|
||||
JSC_VERSION_GUARD env global no on set ask 設成 off 可完全略過版本前置檢查,離線工作時用
|
||||
JSC_VERSION_TTL env global no 600 set ask 版本查詢快取秒數
|
||||
JSC_LOCAL_PLUGINS env global no $JSC_HOME/plugins dir auto antigravity 安裝來源的本地 plugin 目錄
|
||||
JSC_PLUGINS_ROOT env global no - dir ask 技能組工作目錄根位置,jsc-meta 的工具用它找各 domain
|
||||
JSC_CLAUDE_SETTINGS_DIR env global no ~/.claude dir ask claude 使用者層設定檔目錄,測試 purge 時才需覆寫
|
||||
JSC_COPILOT_INSTRUCTIONS env global no ~/.config/copilot/copilot-instructions.md file ask copilot 指引檔位置,STE100 規則段落寫在這裡
|
||||
JSC_ANTIGRAVITY_RULES env global no ~/.antigravity/AGENTS.md file ask antigravity 全域規則檔位置
|
||||
JSC_KIRO_SKILLS env global no - dir ask kiro 技能目錄,接線與部署都會用到
|
||||
JSC_GITEA_TOOLS env global no - dir ask jsc-gitea/tools 的位置,跨 domain 呼叫 gitea.sh 時用
|
||||
$JSC_HOME/model-tags.tsv file global yes - file auto SDLC 階段閘門讀的能力標籤表,由 /jsc-cli:models 產生
|
||||
$JSC_HOME/models.conf file global no - file ask 各 SDLC 階段的偏好模型鏈,專案 .jsc/models 可覆寫
|
||||
$JSC_HOME/html-styles.conf file global no - file ask 各類頁面的 HTML 匯出版型與樣式,專案 .jsc/html-styles 可覆寫
|
||||
.jsc/models file project no - file ask 本專案的 SDLC 偏好模型鏈,覆寫 $JSC_HOME/models.conf
|
||||
.jsc/html-styles file project no - file ask 本專案的 HTML 匯出版型與樣式,覆寫 $JSC_HOME/html-styles.conf
|
||||
.claude/settings.json file project no - file manual claude 的專案層設定;jsc hook 由 plugin 的 hooks.json 接線,這裡不該有 jsc 殘留接線
|
||||
AGENTS.md file project no - file manual codex 與 antigravity 讀的專案層指引檔
|
||||
.env file project no - none manual 專案層環境變數;覆寫全域設定時,體檢會標出實際生效值
|
||||
.envrc file project no - none manual direnv 設定檔;覆寫全域設定時,體檢會標出實際生效值
|
||||
JSC_CLI internal runtime no - none - 接線時帶入的 CLI 代號,hook 用來分辨宿主
|
||||
JSC_SKILL internal runtime no - none - 目前呼叫的技能名,版本前置檢查與用量統計用
|
||||
JSC_SESSION_ID internal runtime no - none - 工作階段代號,計時與 token 統計用
|
||||
JSC_TOOL_NAME internal runtime no - none - 目前的工具名,PreToolUse hook 用來比對 matcher
|
||||
JSC_SCRIPT_DIR internal runtime no - none - 呼叫端腳本所在目錄,由 lib.sh 算出
|
||||
JSC_HOOKS_DIR internal runtime no - none - hooks 目錄位置,包裝啟動器用
|
||||
JSC_MODEL internal runtime no - none - 目前模型 id,SDLC 閘門用來比對能力標籤
|
||||
JSC_GITEA_OWNER internal runtime no - none - 批次同步存取庫時鎖定的 owner
|
||||
JSC_DEPLOY_DRYRUN internal runtime no - none - 部署試跑旗標,只印指令不執行
|
||||
JSC_WP_GATE internal runtime no - none - 工作包閘門的逃生門,實作在 jsc-sdlc/tools/wp-gate.sh
|
||||
JSC_CONFIG_SPEC internal runtime no - none - 改讀別份設定規格表,測試 scan-config.sh 時用
|
||||
JSC_SYNC_DRY_RUN internal runtime no - none - 同步 domain 存取庫的試跑旗標,只印不動檔案
|
||||
JSC_MK_DOMAIN internal runtime no - none - sync-marketplace.sh 傳給 python 的 domain 名
|
||||
JSC_MK_URL internal runtime no - none - sync-marketplace.sh 傳給 python 的存取庫網址
|
||||
JSC_MK_DESC internal runtime no - none - sync-marketplace.sh 傳給 python 的 plugin 描述
|
||||
JSC_MK_IN internal runtime no - none - sync-marketplace.sh 讀入的 marketplace 檔路徑
|
||||
JSC_MK_OUT internal runtime no - none - sync-marketplace.sh 寫出的 marketplace 檔路徑
|
||||
|
Reference in New Issue
Block a user