doc-issues skills 加入看板進度欄位調整、附件讀取、子母議題關閉與專案完成模式 #32

Merged
admin merged 6 commits from develop into master 2026-07-16 02:01:27 +00:00
Showing only changes of commit 8fdf0bc5be - Show all commits
+23 -3
View File
@@ -1,11 +1,11 @@
---
name: doc-issues-sync
description: 讀取一個 Gitea 專案(project)或單一議題(優先用 tea,否則用 Gitea REST API + curl + GITEA_TOKEN,不依賴 jq);若給的是專案,因 tea/Gitea API 目前無法直接查詢專案,就先取得該 repo 底下所有開啟中的議題、再過濾掉與此專案無關的議題;若給的是議題就只同步該議題。議題若有標籤就依標籤分組並以 AskUserQuestion 讓使用者挑選要同步哪些標籤的議題(只有一個議題或全部無標籤則跳過)。接著一個議題派一個 subagent,基於工作目錄下的所有檔案:分析議題描述的需求並判斷議題內的 TODO(markdown 任務清單)是否足以追蹤議題描述的需求、不足就補上 TODO 追加到議題正文、依需求從既有標籤更新議題標籤、逐條判斷未完成 TODO(含新增)是否已完成、有異動就整理成一則留言;若議題屬於專案看板且看板欄位可對應進度語意(例如分析中/待處理/進行中/待測試/已完成),依議題描述與勾稽結果建議並調整議題所在欄位,介面不支援時改列建議清單請使用者手動調整。全程不落地任何檔案:所有中間成果一律留在對話/subagent 回傳內容,最終只透過 tea 或 Gitea API 寫回議題正文/標籤/留言,且寫入前先經使用者確認。當使用者要同步議題進度、依專案批次更新議題 TODO、依程式碼勾稽議題完成度、更新議題標籤與進度留言,或提到 doc-issues-sync、issue sync、議題同步、TODO 勾稽、tea issues、Gitea 專案議題時使用此 skill。
description: 讀取一個 Gitea 專案(project)或單一議題(優先用 tea,否則用 Gitea REST API + curl + GITEA_TOKEN,不依賴 jq);若給的是專案,因 tea/Gitea API 目前無法直接查詢專案,就先取得該 repo 底下所有開啟中的議題、再過濾掉與此專案無關的議題;若給的是議題就只同步該議題。議題若有標籤就依標籤分組並以 AskUserQuestion 讓使用者挑選要同步哪些標籤的議題(只有一個議題或全部無標籤則跳過)。接著一個議題派一個 subagent,基於工作目錄下的所有檔案:分析議題描述的需求並判斷議題內的 TODO(markdown 任務清單)是否足以追蹤議題描述的需求、不足就補上 TODO 追加到議題正文、依需求從既有標籤更新議題標籤、逐條判斷未完成 TODO(含新增)是否已完成、有異動就整理成一則留言;若議題屬於專案看板且看板欄位可對應進度語意(例如分析中/待處理/進行中/待測試/已完成),依議題描述與勾稽結果建議並調整議題所在欄位,介面不支援時改列建議清單請使用者手動調整。若輸入為專案且使用者指定「關閉專案」或「專案完成」,則進入專案完成模式:只執行到取得專案議題清單,跳過其後所有同步步驟,經使用者確認後把專案擁有的所有議題搬到「已完成」欄位並關閉。全程不落地任何檔案:所有中間成果一律留在對話/subagent 回傳內容,最終只透過 tea 或 Gitea API 寫回議題正文/標籤/留言,且寫入前先經使用者確認。當使用者要同步議題進度、依專案批次更新議題 TODO、依程式碼勾稽議題完成度、更新議題標籤與進度留言,或提到 doc-issues-sync、issue sync、議題同步、TODO 勾稽、tea issues、Gitea 專案議題時使用此 skill。
---
# 依工作目錄同步 Gitea 專案/議題的 TODO 進度與標籤
你要讀取使用者提供的一個 Gitea **專案(project**或**單一議題**,取得要同步的議題清單,然後一個議題派一個 subagent,**以目前工作目錄下的所有檔案為依據**,勾稽並更新每個議題的 TODO(markdown 任務清單)與標籤,最後把 TODO 的異動整理成留言。**修改議題正文、變更議題標籤、留言都是對外且不易復原的動作,subagent 只回傳同步計畫(不落地任何檔案),實際寫入 Gitea 前必須先讓使用者確認**。請依下列階段依序完成。
你要讀取使用者提供的一個 Gitea **專案(project**或**單一議題**,取得要同步的議題清單,然後一個議題派一個 subagent,**以目前工作目錄下的所有檔案為依據**,勾稽並更新每個議題的 TODO(markdown 任務清單)與標籤,最後把 TODO 的異動整理成留言。例外:輸入為專案且使用者指定「關閉專案/專案完成」時,進入**專案完成模式**(見第 1 步之後的專節),跳過標籤分組與逐議題勾稽,改為批次搬移至「已完成」並關閉議題。**修改議題正文、變更議題標籤、留言都是對外且不易復原的動作,subagent 只回傳同步計畫(不落地任何檔案),實際寫入 Gitea 前必須先讓使用者確認**。請依下列階段依序完成。
## 絕對準則(不可違反)
@@ -29,7 +29,8 @@ description: 讀取一個 Gitea 專案(project)或單一議題(優先用 t
- 議題 URL 形如 `https://<host>/<owner>/<repo>/issues/<index>` → 議題。
- 專案 URL 形如 `https://<host>/<owner>/<repo>/projects/<id>` 或組織層級 `https://<host>/<owner>/-/projects/<id>` → 專案。
2. 執行 `tea login list`,判斷該 host 走 tea 還是 APIAPI base 為 `https://<host>/api/v1`)。
3. **找不到就詢問使用者(AskUserQuestion**:若無法從輸入判斷是專案還是議題、或依輸入查不到對應的專案/議題(例如 API 回 404、專案 id 不存在、repo 拼錯),必須用 AskUserQuestion 請使用者補齊或更正(hostowner/repo、專案 id 或議題 URL)。取得可解析的目標前,不進入下一步
3. **判斷是否進入專案完成模式**:若輸入是**專案**,且使用者明確指定「關閉專案」「專案完成」(或同義表述,例如「這個專案做完了,收尾」),標記為專案完成模式 — 第 1 步取得議題清單後,改走「專案完成模式」專節,不進入第 2 步之後的同步流程。輸入是單一議題時不適用此模式;使用者語意不明確(看不出是要同步還是要收尾關閉)時,用 AskUserQuestion 確認,不得自行認定要關閉
4. **找不到就詢問使用者(AskUserQuestion**:若無法從輸入判斷是專案還是議題、或依輸入查不到對應的專案/議題(例如 API 回 404、專案 id 不存在、repo 拼錯),必須用 AskUserQuestion 請使用者補齊或更正(hostowner/repo、專案 id 或議題 URL)。取得可解析的目標前,不進入下一步。
## 第 1 步:取得要同步的議題清單
@@ -41,6 +42,24 @@ description: 讀取一個 Gitea 專案(project)或單一議題(優先用 t
2. **過濾掉與此專案無關的議題**,只保留屬於目標專案的議題:依每個議題可取得的專案關聯資訊(issue 物件上的 project 欄位、或該議題所屬 project id/名稱)比對目標專案;比對得上才留下。彙整成議題清單(每筆記下 `owner/repo``index``title``labels`)。
3. 若逐議題都**無法可靠判斷是否屬於此專案**(tea/API 完全取不到議題的專案關聯),用 AskUserQuestion 告知此限制,請使用者選擇要如何處理(例如:把該 repo 全部 open 議題都視為要同步、由使用者提供屬於此專案的議題清單/編號、或改給單一議題 URL),不要自行臆測。
## 專案完成模式:指定關閉專案/專案完成時(跳過第 2 步之後的所有步驟)
只在第 0 步標記為專案完成模式時進入本節。沿用第 1 步取得的「屬於此專案的議題清單」,之後**不做**標籤分組、不派 subagent、不勾稽 TODO、不更新標籤、不留言進度,改依下列流程把專案擁有的所有議題搬到「已完成」並關閉:
1. **列出將處理的議題清單**:每筆列出 `owner/repo`、編號、標題、目前狀態與所在看板欄位(可取得時),以及該議題是否還有未完成 TODO(僅從議題正文的任務清單計數,不做工作目錄勾稽)。
2. **使用者確認(AskUserQuestion,必要,不可跳過)**:關閉議題是對外且不易復原的動作,未確認前不得寫入。至少提供選項:
- 全部搬到「已完成」並關閉。
- 逐議題確認(每關一筆回報,確認後再做下一筆)。
- 取消(不動任何議題)。
清單中若有議題仍有未完成 TODO,必須在詢問時明確標出這些議題與其未完成數量,讓使用者知道將照關。
3. **逐議題執行**(確認後):
- **搬到「已完成」欄位**:若議題屬於專案看板且看板有可對應「已完成」語意的欄位,依既有規則先探測 projectcolumn API404501 視為不支援、不對未確認端點寫入),可用就把議題移到該欄位;不支援或欄位對不上就跳過搬移(議題關閉後看板通常會自行呈現完成狀態),於回報註明。
- **關閉議題**tea`tea issues close --repo <owner>/<repo> --login <name> <index>`API`PATCH {base}/repos/{owner}/{repo}/issues/{index}`body `{"state":"closed"}`
- 單筆失敗(權限不足、議題被鎖定等)不中斷整批:記錄失敗原因後繼續下一筆。
4. **回報**:搬移成功/跳過(含原因)筆數、關閉成功/失敗(含原因)清單、照關但仍有未完成 TODO 的議題清單(供追溯);專案看板本身的關閉/封存 Gitea 不一定支援 API 操作,如需關閉專案本身,提示使用者到 Gitea 介面手動處理。
本模式全程仍遵守「不落地檔案」絕對準則;若第 1 步取得的清單為空(專案沒有 open 議題),直接回報並結束,不需確認。
## 第 2 步:依標籤分組並詢問要同步哪些(AskUserQuestion
1. 讀取清單中每個議題的 `labels`
@@ -128,6 +147,7 @@ description: 讀取一個 Gitea 專案(project)或單一議題(優先用 t
- subagent 與各步驟只讀檔案與議題、只回傳結構化內容,**不得在磁碟寫任何檔案、不得修改任何工作目錄原始碼**。
- 標籤只從既有標籤挑選,不自行新建(除非使用者要求)。
- 進度欄位調整只在議題確實屬於專案看板、建議欄位存在於看板且語意對應明確、並經第 5 步使用者確認後執行;不得新建欄位、不得對未確認存在的 API 端點做寫入。介面不支援時只回報建議清單,不視為錯誤。
- 專案完成模式只在輸入為專案且使用者**明確**指定關閉/完成時進入;語意不明就用 AskUserQuestion 確認,不得自行認定。批次關閉議題前必須經使用者確認;含未完成 TODO 的議題要在確認時明確標出。不得透過此模式關閉不屬於該專案的議題。
- 不要依賴 `jq`(未安裝);JSON 解析改用 tea 結構化輸出或由 subagent 解析。
- 留言與回傳內容不得洩漏個資(PII);若議題內容含個資,於回傳內容與留言中僅保留必要資訊或去識別化。
- 回傳內容與留言以繁體中文為主、英文為輔;API 名稱、型別名稱與程式碼片段可保留英文。