Problem
Original text :
「1. 讓 Akashic-Library 自己成為一個 marketplace;」
「整個搬過去」(akashic-mcp 是否一起搬進新 marketplace)
「拆成兩張」(#617 的發布結構與 skill 分開)
— Source: 使用者,2026-09-24(+08:00)對話與 #617 diagnose 的決策題
從 #617 拆出:讓 Akashic-Library 自己成為 marketplace akashic ,列出 akashic-mcp 與新的 akashic-discovery,並把 akashic-mcp 從 psychquant-claude-plugins 移過來。這是 #617 、#620 、#622 、#623 共同的前提。
分析與官方文件查證見 #617 的 Diagnosis(https://github.com/PsychQuant/Akashic-Library/issues/617#issuecomment-5806826472),本 issue 承接其中的「(A) 發布結構」。
Type
feature(發布結構/基礎設施)
已定案(2026-09-24,使用者於 #617 diagnose 選定)
項目
定案
marketplace 名稱
akashic(安裝 id:akashic-mcp@akashic、akashic-discovery@akashic)
目錄佈局
akashic-mcp 留在 plugin/;新 plugin 放 plugins/akashic-discovery/(不動約 224 處寫死的 plugin/ 路徑)
akashic-mcp
整個搬過來,從 psychquant-claude-plugins 移除
規則共用
plugins/akashic-discovery/rules/ 以 symlink 指向 plugin/rules/(官方文件:安裝時 plugin 被複製、不能引用目錄外檔案,共用用 symlink)
Expected
repo 根 .claude-plugin/marketplace.json:name: "akashic"、owner、plugins 列 akashic-mcp(source: "./plugin")與 akashic-discovery(source: "./plugins/akashic-discovery");claude plugin validate . 通過
plugins/akashic-discovery/.claude-plugin/plugin.json:dependencies: ["akashic-mcp"];rules/ symlink;先不含 skill(skill 由 新 skill akashic-work-references(akashic-discovery plugin):往回——從一篇作品的參考文獻找出該補進 library 的論文,驗證建檔並寫入 relations.cites #617 、新 skill akashic-work-cited-by(akashic-discovery plugin):往前的引用追蹤——找出引用某篇的論文,產出候選清單由使用者勾選才建檔,絕不自動匯入 #620 –搬移 akashic-venue-works 從 akashic-mcp 到 akashic-discovery plugin——守衛明確路徑、腳本測試、交叉引用、規則連結、CI 觸發一併更新 #623 各自加入)
守衛涵蓋新 plugin 目錄 :ProtectedInventory.swift 的 glob、rule-coverage.sh、CI 觸發路徑都納入 plugins/*/;負對照 :在新目錄放一支沒接線的測試,守衛必須變紅(證明新目錄真的被看見)
psychquant-claude-plugins:移除 akashic-mcp 條目,加 renames: {"akashic-mcp": null}(官方文件:renames 無法跨 marketplace 轉址,null 只會讓使用者看到「已移除」)
遷移說明(README 與 release note):claude plugin marketplace add PsychQuant/Akashic-Library → claude plugin install akashic-mcp@akashic;舊 id 的設定要移除
版本 tag:akashic-mcp--v<version>、akashic-discovery--v<version>(依賴版本解析用)
harness-devtools 的 marketplace 解析認得 akashic,plugin-update akashic-mcp 找得到它 → 已開 harness-devtools:個人設定(marketplace 位置、binary repo 路徑、組織名)改由使用者 JSON 設定檔提供(仿 .idd),工具只留通用預設 che-plugin-devtools#27 (使用者要求:個人設定改由 JSON 設定檔提供,不寫死在工具裡)
Actual
akashic-mcp 由 psychquant-claude-plugins 以 git-subdir 列出;Akashic-Library 沒有 marketplace.json;守衛只看 plugin/。
Impact
五個 discovery skill(#617 、#620 –#623 )都要住進 akashic-discovery,本 issue 不做它們全部卡住。既有 akashic-mcp 安裝會因搬移而需要重新 add/install,說明必須清楚。
Clarity Surface(idd-clarify run 2026-09-24T03:19:05Z)
Type
Source
Question for you
Status
ambiguity
"從 psychquant-claude-plugins 移除"
psychquant 的舊條目要在 #625 上線時立刻移除,還是保留一段過渡期(兩邊都能裝)再移除?
resolved @ 2026-09-24T03:22:07Z (reason: 使用者 2026-09-24:立刻移除——#625 上線時同步從 psychquant-claude-plugins 刪除條目並加 renames: {"akashic-mcp": null})
missing-context
"舊 id 的設定要移除"
你本機現有的 akashic-mcp@psychquant-claude-plugins 安裝,要由我在 #625 完成時一併遷移成 akashic-mcp@akashic 嗎?
resolved @ 2026-09-24T03:22:07Z (reason: 使用者 2026-09-24:好——#625 完成時一併把使用者本機安裝遷移成 akashic-mcp@akashic)
missing-context
"harness-devtools 的 marketplace 解析認得 akashic"
plugin-update 要認得新 marketplace,得改 harness-devtools;要在 #625 實作時順便到那邊開 issue 嗎?
resolved @ 2026-09-24T03:22:07Z (reason: 使用者 2026-09-24:要開,但 harness-devtools 是給大家用的開發工具:個人設定(marketplace 位置等)應寫成使用者的 JSON 設定檔(仿 IDD 的 .idd),不寫死在工具裡——另開於 che-plugin-devtools)
Current Status
Phase : closed
Last updated : 2026-09-24 by idd-close
Dashboard : #625 (comment)
Key Decisions
Scope Changes
移除:Expected 6(plugin 版本 tag)
新增:刪除 psychquant 空殘骸目錄;parity 測試改為檢查條目不帶 description;assertions-must-be-measured.md 量測列重量;兩份既有 mutations harness 的複製清單補 plugins、.claude-plugin
新增守衛:plugin-roots、marketplace-consistency、official-validate、plugin-roots-mutations
Blocking
Tasks
Commits
Problem
從 #617 拆出:讓 Akashic-Library 自己成為 marketplace
akashic,列出akashic-mcp與新的akashic-discovery,並把akashic-mcp從 psychquant-claude-plugins 移過來。這是 #617、#620、#622、#623 共同的前提。分析與官方文件查證見 #617 的 Diagnosis(https://github.com/PsychQuant/Akashic-Library/issues/617#issuecomment-5806826472),本 issue 承接其中的「(A) 發布結構」。
Type
feature(發布結構/基礎設施)
已定案(2026-09-24,使用者於 #617 diagnose 選定)
akashic(安裝 id:akashic-mcp@akashic、akashic-discovery@akashic)akashic-mcp留在plugin/;新 plugin 放plugins/akashic-discovery/(不動約 224 處寫死的plugin/路徑)plugins/akashic-discovery/rules/以 symlink 指向plugin/rules/(官方文件:安裝時 plugin 被複製、不能引用目錄外檔案,共用用 symlink)Expected
.claude-plugin/marketplace.json:name: "akashic"、owner、plugins列akashic-mcp(source: "./plugin")與akashic-discovery(source: "./plugins/akashic-discovery");claude plugin validate .通過plugins/akashic-discovery/.claude-plugin/plugin.json:dependencies: ["akashic-mcp"];rules/symlink;先不含 skill(skill 由 新 skill akashic-work-references(akashic-discovery plugin):往回——從一篇作品的參考文獻找出該補進 library 的論文,驗證建檔並寫入 relations.cites #617、新 skill akashic-work-cited-by(akashic-discovery plugin):往前的引用追蹤——找出引用某篇的論文,產出候選清單由使用者勾選才建檔,絕不自動匯入 #620–搬移 akashic-venue-works 從 akashic-mcp 到 akashic-discovery plugin——守衛明確路徑、腳本測試、交叉引用、規則連結、CI 觸發一併更新 #623 各自加入)ProtectedInventory.swift的 glob、rule-coverage.sh、CI 觸發路徑都納入plugins/*/;負對照:在新目錄放一支沒接線的測試,守衛必須變紅(證明新目錄真的被看見)akashic-mcp條目,加renames: {"akashic-mcp": null}(官方文件:renames無法跨 marketplace 轉址,null只會讓使用者看到「已移除」)claude plugin marketplace add PsychQuant/Akashic-Library→claude plugin install akashic-mcp@akashic;舊 id 的設定要移除akashic-mcp--v<version>、akashic-discovery--v<version>(依賴版本解析用)akashic,plugin-update akashic-mcp找得到它 → 已開 harness-devtools:個人設定(marketplace 位置、binary repo 路徑、組織名)改由使用者 JSON 設定檔提供(仿 .idd),工具只留通用預設 che-plugin-devtools#27(使用者要求:個人設定改由 JSON 設定檔提供,不寫死在工具裡)Actual
akashic-mcp由 psychquant-claude-plugins 以git-subdir列出;Akashic-Library 沒有marketplace.json;守衛只看plugin/。Impact
五個 discovery skill(#617、#620–#623)都要住進
akashic-discovery,本 issue 不做它們全部卡住。既有akashic-mcp安裝會因搬移而需要重新 add/install,說明必須清楚。Clarity Surface(idd-clarify run 2026-09-24T03:19:05Z)
renames: {"akashic-mcp": null})akashic-mcp@psychquant-claude-plugins安裝,要由我在 #625 完成時一併遷移成akashic-mcp@akashic嗎?akashic-mcp@akashic)akashic"plugin-update要認得新 marketplace,得改 harness-devtools;要在 #625 實作時順便到那邊開 issue 嗎?.idd),不寫死在工具裡——另開於 che-plugin-devtools)Current Status
Phase: closed
Last updated: 2026-09-24 by idd-close
Dashboard: #625 (comment)
Key Decisions
akashic-mcp@akashic呼叫akashic_libraries成功,tasks 6.1 驗收成立.claude/rules/swift-is-the-implementation-language.md(使用者 2026-09-24);官方驗證守衛第一版的 Python 同輪改寫成akashic-guards official-validateclaude plugin validate --strict因 akashic-mcp 的binary_version永遠失敗 → 改--json+ 只有一項的封閉允許清單(artifact 已同步)Scope Changes
assertions-must-be-measured.md量測列重量;兩份既有 mutations harness 的複製清單補plugins、.claude-pluginplugin-roots、marketplace-consistency、official-validate、plugin-roots-mutationsBlocking
Tasks
plugins/x/rules指向../../plugin/rules,以akashic-guards的 glob 函式計數plugins/*/rules/*.md的成員數,決定 4.3 的去重做法。驗證:量測指令與輸出貼到 Akashic-Library 成為 marketplace akashic:列 akashic-mcp(./plugin)與 akashic-discovery(./plugins/akashic-discovery),akashic-mcp 從 psychquant 移入並遷移既有安裝,守衛涵蓋新 plugin 目錄 #625 comment,並回填 design.md 的 Open Questions 第一項。.claude-plugin/marketplace.json,name為akashic、設定owner,列出akashic-mcp(source./plugin)與akashic-discovery(source./plugins/akashic-discovery),遵循「akashic-mcp 留在 plugin/,新 plugin 放 plugins/」。驗證:claude plugin validate --json .的errors為空、warnings恰為允許清單那一條(akashic-mcp 的binary_version)。plugins/akashic-discovery/.claude-plugin/plugin.json、name等於目錄名;Discovery plugin depends on akashic-mcp without a version range(dependencies為純字串akashic-mcp,依「依賴寫純字串、不打 plugin 版本 tag」);Shared rules through a directory symlink(依「rules 目錄整個 symlink」建立rules指向../../plugin/rules)。驗證:claude plugin validate --strict plugins/akashic-discoveryexit 0;git tag -l '*--v*'無輸出;git ls-files -s plugins/akashic-discovery/rules的 mode 為 120000;plugins/akashic-discovery/rules/assertions-must-be-measured.md可讀。akashic-guards plugin-roots-mutations,在暫存複本逐一套用 spec 突變表六列(需要既有受保護檔的列先在複本建立探針並接受進複本的 ratchet),另加 marketplace-consistency 範例表其餘三個失敗列;原始樹不得被修改。驗證:在現行守衛上執行時 exit 非 0,輸出逐條列出未被抓到的突變名稱(證明負對照有鑑別力),並以git status確認原始樹無變動。pluginRoots()與子命令akashic-guards plugin-roots,輸出排序後的 repo 相對路徑、每行一個。驗證:在含plugins/scratch/(無 manifest)的暫存樹上輸出恰為plugin與plugins/akashic-discovery;在現行樹上輸出同樣兩行。akashic-guards marketplace-consistency,實作 spec 的五類封閉列舉,逐條指名違規;manifest 讀不到或 JSON 無法解析時 exit 非 0 並說明。驗證:現行樹 exit 0;3.1 中所有 consistency 突變列改為被抓到。pluginRoots()對每個根展開,經rulessymlink 才到達的檔案依 1.1 的結果以真實路徑去重。驗證:現行樹akashic-guards protected-ratchet的差異恰為本 change 新增的 3 支 Swift 守衛與 2 個 manifest(.claude-plugin/marketplace.json、discovery 的plugin.json),且不含任何plugins/*/rules/路徑(由plugin-roots-mutations的結構檢查釘住);3.1 的「刪除受保護測試」「未接線測試」兩列改為被抓到。plugin/tests/rule-coverage.sh接受選填的根目錄參數(預設plugin),守衛入口以akashic-guards plugin-roots的輸出逐根呼叫。驗證:bash plugin/tests/rule-coverage.sh plugins/akashic-discovery印出 0 個 skill(vacuous)並 exit 0;不帶參數的輸出與變更前逐字相同;3.1 的「skill 未引用規則」列改為被抓到。.github/workflows/census-parity.yml)觸發路徑加入plugins/**與.claude-plugin/**;Swift build workflow(.github/workflows/ci.yml)的 paths-ignore 加入同樣兩條。驗證:akashic-guards trigger-coverage在現行樹通過;3.1 的「移除 plugins/** 觸發路徑」列改為被抓到。claude,存在時執行claude plugin validate --json .,任何 error 或允許清單以外的 warning 即失敗,不存在時印出略過原因。驗證:本機執行bash .githooks/run-guards.sh可見 validate 通過行;在暫存複本的 manifest 加一個未知欄位時該步失敗並指名該欄位;以移除claude的PATH執行可見略過行。plugin-roots、marketplace-consistency、plugin-roots-mutations接進守衛入口,新增的受保護成員以akashic-guards protected-ratchet --accept明示接受。驗證:akashic-guards plugin-roots-mutationsexit 0 且輸出每個突變都被對應守衛抓到;bash .githooks/run-guards.sh全綠。description時 Claude Code 顯示的描述來源,依結果增刪條目描述,並把plugin/tests/plugin-store-format-parity.py中「跨 repo、無法覆蓋」的說明改成實際覆蓋或單一來源的說明。驗證:parity 測試通過,且該檔不再把 repo 內的 marketplace manifest 描述為無法覆蓋。akashic-mcp@psychquant-claude-plugins→claude plugin marketplace add PsychQuant/Akashic-Library→claude plugin install akashic-mcp@akashic;同時量測 clone 是否包含 submodule 與實際大小。驗證:claude plugin list --json對akashic-mcp@akashic無errors欄位,且一個 akashic MCP 工具實際呼叫成功;任一步失敗即重新安裝舊 id 並停止,不進 6.3。 受阻於 [bug] akashic-mcp-v0.12.0 的 release binary 只支援 store format 17,而 tag 原始碼已是 18——format 18 的 store 全被拒 #630(2026-09-24):遷移、依賴自動安裝、plugin list無 errors、MCP 握手與tools/list(31 個)皆成立;碰 store 的工具被拒,因 release v0.12.0 的 binary 只支援 store format 17(store 為 18)。舊安裝共用同一個 binary(SHA-256 相同),裝回舊 id 無濟於事;使用者裁決先續做 6.2–6.4,[bug] akashic-mcp-v0.12.0 的 release binary 只支援 store format 17,而 tag 原始碼已是 18——format 18 的 store 全被拒 #630 修好後補驗本項。akashic-mcp@akashic,並寫入遷移三步與 6.1 量到的 clone 內容;plugin/rules/assertions-must-be-measured.md中「經由公開 marketplace 發布」一列依新 manifest 重新量測並改寫量法。驗證:README 與plugin/的安裝指令不再使用akashic-mcp@psychquant-claude-plugins(舊 id 只出現在 README 的遷移說明);akashic-guards measured-claims-audit通過。akashic-mcp條目、加入renames將akashic-mcp對應到null,刪除其遺留的空目錄plugins/akashic-mcp/,push。驗證:該 manifest 不含akashic-mcp條目且renames內容正確;該目錄不存在;claude plugin marketplace update psychquant-claude-plugins無錯誤。settings.json無akashic-mcp@psychquant-claude-plugins;重啟後呼叫一個 akashic MCP 工具成功;結果記到 Akashic-Library 成為 marketplace akashic:列 akashic-mcp(./plugin)與 akashic-discovery(./plugins/akashic-discovery),akashic-mcp 從 psychquant 移入並遷移既有安裝,守衛涵蓋新 plugin 目錄 #625。 部分受阻於 [bug] akashic-mcp-v0.12.0 的 release binary 只支援 store format 17,而 tag 原始碼已是 18——format 18 的 store 全被拒 #630(2026-09-24):設定檔一項已成立(uninstall 自動移除舊 id,僅剩akashic-mcp@akashic、akashic-discovery@akashic);工具呼叫待 [bug] akashic-mcp-v0.12.0 的 release binary 只支援 store format 17,而 tag 原始碼已是 18——format 18 的 store 全被拒 #630 發布新 binary 並由使用者重啟後補驗。Commits
2ed8a679docs: archive spectra change akashic-plugin-marketplace(本地,隨 main 下次推送)5b7fdf9a/b48bd860/c316435f/c71bfc4d/4b34fdfb([bug] akashic-mcp-v0.12.0 的 release binary 只支援 store format 17,而 tag 原始碼已是 18——format 18 的 store 全被拒 #630:發布流程與 wrapper 修正、0.12.1)e09f0252feat: Akashic-Library 成為 marketplace akashic——discovery 骨架、守衛逐根涵蓋 plugin 根ce49ff2adocs: 安裝說明改為 akashic marketplace、遷移步驟與 clone 實測;量測斷言重量(本地,隨 main 下次推送)59a951e7docs: 實作語言一律 Swift(同輪、非本 issue 範圍)68378f7chore: 移除 akashic-mcp 條目