Merge pull request 'feat: 新增 jsc-wiki 外掛' (#32) from feat/jsc-wiki into main

Reviewed-on: https://gitea.jsc.idv.tw/jiantw83/jsc-marketplace/pulls/32
This commit was merged in pull request #32.
This commit is contained in:
2026-10-14 04:53:50 +00:00
14 changed files with 272 additions and 0 deletions
+5
View File
@@ -29,6 +29,11 @@
"name": "jsc-matt", "name": "jsc-matt",
"source": "./plugins/jsc-matt", "source": "./plugins/jsc-matt",
"description": "Matt Pocock 的工程技能整套(grilling、spec/ticket、TDD、code review、領域建模等),指令為 /jsc-matt:*(改編自 mattpocock/skills,MIT)" "description": "Matt Pocock 的工程技能整套(grilling、spec/ticket、TDD、code review、領域建模等),指令為 /jsc-matt:*(改編自 mattpocock/skills,MIT)"
},
{
"name": "jsc-wiki",
"source": "./plugins/jsc-wiki",
"description": "讀取本 repo wiki 的「JSC 知識庫」(一本書、八章),依領域提供 /jsc-wiki:system、network、virt、container、database、dev、ai、apps 指令"
} }
] ]
} }
+7
View File
@@ -26,6 +26,10 @@ JSC 自用 Claude Code mods 的 marketplace。每個插件皆可單獨安裝、
Matt Pocock 的工程技能整套(grilling、spec/ticket、TDD、code review、領域建模等),改編自 mattpocock/skills。 Matt Pocock 的工程技能整套(grilling、spec/ticket、TDD、code review、領域建模等),改編自 mattpocock/skills。
### [jsc-wiki](plugins/jsc-wiki) `0.0.1`
讀取本 repo 的 wiki「JSC 知識庫」(一本書、八章),依領域提供 `/jsc-wiki:system`、`:network`、`:virt`、`:container`、`:database`、`:dev`、`:ai`、`:apps` 等指令。
各插件的指令與可複製的程式碼片段請見其資料夾內的 README。 各插件的指令與可複製的程式碼片段請見其資料夾內的 README。
## 安裝 ## 安裝
@@ -39,6 +43,7 @@ claude plugin install jsc-companion@jsc-marketplace
claude plugin install jsc-herdr@jsc-marketplace claude plugin install jsc-herdr@jsc-marketplace
claude plugin install jsc-claude@jsc-marketplace claude plugin install jsc-claude@jsc-marketplace
claude plugin install jsc-matt@jsc-marketplace claude plugin install jsc-matt@jsc-marketplace
claude plugin install jsc-wiki@jsc-marketplace
``` ```
## 更新 ## 更新
@@ -50,6 +55,7 @@ claude plugin update jsc-companion@jsc-marketplace
claude plugin update jsc-herdr@jsc-marketplace claude plugin update jsc-herdr@jsc-marketplace
claude plugin update jsc-claude@jsc-marketplace claude plugin update jsc-claude@jsc-marketplace
claude plugin update jsc-matt@jsc-marketplace claude plugin update jsc-matt@jsc-marketplace
claude plugin update jsc-wiki@jsc-marketplace
``` ```
更新後需重新啟動 Claude Code 才會生效。 更新後需重新啟動 Claude Code 才會生效。
@@ -62,6 +68,7 @@ claude plugin uninstall jsc-companion@jsc-marketplace
claude plugin uninstall jsc-herdr@jsc-marketplace claude plugin uninstall jsc-herdr@jsc-marketplace
claude plugin uninstall jsc-claude@jsc-marketplace claude plugin uninstall jsc-claude@jsc-marketplace
claude plugin uninstall jsc-matt@jsc-marketplace claude plugin uninstall jsc-matt@jsc-marketplace
claude plugin uninstall jsc-wiki@jsc-marketplace
claude plugin marketplace remove jsc-marketplace claude plugin marketplace remove jsc-marketplace
``` ```
@@ -0,0 +1,11 @@
{
"name": "jsc-wiki",
"version": "0.0.1",
"description": "讀取 JSC 知識庫 wiki(一本書、八章),依領域提供指令:/jsc-wiki:wiki、:system、:network、:virt、:container、:database、:dev、:ai、:apps",
"license": "MIT",
"skills": "./skills",
"author": {
"name": "JSC"
},
"keywords": ["wiki", "knowledge", "linux", "devops", "homelab"]
}
+36
View File
@@ -0,0 +1,36 @@
# jsc-wiki
讀取 [JSC 知識庫](https://gitea.jsc.idv.tw/jiantw83/jsc-marketplace/wiki)(本 repo 的 wiki,一本書、八章),依領域提供指令。內容唯讀,第一次使用會 clone 到 `~/.cache/jsc-wiki`,之後每次先更新,離線時使用快取。
## 指令
### `/jsc-wiki:wiki [關鍵字]`
顯示目錄;給關鍵字則跨章搜尋並讀取最相關的頁面。
```text
/jsc-wiki:wiki traefik
```
### 依領域
| 指令 | 章 | 內容 |
| --- | --- | --- |
| `/jsc-wiki:system` | 1 系統維護 | 時區、磁碟延展、憑證、busybox、Kernel Panic |
| `/jsc-wiki:network` | 2 網路與儲存 | netplan、53 埠、SMB、TGT、OpenSSH、OpenWrt、DSM |
| `/jsc-wiki:virt` | 3 虛擬化 | Proxmox VE、直通、Hyper-V、WSL |
| `/jsc-wiki:container` | 4 容器與編排 | Docker、K3s、k3d、Traefik |
| `/jsc-wiki:database` | 5 資料庫與搜尋 | PostgreSQL、SQL Server、Redis、Elasticsearch |
| `/jsc-wiki:dev` | 6 開發與持續整合 | Gitea、Runner、GitLab、ASP.NET、Django、Coder |
| `/jsc-wiki:ai` | 7 AI 工具 | ccstatusline、CLIProxyAPI、OpenClaw、OpenCode、PicoClaw |
| `/jsc-wiki:apps` | 8 應用服務 | Emby、MeTube、Vaultwarden、ezBookkeeping |
不給主題時只列出該章篇目;給主題則讀取對應頁面回答。
```text
/jsc-wiki:database 怎麼安裝 PostgreSQL 並建立使用者
```
## 設定
環境變數可選:`JSC_WIKI_URL`(wiki git 位址)、`JSC_WIKI_CACHE`(快取目錄)。
+35
View File
@@ -0,0 +1,35 @@
#!/usr/bin/env bash
# 讀取 JSC 知識庫 wiki(唯讀)。第一次 clone 到快取,之後每次先 pull;連不上就用現有快取。
# 用法:wiki.sh toc | chapter <N> | page <編號或關鍵字> | search <關鍵字>
set -u
REPO="${JSC_WIKI_URL:-https://gitea.jsc.idv.tw/jiantw83/jsc-marketplace.wiki.git}"
DIR="${JSC_WIKI_CACHE:-${XDG_CACHE_HOME:-$HOME/.cache}/jsc-wiki}"
sync() {
if [ -d "$DIR/.git" ]; then
timeout 20 git -C "$DIR" pull -q --ff-only 2>/dev/null || echo "(無法更新 wiki,使用本機快取)" >&2
else
mkdir -p "$(dirname "$DIR")"
timeout 60 git clone -q --depth 1 "$REPO" "$DIR" 2>/dev/null || { echo "無法取得 wiki:$REPO" >&2; exit 1; }
fi
}
cmd="${1:-toc}"; shift || true
sync
cd "$DIR" || exit 1
case "$cmd" in
toc) cat Home.md ;;
chapter)
n="${1:?請給章號 1-8}"
cat "第${n}章-"*.md | sed -E "s/\]\([^)]*\)/]/" ;;
page)
q="${1:?請給頁面編號(例 2.3)或標題關鍵字}"
f=$(ls | grep -E "^${q//./\\.}-" | head -1)
[ -n "$f" ] || f=$(ls | grep -i -- "$q" | grep -v '^第' | head -1)
[ -n "$f" ] || { echo "找不到頁面:$q" >&2; exit 1; }
echo "## 頁面:${f%.md}"; echo; cat "$f" ;;
search)
q="${1:?請給關鍵字}"
grep -rniI --include='*.md' -- "$q" . | grep -v '^./Home.md' | cut -c3-200 | head -40 ;;
*) echo "未知指令:$cmd" >&2; exit 2 ;;
esac
+20
View File
@@ -0,0 +1,20 @@
---
name: ai
description: "查詢 AI 工具設定(ccstatusline、CLIProxyAPI、OpenClaw、OpenCode、PicoClaw、提示詞)。使用者執行 /jsc-wiki:ai 或詢問與「AI 工具」相關的操作步驟時使用。"
---
# JSC 知識庫・第7章 AI 工具
目前章節內容(來自 wiki,唯讀):
!`${CLAUDE_SKILL_DIR}/../../scripts/wiki.sh chapter 7`
## 流程
0. 上方若顯示錯誤或沒有內容,先自行執行 `${CLAUDE_SKILL_DIR}/../../scripts/wiki.sh chapter N`(N 為本章號)。
1. 使用者沒給主題(`$ARGUMENTS` 為空):只列出上面的篇目並詢問要看哪一篇,不要全文貼出。
2. 有給主題:用 `${CLAUDE_SKILL_DIR}/../../scripts/wiki.sh page <編號>`(例如 `7.1`)讀取最相關的一到兩篇,依內容回答;找不到再用 `wiki.sh search <關鍵字>` 跨章搜尋。
3. 只依 wiki 內容回答並註明頁面編號;wiki 沒寫的就說沒有,不要憑記憶補指令。
4. 內容中 `<密碼>`、`<Runner token>` 等是占位符,不要猜測實際值;執行會改動系統的指令前先跟使用者確認。
回覆使用繁體中文(程式碼、指令除外)。
+20
View File
@@ -0,0 +1,20 @@
---
name: apps
description: "查詢自架應用(Emby、MeTube、Vaultwarden、ezBookkeeping)。使用者執行 /jsc-wiki:apps 或詢問與「應用服務」相關的操作步驟時使用。"
---
# JSC 知識庫・第8章 應用服務
目前章節內容(來自 wiki,唯讀):
!`${CLAUDE_SKILL_DIR}/../../scripts/wiki.sh chapter 8`
## 流程
0. 上方若顯示錯誤或沒有內容,先自行執行 `${CLAUDE_SKILL_DIR}/../../scripts/wiki.sh chapter N`(N 為本章號)。
1. 使用者沒給主題(`$ARGUMENTS` 為空):只列出上面的篇目並詢問要看哪一篇,不要全文貼出。
2. 有給主題:用 `${CLAUDE_SKILL_DIR}/../../scripts/wiki.sh page <編號>`(例如 `8.1`)讀取最相關的一到兩篇,依內容回答;找不到再用 `wiki.sh search <關鍵字>` 跨章搜尋。
3. 只依 wiki 內容回答並註明頁面編號;wiki 沒寫的就說沒有,不要憑記憶補指令。
4. 內容中 `<密碼>`、`<Runner token>` 等是占位符,不要猜測實際值;執行會改動系統的指令前先跟使用者確認。
回覆使用繁體中文(程式碼、指令除外)。
@@ -0,0 +1,20 @@
---
name: container
description: "查詢容器與編排(Docker、K3s、k3d、Traefik)。使用者執行 /jsc-wiki:container 或詢問與「容器與編排」相關的操作步驟時使用。"
---
# JSC 知識庫・第4章 容器與編排
目前章節內容(來自 wiki,唯讀):
!`${CLAUDE_SKILL_DIR}/../../scripts/wiki.sh chapter 4`
## 流程
0. 上方若顯示錯誤或沒有內容,先自行執行 `${CLAUDE_SKILL_DIR}/../../scripts/wiki.sh chapter N`(N 為本章號)。
1. 使用者沒給主題(`$ARGUMENTS` 為空):只列出上面的篇目並詢問要看哪一篇,不要全文貼出。
2. 有給主題:用 `${CLAUDE_SKILL_DIR}/../../scripts/wiki.sh page <編號>`(例如 `4.1`)讀取最相關的一到兩篇,依內容回答;找不到再用 `wiki.sh search <關鍵字>` 跨章搜尋。
3. 只依 wiki 內容回答並註明頁面編號;wiki 沒寫的就說沒有,不要憑記憶補指令。
4. 內容中 `<密碼>`、`<Runner token>` 等是占位符,不要猜測實際值;執行會改動系統的指令前先跟使用者確認。
回覆使用繁體中文(程式碼、指令除外)。
+20
View File
@@ -0,0 +1,20 @@
---
name: database
description: "查詢資料庫與搜尋服務(PostgreSQL、SQL Server、Redis、Elasticsearch)。使用者執行 /jsc-wiki:database 或詢問與「資料庫與搜尋」相關的操作步驟時使用。"
---
# JSC 知識庫・第5章 資料庫與搜尋
目前章節內容(來自 wiki,唯讀):
!`${CLAUDE_SKILL_DIR}/../../scripts/wiki.sh chapter 5`
## 流程
0. 上方若顯示錯誤或沒有內容,先自行執行 `${CLAUDE_SKILL_DIR}/../../scripts/wiki.sh chapter N`(N 為本章號)。
1. 使用者沒給主題(`$ARGUMENTS` 為空):只列出上面的篇目並詢問要看哪一篇,不要全文貼出。
2. 有給主題:用 `${CLAUDE_SKILL_DIR}/../../scripts/wiki.sh page <編號>`(例如 `5.1`)讀取最相關的一到兩篇,依內容回答;找不到再用 `wiki.sh search <關鍵字>` 跨章搜尋。
3. 只依 wiki 內容回答並註明頁面編號;wiki 沒寫的就說沒有,不要憑記憶補指令。
4. 內容中 `<密碼>`、`<Runner token>` 等是占位符,不要猜測實際值;執行會改動系統的指令前先跟使用者確認。
回覆使用繁體中文(程式碼、指令除外)。
+20
View File
@@ -0,0 +1,20 @@
---
name: dev
description: "查詢開發與 CI 相關(Gitea、Runner、GitLab、ASP.NET、Django、Node、C# SDK、Coder、VS Code)。使用者執行 /jsc-wiki:dev 或詢問與「開發與持續整合」相關的操作步驟時使用。"
---
# JSC 知識庫・第6章 開發與持續整合
目前章節內容(來自 wiki,唯讀):
!`${CLAUDE_SKILL_DIR}/../../scripts/wiki.sh chapter 6`
## 流程
0. 上方若顯示錯誤或沒有內容,先自行執行 `${CLAUDE_SKILL_DIR}/../../scripts/wiki.sh chapter N`(N 為本章號)。
1. 使用者沒給主題(`$ARGUMENTS` 為空):只列出上面的篇目並詢問要看哪一篇,不要全文貼出。
2. 有給主題:用 `${CLAUDE_SKILL_DIR}/../../scripts/wiki.sh page <編號>`(例如 `6.1`)讀取最相關的一到兩篇,依內容回答;找不到再用 `wiki.sh search <關鍵字>` 跨章搜尋。
3. 只依 wiki 內容回答並註明頁面編號;wiki 沒寫的就說沒有,不要憑記憶補指令。
4. 內容中 `<密碼>`、`<Runner token>` 等是占位符,不要猜測實際值;執行會改動系統的指令前先跟使用者確認。
回覆使用繁體中文(程式碼、指令除外)。
+20
View File
@@ -0,0 +1,20 @@
---
name: network
description: "查詢網路與儲存設定(netplan、連接埠、SMB、TGT、OpenSSH、OpenWrt、DSM)。使用者執行 /jsc-wiki:network 或詢問與「網路與儲存」相關的操作步驟時使用。"
---
# JSC 知識庫・第2章 網路與儲存
目前章節內容(來自 wiki,唯讀):
!`${CLAUDE_SKILL_DIR}/../../scripts/wiki.sh chapter 2`
## 流程
0. 上方若顯示錯誤或沒有內容,先自行執行 `${CLAUDE_SKILL_DIR}/../../scripts/wiki.sh chapter N`(N 為本章號)。
1. 使用者沒給主題(`$ARGUMENTS` 為空):只列出上面的篇目並詢問要看哪一篇,不要全文貼出。
2. 有給主題:用 `${CLAUDE_SKILL_DIR}/../../scripts/wiki.sh page <編號>`(例如 `2.1`)讀取最相關的一到兩篇,依內容回答;找不到再用 `wiki.sh search <關鍵字>` 跨章搜尋。
3. 只依 wiki 內容回答並註明頁面編號;wiki 沒寫的就說沒有,不要憑記憶補指令。
4. 內容中 `<密碼>`、`<Runner token>` 等是占位符,不要猜測實際值;執行會改動系統的指令前先跟使用者確認。
回覆使用繁體中文(程式碼、指令除外)。
+20
View File
@@ -0,0 +1,20 @@
---
name: system
description: "查詢作業系統層級的排錯與設定(時區、磁碟延展、憑證、busybox、Kernel Panic)。使用者執行 /jsc-wiki:system 或詢問與「系統維護」相關的操作步驟時使用。"
---
# JSC 知識庫・第1章 系統維護
目前章節內容(來自 wiki,唯讀):
!`${CLAUDE_SKILL_DIR}/../../scripts/wiki.sh chapter 1`
## 流程
0. 上方若顯示錯誤或沒有內容,先自行執行 `${CLAUDE_SKILL_DIR}/../../scripts/wiki.sh chapter N`(N 為本章號)。
1. 使用者沒給主題(`$ARGUMENTS` 為空):只列出上面的篇目並詢問要看哪一篇,不要全文貼出。
2. 有給主題:用 `${CLAUDE_SKILL_DIR}/../../scripts/wiki.sh page <編號>`(例如 `1.1`)讀取最相關的一到兩篇,依內容回答;找不到再用 `wiki.sh search <關鍵字>` 跨章搜尋。
3. 只依 wiki 內容回答並註明頁面編號;wiki 沒寫的就說沒有,不要憑記憶補指令。
4. 內容中 `<密碼>`、`<Runner token>` 等是占位符,不要猜測實際值;執行會改動系統的指令前先跟使用者確認。
回覆使用繁體中文(程式碼、指令除外)。
+20
View File
@@ -0,0 +1,20 @@
---
name: virt
description: "查詢虛擬化設定(Proxmox VE、硬碟與 PCIe 直通、Hyper-V、WSL)。使用者執行 /jsc-wiki:virt 或詢問與「虛擬化」相關的操作步驟時使用。"
---
# JSC 知識庫・第3章 虛擬化
目前章節內容(來自 wiki,唯讀):
!`${CLAUDE_SKILL_DIR}/../../scripts/wiki.sh chapter 3`
## 流程
0. 上方若顯示錯誤或沒有內容,先自行執行 `${CLAUDE_SKILL_DIR}/../../scripts/wiki.sh chapter N`(N 為本章號)。
1. 使用者沒給主題(`$ARGUMENTS` 為空):只列出上面的篇目並詢問要看哪一篇,不要全文貼出。
2. 有給主題:用 `${CLAUDE_SKILL_DIR}/../../scripts/wiki.sh page <編號>`(例如 `3.1`)讀取最相關的一到兩篇,依內容回答;找不到再用 `wiki.sh search <關鍵字>` 跨章搜尋。
3. 只依 wiki 內容回答並註明頁面編號;wiki 沒寫的就說沒有,不要憑記憶補指令。
4. 內容中 `<密碼>`、`<Runner token>` 等是占位符,不要猜測實際值;執行會改動系統的指令前先跟使用者確認。
回覆使用繁體中文(程式碼、指令除外)。
+18
View File
@@ -0,0 +1,18 @@
---
name: wiki
description: "顯示 JSC 知識庫(wiki)的目錄,或跨章節搜尋關鍵字。使用者執行 /jsc-wiki:wiki,或不確定該看哪個領域時使用。"
---
# JSC 知識庫
目錄(來自 wiki,唯讀):
!`${CLAUDE_SKILL_DIR}/../../scripts/wiki.sh toc`
## 流程
1. `$ARGUMENTS` 為空:顯示八章目錄,並說明各領域指令:`/jsc-wiki:system`、`:network`、`:virt`、`:container`、`:database`、`:dev`、`:ai`、`:apps`。
2. 有給關鍵字:執行 `${CLAUDE_SKILL_DIR}/../../scripts/wiki.sh search <關鍵字>` 找出頁面,再用 `wiki.sh page <編號>` 讀取最相關的一到兩篇並回答,註明頁面編號。
3. 只依 wiki 內容回答,沒寫的就說沒有;`<密碼>` 等占位符不要猜測;改動系統的指令先跟使用者確認。
回覆使用繁體中文(程式碼、指令除外)。