# jsc-persona — 共用 Skills(跨 AI 助理) 本 repo 是一組以 **Agent Skills(`SKILL.md`)** 標準撰寫的共用 skills,可同時被 Claude Code、Codex、Antigravity、OpenCode 使用。 ## 給 AI 助理的指引 - 所有可用的 skills 位於本 repo 的 `skills//SKILL.md`。 - 在處理任務前,先比對使用者需求與各 skill `SKILL.md` frontmatter 的 `description`,若相符請載入並依其步驟執行。 - **呼叫慣例**:在 Claude Code 與 Antigravity 中,這些 skill 以 `/jsc-persona:` 呼叫;Codex 以 `$`、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//`,且 `` 使用小寫與連字號。 - `description` 要寫清楚觸發條件(何時用、何時不用),這是跨助理自動載入的唯一依據。