diff --git a/.claude/memory/MEMORY.md b/.claude/memory/MEMORY.md index 49bd117..7907144 100644 --- a/.claude/memory/MEMORY.md +++ b/.claude/memory/MEMORY.md @@ -1,9 +1,9 @@ # Memory Index -> _Last synced: 2026-07-10 | Base commit: `a13898b`_ +> _Last synced: 2026-08-22 | Base commit: `a64c646`_ | 文件 | 描述 | 类型 | 引用 | Commit | |------|------|------|------|--------| -| decisions.md | 关键架构决策:无版本号/userConfig/Bearer Token/SKILL.md规范/路径锁定/memcore三项优化/memcore-shared共享层/lint_report保活/Base commit兜底/obsidian社区对标审查/memory-lint速度分档过期检测 | project | 2 | a13898b | -| project_overview.md | 项目定位、目录结构、插件规范、发布流程(huanxi/memcore/obsidian 10 技能) | project | 1 | fad7335 | -| feedback_plugin_dev.md | 插件开发协作规范:同步四处/路径解析/工具签名对照/MCP docstring单一真相/签名变更全量扫描 | feedback | 1 | 38beecb | -| lint_report.md | memory-lint 最新执行结果 | lint | 0 | 38beecb | +| decisions.md | 关键架构决策:无版本号/userConfig/Bearer Token/SKILL.md规范/路径锁定/memcore三项优化/memcore-shared共享层/lint_report保活/Base commit兜底/obsidian社区对标审查/memory-lint速度分档过期检测/Codex插件骨架与memcore-codex独立目录/Codex侧bearer_token_env_var/不做Antigravity兼容 | project | 3* | a64c646 | +| project_overview.md | 项目定位、目录结构、插件规范、发布流程(huanxi/huanxi-admin/memcore/obsidian,均含 Codex 支持情况) | project | 2 | a64c646 | +| feedback_plugin_dev.md | 插件开发协作规范:同步四处/路径解析/工具签名对照/MCP docstring单一真相/签名变更全量扫描 | feedback | 2 | 38beecb | +| lint_report.md | memory-lint 最新执行结果 | lint | 0 | a64c646 | diff --git a/.claude/memory/decisions.md b/.claude/memory/decisions.md index 3261c33..27377a7 100644 --- a/.claude/memory/decisions.md +++ b/.claude/memory/decisions.md @@ -1,9 +1,9 @@ --- name: 架构决策 -description: Marketplace 设计中的关键技术决策及其原因:无版本号/userConfig/Bearer Token/SKILL.md规范/路径锁定/memcore三项优化/memcore-shared共享层/lint_report保活/Base commit兜底/obsidian社区对标审查/memory-lint速度分档过期检测 +description: Marketplace 设计中的关键技术决策及其原因:无版本号/userConfig/Bearer Token/SKILL.md规范/路径锁定/memcore三项优化/memcore-shared共享层/lint_report保活/Base commit兜底/obsidian社区对标审查/memory-lint速度分档过期检测/Codex插件骨架与memcore-codex独立目录/Codex侧bearer_token_env_var/不做Antigravity兼容 type: project -last_updated: 2026-07-10 -commit: a13898b +last_updated: 2026-08-22 +commit: a64c646 --- # 关键架构决策 @@ -24,7 +24,7 @@ commit: a13898b **Why**:`sensitive: true` 将 token 存入系统钥匙链(或 `~/.claude/.credentials.json`),不会出现在 settings.json 中,避免随仓库提交泄露。Claude Code 安装插件时自动弹窗提示用户输入,体验好于环境变量。 -**How to apply**:其他需要用户配置 API Key/Token 的插件,均应使用此模式,不要用 `${ENV_VAR}` 方式。 +**How to apply**:其他需要用户配置 API Key/Token 的插件,均应使用此模式,不要用 `${ENV_VAR}` 方式。此模式仅限 Claude Code 侧——Codex 没有等价钥匙链机制,见 [[decisions.md#Codex 侧 MCP Token 用 bearer_token_env_var,不用 ${VAR} 模板(2026-08-22)]]。 ```json "userConfig": { @@ -174,3 +174,39 @@ commit: a13898b **How to apply**:新增/调整任何"距离上次更新多久算过期"的判定逻辑时,优先考虑用活跃度信号(提交频次、变更行数等)分档,而非固定日历阈值。常量集中在 `memcore-shared` 全局常量表单点维护,调整数值只改一处。 **See Also**:[[decisions.md#memcore-shared:路径锁定 + 全局常量的单一来源]] + +--- + +## Codex/ChatGPT 桌面应用插件骨架——三个插件共享 skills/,memcore 独立目录(2026-08-22) + +**结论**:huanxi、huanxi-admin、obsidian 的 Codex 版本通过在同一插件目录下新增 `.codex-plugin/plugin.json`(与 `.claude-plugin/plugin.json` 并列)实现,共用同一份 `skills/`;`memcore` 因为 Codex 插件校验器要求 `skills` 字段必须精确指向 `./skills`(不能自定义子路径),且 Codex 版记忆体系架构(`AGENTS.md` 会话入口 / `.codex/memory` 目录约定 / 无远程同步)与 Claude 版本质不同,无法共用同一份 `skills/` 内容,故新建独立插件目录 `plugins/memcore-codex/`;marketplace.json 里对外插件名仍叫 `memcore`(目录名与插件名不要求一致)。`memcore-codex` 以本机已装的 Codex 原生 memcore 技能为底稿,抽出 `memcore-shared` 共享 include,并吸纳了 Claude 版四项内容:过期检测速度分档、NEED-HUMAN 稳定 ID 保活、memory-update 锚点丢失兜底、更完整的 lint_report 模板。 + +**Why**:用本机已安装的 Codex `plugin-creator` 技能自带的 `validate_plugin.py` 实测确认——`skills` 字段规整化后必须精确等于 `"skills"`,`mcpServers` 字符串路径必须精确等于 `"./.mcp.json"`,且都必须在插件根目录(不能嵌套进 `.codex-plugin/`);顶层 `interface` 块(displayName/shortDescription/longDescription/developerName/category/capabilities/defaultPrompt)是必填项,`hooks` 字段不被接受,`disable-model-invocation` 只能是 `false` 或不写。旧的 `feat/codex-marketplace` 分支骨架因为缺 `interface` 块、`.mcp.json` 放错位置,实际过不了这个校验(已删除该分支)。Codex 侧技能级"内部 include 不给用户直接调用"靠 `agents/openai.yaml` 的 `policy.allow_implicit_invocation: false` + description 措辞实现,不能像 Claude 侧那样用 frontmatter 禁用模型调用。 + +**How to apply**:新增/修改 Codex 插件时,先跑本机 `~/.codex/skills/.system/plugin-creator/scripts/validate_plugin.py ` 校验再算完成;技能内容若和 Claude 版能共用就共用同一 `skills/`,若架构本质不同(如需要独立会话入口/目录约定)就整个插件目录独立,不要硬塞进同一 `skills/`。 + +**See Also**:[[project_overview.md#已发布插件]]、[[decisions.md#memcore-shared:路径锁定 + 全局常量的单一来源]]、[[decisions.md#memcore lint_report 增量保活:稳定 ID + resolved 跳过]]、[[decisions.md#memory-update Phase 1 锚点丢失兜底]] + +--- + +## Codex 侧 MCP Token 用 bearer_token_env_var,不用 ${VAR} 模板(2026-08-22) + +**结论**:Codex(CLI + ChatGPT 桌面应用)没有等价于 Claude `userConfig` 钥匙链的插件级敏感配置机制。`.mcp.json` 里 HTTP 类型 MCP server 的 Bearer Token 必须用专用字段 `bearer_token_env_var: "ENV_VAR_NAME"`(只放变量名,不放值,由 Codex 进程启动时读取该环境变量),而不是在 `headers` 里写 `"Authorization": "Bearer ${VAR}"` 模板插值——后者不被 Codex 支持,会把 `${VAR}` 字面量原样发出去导致鉴权失败。 + +**Why**:查证 Codex 官方 MCP 配置文档(`config.toml` / `codex mcp add` 场景)确认专用字段是 `bearer_token_env_var` / `env_http_headers`;且有未解决的官方 issue([openai/codex#24401](https://github.com/openai/codex/issues/24401))明确指出插件打包的 MCP server 目前没有官方定义的用户密钥配置路径,环境变量注入(父进程启动前已设置)是当前唯一现实可用方式。实测踩坑:改完 `.mcp.json` 后本机 `codex plugin add` 缓存的旧版本(`~/.codex/plugins/cache////`)不会自动更新,必须 `codex plugin marketplace upgrade ` 刷新快照后重新 `codex plugin add` 才会生效。 + +**How to apply**:新增/修改任何 Codex 插件的 HTTP MCP server 配置,一律用 `bearer_token_env_var` 字段;环境变量的设置方式区分场景——CLI 用 shell `export`(写进启动脚本),ChatGPT 桌面应用(图形界面启动,不继承 shell)用 macOS `launchctl setenv` 或 Windows 系统环境变量。改完插件内容 push 后,本机测试前要先 `codex plugin marketplace upgrade ` + 重新 `codex plugin add @`,否则读到的还是装的时候那份缓存。 + +**See Also**:[[decisions.md#huanxi plugin 使用 userConfig 而非环境变量传 Token]](对照:Claude 侧用 userConfig 钥匙链,Codex 侧被迫用环境变量,是两个平台能力差异,不是我们设计不一致) + +--- + +## 不做 Antigravity(Google agy / Antigravity 2.0)兼容(2026-08-22) + +**结论**:调研后决定暂不为 Google Antigravity CLI(agy)和 Antigravity 2.0 桌面应用建插件市场骨架。 + +**Why**:官方文档(antigravity.google/docs/cli/features/)确认 agy 支持插件(skills/agents/rules/MCP/hooks 打包),但**没有** marketplace 概念——无 `marketplace.json`、无"注册市场源"命令,只有 `agy plugin install <本地路径或 git URL>` 直接安装;网上搜到的"agy 支持 marketplace.json"等说法查证后均来自第三方社区工具(如 `agy-plugins-cli`),非 Google 官方能力。Antigravity 2.0 桌面应用官方文档完全没提插件/市场机制。该产品线是 Google I/O 2026 才发布,文档还在变动(schema 页面实测 404)。 + +**How to apply**:Claude Code 和 Codex 是当前团队实际使用的主流工具,继续投入维护;未来遇到新 AI 编程工具想接入本 marketplace 时,先确认该工具官方是否有稳定的 marketplace/plugin 协议(有市场索引格式 + 远程仓库注册命令),协议不成熟就先不投入,避免跟着一个还在剧烈变动的规范返工。 + +**See Also**:[[project_overview.md#已发布插件]] diff --git a/.claude/memory/lint_report.md b/.claude/memory/lint_report.md index 4ac355b..2392ca1 100644 --- a/.claude/memory/lint_report.md +++ b/.claude/memory/lint_report.md @@ -2,13 +2,13 @@ name: 记忆健康检查报告 description: memory-lint 最新一次执行的检查结果与待处理项 type: lint -last_updated: 2026-07-10 -commit: a13898b +last_updated: 2026-08-22 +commit: a64c646 --- # 记忆健康检查报告 -> _执行时间: 2026-07-10 | Base commit: `a13898b` | Last synced: 2026-07-10_ +> _执行时间: 2026-08-22 | Base commit: `a64c646` | Last synced: 2026-08-22_ > > **如何使用**:NEED-HUMAN 条目末尾有 `` 标记。处理完或决定不处理时,在同段追加 ``,下次 lint 该条目自动跳过。 @@ -16,7 +16,7 @@ commit: a13898b | 检查项 | AUTO-FIX | NEED-HUMAN(含已 resolved 跳过 N 项) | |--------|---------|-----------| -| 1 孤儿 / 2 幽灵 / 3A 引用 / 3B 双链 | 0 / 0 / 2 / 0 | — / — / 0 / 1(含已 resolved 跳过 0 项) | +| 1 孤儿 / 2 幽灵 / 3A 引用 / 3B 双链 | 0 / 0 / 1 / 1 | — / — / 0 / 1(含已 resolved 跳过 0 项) | | 4 矛盾 / 5 过期 / 6 污染 | — | 0 / 0 / 0 | **AUTO-FIX 已执行 2 项 | NEED-HUMAN 新列出 1 项 | 历史已 resolved 跳过 0 项** @@ -25,9 +25,9 @@ commit: a13898b ## AUTO-FIX 已执行清单 -- [x] 更新断链(Phase 3A,章节标题漂移):`decisions.md` 内 `[[feedback_plugin_dev.md#skill 不要重写 MCP 参数表,引用 docstring]]` → `[[feedback_plugin_dev.md#skill 不要重写 MCP 参数表,引用 docstring 为单一真相]]` -- [x] 更新断链(Phase 3A,章节标题漂移):`decisions.md` 内 `[[feedback_plugin_dev.md#签名变更全量扫描]]` → `[[feedback_plugin_dev.md#MCP 后端工具签名变更后必须全量扫描所有 skill]]` -- [x] MEMORY.md「引用」列已刷新(按源文件去重重新计数,见下方文件级引用计数表;`decisions.md` 3→2,因 lint_report.md 本身不再含旧版 wikilink) +- [x] 更新断链(Phase 3A,章节标题漂移):`decisions.md` 内 `[[decisions.md#Codex 侧 MCP Token 用 bearer_token_env_var,不用 ${VAR} 模板]]` → `[[decisions.md#Codex 侧 MCP Token 用 bearer_token_env_var,不用 ${VAR} 模板(2026-08-22)]]` +- [x] 补齐反向链接(Phase 3B):`decisions.md#不做 Antigravity(Google agy / Antigravity 2.0)兼容(2026-08-22)` 末尾追加 `**See Also**:[[project_overview.md#已发布插件]]` +- [x] MEMORY.md「引用」列已刷新(按源文件去重重新计数,见下方文件级引用计数表) --- @@ -39,7 +39,7 @@ commit: a13898b |------|----------|------| | — | — | 无候选 | -当前所有 decisions/feedback 条目的**单 section 级**跨文件引用数均 < 3,无 synthesis 升级候选。 +`feedback_plugin_dev.md#MCP 后端工具签名变更后必须全量扫描所有 skill` 被 `decisions.md`、`lint_report.md` 两个文件引用(2 次,未达阈值 3);此前一次快扫误报为 3 次,是本机 shell 环境下 `grep -r` 输出不带 `./` 前缀导致自引用排除逻辑失效所致,本次已用去重比对方式重新核实,非真实候选。 --- @@ -55,26 +55,24 @@ commit: a13898b --- -## 文件级引用计数(来自 Phase 3A,按源文件去重) +## 文件级引用计数(来自 Phase 3A,按源文件去重,不含自引用) | 文件 | 被引用次数(去重源) | 引用来源 | |------|-------|---------| -| **decisions.md** | **2** | feedback_plugin_dev.md / project_overview.md | -| project_overview.md | 1 | decisions.md(含 2 个 wikilink,同源去重为 1) | -| feedback_plugin_dev.md | 1 | decisions.md(含 2 个 wikilink,同源去重为 1) | +| **decisions.md** | **3\*** | feedback_plugin_dev.md / project_overview.md / lint_report.md | +| project_overview.md | 2 | decisions.md / lint_report.md | +| feedback_plugin_dev.md | 2 | decisions.md / lint_report.md | | lint_report.md | 0 | — | -**备注**:`decisions.md` 文件级引用数由 3 降为 2(未跌破规则,是 lint_report.md 本身历史上不含 wikilink 却被误计入源——本次按 grep 实测重新计数),暂不满足 `SYNTHESIS_THRESHOLD`(3) 核心枢纽节点条件。 - `synonyms.md` 不存在,矛盾检测使用保守模式(仅检测直接数值/版本冲突)。如项目有领域术语缩写,建议创建 `.claude/memory/synonyms.md`。 --- -## 过期检测明细(速度分档,本次生效的新逻辑) +## 过期检测明细(速度分档) | 文件 | last_updated | days_since | commits_since(全仓库) | velocity(次/天) | 判定 | |------|-------------|-----------|----------------------|------------------|------| -| project_overview.md | 2026-06-12 | 28 | 8 | 0.29 | 低于 LOW_VELOCITY(0.3),不判定过期 | -| feedback_plugin_dev.md | 2026-06-12 | 28 | 8 | 0.29 | 低于 LOW_VELOCITY(0.3),不判定过期 | -| decisions.md | 2026-07-10 | 0 | — | — | 不足 MIN_DAYS(7),跳过 | -| lint_report.md | 2026-07-10 | 0 | — | — | 不足 MIN_DAYS(7),跳过 | +| feedback_plugin_dev.md | 2026-06-12 | 71 | 15 | 0.21 | 低于 LOW_VELOCITY(0.3) 且 days_since(71) < ABSOLUTE_DAYS(180),不判定过期 | +| decisions.md | 2026-08-22 | 0 | — | — | 不足 MIN_DAYS(7),跳过 | +| project_overview.md | 2026-08-22 | 0 | — | — | 不足 MIN_DAYS(7),跳过 | +| lint_report.md | 2026-08-22 | 0 | — | — | 不足 MIN_DAYS(7),跳过 | diff --git a/.claude/memory/project_overview.md b/.claude/memory/project_overview.md index da2241e..996a78a 100644 --- a/.claude/memory/project_overview.md +++ b/.claude/memory/project_overview.md @@ -1,9 +1,9 @@ --- name: 项目概述 -description: yixiong-claude-marketplace 的定位、目录结构、插件规范和发布流程 +description: yixiong-claude-marketplace 的定位、目录结构、插件规范和发布流程,同时支持 Claude Code 与 Codex/ChatGPT 桌面应用两条市场线 type: project -last_updated: 2026-06-12 -commit: fad7335 +last_updated: 2026-08-22 +commit: a64c646 --- # 蚁熊内部 Claude Code Marketplace @@ -58,14 +58,16 @@ description: "触发描述(用户实际口语,不用内部视角)" ## 已发布插件 -| 插件 | 技能 | 特性 | -|------|------|------| -| `huanxi` | 个人端 7 个(report/leader/task/issue/meeting/lookup/shared) | userConfig Bearer Token(hxp_)+ MCP Server(URL 走 office 子域,无端口) | -| `huanxi-admin` | 管理端 4 个(admin-report/admin-module/admin-ops/admin-shared) | userConfig Bearer Token(hxa_)+ MCP Server;普通员工无需安装,2026-08-21 v1.0.0 生产切换后首次发布 | -| `memcore` | 4 个(memory-sync/lint/update/shared) | 纯技能,无 MCP;memcore-shared 作内部 include(路径锁定 + 阈值常量 + PROJECT_DIR 解析),支持 synonyms.md 等价词表、Phase 3C 即时引用快扫、Phase 0 并发冲突保护、lint_report 稳定 ID + resolved 跳过、Base commit 兜底 | -| `obsidian` | 10 个(obsidian/bases/canvas/daily/history/meta/plugins/search/tasks/workflow-pkm) | 纯技能,无 MCP;对标社区基准(kepano/obsidian-skills 31.8k★、AgriciDaniel/claude-obsidian)后扩展 canvas 视觉层;核心 obsidian 含 OFM 语法速查;workflow-pkm 含 Web Clip 子流程 | +| 插件 | 技能 | 特性 | Codex 支持 | +|------|------|------|------| +| `huanxi` | 个人端 7 个(report/leader/task/issue/meeting/lookup/shared) | userConfig Bearer Token(hxp_)+ MCP Server(URL 走 office 子域,无端口) | ✅ `.codex-plugin/plugin.json` 共用同一 `skills/`,Token 走环境变量 `HUANXI_TOKEN`(`bearer_token_env_var`) | +| `huanxi-admin` | 管理端 4 个(admin-report/admin-module/admin-ops/admin-shared) | userConfig Bearer Token(hxa_)+ MCP Server;普通员工无需安装,2026-08-21 v1.0.0 生产切换后首次发布 | ✅ 同上模式,Token 环境变量 `HUANXI_ADMIN_TOKEN` | +| `memcore` | Claude 版 4 个(memory-sync/lint/update/shared) | 纯技能,无 MCP;memcore-shared 作内部 include(路径锁定 + 阈值常量 + PROJECT_DIR 解析),支持 synonyms.md 等价词表、Phase 3C 即时引用快扫、Phase 0 并发冲突保护、lint_report 稳定 ID + resolved 跳过、Base commit 兜底 | ✅ 独立目录 `plugins/memcore-codex/`(不与 Claude 版共用 `skills/`),架构不同:`AGENTS.md` 会话入口、`.claude/memory` 优先复用否则落 `.codex/memory`、无远程同步 | +| `obsidian` | 10 个(obsidian/bases/canvas/daily/history/meta/plugins/search/tasks/workflow-pkm) | 纯技能,无 MCP;对标社区基准(kepano/obsidian-skills 31.8k★、AgriciDaniel/claude-obsidian)后扩展 canvas 视觉层;核心 obsidian 含 OFM 语法速查;workflow-pkm 含 Web Clip 子流程 | ✅ `.codex-plugin/plugin.json` 共用同一 `skills/`,无 MCP 无需 Token | -**See Also**:[[decisions.md#huanxi plugin 使用 userConfig 而非环境变量传 Token]] +Codex/ChatGPT 桌面应用侧市场索引独立维护在 `.agents/plugins/marketplace.json`(marketplace 名 `yixiong-codex-hub`),与 Claude 侧 `.claude-plugin/marketplace.json`(`yixiong-claude-hub`)并存,互不干扰。已确认不做 Antigravity(Google agy)兼容。 + +**See Also**:[[decisions.md#huanxi plugin 使用 userConfig 而非环境变量传 Token]]、[[decisions.md#Codex/ChatGPT 桌面应用插件骨架——三个插件共享 skills/,memcore 独立目录(2026-08-22)]]、[[decisions.md#不做 Antigravity(Google agy / Antigravity 2.0)兼容(2026-08-22)]] ## 发布流程 diff --git a/CLAUDE.md b/CLAUDE.md index 33a530f..8f9242c 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,4 +1,4 @@ - + # CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. @@ -22,6 +22,8 @@ plugins/ └── SKILL.md # 技能实现(frontmatter + Markdown 指令) ``` +本仓库同时是 Codex/ChatGPT 桌面应用的插件市场,独立索引在 `.agents/plugins/marketplace.json`。huanxi/huanxi-admin/obsidian 在各自插件目录下再放一份 `.codex-plugin/plugin.json`(与 `.claude-plugin/plugin.json` 并列),共用同一份 `skills/`;`memcore` 因架构差异(见下方「Codex plugin.json」与「memcore 技能调用关系」两节)走独立目录 `plugins/memcore-codex/`。 + ## 核心文件格式 ### marketplace.json(市场索引) @@ -65,6 +67,16 @@ description: 一句话说明该技能的用途(Claude 用此判断何时触发 `description` 字段是触发判据,务必精确描述使用场景,避免与其他技能产生歧义。 +### Codex plugin.json(Codex 侧插件元数据) + +用本机 `~/.codex/skills/.system/plugin-creator/scripts/validate_plugin.py ` 校验后确认的硬性约束(与 Claude 侧 plugin.json 不通用,不要照抄): + +- `skills` 字段规整化后必须精确等于 `"skills"`,不能指向自定义子路径 +- `mcpServers` 若为字符串路径,必须精确等于 `"./.mcp.json"`,且该文件在**插件根目录**(不能嵌套进 `.codex-plugin/`);HTTP 类型 MCP server 的 Bearer Token 用专用字段 `bearer_token_env_var: "ENV_VAR_NAME"`,不支持 `${VAR}` 模板插值(见 [[decisions.md#Codex 侧 MCP Token 用 bearer_token_env_var,不用 ${VAR} 模板(2026-08-22)]]) +- 顶层 `interface` 块必填:`displayName`/`shortDescription`/`longDescription`/`developerName`/`category`/`capabilities`/`defaultPrompt` +- 不支持 `hooks` 字段 +- 技能 frontmatter 的 `disable-model-invocation` 只能是 `false` 或不写;技能"内部 include 不给用户直接调用"要用该技能 `agents/openai.yaml` 里的 `policy.allow_implicit_invocation: false` + description 措辞实现 + ## 新增插件流程 1. 在 `plugins/` 下创建目录 `plugins//` @@ -81,6 +93,8 @@ description: 一句话说明该技能的用途(Claude 用此判断何时触发 | `memcore` | `/memory-sync` `/memory-update` `/memory-lint` `/memcore-shared`(内部 include) | 项目记忆体系核心引擎 | | `obsidian` | `/obsidian` `/obsidian-bases` `/obsidian-canvas` `/obsidian-daily` `/obsidian-history` `/obsidian-meta` `/obsidian-plugins` `/obsidian-search` `/obsidian-tasks` `/obsidian-workflow-pkm` | Obsidian 知识库完整工作流(10 个技能;对标 kepano/obsidian-skills 31.8k★ 与 AgriciDaniel/claude-obsidian) | +四个插件均有 Codex/ChatGPT 桌面应用版本(见上方「Codex plugin.json」一节)。huanxi/huanxi-admin/obsidian 的 Codex 版共用本表里的同一份 `skills/`;`memcore` 的 Codex 版是独立目录 `plugins/memcore-codex/`(内容与下方 Claude 版 memcore 不同,改动时两边分别维护,不要假设同步)。已调研并确认不做 Google Antigravity(agy)兼容——其官方文档目前没有 marketplace 概念。 + ### memcore 技能调用关系 ``` @@ -114,8 +128,8 @@ description: 一句话说明该技能的用途(Claude 用此判断何时触发 ``` .claude/memory/ ├── MEMORY.md # 索引(入口) -├── decisions.md # 关键架构决策(含 memcore-shared/lint_report 保活/Base commit 兜底/obsidian 社区对标审查/memory-lint 速度分档过期检测等 13 项) -├── project_overview.md # 项目定位与结构(huanxi/memcore/obsidian 10 技能 已发布插件) +├── decisions.md # 关键架构决策(含 memcore-shared/lint_report 保活/Base commit 兜底/obsidian 社区对标审查/memory-lint 速度分档过期检测/Codex 插件骨架与 memcore-codex 独立目录/bearer_token_env_var/不做 Antigravity 兼容等 16 项) +├── project_overview.md # 项目定位与结构(huanxi/huanxi-admin/memcore/obsidian 已发布插件,均含 Codex 支持情况) ├── feedback_plugin_dev.md # 插件开发协作规范(含 MCP docstring 单一真相、签名变更全量扫描) └── lint_report.md # 记忆健康检查报告(按需) ```