Files
yixiong-claude-marketplace/plugins/huanxi-admin/skills/huanxi-admin-shared/SKILL.md
T
SkyJourneyandClaude Sonnet 5 600c0dd323 feat: 寰汐插件随 v1.0.0 生产切换升级到 v2 技能组,新增独立管理端插件
huanxi 插件的技能内容从 v1 全面替换为 v2(huanxi-org/huanxi-weekly 等
v1 专属技能下线,新增 huanxi-issue/huanxi-lookup/huanxi-meeting),MCP
连接与 Token 获取方式同步更新为个人中心自助生成。

新增独立的 huanxi-admin 插件(管理端 4 个技能,hxa_ Token,普通员工无需
安装),此前一直卡在"v2 未部署到生产域名前不推送"这条约束,今晚寰汐
v1.0.0 生产切换完成后条件满足。

产物由 huanxi-menagement 仓库 skills/sync_marketplace.py 生成,技能源码
单一真相在该仓库的 skills/,本仓库只接收产物、不手工编辑。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018xxRKMuiGR4wYT3QbwCpDc
2026-08-22 02:14:34 +08:00

98 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: huanxi-admin-shared
description: "寰汐管理端 MCP 共享基础:管理身份语义、高危操作边界、缓存策略、状态两层模型、人员查询。所有 huanxi-admin-* 技能必须先读本文件。"
---
# 寰汐管理端 · 共享规则
所有 `huanxi-admin-*` 技能的**必读前置**。本技能族用的是管理端 Token(`hxa_`),
与个人端(`hxp_`)是两条独立通道,**工具集不同、视角不同**。
---
## 你是以谁的身份在操作
管理端 Token 不绑定业务用户,执行时以 **Token 创建人的管理员身份**进行,
所有写操作按该身份记入审计。`whoami` 回答「我现在代表谁」。
创建人若已停用或被撤销后台权限,Token 会一并失效——这不是 bug,是随人事变动收回权限。
视角是**全量**的:模块、任务、汇报都不受「我参不参与」过滤。这是与个人端最大的差别,
也意味着你看到的东西大多不是你自己的,措辞上要注意(说「张三的日报」而不是「你的日报」)。
---
## 高危操作不在本端点
**账号启停、授予/撤销管理员与老板身份、通讯录全量同步、各类删除、状态选项与标签等
字典的写操作——全部走网页后台。**
理由不是「危险所以不给」,而是网页后台有确认弹窗与完整的操作上下文,MCP 通道没有
等价的「让人看清楚再点」环节。用户提这类需求时,直接告诉他去后台哪个页面,
**不要试图用别的工具绕过去**
---
## 参数以工具自身的说明为准
本文档与各技能都不重画参数表。参数名、必填项、取值范围以工具在 MCP 里注册的
docstring 为唯一真相;技能只描述调用顺序、ID 如何传递、哪里必须停下来等用户确认。
工具名在 Claude 客户端里带前缀 `mcp__huanxi-admin__`,其他平台按各自约定;
本文档统一写裸名。
---
## 状态是可配置的两层模型
**不要硬编码状态字面量。** 分两层:
- `category`:四类固定语义 `not_started` / `in_progress` / `completed` / `cancelled`,用于**判断**
- `status_option_id`:具体状态项的 UUID,用于**写入**
改状态前先 `dict_get` 取对应 `entity_type`module/task/issue/meeting,必须选对)
下的选项。字典本身的增删改不在本端点。
---
## 人员查询
```
user_query(q?, ids?, status?, has_backend_permission?)
```
> 组织架构树(`org_tree`)已随 M16 身份体系替换下线——公司改用蚁熊通行证,
> 它不提供部门信息。
`user_query` 比个人端多两个维度:`status`active 在职 / observation 交接观察期 /
inactive 已停用)与 `has_backend_permission`。用于盘点「谁在观察期」「谁有后台权限」。
**只读**——账号启停与权限授予见上文。
---
## 缓存
缓存根 `~/.claude/huanxi-cache/`,管理端用 `admin/` 子目录,与个人端隔离——
两边看到的模块范围不同,混用会把不该展示的内容展示出去。
| 类别 | 策略 |
|---|---|
| 身份 `admin/me.json` | 永久 |
| 配置字典 `dict/*.json` | **`dict_version` 比对** + 24h 兜底 |
| 人员与模块 `admin/all-modules.json` | 24h |
| 工作日 `dict/workdays.json` | 按日期 key 永久 |
| **业务数据**(汇报/任务/会议/议题) | **一律不缓存** |
字典为什么不能只靠 TTL:状态选项可能被停用,拿过期 ID 去写会**直接报错**——
失败方向是「操作失败」而非「看到旧数据」,值得比对一次。`dict_get` 的返回自带
`versions` 字段,连内容一起存即可,不要分两次调。
---
## 全局约定
1. **有副作用的写操作先确认**`module_set_members`(替换语义,会移除名单外的人)、
`module_update` 切「已取消」(级联取消该模块全部未完成任务并通知成员)。
2. **盘点类查询直接给结论**:用户问「谁没交」,答案是名单,不是让他自己看原始数据。
3. **先解析 ID 再操作**,不要凭名字猜。