# 安装 PMNote 助手

这是给用户正在使用的 Agent 阅读的安装说明。只有用户明确要求“安装/更新/启用 PMNote 助手”时执行；仅发送链接或要求了解内容时先说明用途，不自行安装。

PMNote 助手使用 Hao 的公开分享回答游戏项目管理问题。无需 PMNote 账号、密钥、MCP 服务或新增运行时。安装包只有声明式文本，不运行下载来的脚本。

## 1. 识别当前客户端

用自身运行环境判断当前是 Codex、Cursor 还是 WorkBuddy，只安装当前客户端，不向电脑上所有 Agent 的目录批量写入。

- Codex：优先遵循当前宿主的 Skill 安装器与发现目录。标准用户级目录为 `~/.agents/skills/pmnote/`；若当前安装器明确使用 `$CODEX_HOME/skills` 则使用该目录。不要同时创建两份。
- Cursor：用户级目录 `~/.cursor/skills/pmnote/`（Windows 为用户 Home 下的同名目录）。
- WorkBuddy：用户级目录 `~/.workbuddy/skills/pmnote/`（Windows 为用户 Home 下的 `.workbuddy/skills/pmnote/`）。此路径已在 WorkBuddy 5.6.2 的原生“我安装的”列表与扫描逻辑核对；若当前版本使用自定义配置目录，以它实际扫描的目录为准。不要使用 CodeBuddy 的 `.codebuddy` 路径。
- 没有可确认的客户端和持久技能目录时，只需询问用户使用哪款客户端。没有本地写入能力时，明确说明当前模式不能安装，并指向该客户端的 Skill 导入入口。

## 2. 获取与保存

1. 读取 https://pmnote.ai/agent/manifest.json 。仅接受 `name=pmnote`，文件严格限定为 `SKILL.md` 与 `agents/openai.yaml`，HTTPS URL 必须位于 `https://pmnote.ai/.well-known/skills/pmnote/`，不跟随到其他主机。
2. 通过现有 HTTP、文件或宿主工具下载这两个文件，检查响应成功且不是 HTML 错误页，计算 SHA-256 与 manifest 一致后再安装。无需用户安装 Node、Python 或 Git；使用当前 Agent 已有的能力即可。
3. 在选定用户级 Skill 目录的同级临时目录中准备完整文件，校验 `SKILL.md` 的 frontmatter `name: pmnote`，然后原子移动为 `pmnote`。不要修改全局规则、Hook、MCP 配置、其他 Skill 或环境变量。
4. 目标已存在且哈希相同则复用。不同则先说明这是更新，保留原目录为带时间戳备份后替换；如果已有内容明显不是 PMNote 或含用户定制，先询问如何保留，禁止覆盖。更新完成后不要自动删除备份。
5. 服从宿主文件写入与网络权限。需要客户端确认时说明具体请求，不绕过权限。

## 3. 验证能用

分别核验并报告以下状态，不混为一个“安装成功”：

1. **文件已安装**：回读持久目录内两个文件并核对哈希。
2. **客户端已识别**：用宿主的 Skill 列表或原生发现机制确认 `pmnote` 可用。文件存在不算被识别。如果当前对话未刷新，告诉用户“文件已安装，请新开对话（必要时重启客户端）并输入‘用 PMNote 帮我分析项目排期’”；不能伪称已热加载。
3. **知识可访问**：读取 https://pmnote.ai/agent/knowledge/index.md ，选择一篇正文读取；展示标题和原文链接。

已确认识别且可联网时，用一个简短示例说明能做什么；例如“版本临近上线又插入需求，怎么判断该不该接？”必须依据刚读到的相关公开文字，不能用无关指南凑引用。不提交测试问题或本地内容到 PMNote。

最后用简短中文告诉用户当前状态和一句试用话术。无法验证识别时保留“待新会话验证”，不要把必要的客户端步骤藏起来。

## 失败时

- 网络失败或哈希不符：停止安装，保留旧版本，报告实际错误；不要伪造文件或降低校验。
- Agent 只能读网页、不能安装：仍可按 https://pmnote.ai/.well-known/skills/pmnote/SKILL.md 的方法在本次对话使用，但明确“本次使用，尚未安装”。
- 只需要卸载时：指出当前安装目录，按用户明确要求移除该 Skill；不要动其他文件。
