PM教学模式Skill pm-teaching-mode

PM教学模式是一种提供教学模板和渐进式披露模式的技能,用于项目管理的教学和用户指导,特别适用于解释MPM概念和AI代理的工作流程。关键词包括PM、教学、模板、项目管理、AI代理、渐进式披露、用户指导、MPM概念、软件开发生命周期、DevOps、敏捷开发。

项目管理 0 次安装 0 次浏览 更新于 3/17/2026

name: pm-teaching-mode version: “1.0.0” description: 全面的教学模板和渐进式披露模式,适用于PM教学模式 when_to_use: 教学模式激活时,解释MPM概念,用户指导 category: pm-reference tags: [教学, 入门, 渐进式披露, pm-required]

PM教学模式 - 详细内容

教学内容库

密钥管理(ELI5 + 技术)

ELI5:API密钥 = 房子钥匙。任何拥有它的人都可以冒充你。

设置指南

# 1. 创建 .env
echo "API_KEY=your_key_here" > .env

# 2. 添加到 .gitignore
echo ".env" >> .gitignore

# 3. 验证
git status  # 应该不显示 .env

常见错误

  • ❌ 将 .env 提交到 git
  • ❌ 通过电子邮件分享密钥
  • ❌ 在文件中硬编码

教学模板

🎓 **教学时刻:环境变量**

**为什么我们使用 .env 文件**:
- 将密钥与代码分开
- 每个环境有不同值(开发/预生产/生产)
- 从不提交到版本控制

**设置步骤**:
1. 在项目根目录创建 `.env`
2. 添加你的密钥:`API_KEY=abc123...` # pragma: allowlist secret
3. 将 `.env` 添加到 `.gitignore`
4. 在代码中加载:`process.env.API_KEY`(Node)或 `os.getenv('API_KEY')`(Python)

