feat(target): 新增 TARGET.md 每日排程執行 skill #18

Merged
admin merged 3 commits from develop into master 2026-08-03 05:34:17 +00:00
Member

變更摘要

新增 skill target:把專案根目錄的 TARGET.md 當每日待辦清單,用系統排程每天 00:00 自動跑完它,完成後分類提交、push develop,再對遠端預設分支發 PR。

模式

模式 行為
--schedule on 依 OS 建立/更新排程:Linux/WSL/macOS 用 crontab、Windows 用 schtasks
--schedule off 只移除自己那一筆排程
--run 立即(或由排程)執行一次,走 A~F 六階段
不帶參數 只回報現況:排程裝了沒、下次執行時間、TARGET.md 剩幾項未完成

--run 六階段

階段 動作
A Git 同步 工作區有未提交變更即停止(不 stash、不 reset);fetch 後切到 develop遠端沒有 develop 就從遠端預設分支建立一條
B 盤點 TARGET.md- [ ] 未勾選項目(含子項目從屬關係)依檔案順序排定;檔案不存在或全部完成則正常結束
C 逐項實作 一次做一項,完成就地改為 - [x] 並補 (yyyy/MM/dd HH:mm:ss 完成);語意不明或驗證失敗不硬做,保持未勾選並補 > ⏭️ 待人工處理:<原因>
D 分類提交 依 conventional commit 類型分組,每型一個 commit,範圍寫實際模組名
E push develop:認證管理器 → token → 皆失敗則停止
F 發 PR 透過 Gitea API 對遠端預設分支開 PR;已有相同 develop → 預設分支的 open PR 就沿用不重開

幾個刻意寫入的防呆

  • crontab 以 # jsc-code:target <專案路徑> 行尾標記做冪等增刪,絕不覆寫整份 crontab、不刪其他排程;並註明 crontab -l 在無排程時回非 0,不可據此當成空的覆寫。
  • 安裝後檢查排程服務是否真的在跑 —— WSL 預設不啟動 cron 且重開要再啟一次,偵測到就明確告知。
  • log 寫到 ~/.jsc/ 而非專案內,避免每次執行都多出未追蹤檔污染 D 階段的變更盤點。
  • 排程屬非互動環境,會提醒先在該專案預先授權助理所需工具,但不代為加上略過權限的旗標(安全取捨留給使用者)。
  • F 階段先查既有 open PR 再決定沿用或新建,每天執行不會灌出一堆 PR。

影響範圍

檔案 內容
skills/target/SKILL.md 新增
README.md 目錄結構、Skills 目錄、OpenCode 移除指令、開頭簡介同步
三份 manifest 版號 0.0.2 → 0.0.3

既有 skills 未受影響;共用規範一律引用 /jsc-shared:spec-*,與 master 現況一致。

Commit

  • feat(target): 新增 TARGET.md 每日排程執行、分類提交、push develop 與發 PR 流程
  • docs(README): 補上 target skill 說明與目錄結構
  • chore(plugin 版本): 三家 manifest 升版 0.0.3
## 變更摘要 新增 skill `target`:把**專案根目錄的 `TARGET.md`** 當每日待辦清單,用**系統排程**在**每天 00:00** 自動跑完它,完成後分類提交、push `develop`,再對遠端預設分支發 PR。 ### 模式 | 模式 | 行為 | | --- | --- | | `--schedule on` | 依 OS 建立/更新排程:Linux/WSL/macOS 用 `crontab`、Windows 用 `schtasks` | | `--schedule off` | 只移除自己那一筆排程 | | `--run` | 立即(或由排程)執行一次,走 A~F 六階段 | | 不帶參數 | 只回報現況:排程裝了沒、下次執行時間、`TARGET.md` 剩幾項未完成 | ### `--run` 六階段 | 階段 | 動作 | | --- | --- | | A Git 同步 | 工作區有未提交變更即停止(不 stash、不 reset);`fetch` 後切到 `develop`,**遠端沒有 `develop` 就從遠端預設分支建立一條** | | B 盤點 | 讀 `TARGET.md` 的 `- [ ]` 未勾選項目(含子項目從屬關係)依檔案順序排定;檔案不存在或全部完成則正常結束 | | C 逐項實作 | 一次做一項,完成就地改為 `- [x]` 並補 `(yyyy/MM/dd HH:mm:ss 完成)`;語意不明或驗證失敗**不硬做**,保持未勾選並補 `> ⏭️ 待人工處理:<原因>` | | D 分類提交 | 依 conventional commit 類型分組,每型一個 commit,範圍寫實際模組名 | | E push | 推 `develop`:認證管理器 → token → 皆失敗則停止 | | F 發 PR | 透過 Gitea API 對**遠端預設分支**開 PR;**已有相同 `develop` → 預設分支的 open PR 就沿用不重開** | ### 幾個刻意寫入的防呆 - crontab 以 `# jsc-code:target <專案路徑>` 行尾標記做冪等增刪,**絕不覆寫整份 crontab、不刪其他排程**;並註明 `crontab -l` 在無排程時回非 0,不可據此當成空的覆寫。 - 安裝後檢查排程服務是否真的在跑 —— **WSL 預設不啟動 cron 且重開要再啟一次**,偵測到就明確告知。 - log 寫到 `~/.jsc/` 而非專案內,避免每次執行都多出未追蹤檔污染 D 階段的變更盤點。 - 排程屬非互動環境,會提醒**先在該專案預先授權**助理所需工具,但**不代為加上略過權限的旗標**(安全取捨留給使用者)。 - F 階段先查既有 open PR 再決定沿用或新建,每天執行不會灌出一堆 PR。 ## 影響範圍 | 檔案 | 內容 | | --- | --- | | `skills/target/SKILL.md` | 新增 | | `README.md` | 目錄結構、Skills 目錄、OpenCode 移除指令、開頭簡介同步 | | 三份 manifest | 版號 0.0.2 → 0.0.3 | 既有 skills 未受影響;共用規範一律引用 `/jsc-shared:spec-*`,與 master 現況一致。 ## Commit - `feat(target): 新增 TARGET.md 每日排程執行、分類提交、push develop 與發 PR 流程` - `docs(README): 補上 target skill 說明與目錄結構` - `chore(plugin 版本): 三家 manifest 升版 0.0.3`
jiantw83 added 3 commits 2026-08-03 04:43:30 +00:00
admin approved these changes 2026-08-03 05:34:14 +00:00
admin merged commit 9d8ac26a3b into master 2026-08-03 05:34:17 +00:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: plugins/code#18