Skip to content

Akashic-Library 成為 marketplace akashic:列 akashic-mcp(./plugin)與 akashic-discovery(./plugins/akashic-discovery),akashic-mcp 從 psychquant 移入並遷移既有安裝,守衛涵蓋新 plugin 目錄 #625

Description

@kiki830621

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

  1. repo 根 .claude-plugin/marketplace.json:name: "akashic"、owner、plugins 列 akashic-mcp(source: "./plugin")與 akashic-discovery(source: "./plugins/akashic-discovery");claude plugin validate . 通過
  2. 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 各自加入)
  3. 守衛涵蓋新 plugin 目錄:ProtectedInventory.swift 的 glob、rule-coverage.sh、CI 觸發路徑都納入 plugins/*/;負對照:在新目錄放一支沒接線的測試,守衛必須變紅(證明新目錄真的被看見)
  4. psychquant-claude-plugins:移除 akashic-mcp 條目,加 renames: {"akashic-mcp": null}(官方文件:renames 無法跨 marketplace 轉址,null 只會讓使用者看到「已移除」)
  5. 遷移說明(README 與 release note):claude plugin marketplace add PsychQuant/Akashic-Library → claude plugin install akashic-mcp@akashic;舊 id 的設定要移除
  6. 版本 tag:akashic-mcp--v<version>、akashic-discovery--v<version>(依賴版本解析用)
  7. 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

  • (none)

Tasks

  • 1.1 實測守衛的 glob 走訪是否跟隨 symlink 目錄:在暫存樹建立 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 第一項。
  • 2.1 [P] Repository-root marketplace manifest:新增 .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)。
  • 2.2 [P] 依 Plugin directory layout 建立 discovery 骨架:manifest 位於 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-discovery exit 0;git tag -l '*--v*' 無輸出;git ls-files -s plugins/akashic-discovery/rules 的 mode 為 120000;plugins/akashic-discovery/rules/assertions-must-be-measured.md 可讀。
  • 3.1 Mutation proof that new roots are seen(RED 階段):新增子命令 akashic-guards plugin-roots-mutations,在暫存複本逐一套用 spec 突變表六列(需要既有受保護檔的列先在複本建立探針並接受進複本的 ratchet),另加 marketplace-consistency 範例表其餘三個失敗列;原始樹不得被修改。驗證:在現行守衛上執行時 exit 非 0,輸出逐條列出未被抓到的突變名稱(證明負對照有鑑別力),並以 git status 確認原始樹無變動。
  • 4.1 Single source of plugin roots,依「以檔案系統為 plugin 根目錄的權威來源,marketplace manifest 作集合核對」:新增 pluginRoots() 與子命令 akashic-guards plugin-roots,輸出排序後的 repo 相對路徑、每行一個。驗證:在含 plugins/scratch/(無 manifest)的暫存樹上輸出恰為 plugin 與 plugins/akashic-discovery;在現行樹上輸出同樣兩行。
  • 4.2 Filesystem and marketplace manifest agree:新增子命令 akashic-guards marketplace-consistency,實作 spec 的五類封閉列舉,逐條指名違規;manifest 讀不到或 JSON 無法解析時 exit 非 0 並說明。驗證:現行樹 exit 0;3.1 中所有 consistency 突變列改為被抓到。
  • 4.3 Protected inventory covers every plugin root:受保護清單的測試腳本與規則 pattern 改由 pluginRoots() 對每個根展開,經 rules symlink 才到達的檔案依 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 的「刪除受保護測試」「未接線測試」兩列改為被抓到。
  • 4.4 Rule coverage runs per plugin root,依「bash 端經由 akashic-guards plugin-roots 取得清單」與「0 個 skill 的 plugin 視為 vacuous 通過」: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 未引用規則」列改為被抓到。
  • 4.5 [P] CI triggers include plugin roots and the manifest:跑守衛的 workflow(.github/workflows/census-parity.yml)觸發路徑加入 plugins/** 與 .claude-plugin/**;Swift build workflow(.github/workflows/ci.yml)的 paths-ignore 加入同樣兩條。驗證:akashic-guards trigger-coverage 在現行樹通過;3.1 的「移除 plugins/** 觸發路徑」列改為被抓到。
  • 4.6 Official validation where the CLI exists,依「claude plugin validate 只在 pre-push 執行,CI 印出略過」:守衛入口偵測 claude,存在時執行 claude plugin validate --json .,任何 error 或允許清單以外的 warning 即失敗,不存在時印出略過原因。驗證:本機執行 bash .githooks/run-guards.sh 可見 validate 通過行;在暫存複本的 manifest 加一個未知欄位時該步失敗並指名該欄位;以移除 claude 的 PATH 執行可見略過行。
  • 4.7 Mutation proof that new roots are seen(GREEN 階段):把 plugin-roots、marketplace-consistency、plugin-roots-mutations 接進守衛入口,新增的受保護成員以 akashic-guards protected-ratchet --accept 明示接受。驗證:akashic-guards plugin-roots-mutations exit 0 且輸出每個突變都被對應守衛抓到;bash .githooks/run-guards.sh 全綠。
  • 5.1 依「marketplace 條目描述依 /plugin 回落行為決定」:以本機 marketplace 實測 marketplace 條目缺 description 時 Claude Code 顯示的描述來源,依結果增刪條目描述,並把 plugin/tests/plugin-store-format-parity.py 中「跨 repo、無法覆蓋」的說明改成實際覆蓋或單一來源的說明。驗證:parity 測試通過,且該檔不再把 repo 內的 marketplace manifest 描述為無法覆蓋。
  • 6.1 依「跨 repo 發布順序:先上架、驗證可安裝、再移除外部條目」推上本 repo,接著遷移使用者本機安裝:解除安裝 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 修好後補驗本項。
  • 6.2 Install id migration(文件):README 的安裝指令改為 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 通過。
  • 6.3 Install id migration(外部 marketplace):psychquant-claude-plugins 的 manifest 移除 akashic-mcp 條目、加入 renames 將 akashic-mcp 對應到 null,刪除其遺留的空目錄 plugins/akashic-mcp/,push。驗證:該 manifest 不含 akashic-mcp 條目且 renames 內容正確;該目錄不存在;claude plugin marketplace update psychquant-claude-plugins 無錯誤。
  • 6.4 收尾驗證:使用者層設定中不再啟用舊 id,重啟 Claude Code 後 akashic MCP 工具可用。驗證:使用者層 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

  • 2ed8a679 docs: 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)
  • e09f0252 feat: Akashic-Library 成為 marketplace akashic——discovery 骨架、守衛逐根涵蓋 plugin 根
  • ce49ff2a docs: 安裝說明改為 akashic marketplace、遷移步驟與 clone 實測;量測斷言重量(本地,隨 main 下次推送)
  • 59a951e7 docs: 實作語言一律 Swift(同輪、非本 issue 範圍)
  • psychquant-claude-plugins 68378f7 chore: 移除 akashic-mcp 條目

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureNew capability

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions