Commit Graph
23 Commits
Author SHA1 Message Date
jiantw83 5ee39ee2e3 refactor(plugin 命名空間): generic 改名 shared 2026-07-31 17:33:11 +00:00
jiantw83 e47f4873c7 feat(skills): 新增 plugins-install 與 plugins-uninstall,一次操作所有 JSC plugin
`plugins-install` 一次安裝或更新 jsc-code、jsc-doc、jsc-persona:先盤點每個
plugin 已安裝或未安裝,未安裝就安裝、已安裝就更新到最新,最後以表格回報動作、
結果與版本。不含 jsc-generic 自己(它是這兩個 skill 的所在地)。

`plugins-uninstall` 一次移除四個 JSC plugin:動手前先列出將被移除的項目與
不會被碰的資料請使用者確認,移除順序固定把 jsc-generic 放最後。人格倉庫、
~/.roles、~/.memory 與 Gitea 存取庫一律不刪。

兩個 skill 都涵蓋 Claude Code、Codex、GitHub Copilot CLI、Antigravity 四家
原生 plugin CLI,OpenCode 走複製/逐一刪除 skills 目錄(不用萬用字元,避免
掃到別處裝的 skill)。

同時附帶:README 補上 Skills 目錄與適用範圍、三份 manifest 的 description
補述新能力,並依 spec-plugin-version 把三家 manifest 版號一起升到 0.1.6
(master 現行為 0.1.5)。
2026-07-31 08:34:28 +00:00
JefferyandClaude Opus 5 46caabe4d8 feat(role): 新增點名載入,對話中叫名字即可切換角色
- `UserPromptSubmit` hook(`role_call.sh`)比對訊息開頭的角色名稱/ID/`aliases` 別名,
  命中即注入該角色人格與記憶並接手本輪;未點名時不輸出內容也不寫檔案。
- 抽出 `role_context.sh` 共用 context 組裝,SessionStart 與點名載入共用同一份人格與操作規則,
  避免兩種載入方式漂移;實測 SessionStart 注入內容與改動前 byte-identical。
- 新增階段角色狀態(`~/.roles/.sessions/<工作階段>.role`),`Stop` hook 改以「本階段實際角色」
  寫記憶,避免點名換人後把跟 A 的對話記進 B 的記憶。
- `SessionEnd` 改為釋放本階段名下所有角色鎖並清掉階段狀態檔。
- 切換時先確認取得目標角色鎖才釋放原角色鎖,避免出現兩個角色都沒有的空窗。
- 睡眠時段、目標角色已被其他活躍階段佔用、點名的是已在場的角色時,一律不切換。
- 新增 `ROLE_CALL_ENABLED`(總開關)與 `ROLE_CALL_MARKER_ONLY`(只認 `@名字`)。
- 順帶修正 `role_capture.sh` 的 `--postcompact` 分支在 `PROJECT` 賦值前就使用它,
  導致壓縮摘要記憶的 `sources` 一直為空。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-29 13:38:25 +08:00
JefferyandClaude Opus 5 3c0214a927 feat(role): SessionEnd 立即釋放角色鎖,不必等閒置逾時
關掉 CLI 後立刻重開新階段時,角色會被自己上一個階段的殘留鎖擋住:
原本只有「持有者 transcript 閒置超過 30 分鐘」與手動 --unlock 兩條釋放
路徑,而剛關閉的 transcript mtime 還很新,機制無法區分「已關閉」與
「正在別的視窗打字」,因此最久要等 30 分鐘才叫得回角色。

新增 SessionEnd hook(role_unload.sh)作為快速路徑,工作階段正常結束時
立即刪鎖。mtime 閒置逾時後援保留不動 —— SessionEnd 不保證觸發
(kill -9、直接關終端機、WSL 關機、當機都不會跑),少了後援會在異常
結束時把角色鎖死到下次手動解鎖,兩條路徑缺一不可。

