6.2 设计题——给真实场景设计技能包
📋 多工具适用说明
本节的设计场景适用于所有 AI 编程工具。
设计题考察的是通用设计决策:
- 什么时候触发?需要什么实时数据?
- 有没有副作用?输出格式是什么?
Claude Code 用户:写出完整的 SKILL.md 其他工具用户:为你的工具写出等效配置(Cursor Prompt、Windsurf 规则块等)
说明
以下每个场景都来自真实开发需求。请设计技能包并写出完整的配置。没有标准答案——重点是设计决策和理由。
设计题一:每日站会报告
场景:你们团队每天早上 9 点开站会。每个人需要回答三个问题:昨天做了什么、今天打算做什么、有没有阻塞项。目前这些信息散落在 git log、Jira 和 Slack 中。
要求:设计一个技能包,自动汇总站会信息。
需要考虑:
- 用哪些
!command`` 注入实时数据? - 应该自动触发还是手动触发?
- 是否需要参数?
- 输出格式是什么样的?
参考设计
markdown
---
name: standup
description: 生成每日站会报告。当说"站会"、"standup"、"今天做了什么"时使用
disable-model-invocation: true
---
## 昨天的工作
!`git log --since="yesterday" --until="today" --author="$(git config user.name)" --oneline`
## 今天的计划
基于当前分支和未完成的工作,建议今天的工作重点。
## 阻塞项
检查是否有需要关注的开放 PR 或 Issue:
!`gh pr list --author="$(git config user.name)" --state open --limit 5 2>/dev/null || echo "无开放 PR"`
## 指令
按以下格式输出站会报告:
### 昨天完成
- (列出完成的任务)
### 今天计划
- (建议今天的工作重点)
### 阻塞项
- (列出需要他人协助或关注的问题)设计决策:
disable-model-invocation: true——站会报告应该主动触发,不应该 Claude 自动生成- 不需要参数——基于当前用户和日期自动获取
- 输出格式明确——站会需要结构化的信息
设计题二:安全审查技能包
场景:你们的项目处理用户支付数据,安全性至关重要。每次提交涉及支付模块的代码时,都需要进行安全审查。
要求:设计一个安全审查技能包,重点检查 OWASP Top 10 相关风险。
需要考虑:
- 如何限定只对支付模块的代码生效?
- 应该检查哪些安全风险?
- 如何确安全审查不会被跳过?
参考设计
markdown
---
name: security-review
description: 支付模块安全审查。当编辑支付相关代码、说"安全审查"时使用
paths:
- "src/payment/**"
- "src/checkout/**"
disable-model-invocation: true
---
## 安全审查清单
逐一检查以下风险,发现问题时明确标注 🔴:
1. **SQL 注入**:是否使用参数化查询?是否有字符串拼接 SQL?
2. **XSS**:用户输入是否转义?是否有 v-html 直接渲染?
3. **敏感数据泄露**:金额是否用整数?是否有浮点运算?日志中是否包含卡号/令牌?
4. **认证缺失**:所有支付 API 是否需要认证?是否有公开端点?
5. **超时和重试**:外部调用是否设置超时?重试是否有上限?
6. **错误处理**:错误信息是否泄露内部细节?是否正确回滚?
## 输出格式
| 检查项 | 状态 | 说明 |
|--------|------|------|
| SQL 注入 | ✅/🔴 | ... |设计决策:
paths限定只对支付模块生效——编辑其他模块不会触发disable-model-invocation: true——安全审查应该主动执行- 明确的检查清单和输出格式——确保审查覆盖所有关键点
设计题三:框架迁移技能包
场景:你的团队正在把组件从 Vue 2 Options API 迁移到 Vue 3 Composition API。迁移规则很明确,但每个组件都需要手动转换,容易遗漏。
要求:设计一个迁移技能包,指导 Claude 完成组件迁移。
需要考虑:
- 如何传入要迁移的组件路径?
- 迁移规则应该放在 SKILL.md 还是 references/?
- 如何确保迁移后功能不变?
参考设计
markdown
---
name: migrate-component
description: 将 Vue 2 组件迁移到 Vue 3 Composition API
argument-hint: "[component-path]"
arguments:
- component-path
disable-model-invocation: true
allowed-tools:
- Bash(npm run test:unit *)
---
## 迁移目标
!`cat $component-path`
## 迁移步骤
1. 将 Options API 转换为 `<script setup>` + Composition API
2. `data()` → `ref()` / `reactive()`
3. `computed` → `computed()`
4. `methods` → 普通函数
5. 生命周期钩子 → `onMounted()` 等
6. `watch` → `watch()` / `watchEffect()`
7. `this.$refs` → `ref()` 模板引用
8. `this.$emit` → `defineEmits()`
9. `this.$props` → `defineProps()`
## 验证
迁移完成后:
1. 确保所有原有功能保持不变
2. 运行相关测试:`npm run test:unit $component-path`
3. 列出迁移前后的差异摘要设计决策:
arguments接收组件路径,!cat $component-path`` 注入当前代码- 迁移步骤直接写在 SKILL.md 中——规则足够简洁,不需要辅助文件
allowed-tools授权测试命令——迁移后自动验证disable-model-invocation: true——迁移是有副作用的操作