Merge pull request 'doc-issues 系列 skill 加入不落地檔案絕對準則並調整 sync 專案查詢' (#29) from develop into master

Reviewed-on: #29
Reviewed-by: 系統管理員 <1+admin@noreply.localhost>
This commit was merged in pull request #29.
This commit is contained in:
2026-07-14 07:09:10 +00:00
7 changed files with 48 additions and 35 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "jsc",
"version": "0.1.2",
"version": "0.1.4",
"description": "JSC 文件化 skillsClaude Code / Codex / Antigravity / OpenCode):doc-docker 會整理 docker-compose.yaml 的行內註解與標題日期;doc-funcs 會為專案 functions 建立 .docs 草稿、補齊 XML 文件註解並重建 README 功能列表與使用範例;doc-issues-analyze-to-file 會讀取 Gitea issue、彙整需求、拆成多階段 issue 並產生實作草稿與交付留言;doc-issues-analyze 會把專案/議題/文件來源拆成小功能議題並依到期日實作;doc-issues-sync 會讀取 Gitea 專案或議題、依工作目錄檔案勾稽並同步議題的 TODO 進度與標籤並產生進度留言。所有 skills 以 SKILL.md 為共通標準,於 Claude Code 以 /jsc: 前綴呼叫。",
"skills": "./skills",
"author": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "jsc",
"version": "0.1.2",
"version": "0.1.4",
"description": "JSC 文件化 skillsdoc-docker 會整理 docker-compose.yaml 的行內註解與標題日期;doc-funcs 會為專案 functions 建立 .docs 草稿、補齊 XML 文件註解並重建 README 功能列表與使用範例;doc-issues-analyze-to-file 會讀取 Gitea issue、彙整需求、拆成多階段 issue 並產生實作草稿與交付留言;doc-issues-analyze 會把專案/議題/文件來源拆成小功能議題並依到期日實作;doc-issues-sync 會讀取 Gitea 專案或議題、依工作目錄檔案勾稽並同步議題的 TODO 進度與標籤並產生進度留言。所有 skills 以 SKILL.md 為共通標準。",
"skills": "./skills"
}
+1 -1
View File
@@ -202,7 +202,7 @@ rm -rf ~/.config/opencode/skills/doc-docker ~/.config/opencode/skills/doc-funcs
### `doc-issues-sync`
讀取一個 Gitea 專案(project)或單一議題(優先用 `tea`,否則用 Gitea REST API + `curl` + `GITEA_TOKEN`,不依賴 `jq`);輸入是專案就讀取與此專案關聯的所有議題,輸入是議題就只同步該議題,找不到目標時以 AskUserQuestion 請使用者補齊。議題若有標籤就依標籤分組、以 AskUserQuestion(多選)讓使用者挑選要同步哪些標籤的議題(只有一個議題或全部無標籤則跳過)。接著一個議題派一個 subagent,**以工作目錄下的所有檔案為依據**:判斷議題內的 TODO(markdown 任務清單)是否足以追蹤議題描述的需求、不足就補 TODO 追加到正文、依需求從既有標籤更新議題標籤、逐條勾稽未完成 TODO(含新增)是否已完成、有異動就整理成一則留言。所有對 Gitea 的寫入(改正文/標籤/留言)先產生草稿並以 AskUserQuestion 讓使用者確認執行方式再套用。當使用者要同步議題進度、依專案批次更新議題 TODO、依程式碼勾稽議題完成度、更新議題標籤與進度留言,或提到 doc-issues-sync、issue sync、議題同步、TODO 勾稽、Gitea 專案議題時使用此 skill。
讀取一個 Gitea 專案(project)或單一議題(優先用 `tea`,否則用 Gitea REST API + `curl` + `GITEA_TOKEN`,不依賴 `jq`);輸入是專案時因 tea/Gitea API 無法直接查詢專案,改先取得該 repo 所有開啟中的議題、再過濾掉與此專案無關的議題,輸入是議題就只同步該議題,找不到目標時以 AskUserQuestion 請使用者補齊。議題若有標籤就依標籤分組、以 AskUserQuestion(多選)讓使用者挑選要同步哪些標籤的議題(只有一個議題或全部無標籤則跳過)。接著一個議題派一個 subagent,**以工作目錄下的所有檔案為依據**:判斷議題內的 TODO(markdown 任務清單)是否足以追蹤議題描述的需求、不足就補 TODO 追加到正文、依需求從既有標籤更新議題標籤、逐條勾稽未完成 TODO(含新增)是否已完成、有異動就整理成一則留言。全程不落地任何檔案(不建立 `.docs/`、不寫草稿檔),所有中間成果只留在對話/subagent 回傳,最終只透過 tea 或 Gitea API 寫回議題正文/標籤/留言,且寫入前先以 AskUserQuestion 讓使用者確認執行方式。當使用者要同步議題進度、依專案批次更新議題 TODO、依程式碼勾稽議題完成度、更新議題標籤與進度留言,或提到 doc-issues-sync、issue sync、議題同步、TODO 勾稽、Gitea 專案議題時使用此 skill。
- **Claude Code / Antigravity**`/jsc:doc-issues-sync`
- **Codex**`$doc-issues-sync`,或用 `/skills` 選單
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "jsc",
"version": "0.1.2",
"version": "0.1.4",
"description": "JSC 文件化 skillsdoc-docker 會整理 docker-compose.yaml 的行內註解與標題日期;doc-funcs 會為專案 functions 建立 .docs 草稿、補齊 XML 文件註解並重建 README 功能列表與使用範例;doc-issues-analyze-to-file 會讀取 Gitea issue、彙整需求、拆成多階段 issue 並產生實作草稿與交付留言;doc-issues-analyze 會把專案/議題/文件來源拆成小功能議題並依到期日實作;doc-issues-sync 會讀取 Gitea 專案或議題、依工作目錄檔案勾稽並同步議題的 TODO 進度與標籤並產生進度留言。所有 skills 以 SKILL.md 為共通標準;於 Antigravity 以 /jsc: 前綴呼叫。",
"skills": "./skills/"
}
@@ -15,6 +15,7 @@ description: 讀取一或多筆 Gitea issue URL(優先用 tea,否則用 Gite
2. 否則改用 Gitea REST API + `curl`,帶標頭 `Authorization: token $GITEA_TOKEN`(環境變數 `GITEA_TOKEN` 已設定)。
- **不要依賴 `jq`(環境未安裝)**:需要解析 JSON 時,用 `tea` 的結構化輸出(例如 `--fields ... --output csv`),或把原始 JSON 交給 subagent 解析,不要在指令中 pipe 到 `jq`
- **工作目錄**:所有草稿與文件放在 `.docs/doc-issues-analyze-to-file/`
- **議題描述流程圖**:產生要寫進 issue 的描述(尤其各階段 issue 的 body)時,若有助於理解,盡量加入 **Mermaid 流程圖**` ```mermaid ` flowchartstateDiagramGitea 可直接渲染),把該階段的處理流程、狀態轉移或與其他階段的相依關係視覺化;流程圖必須忠實反映需求與拆分結果,不得杜撰未提及的流程。
## 第 0 步:解析 issue URL 與準備工具
+5
View File
@@ -7,6 +7,10 @@ description: 讀取使用者選擇的一或多種來源(專案編號、議題
你要先做工具可用性檢查並選擇工具;第二步詢問使用者要讀取哪些來源:專案編號、議題編號、檔案文件,至少選一種,接著讀取選定來源並彙整成保存議題內容。第三步必須把上個步驟產生的議題內容拆分成多個小功能議題,並為每個小功能議題產生標題、描述、阻擋關閉規則與依複雜度評估的到期日。第四步必須將小功能議題依到期日排序,逐個議題實作並將進度留言到議題,完成後 PR 到 `develop``master`;**實作任何議題前必須先詢問使用者並取得確認,不得擅自開始修改程式碼;但使用者確認開始實作該議題後,可在該議題範圍內自行 commit、push 與開 PR**。所有中間成果都不准落地成草稿檔,必須一律使用 `tea` 或 Gitea API 保存到議題描述或留言。
## 絕對準則(不可違反)
- **全程不得在磁碟落地任何檔案**:不建立 `.docs/`、不寫草稿檔、不寫暫存檔、不用檔案傳遞中間結果。所有中間成果(需求彙整、保存議題內容、小功能拆分、到期日排序、實作進度、交付摘要)一律留在**對話內容**與 **subagent 的回傳值**,並透過 `tea` 或 Gitea API **保存到議題描述或留言**。唯一例外是使用者確認實作某議題後、在該議題範圍內對**目標 repository 原始碼**進行的正常程式修改與 git commit;除此之外不產生任何本機檔案。
## 前置:輸入與工具
- **輸入來源**:使用者必須選擇要讀取的來源種類,可多選且數量必須 `>= 1`
@@ -19,6 +23,7 @@ description: 讀取使用者選擇的一或多種來源(專案編號、議題
- **不要依賴 `jq`(環境未安裝)**:需要解析 JSON 時,用 `tea` 的結構化輸出(例如 `--fields ... --output csv`),或把原始 JSON 交給 subagent 解析,不要在指令中 pipe 到 `jq`
- **禁止草稿落地**:所有流程都不准建立 `.docs/` 或其他本機草稿檔;需求整理、小功能拆分、排序、進度與交付資訊一律使用 `tea` 或 Gitea API 保存到對應議題描述或留言。
- **TODO list**:所有建立或更新的議題描述最後都必須加上依該描述內容推導出的 `## TODO` 區塊,使用 Markdown checklist`- [ ] ...`);TODO 必須可執行、可驗收,且不得加入描述未提及或無法合理推得的工作。
- **議題描述流程圖**:產生保存議題或小功能議題的描述時,若有助於理解,盡量在描述中加入 **Mermaid 流程圖**` ```mermaid ` flowchartstateDiagramGitea 可直接渲染),把需求流程、狀態轉移或議題間的相依/阻擋關係視覺化;流程圖必須忠實反映需求與拆分結果,不得杜撰未提及的流程。
## 第 1 步:工具可用性檢查與使用方式選擇
+38 -31
View File
@@ -1,11 +1,15 @@
---
name: doc-issues-sync
description: 讀取一個 Gitea 專案(project)或單一議題(優先用 tea,否則用 Gitea REST API + curl + GITEA_TOKEN,不依賴 jq);若給的是專案就讀取與此專案關聯的所有議題若給的是議題就只同步該議題。議題若有標籤就依標籤分組並以 AskUserQuestion 讓使用者挑選要同步哪些標籤的議題(只有一個議題或全部無標籤則跳過)。接著一個議題派一個 subagent,基於工作目錄下的所有檔案:分析議題描述的需求並判斷議題內的 TODO(markdown 任務清單)是否足以追蹤議題描述的需求、不足就補上 TODO 追加到議題正文、依需求從既有標籤更新議題標籤、逐條判斷未完成 TODO(含新增)是否已完成、有異動就整理成一則留言。所有對 Gitea 的寫入(改正文/標籤/留言)先產生草稿並經使用者確認再執行。當使用者要同步議題進度、依專案批次更新議題 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 的異動整理成留言。**修改議題正文、變更議題標籤、留言都是對外且不易復原的動作,subagent 只回傳同步計畫(不落地任何檔案),實際寫入 Gitea 前必須先讓使用者確認**。請依下列階段依序完成。
## 絕對準則(不可違反)
- **全程不得在磁碟落地任何檔案**:不建立 `.docs/`、不寫草稿檔、不寫暫存檔、不用檔案傳遞中間結果。所有中間成果(議題清單、需求分析、追加後的正文、標籤異動、勾稽結果、留言內容)一律留在**對話內容**與 **subagent 的回傳值**裡。最終產物只透過 `tea` 或 Gitea API **寫回議題正文/標籤/留言**,除此之外不產生任何本機檔案。
## 前置:輸入與工具
@@ -16,7 +20,7 @@ description: 讀取一個 Gitea 專案(project)或單一議題(優先用 t
2. 否則改用 Gitea REST API + `curl`,帶標頭 `Authorization: token $GITEA_TOKEN`(環境變數 `GITEA_TOKEN` 已設定;未設定則停下請使用者提供)。
- **不要依賴 `jq`(環境未安裝)**:需要解析 JSON 時,用 `tea` 的結構化輸出(例如 `--fields ... --output csv`),或把原始 JSON 交給 subagent 解析,不要在指令中 pipe 到 `jq`
- **TODO 的定義**:議題正文(body)中的 markdown 任務清單項目,`- [ ]`(未完成)與 `- [x]`(已完成)。本 skill 所有「TODO 追蹤/勾稽/新增」都在這種任務清單上操作。
- **工作目錄**:所有草稿放在 `.docs/doc-issues-sync/`
- **議題描述流程圖**:若要補進議題正文或進度留言的內容有助於理解(例如需求流程、TODO 之間的先後/相依),盡量加入 **Mermaid 流程圖**` ```mermaid ` flowchartstateDiagramGitea 可直接渲染)以視覺化呈現;流程圖必須忠實反映議題需求與 TODO 現況,不得杜撰未提及的流程
## 第 0 步:解析輸入、判斷專案或議題、準備工具
@@ -24,16 +28,17 @@ 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. 建立 `.docs/doc-issues-sync/`(若不存在)
4. **找不到就詢問使用者(AskUserQuestion**:若無法從輸入判斷是專案還是議題、或依輸入查不到對應的專案/議題(例如 API 回 404、專案 id 不存在、repo 拼錯),必須用 AskUserQuestion 請使用者補齊或更正(hostowner/repo、專案 id 或議題 URL)。取得可解析的目標前,不進入下一步。
3. **找不到就詢問使用者(AskUserQuestion**:若無法從輸入判斷是專案還是議題、或依輸入查不到對應的專案/議題(例如 API 回 404、專案 id 不存在、repo 拼錯),必須用 AskUserQuestion 請使用者補齊或更正(hostowner/repo、專案 id 或議題 URL)。取得可解析的目標前,不進入下一步
## 第 1 步:取得要同步的議題清單
- **若輸入是議題**:清單就是這一筆議題,**跳過本步的專案展開**,直接進入第 2 步。
- **若輸入是專案**讀取與此專案關聯的所有議題。
- tea:優先用 tea 對應指令列出專案關聯議題;若該版本 tea 無法列專案議題,改用 API。
- API:以 Gitea 的 projectboard API 取得該專案掛載的所有議題(column/card → issue),彙整成議題清單(每筆記下 `owner/repo``index``title``labels`)。
- 若該 Gitea 版本不支援 project API 或查不到關聯議題,用 AskUserQuestion 告知並請使用者改提供議題清單(或改給單一議題 URL),不要自行臆測要同步哪些議題
- **若輸入是專案****`tea` 與 Gitea API 目前都無法直接查詢專案掛載的議題**,因此改用「先撈全部、再過濾」:
1. 先取得該 `owner/repo` 底下**所有開啟中(open)的議題**:
- tea`tea issues list --repo <owner>/<repo> --login <name> --state open`(必要時加 `--fields index,title,labels`)。
- API`GET {base}/repos/{owner}/{repo}/issues?state=open&type=issues`(注意分頁,逐頁取完)
2. **過濾掉與此專案無關的議題**,只保留屬於目標專案的議題:依每個議題可取得的專案關聯資訊(issue 物件上的 project 欄位、或該議題所屬 project id/名稱)比對目標專案;比對得上才留下。彙整成議題清單(每筆記下 `owner/repo``index``title``labels`)。
3. 若逐議題都**無法可靠判斷是否屬於此專案**(tea/API 完全取不到議題的專案關聯),用 AskUserQuestion 告知此限制,請使用者選擇要如何處理(例如:把該 repo 全部 open 議題都視為要同步、由使用者提供屬於此專案的議題清單/編號、或改給單一議題 URL),不要自行臆測。
## 第 2 步:依標籤分組並詢問要同步哪些(AskUserQuestion
@@ -44,38 +49,38 @@ description: 讀取一個 Gitea 專案(project)或單一議題(優先用 t
- 標籤數量超過 AskUserQuestion 選項上限(4)時,改在訊息中列出全部標籤與各自議題數,請使用者回覆要同步哪些(可用「其他」自訂輸入)。
4. 依選取的標籤過濾清單:保留**帶有任一選取標籤**的議題,作為後續要同步的最終清單。未被選取標籤涵蓋的議題不同步。
## 第 3 步:逐議題派 subagent 產生同步草稿(每個議題一個 subagent
## 第 3 步:逐議題派 subagent 產生同步計畫(每個議題一個 subagent
對最終清單中的**每一個議題各派一個 subagent**。subagent **以目前工作目錄下的所有檔案為依據**,只讀檔案與議題、**只在 `.docs/doc-issues-sync/` 底下寫草稿****不得修改任何工作目錄的原始碼、不得直接改議題正文/標籤、不得直接留言**。每個 subagent 依序做:
對最終清單中的**每一個議題各派一個 subagent**。subagent **以目前工作目錄下的所有檔案為依據**,只讀檔案與議題、**把結果以結構化內容回傳給主 agent,不得在磁碟寫任何檔案****不得修改任何工作目錄的原始碼、不得直接改議題正文/標籤、不得直接留言**。每個 subagent 依序做:
1. **讀取議題**`title``body`(含其中的 TODO 任務清單)、`labels`、以及既有 comments。
- tea`tea issues <index> --repo <owner>/<repo> --login <name> --comments`
- API`GET {base}/repos/{owner}/{repo}/issues/{index}``.../comments`
- 一併盤點該 repo 既有標籤(供第 3.2 用):`GET {base}/repos/{owner}/{repo}/labels`tea`tea labels list`)。
2. **3.1 判斷 TODO 是否足以追蹤議題描述的需求,不足就補**:分析議題描述的需求,逐項對照現有 TODO,判斷目前的 TODO 清單是否足以追蹤議題描述的需求。若不足,補上缺少的 TODO(以未完成 `- [ ]` 形式),規劃**追加到議題正文**草稿中給出「追加後的正文」與「新增了哪些 TODO」)。補的 TODO 必須能對應到議題描述的需求,不得編造需求未涵蓋的項目。
3. **3.2 依需求更新可用標籤**:依議題需求性質,從該 repo **既有標籤**中挑選應掛上(或應移除)的標籤,草稿中列出「建議的標籤異動」(新增哪些、移除哪些、維持哪些)。**不自行新建標籤**,除非使用者要求;找不到合適標籤就維持原樣並標註。
4. **3.3 逐條勾稽未完成 TODO 是否已完成**:對所有**未完成**的 TODO(含 3.1 新增的),逐條依工作目錄下的檔案內容判斷是否已完成。已完成者標記為 `- [x]` 並在草稿記下判斷依據(以 `path:line` 指出對應實作位置);無法從檔案可靠判斷者維持未完成並標註「需人工確認」。
5. **3.4 整理 TODO 異動留言**:若本議題有任何 TODO 異動(**新增**的 TODO,或**狀態變更**——由未完成改為完成),整理成一則留言草稿,內容包含:本次新增了哪些 TODO、哪些 TODO 判定為完成(附對應實作位置)、哪些仍未完成(含原因/需人工確認)。若沒有任何 TODO 異動,草稿標明「無異動、不需留言」。
2. **3.1 判斷 TODO 是否足以追蹤議題描述的需求,不足就補**:分析議題描述的需求,逐項對照現有 TODO,判斷目前的 TODO 清單是否足以追蹤議題描述的需求。若不足,補上缺少的 TODO(以未完成 `- [ ]` 形式),規劃**追加到議題正文**回傳內容中給出「追加後的正文」與「新增了哪些 TODO」)。補的 TODO 必須能對應到議題描述的需求,不得編造需求未涵蓋的項目。
3. **3.2 依需求更新可用標籤**:依議題需求性質,從該 repo **既有標籤**中挑選應掛上(或應移除)的標籤,回傳內容中列出「建議的標籤異動」(新增哪些、移除哪些、維持哪些)。**不自行新建標籤**,除非使用者要求;找不到合適標籤就維持原樣並標註。
4. **3.3 逐條勾稽未完成 TODO 是否已完成**:對所有**未完成**的 TODO(含 3.1 新增的),逐條依工作目錄下的檔案內容判斷是否已完成。已完成者標記為 `- [x]` 並在回傳內容記下判斷依據(以 `path:line` 指出對應實作位置);無法從檔案可靠判斷者維持未完成並標註「需人工確認」。
5. **3.4 整理 TODO 異動留言**:若本議題有任何 TODO 異動(**新增**的 TODO,或**狀態變更**——由未完成改為完成),整理成一則留言內容包含:本次新增了哪些 TODO、哪些 TODO 判定為完成(附對應實作位置)、哪些仍未完成(含原因/需人工確認)。若沒有任何 TODO 異動,回傳標明「無異動、不需留言」。
每個 subagent 產出一份 `.docs/doc-issues-sync/issue-{owner}-{repo}-{index}.md`,至少包含:議題參照與標題、追加後的完整正文(標明新增與勾稽的變更)、建議的標籤異動、TODO 異動留言草稿(或「無異動」)、以及所有「需人工確認」項目。
每個 subagent **回傳**一份結構化同步計畫(**不落地成檔案**,至少包含:議題參照與標題、追加後的完整正文(標明新增與勾稽的變更)、建議的標籤異動、TODO 異動留言內容(或「無異動」)、以及所有「需人工確認」項目。
## 第 4 步:草稿品質檢查
## 第 4 步:同步計畫品質檢查
實際寫入 Gitea 前,主 agent 必須檢查所有議題草稿
實際寫入 Gitea 前,主 agent 必須檢查所有 subagent 回傳的同步計畫(僅在對話中檢查,不寫檔)
- 內容以繁體中文為主、英文為輔,無亂碼或破損文字。
- 每個要同步的議題都有對應草稿;正文的 TODO 變更(新增/勾稽)與留言草稿的敘述一致。
- 每個要同步的議題都有對應的同步計畫;正文的 TODO 變更(新增/勾稽)與留言內容的敘述一致。
- 標籤異動只用到該 repo 既有標籤(名稱/id 對得上第 3.1 盤點結果),未擅自新建標籤。
- 「已完成」的勾稽都有工作目錄檔案的依據;無依據者標為未完成或「需人工確認」,未被誤判為完成。
- 有問題先修正草稿並重新檢查,通過後才進入下一步。
- 有問題先在對話中修正同步計畫並重新檢查,通過後才進入下一步。
## 第 5 步:詢問使用者要如何執行(AskUserQuestion
草稿通過檢查後,主 agent 用 AskUserQuestion 讓使用者確認要如何對 Gitea 執行寫入,至少提供:
同步計畫通過檢查後,主 agent 用 AskUserQuestion 讓使用者確認要如何對 Gitea 執行寫入,至少提供:
1. 全部執行:追加/勾稽 TODO 到議題正文、套用標籤異動、對有異動的議題留言。
2. 只更新議題(正文+標籤),先不留言。
3.產生草稿、先不動 Gitea:僅輸出本機草稿供檢視
3.呈現同步計畫、先不動 Gitea:僅在對話中列出計畫供檢視(不落地檔案、不寫入議題)
4. 逐議題確認:每處理完一個議題就回報,待使用者確認後再做下一個。
5. 其他(由使用者輸入自訂方式)。
@@ -85,27 +90,29 @@ description: 讀取一個 Gitea 專案(project)或單一議題(優先用 t
依使用者選擇,對最終清單的每個議題執行(主 agent 執行,非 subagent):
- **更新正文(TODO 追加+勾稽)**:以草稿中「追加後的完整正文」更新議題 body。
- **更新正文(TODO 追加+勾稽)**:以同步計畫中「追加後的完整正文」更新議題 body。
- tea:對應的 issue 編輯指令;API:`PATCH {base}/repos/{owner}/{repo}/issues/{index}`body `{"body":"<新正文>"}`
- 更新前先重新讀一次議題正文,若與 subagent 讀到的版本已不同(他人期間有改動),停下該議題並回報,避免覆蓋他人變更。
- **標籤異動**:套用建議的新增/移除。
- tea`tea labels`issue 編輯對應指令;API`POST`/`DELETE {base}/repos/{owner}/{repo}/issues/{index}/labels`(用既有 label id)。
- **留言**:對有 TODO 異動的議題張貼留言草稿
- **留言**:對有 TODO 異動的議題張貼留言。
- tea`tea comment --repo <owner>/<repo> --login <name> <index> "<留言內容>"`API`POST {base}/repos/{owner}/{repo}/issues/{index}/comments`body `{"body":"<留言內容>"}`
- 無異動的議題不留言。
- 若需要把 API body 帶入 `curl`,用管線/heredoc/變數帶入,**不要為此在磁碟落地暫存檔**。
- 若選「逐議題確認」,每處理完一個就回報並等待確認再繼續。
## 第 7 步:回報與清理
## 第 7 步:回報
- 回報:輸入是專案或議題、(若為專案)關聯議題數與依標籤篩選後的最終清單、每個議題新增了哪些 TODO、勾稽為完成的 TODO(附實作位置)、標籤異動、是否留言,以及所有「需人工確認」或「Gitea 版本不支援」項目。
- 草稿(`.docs/doc-issues-sync/`)預設保留供檢視;使用者要求清理時才刪除本次產生的檔案,不得刪除 `.docs/` 內其他既有檔案
- 回報:輸入是專案或議題、(若為專案)該 repo open 議題數/過濾後屬於此專案的議題數與依標籤篩選後的最終清單、每個議題新增了哪些 TODO、勾稽為完成的 TODO(附實作位置)、標籤異動、是否留言,以及所有「需人工確認」或「無法判斷是否屬於此專案」項目。
- 因全程不落地檔案,**沒有本機草稿需要清理**;成果都在對話與已寫回的議題正文/標籤/留言中
## 重要限制
- 修改議題正文、變更標籤留言都是對外且不易復原的動作,**必須先經第 5 步使用者確認**;未確認前只產生本機草稿
- **全程不得在磁碟落地任何檔案**(見上方「絕對準則」):中間成果只留在對話與 subagent 回傳值,最終只寫回議題正文標籤留言。
- 修改議題正文、變更標籤、留言都是對外且不易復原的動作,**必須先經第 5 步使用者確認**;未確認前不寫入 Gitea,成果只留在對話中。
- 「TODO 是否完成」「該補哪些 TODO」「該掛哪些標籤」一律以**工作目錄下的檔案**為依據;無法可靠判斷就標「需人工確認」,不得臆測或編造需求未涵蓋的內容。
- subagent 與各步驟只讀檔案與議題、只`.docs/` 草稿,**不得修改任何工作目錄原始碼**。
- subagent 與各步驟只讀檔案與議題、只回傳結構化內容,**不得在磁碟寫任何檔案、不得修改任何工作目錄原始碼**。
- 標籤只從既有標籤挑選,不自行新建(除非使用者要求)。
- 不要依賴 `jq`(未安裝);JSON 解析改用 tea 結構化輸出或由 subagent 解析。
- 留言與草稿不得洩漏個資(PII);若議題內容含個資,於草稿與留言中僅保留必要資訊或去識別化。
- 文件、留言與草稿以繁體中文為主、英文為輔;API 名稱、型別名稱與程式碼片段可保留英文。
- 留言與回傳內容不得洩漏個資(PII);若議題內容含個資,於回傳內容與留言中僅保留必要資訊或去識別化。
- 回傳內容與留言以繁體中文為主、英文為輔;API 名稱、型別名稱與程式碼片段可保留英文。