寰汐 v2 上线双 MCP(个人端 /mcp/ 与管理端 /admin-mcp/),两条端点是**两条独立的 信任边界**——Token 前缀不同、工具集不同、视角不同(管理端看全量、个人端只看我参与的)。 一个插件塞两套会让普通员工的客户端里出现他根本调不动的管理工具,因此拆成两个插件, 按角色各装各的。 ## huanxi(个人端,全体员工) 7 个技能:shared / report / leader / task / issue / meeting / org - 新增 `issue` `meeting`——v2 的议题域与会议域(M6v2 会议×议题解耦后的产物) - **删除 `weekly`**——v2 没有 weekly_report 表,周报已并入报告体系 - 各技能重写为**流水线定义**而非使用说明:写明工具调用顺序、ID 在步骤间怎么传、 人工确认节点落在哪。「禁止自动提交」这条 v1 已验证的硬约束保留 - 删掉 `references/` 拆分文件——v2 技能自包含 ## huanxi-admin(管理端,仅后台管理员) 4 个技能:admin-shared / admin-report / admin-module / admin-ops MCP server key 取 `huanxi-admin`(与个人端的 `huanxi` 不同名),否则两插件并存时 会键冲突。 ## 缓存目录按信任边界隔离 `~/.claude/huanxi-cache/` 下分 `personal/` `admin/` `dict/`:前两者视角不同, 混用会越权展示或数据错乱;`dict/` 与身份无关可共享。业务数据(任务/日报/会议/议题) **显式声明不缓存**——v1 没写这条,Agent 会自行决定缓存然后拿到陈旧数据。 ## 源码单一真相不在本仓库 技能源码在寰汐仓库 `skills/`,与 MCP docstring 同仓库同 commit——签名一改, 技能与工具在同一次改动里更新,从结构上消除跨仓库漂移(本仓库记忆 `feedback_plugin_dev.md` 记录的 4 类漂移覆盖全部 6 个 v1 技能,正是这个病)。 本仓库退化为**分发壳**,只接收 `python skills/sync_marketplace.py` 的产物,不手工编辑。 寰汐侧有 CI 守卫:技能里出现的每个工具名必须存在于实际注册表、个人端技能不得 指导调用管理端独有工具、不得硬编码状态字面量。 ## 本分支不合 main 插件配置的域名此刻跑的还是 v1,合进 main 会通过自动更新推给已安装用户, 他们的技能会去调 v1 上不存在的工具。合并前置条件写在 CLAUDE.md「已发布插件」节。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019Vyeia9k43dVaUFNLo8Lny
78 lines
3.0 KiB
Markdown
78 lines
3.0 KiB
Markdown
---
|
||
name: 项目概述
|
||
description: yixiong-claude-marketplace 的定位、目录结构、插件规范和发布流程
|
||
type: project
|
||
last_updated: 2026-06-12
|
||
commit: fad7335
|
||
---
|
||
|
||
# 蚁熊内部 Claude Code Marketplace
|
||
|
||
## 定位
|
||
|
||
蚁熊公司内部 Claude Code Plugin Marketplace(技能市场),统一管理和发布供全员安装的 Claude Code 插件与技能。Marketplace 名称:`yixiong-claude-hub`。
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
.claude-plugin/
|
||
└── marketplace.json # 市场索引:声明所有插件
|
||
|
||
plugins/
|
||
└── <plugin-name>/
|
||
├── .claude-plugin/
|
||
│ └── plugin.json # 插件元数据
|
||
└── skills/
|
||
└── <skill-name>/
|
||
├── SKILL.md
|
||
└── references/ # 可选:详细工作流文档
|
||
```
|
||
|
||
## 文件格式规范
|
||
|
||
### marketplace.json
|
||
```json
|
||
{
|
||
"name": "yixiong-claude-hub",
|
||
"owner": { "name": "蚁熊团队" },
|
||
"description": "...",
|
||
"plugins": [
|
||
{ "name": "<name>", "source": "./plugins/<name>", "description": "..." }
|
||
]
|
||
}
|
||
```
|
||
|
||
### plugin.json(关键字段)
|
||
- **无 `version` 字段**:用 git commit SHA 作为版本基准,每次推送 main 即发布
|
||
- `userConfig`:用于用户输入敏感配置(token 等),`sensitive: true` 存系统钥匙链
|
||
- `mcpServers`:声明 MCP 服务器,headers 中可用 `${user_config.KEY}` 替换
|
||
|
||
### SKILL.md frontmatter(只需两字段)
|
||
```yaml
|
||
---
|
||
name: skill-name
|
||
description: "触发描述(用户实际口语,不用内部视角)"
|
||
---
|
||
```
|
||
- **不写 `version`**:version 不是 SKILL.md 规范字段
|
||
|
||
## 已发布插件
|
||
|
||
| 插件 | 技能 | 特性 |
|
||
|------|------|------|
|
||
| `huanxi` | 7 个(report/leader/task/issue/meeting/org/shared) | 个人端;userConfig Bearer Token + MCP Server(URL 走 office 子域,无端口) |
|
||
| `huanxi-admin` | 4 个(admin-report/admin-module/admin-ops/admin-shared) | 管理端;同上机制,Token 前缀 `hxa_`,与个人端是两条独立信任边界 |
|
||
| `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 子流程 |
|
||
|
||
**See Also**:[[decisions.md#huanxi plugin 使用 userConfig 而非环境变量传 Token]]
|
||
|
||
## 发布流程
|
||
|
||
1. 新增/修改插件内容
|
||
2. 提交 main 分支(`git push`)
|
||
3. 已安装用户会话启动时自动检测更新(需用户先手动开启 auto-update 一次:`/plugin` → Marketplaces → Enable auto-update)
|
||
4. 有更新时提示执行 `/reload-plugins`
|
||
|
||
**第三方 marketplace 默认关闭 auto-update**,同事安装后需手动开启一次。
|