feat(worklog): 移入工作紀錄並補 Copilot 說明

This commit is contained in:
Jeffery
2026-07-27 16:24:54 +08:00
parent 98c45c78d5
commit f2e6176921
10 changed files with 1122 additions and 16 deletions
+60 -7
View File
@@ -1,7 +1,7 @@
# jsc — 跨 AI 助理文件化 Skill 集合
一個可同時被 **Claude Code、Codex、Antigravity、OpenCode** 安裝的文件化 skill 集合。
目前內含個實作型 skills`doc-docker` 用於整理 `docker-compose.yaml` 的行內註解與標題日期;`doc-funcs` 用於掃描專案 functions、建立 `.docs/` 草稿、補齊 XML 文件註解並重建 README 功能列表與使用範例;`doc-issues-analyze-to-file` 用於讀取 Gitea issue、彙整需求並拆成多階段 issue、產生實作草稿與交付留言;`doc-issues-analyze` 用於把專案/議題/文件來源(議題連同留言與附件一起讀取)拆成小功能議題(母議題須待所有子議題關閉後才可關閉)、分析完成後把屬於專案看板的議題移到「待處理」欄位並依到期日排序留言(不實作程式碼,實作交由 code plugin 的 code-issues);`doc-issues-sync` 用於讀取 Gitea 專案或議題,依工作目錄檔案勾稽並同步議題的 TODO 進度、標籤與專案看板進度欄位、產生進度留言;指定「關閉專案/專案完成」時改為批次把專案所有議題搬到「已完成」並關閉。
一個可同時被 **Claude Code、Codex、Antigravity、OpenCode、GitHub Copilot** 使用的文件化 skill 集合。
目前內含個實作型 skills`doc-docker` 用於整理 `docker-compose.yaml` 的行內註解與標題日期;`doc-funcs` 用於掃描專案 functions、建立 `.docs/` 草稿、補齊 XML 文件註解並重建 README 功能列表與使用範例;`doc-issues-analyze-to-file` 用於讀取 Gitea issue、彙整需求並拆成多階段 issue、產生實作草稿與交付留言;`doc-issues-analyze` 用於把專案/議題/文件來源(議題連同留言與附件一起讀取)拆成小功能議題(母議題須待所有子議題關閉後才可關閉)、分析完成後把屬於專案看板的議題移到「待處理」欄位並依到期日排序留言(不實作程式碼,實作交由 code plugin 的 code-issues);`doc-issues-sync` 用於讀取 Gitea 專案或議題,依工作目錄檔案勾稽並同步議題的 TODO 進度、標籤與專案看板進度欄位、產生進度留言;指定「關閉專案/專案完成」時改為批次把專案所有議題搬到「已完成」並關閉`worklog` 用於把 Claude Code 每次 session stop 的內容整理成六欄工作紀錄並追加到 Gitea wiki
核心是以 [Agent Skills`SKILL.md`](https://agentskills.io) 標準撰寫的共用 skills(唯一真實來源放在 `skills/`),
搭配各助理各自的 plugin manifest,讓**同一個 repo** 可用各家**原生 plugin CLI** 安裝。
在 Claude Code 與 Antigravity 中,skill 以 **`/jsc:` 前綴**呼叫(例如 `/jsc:doc-docker`)。
@@ -16,8 +16,9 @@
| Codex | `codex plugin`marketplace | `$<name>``/skills` 選單 | ❌(用 `$name` |
| Antigravity | `agy plugin install` | `/jsc:<name>` 或自動觸發 | ✅ |
| OpenCode | skills 目錄(複製/clone) | 描述需求自動觸發 | ❌(依名稱) |
| GitHub Copilot | repository instructions`AGENTS.md` / `.github/copilot-instructions.md` | 描述需求並要求讀取對應 `SKILL.md` | ❌(依指示檔) |
> Codex 不支援自訂前綴(skill 以 `$name` 呼叫);OpenCode 由模型依描述自動呼叫。兩者皆**不強制**前綴。
> Codex 不支援自訂前綴(skill 以 `$name` 呼叫);OpenCode 與 Copilot 由模型依描述與指示檔觸發。三者皆**不強制**前綴。
---
@@ -35,6 +36,13 @@ doc/
├── .agents/plugins/
│ └── marketplace.json # Codex marketplacename: "doc"url source 指向本 repo
├── plugin.json # Antigravity 外掛定義(name: "jsc"skills: "./skills/"
├── hooks/
│ └── hooks.json # Claude Code hooksStop → worklog;其他助理不吃此檔)
├── scripts/
│ └── worklog/ # worklog 自動記錄的可執行元件(skill 與 hook 共用)
│ ├── worklog.sh # 主流程:抽本輪 → 濃縮成六欄 → 遮蔽 → 追加到 wiki
│ ├── wiki_api.py # Gitea wiki 讀寫、token 解析、append 重試、週頁命名
│ └── transcript.py # transcript 本輪抽取、耗時估算與機密遮蔽
├── skills/ # ★ 唯一真實來源:所有 skills
│ ├── doc-docker/ # 對齊 docker-compose 註解(含 scripts/
│ │ ├── SKILL.md
@@ -44,14 +52,24 @@ doc/
│ │ └── templates/ # 指令檔開頭「用途/更新時間」標頭範本(command-header.md
│ ├── doc-issues-analyze-to-file/SKILL.md # 讀 issue → 需求文件 → 拆階段 issue → 實作草稿 → 交付留言
│ ├── doc-issues-analyze/SKILL.md # 讀來源 → 保存議題 → 小功能議題(看板移待處理)→ 排序留言(不實作)
── doc-issues-sync/SKILL.md # 讀專案/議題 → 依工作目錄勾稽 TODO → 補 TODO/更新標籤/調整看板欄位 → 進度留言;關閉專案時批次搬「已完成」並關閉
── doc-issues-sync/SKILL.md # 讀專案/議題 → 依工作目錄勾稽 TODO → 補 TODO/更新標籤/調整看板欄位 → 進度留言;關閉專案時批次搬「已完成」並關閉
│ └── worklog/SKILL.md # 工作證明自動記錄的操作與維護
├── AGENTS.md # 跨助理共用指引
└── README.md
```
### worklog 適用範圍
| 功能 | Claude Code | Codex | Antigravity | OpenCode | GitHub Copilot |
| --- | --- | --- | --- | --- | --- |
| `Stop` hook 自動記錄 | ✅ | ❌ 不讀 `hooks/hooks.json` | ❌ | ❌ | ❌ |
| `worklog` 手動模式 | ✅ | ⚠️ 需安裝後保留 `scripts/` | ⚠️ 同左 | ❌ | ❌ |
`worklog` 自動記錄依賴 Claude Code 的 Stop hook 與 transcript JSONL 結構;Copilot 可讀本 repo 的指示檔與 `SKILL.md` 作為工作方式參考,但不能執行此 hook。
---
## 安裝 / 更新 / 移除(各家原生 plugin CLI
## 安裝 / 更新 / 移除(各助理
> 指令中的 repo 網址:`https://gitea.jsc.idv.tw/plugins/doc.git`
>
@@ -136,13 +154,38 @@ git -C ~/jsc-plugin pull
cp -r ~/jsc-plugin/skills/* ~/.config/opencode/skills/
# 移除
rm -rf ~/.config/opencode/skills/doc-docker ~/.config/opencode/skills/doc-funcs ~/.config/opencode/skills/doc-issues-analyze-to-file ~/.config/opencode/skills/doc-issues-analyze ~/.config/opencode/skills/doc-issues-sync
rm -rf ~/.config/opencode/skills/doc-docker ~/.config/opencode/skills/doc-funcs ~/.config/opencode/skills/doc-issues-analyze-to-file ~/.config/opencode/skills/doc-issues-analyze ~/.config/opencode/skills/doc-issues-sync ~/.config/opencode/skills/worklog
```
> **worklog 在 OpenCode 不可用**:上面的複製只帶 `skills/`,不含 `scripts/` 與 `hooks/`worklog 的所有模式都會失敗。
> **Windows PowerShell**`cp -r A B` → `Copy-Item A B -Recurse -Force`、`rm -rf X` → `Remove-Item X -Recurse -Force`、`~` → `$HOME`。
- **呼叫**:直接描述需求,模型會依 skill 描述自動透過 skill 工具呼叫。
### GitHub Copilot
GitHub Copilot 目前不是這類 `SKILL.md` plugin 的原生執行環境;安裝方式是把本 repo 作為 repository instructions 的來源,讓 Copilot 讀 `AGENTS.md` 與對應 `SKILL.md`
```bash
# 安裝到目標 repo(把 doc plugin vendored 進 .github/jsc-plugins/doc
git clone https://gitea.jsc.idv.tw/plugins/doc.git .github/jsc-plugins/doc
cp .github/jsc-plugins/doc/AGENTS.md AGENTS.md
# 更新
git -C .github/jsc-plugins/doc pull
cp .github/jsc-plugins/doc/AGENTS.md AGENTS.md
# 移除
git rm -r .github/jsc-plugins/doc
# 若 AGENTS.md 只供此 plugin 使用,再移除;若已有其他內容,請只刪除 JSC doc 相關段落
# git rm AGENTS.md
```
- 也可把既有 `.github/copilot-instructions.md` 改成引用 `AGENTS.md``.github/jsc-plugins/doc/skills/<skill>/SKILL.md`
- **呼叫**:在 Copilot ChatCoding Agent 任務中描述需求,例如「請依 `.github/jsc-plugins/doc/skills/doc-funcs/SKILL.md` 執行文件化流程」。
- Copilot 不會讀 Claude Code 的 `hooks/hooks.json`,因此 `worklog` 不支援自動 session stop 記錄。
---
## 用 CLI 直接執行 skillheadless / 一次性)
@@ -155,10 +198,11 @@ rm -rf ~/.config/opencode/skills/doc-docker ~/.config/opencode/skills/doc-funcs
| Codex | `codex exec "<prompt>"` | `codex exec '$doc-docker'` |
| Antigravity | `agy -p "<prompt>"` | `agy -p "/jsc:doc-docker"` |
| OpenCode | `opencode run "<message>"` | `opencode run "整理 docker-compose 註解"` |
| GitHub Copilot | Copilot Chat / Coding Agent 任務 | `請依 .github/jsc-plugins/doc/skills/doc-docker/SKILL.md 整理 docker-compose 註解` |
- Claude / Antigravity 支援 `/jsc:` 前綴,直接 `-p "/jsc:<name>"` 即可。
- Codex 以 `$<name>` 觸發;在 shell 請用**單引號**避免 `$` 被展開:`codex exec '$doc-docker'`
- OpenCode 沒有前綴,用自然語言描述需求,模型會自動透過 skill 工具呼叫
- OpenCode 與 Copilot 沒有前綴,用自然語言描述需求;Copilot 任務中請明確指出要讀取的 `SKILL.md`
- 帶引數就接在後面,例如 `claude -p "/jsc:doc-docker docker-compose.yaml"``codex exec '$doc-docker docker-compose.yaml'`
---
@@ -210,6 +254,14 @@ rm -rf ~/.config/opencode/skills/doc-docker ~/.config/opencode/skills/doc-funcs
- **Codex**`$doc-issues-sync`,或用 `/skills` 選單
- **OpenCode**:描述需求自動觸發
### `worklog`
工作證明自動記錄與手動維護流程。Claude Code 的 `Stop` hook 會把每輪工作整理成六個固定欄位:專案/任務名稱、執行細節與產出、花費時間、任務狀態、遇到的困難、解決方式,並追加到 Gitea wiki 當週頁(`Worklog-yyyy-MM-W<週>`)。手動模式提供 `--init``--tune`Claude Code 專屬)、`--diagnose``--append``--show`
- **Claude Code / Antigravity**`/jsc:worklog --diagnose`
- **Codex**`$worklog --diagnose`,或用 `/skills` 選單
- **OpenCode / GitHub Copilot**:不支援(不會帶入或執行 `scripts/``hooks/`
<!-- JSC-SKILLS:END -->
---
@@ -228,3 +280,4 @@ rm -rf ~/.config/opencode/skills/doc-docker ~/.config/opencode/skills/doc-funcs
- Codex`codex plugin marketplace upgrade doc`
- Antigravity`git -C ~/jsc-plugin pull && agy plugin uninstall jsc && agy plugin install ~/jsc-plugin`
- OpenCode`git pull` 後重新複製 `skills/`
- GitHub Copilot:更新 `.github/jsc-plugins/doc` 後同步 `AGENTS.md``.github/copilot-instructions.md`