jiantw83
b59782d093
chore(plugin 版本): 三份 manifest 升版至 0.2.3
2026-09-02 14:27:18 +08:00
jiantw83
9ec18b8a94
feat(link): 連結一律寫成 [文字](絕對網址),寫入前先驗證連得到
...
取消 [[頁名]] 與 [[顯示文字|頁名]] 兩種同 wiki 寫法,不再分「同存取庫」與
「跨存取庫」兩條規則。那種寫法只在自己那個 wiki 內解析,寫錯不報錯,畫面上
看起來像普通文字或死連結,巡不到也修不了。
連結寫進頁面前先過 jsc-gitea 的 link-check.sh,結束碼 0 才寫。驗證一律走 API,
不看網頁狀態碼:私有存取庫的網頁網址對未登入請求一律回 404,拿狀態碼判會把
好連結判成壞的。認證失敗回 7,與死連結的 1 分開,免得金鑰一過期就把還在的頁
整批判死。
2026-09-02 14:27:18 +08:00
jiantw83
b53cfeaf34
fix(migrate-wiki): 正推比對涵蓋兩代頁名規則
...
What:候選鍵的舊 HASH 改成兩種都算——第一代只取 SHA-1 前 8 碼大寫,第二代在其上
把首碼落在 0-9ABC 的改寫成 H 加前 7 碼。兩種都進對照表,任一種配得上就算配對成功。
Why:原本只算第二代,所以第一代那些首碼落在 0-9ABC 的頁一律配不到,被誤判成孤兒
留在原地。實測同一個鍵在第一代是 1C516D85、第二代是 H1C516D8,兩張頁至今並存,
只算第二代就會漏掉第一代那一張。
How:實地重跑對照表,可搬頁數從 35 增為 48,孤兒從 14 減為 2。剩下兩頁一頁是更早的
{型別}_{日期}_{HASH} 命名、頁名不符任何已知樣式,一頁反推不到候選鍵,兩頁都照原則
只列不猜。首碼落在 D、E、F 的鍵兩代同值,只印一行,不會重複。
Who:jsc-gitea
2026-09-02 12:16:44 +08:00
jiantw83
c40b561589
feat(wiki): 目錄頁專用存取庫、HASH 去除截短與 H 前綴
...
What:CONTENTS 成為第 15 種頁面類型,解析鏈為 JSC_WIKI_REPO_CONTENTS 到
JSC_WIKI_REPO,刻意不退回型別變數。hash-id 拿掉 8 碼截短與 H 前綴改寫,只留大寫
轉換,輸出完整 40 碼;空輸入改成用法錯誤。新增 page-name.sh、wiki-contents.sh、
migrate-wiki.sh 與 wiki-delete 子命令。
Why:H 前綴會命中 16 個首碼裡的 13 個,還丟掉第 8 碼,把有效熵壓到 28 位元,而且
全庫查不到任何理由紀錄。目錄頁的整列 upsert 原本 14 處只有一處寫成程式,同一段判斷
做 14 次,錯一次就少一筆紀錄。
How:頁名樣式仍收 H 加 7 碼的舊頁,遷移期間讀得到舊頁。wiki-contents.sh 建新頁時
剝掉範本的示範列,否則每個目錄頁第一次建立都會留一列佔位死連結。migrate-wiki.sh
預設只印對照表,--apply 先寫新頁、確認寫成、才刪舊頁;孤兒頁只列不猜,因為 SHA-1
不可逆,新頁名只能靠候選鍵正推。
Who:jsc-gitea
2026-09-02 11:02:07 +08:00
jiantw83
769cdcfc35
chore(marketplace): 把 jsc-assist 登錄進統一 marketplace
...
What:
- 兩份 marketplace 檔各加一個 jsc-assist 條目,來源網址指向 assist 存放庫。
Why:
- 準則要求每個 domain 存放庫都帶同一份 marketplace 檔,任何一個存放庫都能當註冊入口。副本之間只要有一份沒跟上,稽核就會報出不一致。
- 正本少了這個條目,各 CLI 的安裝指令就找不到 jsc-assist,這個 domain 等於發佈不出去。
How:
- 條目由 meta 的 sync-marketplace.sh 產生,同時寫進正本與每個 domain 存放庫的副本,寫完逐檔比對位元組。這一支存放庫的兩份副本就是那一輪的產物。
- 條目依名稱排序,縮排與非 ASCII 描述的處理都交給同一支腳本,不手改 JSON。
- 這一批是從最新的預設分支重新產生的。前一輪的分支基底早於監控頁型別那批改動,直接合併會把那些改動回退掉,所以整批重做而不是解衝突。
Who:
助理 domain 落地的註冊步驟在這個存放庫的同步。
2026-09-01 12:50:04 +08:00
jiantw83
8467b89a09
feat(wiki): 頁型別新增 MONITOR
...
What:
- resolve_wiki_repo 的型別白名單與檔頭註解加上 MONITOR,check-wiki-rules.sh 的 TYPES 一併加入。
- README 的兩處型別列舉加上 MONITOR,環境變數表補一列 JSC_WIKI_REPO_MONITOR。
- wiki 技能的 allowed types 與行為清單的呼叫端補上這個型別與它的擁有者。
- 三份 manifest 的版本一起提升。
Why:
- 技能助理要把巡檢結果寫進 wiki,落點就是監控頁。型別不在白名單裡,wiki-repo 會直接回「unknown wiki type」而拒絕解析,助理連寫都寫不出去。
- 型別串散在五個檔案,只改一處會讓解析通過但檢核工具漏掉,或反過來。所以一次改齊。
How:
- MONITOR 放在型別串尾端,接在 TOOLING 之後。既有順序是依用途分群,不是字母序,所以不重排。
- 環境變數的規則完全沿用既有型別:先讀 JSC_WIKI_REPO_MONITOR,再退回 JSC_WIKI_REPO,不得跨型別代用。這一條由 resolve_wiki_repo 統一處理,新型別自動繼承,不必另寫分支。
- 雜湊來源的規則不寫在這個存放庫。README 已載明雜湊規則的唯一來源是技能準則的命名總表,這裡不複述。
- wiki 技能的 description 原本逐一列舉呼叫端,已經接近長度上限。這次改成括號標注頁型的濃縮寫法,加了一個呼叫端之後整行反而變短,句數維持在上限內。
Who:
技能助理落地帶出來的頁型別需求,四個存放庫同一批改。
2026-09-01 12:10:40 +08:00
jiantw83
9a57a89f46
Merge pull request '收攏 html-export 與 wiki-to-issue 的 frontmatter 語法修正' ( #38 ) from feat/cli-hook-rewire/main into develop
2026-09-01 00:58:41 +00:00
jiantw83
9cec36d92b
Merge pull request '修正 html-export 與 wiki-to-issue 技能 frontmatter 的 YAML 純量語法' ( #37 ) from feat/cli-hook-rewire/quote-description into feat/cli-hook-rewire/main
2026-09-01 00:56:09 +00:00
jiantw83
7c3e98fc9b
fix(frontmatter): 修正 html-export 與 wiki-to-issue 技能 SKILL.md frontmatter 的 YAML 純量語法錯誤
...
What:
- 修正 skills/html-export/SKILL.md 與 skills/wiki-to-issue/SKILL.md frontmatter 裡 description 欄位的 YAML 語法錯誤。
- 兩支技能的 description 整串加上單引號,內部撇號改寫成兩個單引號,內容文字一個字都沒變。
- 同步更新 plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json 三個 manifest 版本號,從 0.1.9 進到 0.2.0(patch 滿 9,依準則進位到 minor)。
Why:
- 兩支 description 都內含「冒號加空白」,屬於未加引號的 YAML plain scalar,違反 YAML 語法規定。
- Antigravity 解析 frontmatter 時當場中斷,整支技能被靜默丟棄,沒有任何錯誤訊息;磁碟上 34 支技能,Antigravity 只認得 28 支。
- 準則要求 description 用英文撰寫,不能把「: 」改成全形冒號迴避語法問題,只能加引號修正。
How:
- 兩支技能的 description 值都加上單引號,內部撇號寫成兩個單引號跳脫,其餘字元不動。
- 用 git show HEAD: 分別取出兩支技能改前的原始值,把改後的單引號純量還原後逐一做字串相等比對,確認逐字相同、字元數一致。
- 執行 ste100-lint.sh、check-behaviors.sh、lint-frontmatter.sh 三支檢查腳本,退出碼皆為 0;git diff --numstat 顯示兩個檔案都只動了 frontmatter 那一行。
Who:
- 本次修到 gitea 技能組的 html-export 技能(把 Wiki 頁面或 Issue 匯出成單一 HTML 檔)與 wiki-to-issue 技能(把 Wiki 頁面轉建成 Issue)。
2026-08-31 19:03:39 +08:00
jiantw83
9630dcd5f6
Merge pull request '收攏 5 支技能的行為清單,功能主幹併回 develop' ( #35 ) from feat/skill-behaviors-and-version-block/main into develop
2026-08-31 08:10:35 +00:00
jiantw83
925dc59016
Merge pull request '盤點 5 支技能的實際行為,新增行為清單當驗證基準' ( #34 ) from feat/skill-behaviors-and-version-block/behavior-list into feat/skill-behaviors-and-version-block/main
2026-08-31 08:09:20 +00:00
jiantw83
8a07f15fde
chore(plugin): 同步三份 manifest 版本至 0.1.9
...
What:把 plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json 三份 manifest 的 version 從 0.1.8 改成 0.1.9,只動版本欄位。
Why:本次新增 references/behaviors.md,存放庫內容已經變動,版本號要跟著往前推。三份 manifest 若不同步,Claude 與 Codex 兩邊裝到的版本會對不上,版本檢查也會抓到落差。
How:三份檔案各改一行 version 字串,其餘欄位不動。plugin.json 的 skills 路徑、.claude-plugin 的 author 與 repository、.codex-plugin 的既有設定都維持原樣。jsc.requires 的相依版本這次沒有變動,不一併調整。
Who:jsc-gitea 外掛的版本標示,供 jsc-cli:deploy 安裝與 jsc-hooks/hooks/version-guard.sh 版本檢查使用。
2026-08-31 13:40:54 +08:00
jiantw83
bedbdc227f
feat(references): 新增 jsc-gitea 技能行為清單
...
What:新增 references/behaviors.md。這一頁替 jsc-gitea 的五支技能各留一節,依序是 html-export、html-style、repo-sync、wiki、wiki-to-issue。每一節放一張五列表,欄位固定為觸發時機、關鍵步驟、外部呼叫、完成條件、可驗證跡象。
Why:技能驗證原本沒有共同的比對基準,每次都要回頭讀 SKILL.md 反推該有的行為。這一頁把行為寫成基準,驗證時直接比對。清單放在本存放庫而不是集中到 meta,技能改動與清單才會落在同一個 PR,內容不會漂移,也不用跨存放庫開兩條 PR 互卡。
How:逐支技能盤點,從 SKILL.md 與 skills 底下的腳本讀出實際行為。外部呼叫欄逐一列出用到的工具腳本、被呼叫的技能與 Gitea API,例如 tools/gitea-link.sh、tools/html-style.sh、tools/html-render.sh、tools/repo-sync.sh、tools/issue.sh、tools/hash-id。可驗證跡象欄一律寫看得到的產物,例如 HTML 檔落點、wiki 頁名、議題網址、設定檔內容。稽核時修正 html-style 一處,設定檔格式從空白分隔改成實際的 {種類}={版型},{風格}。表格欄位依 jsc-meta/tools/check-behaviors.sh 的程式層檢查對齊。
Who:jsc-gitea 的技能驗證參考基準,涵蓋 html-export、html-style、repo-sync、wiki、wiki-to-issue 五支技能。
2026-08-31 13:40:54 +08:00
jiantw83 and Claude Opus 5
82eed06ad1
chore(gitea): 補上寫入確認腳本的結束碼宣告
...
檔頭只寫了用法與規則,沒有列結束碼,呼叫端無法逐碼分流,腳本檢查因此不通過。
依實作補上兩碼:0 表示已確認,可以送出寫入;2 表示不要寫入,並列出走這一碼的五種情形。
一併說明用法錯誤與人工拒絕為何共用 2。只加註解,指令行為與輸出都沒有變。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-31 11:19:32 +08:00
jiantw83
72ba7b8801
chore(gitea): 技能依結束碼分流,可併行的步驟改成同時跑
...
技能以前只寫成功路徑。腳本回非 0 時,模型得自己猜下一步,猜錯就是靜靜
往下走。現在每一支腳本在檔頭宣告自己的結束碼,技能也逐碼寫明要停、要
問、還是要改參數再呼叫一次。兩支技能補上連線變數的解析步驟,讓缺值在
第一步就浮出來,而不是在中途撞出一行英文錯誤。
流程也拉平了。取內容、選範本、問輸出位置這幾件事彼此不相依,改成同一批
送出;存取庫批次同步從逐一處理改成各存取庫同時進行,一個 owner 底下有
上百個存取庫時差距最明顯。
相依的技能組下限寫進外掛設定,版本推進。
2026-08-31 11:13:32 +08:00
jiantw83
8da586c481
docs(gitea): 更正過期說明並補齊指令用法
...
說明文件有兩處與現況不符。雜湊規則在這裡複述了一份,跟唯一來源各說各
話,讀的人會照著舊的做;技能組異動報告的雜湊來源早就改過,敘述卻留在
原地。現在改成指向唯一來源,並刪掉重複的那一份。
新增的指令、頁面類型與全腳本共用的結束碼也一併寫進說明。查不到就只能
翻程式,那正是說明文件該擋下來的成本。domain 簡介補上議題轉換與 HTML
匯出,與實際提供的技能一致。
2026-08-31 11:12:20 +08:00
jiantw83
2b759542a8
feat(gitea): 新增種類推導指令與技能盤點頁型
...
範本種類以前由模型每次重推。底線怎麼切、標籤照什麼順序試,都是固定的
輸入輸出,卻放在技能內文裡由模型自己來,有人切錯底線,也有人跳過標籤
順序。現在把規則寫進腳本,輸出固定一行,還附上是哪個字首或哪個標籤產生
的依據。已經有標籤名單時可以直接帶進來,省掉一次 API 呼叫。
技能盤點頁是新的頁面類型。加進 wiki 存取庫的允許清單與規則驗證腳本,
這種頁才有地方可放,解析規則也才有人驗。
2026-08-31 11:11:55 +08:00
jiantw83
28a52c9f0c
fix(gitea): 認證失敗不再被讀成頁面不存在
...
金鑰失效以前會偽裝成別的結果。指令把請求直接接進管線,管線的結束狀態
取自後段的解析程式,前段的失敗就被吃掉。wiki 頁清單因此看起來是空的,
PR 留言看起來像沒有任何審查意見。wiki 讀取更把每一種失敗都翻成
「頁面不存在」。
技能組寫 wiki 的語意是附加、不覆蓋,判斷依據是先把舊內容讀回來。呼叫端
一旦把認證失敗當成一張新頁,就會整份蓋上去,舊紀錄直接消失。
現在失敗成因分開回報:找不到、金鑰失效或權限不足、其他 API 失敗,各給
一個結束碼。每條管線先接進變數,先看結束碼,再解析內容。議題工具的同一
類缺陷一併修掉。wiki 技能也把「只有找不到才可以建新頁」寫成獨立規則,
涵蓋每一條「不存在就建立」的路徑。
2026-08-31 11:11:55 +08:00
jiantw83
3fe9b55840
feat(gitea): 支援回覆 PR 留言
2026-08-28 09:30:02 +08:00
jiantw83
1db01ca0f1
chore(manifest): 三份 manifest 版本升到 0.1.6
...
What:`plugin.json`、`.claude-plugin/plugin.json`、`.codex-plugin/plugin.json` 的 `version` 由 0.1.5 改為 0.1.6。
Why:本次 `wiki-repo` 多支援一種頁面類型,`wiki` 技能的允許頁型也跟著補齊,屬於行為變更,版本要跟著往上走,各 CLI 才知道要更新。
How:三份只改 `version` 一個欄位,其餘內容不動,三份保持同一版號。
Who:`jsc-gitea` 外掛的套件描述檔。
2026-08-27 16:34:17 +08:00
jiantw83
c3b46c982f
docs(gitea): README 補上 SKILLSET 頁型與專用環境變數
...
What:`README.md` 兩處增修。`wiki-repo` 的用法說明把允許的 `TYPE` 清單補到十二種(加上 `CHECK`、`REPORT`、`SKILLSET`);環境變數表新增 `JSC_WIKI_REPO_SKILLSET` 一列,寫明對應 `SKILLSET_CONTENTS`、`SKILLSET_{HASH}`(技能組異動報告)與雜湊來源 `{owner}/{repo}`。
Why:README 的類型清單停在九種,`CHECK` 與 `REPORT` 支援了卻沒補上。照 README 設定環境變數的人會以為這幾種頁型沒有專用變數,只能全塞進共用的 `JSC_WIKI_REPO`。
How:`SKILLSET` 單獨列一列而不是併進 `JSC_WIKI_REPO_{TYPE}` 那一行,因為它要多寫雜湊來源;`JSC_WIKI_REPO_{TYPE}` 那一行只補清單,退回規則不動,兩列都保留「不做跨類型代用」這句。
Who:讀 `jsc-gitea` 說明設定 wiki 位置的操作者。
2026-08-27 16:34:17 +08:00
jiantw83
653d54476b
test(check-wiki-rules): 頁型驗證涵蓋 SKILLSET,說明改為不綁類型數量
...
What:`tools/check-wiki-rules.sh` 的 `TYPES` 加入 `SKILLSET`,檔頭的「涵蓋全部十一種頁面類型」改成「涵蓋 `TYPES` 列的每一種頁面類型」,誘餌值那段註解的「其他八個類型」改成「其餘每一個類型」。
Why:驗證清單沒跟上,新頁型的三項判定(專用變數優先、退回共用變數、不得跨類型代用)就一次都沒驗到。註解裡寫死數字更麻煩:每加一種頁型就要記得改兩個數字,忘了改註解就開始騙人——事實上加 `CHECK` 與 `REPORT` 那次就已經漏了一個。
How:只加 `TYPES` 一個字串,三項判定與誘餌值都是照 `TYPES` 展開的,加進去就自動涵蓋,不必另外寫測項。註解一律改成指向 `TYPES` 這個變數,不再寫死數量,日後加頁型只要改一個地方。
Who:`jsc-gitea` 的 wiki 頁型解析驗證,以及日後新增頁面類型的人。
2026-08-27 16:34:17 +08:00
jiantw83
920c68087e
feat(wiki): 支援 SKILLSET 頁面類型
...
What:`tools/gitea.sh` 的 `resolve_wiki_repo()` 允許清單加入 `SKILLSET`,`wiki-repo` 的用法註解同步。`skills/wiki/SKILL.md` 第 2 步的允許頁型補上 `SKILLSET`,同時補上先前漏列的 `CHECK` 與 `REPORT`;`description` 的呼叫端清單補上「`jsc-meta` 的 `SKILLSET` 頁」。
Why:`jsc-meta` 的四支異動技能收尾要把驗證結果寫進 `SKILLSET_{HASH}`,而所有 wiki 讀寫都走這一支技能與這一支腳本。頁型不在允許清單裡,`wiki-repo` 會直接 exit 2,報告一個字也寫不進去。`CHECK` 與 `REPORT` 是另一件事:腳本早就支援,技能的允許清單卻沒補,照技能寫的走會以為那兩種頁型不合法。
How:只加類型名,解析規則不動——`JSC_WIKI_REPO_SKILLSET` 優先,未設定才退回 `JSC_WIKI_REPO`,不做跨類型代用,兩個都沒有仍是 exit 3 交回技能問使用者。雜湊來源是被改動的 domain 存取庫 `{owner}/{repo}`,用的是同一支 `hash-id`,所以這裡不必為它多寫一條特例(`CHECK` 那種主機加帳號的例外才需要)。
Who:`jsc-gitea:wiki` 技能與 `jsc-meta` 四支異動技能的異動報告寫入路徑。
2026-08-27 16:34:17 +08:00
jiantw83
8738f54b9d
Merge pull request 'feat(gitea): 新增 PR 盯場輪詢腳本與 pr-get、pr-edit 兩個子指令' ( #23 ) from feat/sdlc-flow-rules/main into develop
2026-08-27 03:39:36 +00:00
jiantw83
5892feea53
chore(manifest): 三份 manifest 版本升到 0.1.5
...
What:`plugin.json`、`.claude-plugin/plugin.json`、`.codex-plugin/plugin.json` 的 `version` 由 0.1.4 改為 0.1.5。
Why:本次新增 `pr-get`、`pr-edit` 與 `pr-watch.sh`,屬於行為變更,版本要跟著往上走,各 CLI 才知道要更新。
How:三份只改 `version` 一個欄位,其餘內容不動,三份保持同一版號。
Who:`jsc-gitea` 外掛的套件描述檔。
2026-08-27 11:20:27 +08:00
jiantw83
73cca6e6ea
docs(gitea): README 與 AGENTS 補上盯 PR 與 PR 校準的用法
...
What:README 的指令清單補上 `pr-get`、`pr-edit` 與 `pr-watch.sh` 三項與各自的退出碼,環境變數表補 `JSC_HOME` 與 `JSC_PR_WATCH_INTERVAL`;AGENTS.md 新增一條規則,盯 PR 等合併一律用 `tools/pr-watch.sh`,不要自己寫輪詢迴圈。
Why:新指令沒寫進 README,呼叫端就只能翻腳本原始碼。`pr-watch.sh` 的退出碼 `10` 更要講清楚:它不是錯誤,是「有新留言,換你處理」的交棒訊號,看成錯誤就會把留言吞掉。
How:README 依既有版面把三項排進指令區塊,另補一段說明退出碼 `10` 的設計意圖。AGENTS.md 把新規則插進第 5 條,原第 5 條順延為第 6 條。
Who:讀 `jsc-gitea` 說明的人,以及依 AGENTS.md 行事的代理。
2026-08-27 11:20:27 +08:00
jiantw83
5471b97635
feat(pr-watch): 新增盯 PR 到合併的輪詢腳本
...
What:新增 `tools/pr-watch.sh`,盯一支 PR 直到它合併或關閉。退出碼 `0` 是已合併或已關閉、`10` 是有新留言要呼叫端接手、`2` 是參數錯誤或第一輪就連不上 Gitea、`3` 是查不到該 PR。輪詢間隔預設 60 秒,`JSC_PR_WATCH_INTERVAL` 可覆寫。
Why:等 PR 合併原本靠各技能自己寫輪詢迴圈,間隔與退場條件每支都不一樣,還常常自動逾時退場,PR 明明還開著就被當成收尾。改用一支共用腳本之後,等待行為只有一種,而且盯到 PR 收尾為止。
How:資料一律經同目錄的 `gitea.sh`(`pr-status`、`pr-comments`),不自行拼 API。已回報過的留言把最後一筆時間戳寫進狀態檔,預設 `$JSC_HOME/pr-watch/{owner}-{repo}-{編號}.seen`,同一則不重複回報;狀態檔還不存在時把既有留言整批回報一次,寧可重複也不漏掉開始盯之前的審查意見。PR 收尾那一輪若還有沒回報的留言,照樣印出來再退出,退出碼仍是 `0`。`pr-status` 對不存在的 PR 會印「? none none」並正常結束,所以 state 只認 `open` 與 `closed`、merged 只認 `true` 與 `false`,對不上就回 `3`,PR 編號打錯不會變成永遠輪詢一支不存在的 PR。
Who:`jsc-sdlc:implement` 開完工作包 PR 之後的等待合併,以及任何要盯 PR 的技能。
2026-08-27 11:20:27 +08:00
jiantw83
c3c810c97b
feat(gitea): 新增 pr-get 與 pr-edit 兩個 PR 子指令
...
What:`tools/gitea.sh` 新增 `pr-get` 與 `pr-edit`。`pr-get` 印出一支 PR 的標題、base 分支與描述,前三行固定 `title`、`base`、`body` 三個標記,第 4 行起是描述原文;`pr-edit` 從檔案讀描述,一次更新標題與描述。
Why:分支已經有 PR 時,每次認可之後都要比對標題、描述與前置 PR 依賴三項,有差才更新。原本只有 `pr-create` 與 `pr-status`,讀不到既有 PR 的標題與描述,比不了就只能重開一支 PR 或整支蓋掉,兩種都會把審查中的討論打斷。
How:`pr-get` 把唯一會多行的描述放在輸出最後一段,呼叫端用 `head -n1`、`sed -n 2p`、`tail -n +4` 就取得到三個欄位,全程不必解析 JSON。`pr-edit` 的描述走檔案而不走參數,多行內容與全形標點才裝得下;描述檔不存在回 `2`,API 呼叫失敗回 `4`,成功印 `OK {owner}/{repo}#{編號}`。
Who:`jsc-git:pr` 的既有 PR 校準步驟,以及任何要先比對 PR 現況再決定改不改的呼叫端。
2026-08-27 11:20:27 +08:00
jiantw83
6ce2822147
feat(wiki): 支援 CHECK 與 REPORT 兩種頁面類型
...
What: gitea.sh 的 wiki-repo 白名單加入 CHECK 與 REPORT,check-wiki-rules.sh 的驗證涵蓋範圍從九種擴到十一種,wiki 技能的 description 補上兩個新呼叫者。
Why: 執行環境體檢(jsc-cli:doctor)與工作報表(jsc-log:report)都要寫 wiki,但頁面類型不在白名單裡就解析不出存取庫,兩支技能都寫不進去。
How: 只動白名單與驗證清單,解析規則本身不變:一律先讀 JSC_WIKI_REPO_{TYPE},再退回 JSC_WIKI_REPO,不得跨類型代用。
Who: 體檢頁與報表頁的 wiki 位置解析。
2026-08-26 10:45:34 +08:00
jiantw83 and Claude Opus 5
dbe800d7a7
chore(gitea): manifest 描述補上議題轉換與 HTML 匯出
...
What:三份 plugin manifest 的 description 補上這次新增的兩類能力。
Why:description 是各 CLI 顯示這個 plugin 用途的依據,少了新能力就找不到人用。
How:三份同步改成同一句;marketplace 正本的條目描述留給下一次 skill-check 統一處理,因為那份要同時改到十一個存取庫的副本。
Who:在 CLI 裡挑 plugin 的人。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-26 09:22:00 +08:00
jiantw83 and Claude Opus 5
dc17907554
chore(gitea): markdown 渲染子命令與文件、manifest 同步
...
What:gitea.sh 新增 markdown 子命令與可切換的 Content-Type,README 補上新工具、新技能與 HTML 範本說明,三份 manifest 同步升版到 0.1.3。
Why:markdown 轉 HTML 要交給 Gitea 自己渲染,排版才跟 wiki、議題頁一致;但 /markdown 端點在 Gitea 1.27 回 200 卻是空內容,看起來像成功。
How:改走吃純文字的 /markdown/raw,req 送出的 Content-Type 改由 REQ_CONTENT_TYPE 決定,預設仍是 application/json。代價寫進註解:raw 端點不吃 wiki 情境,[[頁名]] 要由呼叫端先換成絕對網址。
Who:所有透過 jsc-gitea 產生文件的技能。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-26 09:19:25 +08:00
jiantw83 and Claude Opus 5
a0c13f807a
feat(gitea): 新增 HTML 匯出與範本風格設定
...
What:新增 html-export 與 html-style 兩支技能、tools/html-render.sh 與 tools/html-style.sh 兩支工具,以及六種版型乘五種風格的 HTML 範本。
Why:wiki 頁與議題要拿給 Gitea 以外的人看時,只能複製 markdown;不同類型的文件也該有各自的版面,不是每份都長一樣。
How:版型(report、slide、dashboard、spec、timeline、onepager)決定內容怎麼排,風格(minimal、corporate、dark、print、vivid)決定看起來長怎樣,兩者自由搭配。哪一種頁面套哪一組由設定決定:專案的 .jsc/html-styles 優先,其次 $JSC_HOME/html-styles.conf,對不到退 DEFAULT,再對不到才用內建的 report/minimal。產出是單一 HTML 檔,CSS 與腳本全部內嵌。
Who:需要把 wiki 頁或議題寄給客戶、主管或跨團隊同事的人。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-26 09:19:25 +08:00
jiantw83 and Claude Opus 5
f8123e829b
feat(gitea): 新增 wiki 轉議題技能
...
What:新增 wiki-to-issue 技能,把一頁 wiki 轉成同一個存取庫的議題;配套新增 tools/gitea-link.sh 解析連結、tools/issue.sh 讀寫議題。
Why:wiki 頁要變成可追蹤的工作時,原本得自己拼 API:組 JSON、查標籤 id、挑回應欄位,跳脫一錯就把對外的議題內容寫壞。
How:連結是唯一入口,gitea-link.sh 解不出 wiki 頁就中止,不猜存取庫也不猜頁名;標籤只從既有的挑;站台沒有專案看板 API 時據實回報請使用者手動拖,不假裝關聯成功。
Who:使用 jsc 技能組、需要把 wiki 內容交辦出去的人。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-26 09:19:08 +08:00
jiantw83 and Claude Opus 5
768ae6a9fe
chore(gitea): 三份 manifest 同步升版並同步 marketplace 正本
...
What:三份 plugin manifest 版本同步 bump,兩份 marketplace 檔與 plugins/meta 正本對齊。
Why:準則要求技能異動必須同步升版;marketplace 副本必須與正本完全一致。
How:以 jsc-meta 的 tools/sync-skill-manifest.sh 升版,marketplace 檔由正本複製。
Who:jsc-meta:skill-check 例行稽核(2026-08-25)。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-25 14:58:54 +08:00
jiantw83 and Claude Opus 5
3a2eb40bef
docs(gitea): 同步文件與參考資料
...
What:更新 README、AGENTS.md、templates 與 references,讓文件敘述與實際行為一致。
Why:稽核發現多處文件與程式行為分歧,違反「每個意義只有單一真實來源」。
How:以實際程式行為為準改寫敘述,重複的規則收成單一來源並以一行指引指過去。
Who:jsc-meta:skill-check 例行稽核(2026-08-25)。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-25 14:58:54 +08:00
jiantw83 and Claude Opus 5
36fc4de73c
fix(gitea): 補齊稽核缺失並修掉護欄失效
...
What:依 jsc-meta:skill-check 的稽核結果修正技能與工具——補上每個步驟的可檢核完成條件、
把留在內文的標準輸入輸出流程下放 tools/、修正查表與退碼路由造成的誤判。
Why:稽核發現這些缺失會讓技能在實際執行時走錯分支或靜默通過。
完成條件缺漏是最常被違反的一項;退碼誤判與查表錯誤則會讓良性狀況被當成失敗。
How:逐項對照 references/guidelines.md 的審核檢查清單修正,新增的工具都有
documented exit codes,並以真實執行驗證每條路徑。
Who:jsc-meta:skill-check 例行稽核(2026-08-25)。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
2026-08-25 14:58:54 +08:00
jiantw83 and Claude Opus 5
1bb1a4f10b
chore(plugin 版本): 三份 manifest 升版至 0.1.0
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-25 12:08:11 +08:00
jiantw83 and Claude Opus 5
f65bb40cfc
docs(README): 補上 pr-status、pr-comments 與 wiki-url 的工具說明
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-25 12:08:11 +08:00
jiantw83 and Claude Opus 5
4f3ba9c8d3
feat(pr-status,pr-comments): 新增 PR 狀態與留言查詢子指令
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-25 12:08:11 +08:00
jiantw83 and Claude Opus 5
13c449c4de
chore(plugin 版本): 三份 manifest 升版至 0.0.9
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-25 11:13:35 +08:00
jiantw83 and Claude Opus 5
db28f6c1d0
fix(tea-token): 依主機挑 tea 登入,避免把 A 站 token 送去 B 站
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-25 11:13:35 +08:00
jiantw83 and Claude Opus 5
2032d63b47
chore(plugin 版本): 三份 manifest 升版至 0.0.8
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-24 18:54:19 +08:00
jiantw83 and Claude Opus 5
60910f7b23
docs(wiki): 補上 wiki 連結的方向與作用範圍規範
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-24 18:54:19 +08:00
jiantw83 and Claude Opus 5
f8a62b8068
feat(wiki-url): 新增 wiki 頁絕對網址子指令,供跨存取庫連結使用
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-24 18:54:19 +08:00
jiantw83 and Claude Opus 5
a887ee772b
chore(plugin 版本): 三份 manifest 升版至 0.0.7
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-24 18:00:35 +08:00
jiantw83 and Claude Opus 5
55d9c79bf7
docs(README): 安裝入口改為 plugins/meta 並補上遷移說明
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-24 18:00:35 +08:00
jiantw83 and Claude Opus 5
7fce55edee
chore(plugin 版本): 三份 manifest 升版至 0.0.6
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-24 17:24:31 +08:00
jiantw83 and Claude Opus 5
9607bae6c3
docs(README): 頁型清單同步收錄 DELIVER
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-24 17:24:31 +08:00
jiantw83 and Claude Opus 5
afd10ebfb8
test(wiki-rules): 補上 DELIVER 頁型的解析測試
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-24 17:24:31 +08:00
jiantw83 and Claude Opus 5
458bbb7fff
feat(wiki): 頁型允許清單新增 DELIVER
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-08-24 17:24:31 +08:00
jiantw83
ccf4b2af24
fix(wiki,repo-sync): Gitea 認證缺值改詢問使用者
...
什麼:wiki 與 repo-sync 兩支技能在 GITEA_HOST/GITEA_TOKEN 無法解析時,原本只回報認證失敗;現在改為先走 jsc-ask:ask 詢問使用者。同步將 jsc-gitea 版本號由 0.0.4 升至 0.0.5。
為什麼:guidelines 的環境變數表規定無法解析的必要環境變數要詢問使用者,不能直接回報失敗;先前兩支技能的行為不符合 jsc-meta:skill-check 的稽核規則。
如何:在 skills/wiki/SKILL.md 與 skills/repo-sync/SKILL.md 呼叫 tools/gitea.sh 前,先檢查 GITEA_HOST/GITEA_TOKEN 是否可解析(含 tea login list 的備援 token),無法解析時依 jsc-ask:ask 的決策樹詢問使用者;同時將 plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json 的版本號由 0.0.4 升至 0.0.5。
負責功能:Gitea 認證缺值改詢問使用者(wiki、repo-sync 兩技能共用的根因修正)。
2026-08-24 14:47:40 +08:00
jiantw83
3737e32210
fix(marketplace): 同步 canonical marketplace 缺漏欄位
...
什麼:.agents/plugins/marketplace.json 補上頂層 description、owner 欄位,並為每個 plugin 項目補上 description;.claude-plugin/marketplace.json 同步 jsc-meta 項目 description 的標點寫法(頓號取代斜線)。
為什麼:兩份 marketplace.json 與 plugins/jsc 的 canonical marketplace 定義不同步,缺漏欄位會讓依賴 marketplace 清單的下游工具(例如 jsc-cli:deploy 讀取 domain 清單)拿不到完整資訊。
如何:比對 plugins/jsc 的 canonical marketplace.json,將缺漏的 description、owner 欄位補齊到 .agents/plugins/marketplace.json,並將標點寫法同步到 .claude-plugin/marketplace.json。
負責功能:marketplace 定義同步(repo-wide infra fix)。
2026-08-24 14:47:26 +08:00
jiantw83 and Claude Fable 5
55bba1dc2e
chore(manifest): 版本號由 0.0.3 升至 0.0.4
...
What:plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json 三份 manifest 的 version 由 0.0.3 升為 0.0.4。
Why:本次新增 LEARN wiki 頁型屬功能變更,需要新版本號讓各 AI CLI 的外掛更新機制辨識並拉取新版。
How:三份 manifest 的 version 欄位同步改為 0.0.4,其餘欄位不動。
Who:jsc-gitea 外掛的版本管理與發佈功能。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-24 11:37:14 +08:00
jiantw83 and Claude Fable 5
2f4b4ce519
docs(readme): 文件頁型清單同步收錄 LEARN
...
What:README.md 的 wiki-repo 指令說明、wiki 技能簡介與 JSC_WIKI_REPO_{TYPE} 環境變數表,頁型清單皆補上 LEARN。
Why:程式端已收錄 LEARN 頁型,文件若不同步,使用者會誤以為 LEARN 不受支援或漏設 JSC_WIKI_REPO_LEARN。
How:三處型別列舉由 QUESTION / PLAN / ANALYZE / MAINTAIN / REPO / LOG / ERROR 更新為含 LEARN 的完整清單,其餘敘述不變。
Who:jsc-gitea 外掛的使用說明文件。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-24 11:37:01 +08:00
jiantw83 and Claude Fable 5
653b619ea1
feat(wiki): wiki 頁型允許清單新增 LEARN
...
What:gitea.sh 的 wiki-repo 允許型別清單、wiki 技能 SKILL.md 的頁型清單,以及 check-wiki-rules.sh 的驗證案例,同步收錄 LEARN 頁型。
Why:jsc-log 新增 LEARN wiki 頁型,若允許清單未收錄,wiki-repo LEARN 會以 unknown type(exit 2)被擋下,學習紀錄頁無法解析存放位置。
How:resolve_wiki_repo 的 case 白名單加入 LEARN,解析順序維持 JSC_WIKI_REPO_LEARN 優先、退回 JSC_WIKI_REPO、不跨型別代用;check-wiki-rules.sh 補上 LEARN 專屬變數優先與退回共用預設兩個案例;SKILL.md 允許頁型清單同步更新。
Who:jsc-gitea wiki 技能與其呼叫方(jsc-log 等)的 wiki 頁型解析功能。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-24 11:36:49 +08:00
jiantw83
11082f648e
fix(wiki): 依頁面類型解析 wiki repo 並統一 hash
2026-08-21 16:53:17 +00:00
jiantw83 and Claude Fable 5
5e732f42fd
chore(plugin): 版本號由 0.0.1 升至 0.0.2
...
What(改了什麼)
- plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json 三份 manifest 的 version 同步由 0.0.1 改為 0.0.2。
Why(為什麼改)
- 本次加入 tea CLI token 退回與 wiki 圖表優先規則兩項功能,需要提升版本讓各 AI CLI 的插件更新機制抓到新版。
How(怎麼改)
- 三份 manifest 僅改 version 欄位,其餘內容不動,維持三處版本一致。
Who(影響哪個功能/使用者)
- 安裝 jsc-gitea 插件的所有 AI CLI 使用者:更新後可取得本次的功能。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-21 08:23:27 +00:00
jiantw83 and Claude Fable 5
1f17f1779a
feat(wiki): wiki 技能新增圖表優先內容規則並更新 README 說明
...
What(改了什麼)
- skills/wiki/SKILL.md 新增兩條規則:頁面內容以圖表優先(mermaid 流程圖、時序圖、甘特圖、圓餅圖與 markdown 表格),純文字為最後手段且保持精簡;tools/gitea.sh 已內建認證退回機制,兩條路徑都失敗才回報認證錯誤。
- SKILL.md frontmatter description 補上 chart-first 說明,讓技能挑選時就能看到此規則。
- README.md:「Skills 目錄」的 wiki 條目補上圖表優先說明;環境變數表的 GITEA_TOKEN 一列補上 401/403 自動退回 tea CLI token 的行為。
Why(為什麼改)
- 使用者規則:wiki 輸出盡量用 mermaid 與表格呈現,不要只有純文字。
- 認證退回已在 tools/gitea.sh 實作,技能文件與 README 需同步,避免技能誤判認證失敗或文件與行為不一致。
How(怎麼改)
- 在 SKILL.md 規則清單追加第 4、5 條,並同步改寫 frontmatter description。
- README 對應兩處文字更新,與 gitea.sh 的實際行為一致。
Who(影響哪個功能/使用者)
- 使用 jsc-gitea:wiki 的所有呼叫方(jsc-ask、jsc-sdlc、jsc-log):之後寫出的 wiki 頁會以圖表為主;閱讀 README 的使用者能得知 token 退回行為。
備註:README.md 的 GITEA_TOKEN 環境變數表一列在語意上屬於前一個 commit(tea token 退回),但為避免以 hunk 拆分 README,整檔併入本 commit。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-21 08:23:27 +00:00
jiantw83 and Claude Fable 5
684d3f4f31
feat(gitea): gitea.sh 認證失敗時自動退回 tea CLI 登入 token
...
What(改了什麼)
- tools/gitea.sh 新增 tea_token():解析 ~/.config/tea/config.yml,優先取 default: true 的登入 token,否則取第一個。
- 啟動時 GITEA_TOKEN 未設定或為空,改用 tea token;兩者皆無才維持原本的必填錯誤。
- req() 遇 HTTP 401/403 且 tea token 存在又與當前 token 不同時,換用 tea token 重試一次,之後不再重試。
- 檔頭用法註解補上退回機制的說明。
Why(為什麼改)
- 使用者規則:api token 401/403 時,若 tea CLI 已登入就取其 token 重試,避免因 GITEA_TOKEN 過期或未設定就直接中斷流程。
How(怎麼改)
- 以 awk 解析 tea 設定檔的 logins 清單,抓各登入的 token 與 default 旗標。
- req() 改為 while 迴圈包住 curl,retried 旗標保證最多重試一次;HTTP >= 400 仍以 exit 4 收場。
- 實測:sh -n 語法檢查通過;GITEA_TOKEN 為空時經 tea token 成功;GITEA_TOKEN=deadbeef 時走 401 重試路徑成功;無 tea 設定且 token 為空時維持原錯誤訊息。
Who(影響哪個功能/使用者)
- 所有經 tools/gitea.sh 呼叫 Gitea API 的技能(wiki、repo-sync、jsc-git pr 等)與使用者:token 缺失或失效時多一層自動救援,行為只在原本會失敗的情境改變。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-21 08:23:27 +00:00
jiantw83 and Claude Fable 5
050ad20cd5
chore(gitea): 加入統一 jsc marketplace 副本(與正本一致,任一 repo 可作註冊入口)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-21 14:37:46 +08:00
jiantw83 and Claude Fable 5
e2c4f1733a
style(gitea): 中文並列改頓號
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-21 14:29:45 +08:00
jiantw83 and Claude Fable 5
b1a6f9b36e
docs(gitea): translate SKILL.md into English per guidelines
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-21 14:29:45 +08:00
jiantw83 and Claude Fable 5
bc03f7bef6
style(gitea): 依 STE100 擬人台灣感規則改寫語感
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-21 14:15:56 +08:00
jiantw83 and Claude Fable 5
f22dee2ae0
docs(gitea): AGENTS 語言規則改指向 jsc-meta 的 references/ste100.md
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-21 14:13:27 +08:00
jiantw83 and Claude Fable 5
3468a564aa
docs(gitea): README 安裝/更新/移除改為每指令一行(五個 CLI)並為相關 domain 加上 repo 連結
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-21 14:03:35 +08:00
jiantw83 and Claude Fable 5
df93714317
feat(gitea): gitea.sh 新增 pr-depend(前置 PR 依賴阻擋)與 repo-set(描述/網頁)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-21 14:03:35 +08:00
jiantw83 and Claude Fable 5
d36937c889
chore(gitea): 版本號改為 0.0.1 並移除個別 marketplace(統一為 jsc)
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-21 14:03:35 +08:00
jiantw83 and Claude Fable 5
a4bf8636c4
docs(gitea): 以統一格式改寫繁體中文 README 與 AGENTS
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-21 13:08:43 +08:00
jiantw83 and Claude Fable 5
a60686c796
feat(gitea): 匯入 jsc-gitea 技能組
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-21 13:08:43 +08:00
jiantw83 and Claude Fable 5
a53079589e
chore(gitea): 修正範本 manifest 與移除 hello 範例符合 gitea 領域
...
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-21 13:08:18 +08:00
jiantw83
8f74c7b46c
Initial commit
2026-08-21 04:42:24 +00:00