連結一律寫成 [文字](絕對網址),並在寫入前驗證連得到 #50

Merged
admin merged 2 commits from feat/link-verification/main into develop 2026-09-02 06:46:13 +00:00
Member

摘要

  • 需求描述:連結加兩條限制。其一,文字加連結一律寫成 [{文字}]({連結}),取消 [[...]] 同 wiki 寫法。其二,連結先驗證連得到,才可以寫進文件。
  • 計畫名稱:無
  • 計畫頁:無
  • 分析頁:無

變更內容

檔案 為什麼改
tools/link-check.sh 新增。兩條規則的驗證都靠它,寫成腳本才不會每支技能各自實作一套
references/wiki-links.md 規則正本。整份重寫成單一寫法,並補上取消雙括號的三個理由
skills/wiki/SKILL.md 操作表、規則段、輔助腳本結束碼表都要納入新規則與新腳本
skills/html-export/SKILL.md、skills/wiki-to-issue/SKILL.md 兩支都有依賴舊寫法的敘述
tools/gitea.sh wiki-url 的註解還在教人分兩種寫法
README.md、references/behaviors.md 隨上述變更對齊

設計重點

  • 只留一種連結寫法。兩種寫法並存時,每寫一條連結都得判斷兩端各自解到哪一個存取庫;統一成絕對網址,這個判斷整個消失。
  • 驗證走 API,不看網頁狀態碼。私有存取庫的網頁網址對未登入請求一律回 404,拿狀態碼判會把好連結判成壞的。
  • link-check.sh 的結束碼 7(認證失敗)與 1(有死連結)分開。金鑰失效時 Gitea 對私有存取庫的回應與「頁不存在」難以分辨,混用會讓一次金鑰過期把整批還在的頁判死,接著被當成壞連結刪掉或改寫。
  • 文件裡為了說明「不准這樣寫」而出現的雙括號字面,包在行內程式碼裡,check-link-format.sh 會先剝掉再判定,不會誤判。

測試結果

  • link-check.sh 實測七種情境:存在的頁回 OK 與 0、不存在回 DEAD 與 1、私有庫的頁走 API 判 OK(同一個網址在瀏覽器未登入是 404,這是本次規則的核心案例)、stdin 混合兩筆回 1、不給參數回 2、GITEA_HOST 未設定回 3、假金鑰回 SKIP 與 7。
  • 連線逾時補上 --connect-timeout 5:主機不通時由最壞 40 秒降到 10 秒,實測確認。
  • sh -n、check-wiki-rules.sh、check-link-format.sh、check-behaviors.sh、lint-scripts.sh、ste100-lint.sh 全部結束碼 0。

前置 Push Request

  • 無
## 摘要 - 需求描述:連結加兩條限制。其一,文字加連結一律寫成 `[{文字}]({連結})`,取消 `[[...]]` 同 wiki 寫法。其二,連結先驗證連得到,才可以寫進文件。 - 計畫名稱:無 - 計畫頁:無 - 分析頁:無 ## 變更內容 | 檔案 | 為什麼改 | | --- | --- | | `tools/link-check.sh` | 新增。兩條規則的驗證都靠它,寫成腳本才不會每支技能各自實作一套 | | `references/wiki-links.md` | 規則正本。整份重寫成單一寫法,並補上取消雙括號的三個理由 | | `skills/wiki/SKILL.md` | 操作表、規則段、輔助腳本結束碼表都要納入新規則與新腳本 | | `skills/html-export/SKILL.md`、`skills/wiki-to-issue/SKILL.md` | 兩支都有依賴舊寫法的敘述 | | `tools/gitea.sh` | `wiki-url` 的註解還在教人分兩種寫法 | | `README.md`、`references/behaviors.md` | 隨上述變更對齊 | ## 設計重點 - 只留一種連結寫法。兩種寫法並存時,每寫一條連結都得判斷兩端各自解到哪一個存取庫;統一成絕對網址,這個判斷整個消失。 - 驗證走 API,不看網頁狀態碼。私有存取庫的網頁網址對未登入請求一律回 404,拿狀態碼判會把好連結判成壞的。 - `link-check.sh` 的結束碼 7(認證失敗)與 1(有死連結)分開。金鑰失效時 Gitea 對私有存取庫的回應與「頁不存在」難以分辨,混用會讓一次金鑰過期把整批還在的頁判死,接著被當成壞連結刪掉或改寫。 - 文件裡為了說明「不准這樣寫」而出現的雙括號字面,包在行內程式碼裡,`check-link-format.sh` 會先剝掉再判定,不會誤判。 ## 測試結果 - `link-check.sh` 實測七種情境:存在的頁回 OK 與 0、不存在回 DEAD 與 1、私有庫的頁走 API 判 OK(同一個網址在瀏覽器未登入是 404,這是本次規則的核心案例)、stdin 混合兩筆回 1、不給參數回 2、`GITEA_HOST` 未設定回 3、假金鑰回 SKIP 與 7。 - 連線逾時補上 `--connect-timeout 5`:主機不通時由最壞 40 秒降到 10 秒,實測確認。 - `sh -n`、`check-wiki-rules.sh`、`check-link-format.sh`、`check-behaviors.sh`、`lint-scripts.sh`、`ste100-lint.sh` 全部結束碼 0。 ## 前置 Push Request - 無
jiantw83 added 2 commits 2026-09-02 06:30:11 +00:00
取消 [[頁名]] 與 [[顯示文字|頁名]] 兩種同 wiki 寫法,不再分「同存取庫」與
「跨存取庫」兩條規則。那種寫法只在自己那個 wiki 內解析,寫錯不報錯,畫面上
看起來像普通文字或死連結,巡不到也修不了。

連結寫進頁面前先過 jsc-gitea 的 link-check.sh,結束碼 0 才寫。驗證一律走 API,
不看網頁狀態碼:私有存取庫的網頁網址對未登入請求一律回 404,拿狀態碼判會把
好連結判成壞的。認證失敗回 7,與死連結的 1 分開,免得金鑰一過期就把還在的頁
整批判死。
admin merged commit e045cc804f into develop 2026-09-02 06:46:13 +00:00
admin deleted branch feat/link-verification/main 2026-09-02 06:46:13 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: plugins/gitea#50