persona 原本是唯一沒有套用 gen-plugin-files.mjs 樣板的 repo,AGENTS.md 149 行手工維護的規則多數已在 README.md 對應章節與各 skill 的 SKILL.md 有完整覆蓋。改為透過 plugin.meta.json 的 agentsExtraBullets 機制產生,只保留純開發安全限制(狀態變更走 persona.mjs、人格鎖與隔離、selftest 要求、Node/ESM 限制),深入行為細節一律指向對應文件,降為 21 行。同步移除 plugin.meta.json 裡已無意義的 readmeHeadings 覆寫(新增一個 skill 節名已統一)。
22 lines
2.5 KiB
Markdown
22 lines
2.5 KiB
Markdown
# jsc-persona — 共用 Skills(跨 AI 助理)
|
||
|
||
本 repo 是一組以 **Agent Skills(`SKILL.md`)** 標準撰寫的共用 skills,可同時被 Claude Code、Codex、Antigravity、OpenCode 使用。
|
||
|
||
## 給 AI 助理的指引
|
||
|
||
- 所有可用的 skills 位於本 repo 的 `skills/<name>/SKILL.md`。
|
||
- 在處理任務前,先比對使用者需求與各 skill `SKILL.md` frontmatter 的 `description`,若相符請載入並依其步驟執行。
|
||
- **呼叫慣例**:在 Claude Code 與 Antigravity 中,這些 skill 以 `/jsc-persona:<name>` 呼叫;Codex 以 `$<name>`、OpenCode 由模型依描述自動觸發 — 兩者沒有 `/jsc-persona:` 前綴,不需強制加。
|
||
- 完整清單與每個 skill 的用途,請見 `README.md` 的「Skills 目錄」。
|
||
- **所有狀態變更都經過 `scripts/persona.mjs`**,不要手動編輯 `state/lock.json`、`.runtime/`、`memory/INDEX.md`、`relations/graph.mmd`(這些由 CLI 產生)。
|
||
- **一個程序只能載入一個人格**,同一 session 的 sub agent 沿用同一把鎖;不要讀取其他人格的目錄,會被 hook deny,這是設計上的紅線。
|
||
- **人格資料不在本 repo**,預設在 `~/.claude/personas/`(可用 `PERSONA_HOME` 覆寫);人格由使用者呼叫才載入,不要自己挑一個人格附身。
|
||
- 劇場模式、睡眠、講話規則、情緒模型、羞恥度、記憶衰減、人格圖示、人格編號、Gitea 同步、語氣診療(`persona-therapist`)、原作匯入(`persona-story`)等行為細節,見 `README.md` 對應章節與各 skill 的 `SKILL.md`;動到 `scripts/persona-lib.mjs` 相關邏輯前務必先讀懂對應章節與 `selftest.mjs` 的既有案例,不要憑印象改。
|
||
- 改動鎖或隔離邏輯(`guardDecide`/`acquireLock`/`promotionCandidates`/`exportBundle`/`importBundle`)後,**必須**跑 `node scripts/selftest.mjs` 且全綠,並為新規則補一條測試;改動重複判定門檻(`similarity`/`REPEAT_THRESHOLD`)要用 selftest ⑪ 對照案例確認;改動同步分區(`AREAS`)後 selftest ⑬ 的「不重不漏」檢查必須維持全綠。
|
||
- 腳本一律 **Node.js(`.mjs`, ESM)**,只用內建模組(fs/path/os/crypto);hook 必須在任何環境都能跑,不得引入 npm 依賴。selftest 自己會設 `PERSONA_GITEA=off`,**絕對不要**讓測試碰到真的 Gitea。
|
||
|
||
## 慣例
|
||
|
||
- 新增 skill 一律放在 `skills/<name>/`,且 `<name>` 使用小寫與連字號。
|
||
- `description` 要寫清楚觸發條件(何時用、何時不用),這是跨助理自動載入的唯一依據。
|