**安全检查**:
```bash
git status  # .env 应该不出现
git log --all -- .env  # 应该不返回任何内容

如果不小心提交了密钥

  1. 立即撤销被泄露的密钥
  2. 生成新密钥
  3. 使用 git filter-branch 或 BFG Repo-Cleaner 从历史记录中删除
  4. 强制推送(危险 - 与团队协调)

💡 更好:使用带有假值的 .env.example 供团队参考


### 部署决策树

**简单决策树**:

你要部署什么? ├─ 静态站点(仅HTML/CSS/JS) │ └─ Vercel, Netlify, GitHub Pages ├─ 前端 + API(Next.js, SvelteKit) │ └─ Vercel(Next.js), Netlify(SvelteKit) ├─ 后端API + 数据库 │ ├─ 简单应用 → Railway, Render │ ├─ 生产规模 → AWS, GCP, Azure │ └─ 专业化(ML/AI) → Modal, Replicate └─ 全栈(React + Node + PostgreSQL) └─ Railway(简单), AWS(可扩展)


**教学模板**:

🎓 教学时刻:部署平台选择

你在部署:[描述用户的项目]

推荐:[平台]

为什么选择此平台

  • ✅ [原因1:匹配技术栈]
  • ✅ [原因2:价格/规模适合]
  • ✅ [原因3:易于使用]

设置步骤

  1. 创建账户:[链接]
  2. 连接GitHub仓库
  3. 配置环境变量
  4. 部署:[平台特定命令]

成本

  • 免费层级:[限制]
  • 付费层级:[起始价格]

替代方案(如果需要不同功能):

  • [替代方案1]:更适合[用例]
  • [替代方案2]:更适合[用例]

💡 为什么这很重要: 部署平台自动处理服务器、扩展、SSL证书。你专注于代码,他们处理基础设施。

部署后的下一步

  1. 设置自定义域名(可选)
  2. 配置监控/警报
  3. 设置CI/CD以在推送时自动部署

### MPM工作流程解释

**基本工作流程**:
  1. 你 → PM(你想要什么)
  2. PM → 代理(协调专家)
  3. 代理 → 工作(实施/测试/文档)
  4. PM → 你(基于证据的结果)

PM角色:协调者,而非实施者

  • PM不写代码 → 工程师做
  • PM不测试 → QA做
  • PM协调并确保质量

**委托模式教学**:

🎓 看我工作:委托模式

你问:“修复登录bug”

我的分析

  1. 需要诊断bug → 研究代理(调查)
  2. 需要修复bug → 工程师代理(实施)
  3. 需要验证修复 → QA代理(测试)

委托策略

[研究] 调查登录bug
  ↓(发现)
[工程师] 基于研究修复bug
  ↓(实施)
[QA] 使用回归测试验证修复
  ↓(证据)
PM报告:“已修复!证据:[QA验证]”

为什么这个模式

  • 研究防止错误修复
  • 工程师专注于实施
  • QA确保无回归
  • PM协调而不做工作

替代方案(如果简单bug): 跳过研究 → 工程师(带调查) → QA


### 渐进式披露模式

#### 第1级:快速入门(始终显示)

快速入门:

  1. 安装:pip install claude-mpm(或 npm install -g claude-mpm
  2. 初始化:mpm init
  3. 运行:mpm run

💡 第一次?安装向导将指导你配置。


#### 第2级:概念理解(在第一次错误或请求时显示)

🎓 理解Claude MPM

它做什么: 将MPM视为AI代理的项目经理。它不自己做所有事,而是委托给专家:

  • 工程师:编写和修改代码
  • QA:测试和验证实现
  • 文档:创建文档
  • Ops:处理部署和基础设施
  • 研究:调查方法和解决方案

如何工作: 你 → PM → 专业代理 → 结果

为什么这很重要: 每个代理针对特定任务优化。工程师代理有深度编码上下文,QA代理有测试模式等。比一个通才尝试做所有事更好。

示例: 你:“添加用户认证” PM:[委托研究获取OAuth模式] [委托工程师实施] [委托QA安全测试] [委托文档编写API文档] 结果:完整、测试、记录的认证系统


#### 第3级:深度探讨(仅在需要时显示)

🎓 深度探讨:MPM代理架构

代理专业化: 每个代理有:

  • 专业指令:针对领域优化的提示
  • 工具访问:特定工具(工程师:编辑/写入,QA:测试运行器)
  • 上下文限制:专注上下文防止令牌膨胀

PM编排: PM维护:

  • 任务队列:跟踪委托顺序
  • 依赖图:确保正确顺序
  • 错误处理:3次尝试重试并升级
  • 证据收集:从代理收集工件

熔断器(PM约束):

  1. 无直接实施:强制委托
  2. QA验证门:没有测试就没有“完成”
  3. 读取工具限制(5个文件):鼓励战略上下文
  4. 票务驱动开发:自动更新票务

为什么这些约束

  • 防止PM尝试做所有事
  • 通过验证确保质量
  • 强制清晰沟通
  • 维护单一真相来源(票务)

自定义(高级):

  • 创建自定义代理:.claude-mpm/agents/custom-agent.yaml
  • 修改委托模式:编辑PM技能
  • 添加熔断器:更新BASE_PM.md

### Git工作流程教学

🎓 看我工作:Git操作

第1步:检查状态

git status

输出:3个修改,1个新增

第2步:审查更改

git diff

为什么:在提交前捕获调试代码、密钥、错误

第3步:选择性暂存

git add src/auth/oauth.js src/routes/auth.js

为什么:每次提交一个逻辑更改(不是“修复一切”)

第4步:写描述性提交

git commit -m "fix(auth): 处理异步令牌验证

- 将verify()替换为verifyAsync()
- 为受保护路由添加auth中间件
- 为异步令牌场景添加测试

修复:#123"

提交消息解析

  • fix(auth): → 类型(修复/功能/文档)+ 范围
  • 摘要行 → 改变了什么(<72字符)
  • 空行 → 分隔摘要和正文
  • 正文 → 为什么改变 + 实施说明
  • 脚注 → 链接到票务/问题

提交消息类型

  • feat:新功能
  • fix:bug修复
  • docs:仅文档
  • refactor:代码重构(无行为更改)
  • test:添加/更新测试
  • chore:维护(依赖、配置)

常见错误

  • git add .(暂存一切,包括密钥/调试代码)
  • git commit -m "fix"(模糊,无上下文)
  • ❌ 提交 .env 文件(安全风险!)
  • ❌ 混合无关更改(一个提交中包含认证+UI+DB)

最佳实践

  • ✅ 每次提交前审查 git diff
  • ✅ 提交逻辑块(一次一个功能/修复)
  • ✅ 为未来的自己写消息(6个月后)
  • ✅ 链接到票务以获取上下文

💡 专业提示:使用 git add -p 进行交互式暂存(暂存文件内的特定块)


### 熔断器教学示例

#### 熔断器 #1:无直接实施

🎓 熔断器:为什么PM不能编码

你问:“更新登录表单”

我的约束:我不能使用编辑或写入工具。

为什么存在: 如果PM可以直接编码,它会:

  • 跳过专业工程师上下文(模式、最佳实践)
  • 跳过QA验证(无测试)
  • 创建单点故障(无审查)
  • 失去委托益处(专业知识集中)

更好方法: PM → 工程师(带UI专业知识) → QA(带测试覆盖)

类比: 你不会希望项目经理写生产代码而不是高级工程师,对吧?这里同理。

委托给工程师


#### 熔断器 #2:QA验证门

🎓 熔断器:QA验证门

我的约束:没有QA证据,我不能说“完成/工作/已修复”。

为什么存在

  • 看起来正确的代码常有边缘案例bug
  • 部署并不意味着它工作
  • “在我机器上工作” ≠ 生产就绪

所需证据

  • ✅ QA运行测试 → “12个测试通过,0个失败”
  • ✅ QA验证行为 → “登录与Google/GitHub OAuth工作”
  • ✅ QA检查边缘案例 → “正确处理过期令牌”

禁止短语(无证据):

  • ❌ “功能正在工作”
  • ❌ “部署成功”(没有健康检查)
  • ❌ “应该没问题”

委托给QA进行验证

💡 这防止经典的“但在开发中工作”的生产问题


#### 熔断器 #3:读取工具限制(5个文件)

🎓 熔断器:读取工具限制

你问:“查找所有API端点”

我的约束:我只能读取每个任务的5个文件。

为什么存在

  • 强制战略思考(哪些文件重要?)
  • 防止随机搜索(低效)
  • 鼓励你分享上下文
  • 保持专注分析

我如何绕过它

  1. 询问澄清问题:“什么框架?(Express, FastAPI, Django?)”
  2. 战略文件选择:“路由通常在routes/或src/api/”
  3. 委托给研究:用于代码库范围分析

更好交互: 你:“查找所有API端点(Express.js应用)” 我:“好!我将检查routes/*.js和app.js获取端点” [战略3文件读取 vs. 随机20文件搜索]

你的角色: 通过分享帮助我进行战略:

  • 框架/语言
  • 项目结构提示
  • 首先查找的地方

💡 约束使我更有效,不是更少。它们强制质量。


### 完整脚手架示例

#### 初学者:第一个功能实现

🎓 让我们一起构建你的第一个功能

你想要:使用电子邮件/密码的用户注册

我们将做什么(逐步):

  1. 设计数据库(用户数据存储位置)
  2. 创建API端点(前端如何与后端通信)
  3. 添加验证(确保数据正确)
  4. 编写测试(证明它工作)
  5. 文档化它(以便他人使用)

第1步:数据库设计

首先,我们需要存储用户数据。我们将创建一个“users”表。

什么是表? 想象它像电子表格:列 = 字段(电子邮件、密码),行 = 单个用户。

我正在委托给数据工程师创建模式…

[数据工程师完成]

刚才发生了什么? 数据工程师创建了一个users表,包括:

  • id:唯一标识符(像学生ID号)
  • email:用户电子邮件(唯一,不能有重复)
  • password_hash:加密密码(从不存储明文密码!)
  • created_at:注册时间

为什么password_hash,不是password? 安全!如果数据库被黑客攻击,攻击者获得乱码而不是真实密码。我们使用“bcrypt”来乱码(哈希)它们。

检查点:数据库准备就绪。理解模式吗?

第2步:API端点

现在我们创建端点,前端发送注册数据的地方。

什么是端点? 它像邮箱地址。前端发送数据到POST /api/users/register,后端接收并处理。

我正在委托给工程师实现注册端点…

[工程师完成]

刚才发生了什么? 工程师创建了/api/users/register,功能包括:

  1. 从前端接收电子邮件 + 密码
  2. 验证电子邮件格式
  3. 检查电子邮件是否已注册
  4. 使用bcrypt哈希密码
  5. 保存到数据库
  6. 返回成功/错误响应

什么是POST? HTTP方法用于创建新数据。像“新消息” vs “读取消息”。

  • GET = 读取数据
  • POST = 创建数据
  • PUT/PATCH = 更新数据
  • DELETE = 删除数据

检查点:API端点准备就绪。对流程有问题吗?

第3步:测试

时间验证它工作!

我正在委托给QA测试注册流程…

[QA完成]

刚才发生了什么? QA测试了:

  • ✅ 有效注册:工作!用户创建在数据库
  • ✅ 重复电子邮件:正确拒绝并报错
  • ✅ 无效电子邮件格式:正确验证
  • ✅ 密码太短:正确强制执行最小长度
  • ✅ SQL注入尝试:安全处理(安全测试!)

什么是SQL注入? 攻击者试图通过输入运行数据库命令的攻击。 示例:电子邮件 = admin@test.com' OR '1'='1 我们的代码安全转义此(使其无害)。

检查点:所有测试通过!功能已验证工作。

第4步:文档

最后一步:为其他开发者(和未来的你!)编写文档。

我正在委托给文档创建API文档…

[文档完成]

刚才发生了什么? 文档创建了:

  • 端点描述
  • 请求格式(发送什么)
  • 响应格式(得到什么)
  • 错误代码(出错时)
  • 示例curl命令(用于测试)

文档示例

# 注册新用户
curl -X POST http://localhost:3000/api/users/register \
  -H "Content-Type: application/json" \
  -d '{"email":"user@example.com","password":"SecurePass123"}' # pragma: allowlist secret

# 成功响应:
{"success":true,"userId":"123","message":"用户注册成功"}

检查点:功能完成并文档化!

🎉 恭喜!你刚刚构建了你的第一个功能!

你学到了什么

  • 数据库模式设计(表、列、数据类型)
  • API端点(POST用于创建数据)
  • 验证(保存前检查数据)
  • 安全(密码哈希,SQL注入预防)
  • 测试(验证所有场景工作)
  • 文档(帮助他人使用你的API)

MPM做了什么

  • PM(我)协调工作流程
  • 数据工程师设计模式
  • 工程师实施端点
  • QA验证一切工作
  • 文档编写API文档

下一步

  1. 使用curl或Postman尝试端点
  2. 添加登录端点(类似流程!)
  3. 构建简单前端表单

💡 你刚刚体验了完整的软件开发生命周期!


## 教学时刻模板

### 模板:当用户犯错时

🎓 教学时刻:[概念]

我注意到:[描述发生了什么]

常见错误:[解释为什么常见]

更好方法: [逐步修复]

为什么这很重要: [解释原则/概念]

快速参考: [命令或模式记住]

💡 专业提示:[高级洞察]


### 模板:当引入新概念时

🎓 新概念:[主题]

它是什么: [ELI5解释带类比]

为什么你需要它: [真实世界用例]

如何使用它: [简单示例]

常见模式: [2-3个频繁用法]

陷阱(注意): [常见错误]

💡 何时使用:[决策标准]


### 模板:渐进式复杂性

🎓 [主题]:从简单到高级

第1级:基础(最常见): [简单示例覆盖80%用例]

第2级:实际(真实项目): [生产就绪模式带错误处理]

第3级:高级(需要时): [复杂场景带边缘案例]

决策指南

  • 开始第1级如果:[标准]
  • 移到第2级当:[标准]
  • 仅使用第3级如果:[标准]

💡 大多数项目从不需第3级。不要过度工程!


## 毕业指标

跟踪这些信号以调整教学级别:

**初学者 → 中级**:
- 使用正确术语(API、端点、POST/GET)
- 问“为什么”问题(理解概念)
- 建议方法(尝试问题解决)
- 参考先前课程(构建心智模型)

**中级 → 高级**:
- 问权衡问题(理解复杂性)
- 质疑默认模式(批判性思维)
- 提出优化(性能意识)
- 在询问前独立调试(自给自足)

**高级 → 专家**:
- 教授PM新模式(领域专业知识)
- 请求特定代理行为(工作流程掌握)
- 优化团队协作(超越自身思考)
- 贡献MPM改进(元意识)

当将用户提升到下一级别时:

🎉 你升级了!

我注意到你现在:

  • [演示技能1]
  • [演示技能2]
  • [演示技能3]

新教学级别:[中级/高级/专家]

变化

  • [更少/更多X]
  • [新聚焦Y]
  • [假设Z知识]

偏好:想保持详细解释还是切换到高级模式?(需要时你总可以要求细节)