只在鎖檔登記的 transcript 等於自己時才釋放:被鎖擋下的第二個階段結束時
同樣會觸發 SessionEnd,若無條件刪鎖會把仍在使用中的第一個階段的鎖一起
刪掉,等於讓單一實例限制形同虛設。無法取得 transcript、sub agent
(ROLE_SKIP_INSTANCE_LOCK=1)、限制已停用(ROLE_SINGLE_INSTANCE=0)
一律不動鎖。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-29 12:45:58 +08:00
JefferyandClaude Opus 5 db492e6ba7 refactor(plugin 命名空間): plugin 更名 jsc-generic、hooks 只註冊自己擁有的 role
- 五份 manifest 的 name 由 jsc 改為 jsc-generic
- hooks/hooks.json 由合併超集改為只註冊 SessionStart(role_load)與 Stop(role_capture):worklog 的 hook 交還 jsc-doc
- hook 腳本搜尋路徑改指 jsc-generic
- role skill 更新 hooks 說明:改名後各 plugin 名稱獨立、互不覆蓋,不再需要三份同步;並註明不可再把別的 plugin 的 hook 寫進自己的 hooks.json
- skill 名稱不變(role、spec-*),指令引用改為 /jsc-generic: 前綴
- 版號 0.0.8 → 0.0.9

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-28 17:07:14 +08:00
Jeffery 4c5e7034ff fix(plugin 版本): 以 master 計算 PR 最終升版 2026-07-28 16:13:41 +08:00
Jeffery d14ca6556c fix(plugin 版本): patch 進位 minor 規則 2026-07-28 16:09:18 +08:00
Jeffery 3c7c3d16b0 feat(role): 支援角色推斷與匯出 2026-07-28 16:07:20 +08:00
JefferyandClaude Opus 5 6d5c4e3f02 docs(role): 補同名 plugin hooks 註冊限制與分層載入說明
SKILL.md 記錄實測結論:同名 plugin 的 hooks 只會生效一份(hookCount 為
1),三個 repo 的 hooks/hooks.json 必須是同一份合併超集且不得假設
CLAUDE_PLUGIN_ROOT 指向擁有該腳本的 plugin。另補上分層載入原則、
personal_memory_consent 狀態欄位與 Stop hook 更新同意狀態的規則。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-28 14:21:48 +08:00
Jeffery a3fcd62a4c docs(role): 說明心理學記憶型態結構 2026-07-28 12:46:22 +08:00
Jeffery 57a493e612 docs(role): 補充記憶預算與 Node 工具說明 2026-07-28 12:30:39 +08:00
Jeffery 716fd2c26e docs(README): 說明角色 ID 與初始記憶流程 2026-07-28 11:47:13 +08:00
JefferyandClaude Opus 5 32f53edd78 docs(README): 補上 role skill 與元件對各助理的適用範圍
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-28 11:11:16 +08:00
Jeffery 43d157f0ce docs(README): 改用 Copilot CLI plugin 指令 2026-07-27 16:37:56 +08:00
Jeffery 497dc55b61 refactor(generic 規範): 移除 worklog 並補 Copilot 說明 2026-07-27 16:24:53 +08:00
JefferyandClaude Opus 5 8521682583 docs(助理適用範圍): 補元件適用矩陣、OpenCode 限制與可執行元件注意事項
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-27 11:51:42 +08:00
JefferyandClaude Opus 5 5d5101795c docs(README): 補上 worklog 元件、目錄結構與 generic 定位說明
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-27 11:20:15 +08:00
Jeffery a2b0a51a35 chore(marketplace): 將 marketplace 名由 jsc-plugins 改為 generic 並同步 README 2026-07-17 13:57:33 +08:00
Jeffery dc1705a449 docs(README): 修正殘留的 template 值為 generic 專屬設定(repo 網址/路徑/目錄樹/marketplace 名) 2026-07-17 13:47:12 +08:00
Jeffery 27b10ae154 chore(hello): 移除 hello 範例 skill 並同步 README 改用 spec-output 示範 2026-07-17 11:56:16 +08:00
JefferyandClaude Fable 5 f6ef20e1b8 docs(README): Skills 目錄與新增 skill 步驟補上 spec-plugin-version
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 09:19:33 +08:00
JefferyandClaude Fable 5 8af355b147 docs(README): Skills 目錄補上共用規範(spec-*)清單與引用方式
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 08:58:18 +08:00
jiantw83 8f555734ca Initial commit 2026-07-16 07:59:55 +00:00