jiantw83andClaude 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
2026-08-21 04:42:24 +00:00
2026-08-21 14:29:45 +08:00

jsc-gitea — Gitea 操作

jsc 技能組的 gitea domain:Gitea API 的統一入口。所有 jsc 技能需要操作 gitea(wiki、repo、PR)時,一律經由本 domain 的工具或技能,不可自行拼 API 呼叫。

安裝、更新、移除

Marketplace 統一為 jsc(https://gitea.jsc.idv.tw/plugins/jsc.git),安裝 token 為 jsc-gitea@jsc。每個指令一行:

CLI 安裝 更新 移除
claude claude plugin marketplace add https://gitea.jsc.idv.tw/plugins/jsc.git && claude plugin install jsc-gitea@jsc claude plugin marketplace update jsc && claude plugin update jsc-gitea@jsc claude plugin uninstall jsc-gitea@jsc
codex codex plugin marketplace add https://gitea.jsc.idv.tw/plugins/jsc.git && codex plugin add jsc-gitea@jsc codex plugin marketplace upgrade jsc codex plugin remove jsc-gitea@jsc
copilot copilot plugin marketplace add https://gitea.jsc.idv.tw/plugins/jsc.git && copilot plugin install jsc-gitea@jsc copilot plugin marketplace update jsc && copilot plugin update jsc-gitea@jsc copilot plugin uninstall jsc-gitea@jsc
antigravity git clone https://gitea.jsc.idv.tw/plugins/gitea.git ~/plugins/gitea && agy plugin install ~/plugins/gitea git -C ~/plugins/gitea pull && agy plugin uninstall jsc-gitea && agy plugin install ~/plugins/gitea agy plugin uninstall jsc-gitea
kiro kiro-cli plugin marketplace add https://gitea.jsc.idv.tw/plugins/jsc.git && kiro-cli plugin install jsc-gitea@jsc kiro-cli plugin marketplace update jsc && kiro-cli plugin update jsc-gitea@jsc kiro-cli plugin uninstall jsc-gitea@jsc

antigravity 不支援 gitea URL 安裝,改用本地 clone 路徑。批次操作五個 CLI:使用 /jsc-cli:deploy。

工具

tools/gitea.sh(POSIX shell + curl):

gitea.sh owners                                  # 列出可讀取的 owner
gitea.sh repos <owner>                           # 列出 owner 的 repo 全名
gitea.sh default-branch <owner>/<repo>
gitea.sh clone-url <owner>/<repo>
gitea.sh wiki-repo <TYPE>                        # 解析頁面類型的 wiki 位置(見環境變數)
gitea.sh wiki-list <owner>/<repo>
gitea.sh wiki-get <owner>/<repo> <page>          # 不存在 exit 4
gitea.sh wiki-put <owner>/<repo> <page> <file>   # 自動判斷新建或更新
gitea.sh pr-create <owner>/<repo> <head> <base> <title> <body-file>
gitea.sh api <METHOD> <path> [json-file]

Skills 目錄

呼叫方式:Claude / Antigravity /jsc-gitea:{name};Codex ${name};Copilot / Kiro 描述需求自動觸發。

wiki

Gitea wiki 頁讀寫的統一入口:依頁面類型(QUESTION / PLAN / ANALYZE / MAINTAIN / REPO / LOG)解析 wiki 所在的 {owner}/{repo},未設定環境變數時以決策樹詢問。

repo-sync

存取庫批次同步:列出 owner → 使用者選擇 → 逐 repo(sub agent)clone 或切 develop/master 更新;有變更就開分支 commit、push、PR。

環境變數

變數 用途 未設定時
GITEA_HOST Gitea 站台(可省略 scheme,預設 https) 詢問使用者
GITEA_TOKEN Gitea API token 詢問使用者
JSC_WIKI_REPO_{TYPE} 各類型 wiki 頁的 {owner}/{repo};TYPE = QUESTION / PLAN / ANALYZE / MAINTAIN / REPO / LOG 退回 JSC_WIKI_REPO
JSC_WIKI_REPO 共用預設的 wiki {owner}/{repo} 詢問使用者

相關 domain

  • jsc-ask:wiki 位置未設定時的決策樹詢問
  • jsc-git:repo-sync 的 commit 與 PR
S
Description
No description provided
Readme
598 KiB
Languages
Shell 85.2%
HTML 8.7%
CSS 4.7%
JavaScript 1.4%