【OpenSkills使用二】自定义 Skill 的实现

在 OpenSkills 安装指南 中,我们了解了如何安装官方提供的技能库。本篇将详细介绍如何实现一个自定义的 Skill ------ 以 user-login(管理员登录) 为例。

1. 自定义 Skill 的核心目录结构

自定义技能通常存放在项目根目录下的 .claude/skills/ 中,其最小结构如下:

text 复制代码
.claude/skills/
└── user-login/
    ├── SKILL.md           # 技能的核心说明文件(必须)
    └── .openskills.json   # 技能元数据(由同步工具生成或手动配置)

2. 案例分析:user-login 管理员登录技能

2.1 编写 SKILL.md

SKILL.md 是 AI 掌握技能的关键。我们需要在其中定义元数据、实施指南和代码模式。

以下是 user-login 技能的完整定义内容:

markdown 复制代码
---
name: "user-login"
description: "提供用户登录功能的通用实现方案。在用户需要实现、修改或优化用户身份验证、登录流程或相关安全逻辑时调用。"
---

# User Login Skill

本 Skill 指导如何构建一个安全、稳健且用户体验良好的登录系统。

## 适用场景
当用户提出以下需求时,应调用此 Skill:
- "实现登录功能"
- "增加用户身份验证"
- "优化登录页面的安全性"

## 核心设计原则
1. **安全性第一**:保护用户凭据,防止常见攻击(SQL 注入、XSS、CSRF、暴力破解)。
2. **体验流畅**:减少用户输入负担,提供清晰的反馈。

## 实施指南
### 1. 安全检查清单 (Security Checklist)
- [ ] **密码哈希**:使用 `bcrypt` 或 `argon2` 进行加盐哈希,绝不存储明文。
- [ ] **Session 管理**:使用安全标志配置 Cookie,或使用带过期时间的 JWT。
- [ ] **最小化信息泄露**:错误提示应模糊化,如"用户名或密码错误"。

### 2. 前端实现建议
- **表单验证**:在提交前进行基础校验。
- **加载状态**:提交时显示 Loading,防止重复点击。

## 常用模式示例
### 密码验证 (Node.js/bcrypt)
```javascript
const isValid = await bcrypt.compare(password, user.passwordHash);
if (!isValid) {
  return res.status(401).json({ message: '凭据无效' });
}
复制代码
你可以参考项目中已实现的 [SKILL.md](./openSkillExample/.claude/skills/user-login/SKILL.md)。

### 2.2 核心设计原则

在实现 `user-login` 技能时,我们强调了以下三点:
1. **安全性第一**:强制要求使用哈希加密(如 `bcrypt`)存储密码,防止明文泄露。
2. **最小化泄露**:登录失败时的错误提示必须模糊化(如"用户名或密码错误"),防止用户名枚举攻击。
3. **加载状态反馈**:前端表单提交时必须显示 Loading,提升交互体验。

## 3. 实现步骤:从技能到代码

### 第一步:创建技能定义
在 `.claude/skills/user-login/` 目录下创建并完善 `SKILL.md`。

### 第二步:同步技能
在终端运行以下命令,让 AI 代理"感知"到这个新技能:
```bash
openskills sync -y

该命令会自动将技能信息更新到根目录下的 AGENTS.md 中。

第三步:调用技能生成代码

现在,你可以直接在 Trae 中向 AI 下达指令:

"使用 user-login 技能,帮我写一个管理员登录界面和后端验证逻辑。"

第四步:代码落地示例

根据 user-login 技能的要求,AI 会生成如下高质量的代码:

4. 总结:为什么要自定义 Skill?

通过自定义 user-login 这种高频、通用的技能,我们可以:

  • 固化最佳实践:将团队的安全规范(如 JWT 过期时间、哈希算法)直接写进技能。
  • 极大提高效率 :无需每次手动叮嘱 AI 注意安全细节,AI 会自动遵循 SKILL.md 中的规范。
  • 跨项目复用 :只需将 .claude/skills/user-login 文件夹复制到新项目并同步,AI 就能立即在新环境中复用该能力。
相关推荐
吴佳浩3 小时前
《拆解全球最火 AI 开源项目》第一季 · REA
人工智能
AllData公司负责人7 小时前
AI大模型数据开发底座系列说明书,AllData集成Chat2DB开源项目建设AI 数据库分析底座,涵盖AI 洞察/对话SQL/智能视图!
数据库·人工智能·sql·开源·ai 洞察·对话sql
oil欧哟8 小时前
AI Agent 子智能体协作实战:怎样用好 Subagent 分工与省 Token|Oil Book
aigc·ai编程
泯泷9 小时前
让 Agent 分清“马上办、等一等、顺手办”
人工智能·llm·agent
鲜于言悠9059 小时前
Claude Fable 5.2 登场,专治复杂推理与长任务
人工智能
小虎AI生活10 小时前
火柴人skill接入workbuddy实操:5 段提示词产出 3 条 MP4(附 6 组可抄文本)
aigc·ai编程
联犀10 小时前
如何工程化降低语音交互AI设备的延迟(小智ai,芙崽这样的ai设备)
人工智能
杉岩数据10 小时前
杉岩数据董事长陈坚:从数据存储到行业智能——杉岩的AI时代战略布局
人工智能
冬奇Lab10 小时前
Loop 工程到底是高深的新技术,还是炒冷饭?用训练一个识别狗的模型讲明白
人工智能
冬奇Lab10 小时前
一天一个开源项目(第260篇):Plannotator —— 给 AI 编码 Agent 配一块「可批注的审阅台」,计划和代码改动都能在浏览器里逐条批示
人工智能·开源·claude