文思AI产品笔记
首页
最新文章
AI编程
AI架构
关于我
  • AI生态圈
  • AI大模型
  • 多维表格
  • AI创业笔记
  • AI落地案例
  • 个人产品推介
  • 问题集
  • 简体中文
  • English
首页
最新文章
AI编程
AI架构
关于我
  • AI生态圈
  • AI大模型
  • 多维表格
  • AI创业笔记
  • AI落地案例
  • 个人产品推介
  • 问题集
  • 简体中文
  • English
  • Claude Code 教程

    • Claude Code 从入门到精通
    • 01 - 快速入门
    • 02 - 核心特点
    • 03 - 版本演进史
    • 04 - 架构深入解析
    • 05 - Claude Skills 详解
    • 06 - MCP 协议完全指南
    • 07 - 高级功能全解
    • 08 - 最佳实践
    • 09 - 使用诀窍与技巧
    • 10 - 配置优化指南

05 - Claude Skills 详解

🎯 掌握 Claude Skills:让 AI 具备超能力的扩展系统


📋 本章目标

  • ✅ 理解 Claude Skills 的核心概念
  • ✅ 掌握所有内置 Skills 的使用
  • ✅ 学会创建自定义 Skills
  • ✅ 了解 Skills 的最佳实践和高级用法

预计阅读时间: 35分钟


🤔 什么是 Claude Skills?

核心概念

Claude Skills 是扩展 Claude 能力的插件系统,让 Claude 能够:

基础 Claude:
- 理解代码
- 生成代码
- 回答问题

Claude + Skills:
- 执行终端命令 ✨
- 读取文件系统 ✨
- 调用外部 API ✨
- 操作数据库 ✨
- 运行测试 ✨
- 部署应用 ✨
...无限可能

架构设计

┌─────────────────────────────────────┐
│         User (你的指令)              │
└──────────────┬──────────────────────┘
               │
               ↓
┌─────────────────────────────────────┐
│       Claude AI (理解+规划)          │
└──────────────┬──────────────────────┘
               │
               ↓
┌─────────────────────────────────────┐
│       Skills System                  │
│  ┌──────────┐  ┌──────────┐        │
│  │ Skill A  │  │ Skill B  │  ...   │
│  └──────────┘  └──────────┘        │
└──────────────┬──────────────────────┘
               │
               ↓
┌─────────────────────────────────────┐
│    External Systems                  │
│  (文件/API/数据库/终端...)           │
└─────────────────────────────────────┘

📚 内置 Skills 完全指南

1. File System Skills 📁

功能:文件和目录操作

可用操作:

  • read_file - 读取文件内容
  • write_file - 创建/更新文件
  • delete_file - 删除文件
  • list_directory - 列出目录内容
  • search_files - 搜索文件
  • file_exists - 检查文件是否存在

使用示例

示例1: 批量重命名文件

Prompt:
"将 src/components 目录下所有 .jsx 文件重命名为 .tsx,
 并更新所有的引用"

Claude 会:
1. 使用 list_directory 列出所有文件
2. 用 read_file 读取每个文件
3. 转换为 TypeScript
4. 用 write_file 保存为 .tsx
5. 搜索所有引用并更新

示例2: 代码审计

Prompt:
"扫描整个项目,找出所有使用了 console.log 的地方"

Claude 会:
1. 使用 search_files 搜索 "console.log"
2. 列出所有匹配的文件和行号
3. 询问是否要批量删除或替换为 logger

最佳实践

✅ Do:
- 明确指定路径: "在 src/utils 目录下..."
- 使用通配符: "所有 .ts 文件"
- 备份重要文件: "先备份,然后..."

❌ Don't:
- 模糊指令: "找一些文件"
- 忽略权限: 确保有写入权限
- 批量操作无确认: 重要操作前要求确认

2. Terminal/Command Execution Skills 💻

功能:执行终端命令

可用操作:

  • run_command - 执行 shell 命令
  • run_script - 运行脚本文件
  • start_process - 启动后台进程
  • stop_process - 停止进程

使用示例

示例1: 项目初始化

Prompt:
"初始化一个新的 Next.js 项目,
 安装 Tailwind CSS 和 TypeScript"

Claude 会执行:
```bash
npx create-next-app@latest my-app --typescript
cd my-app
npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p
# 配置 tailwind.config.js
npm run dev

完全自动化!


示例2: 自动化测试和部署

Prompt:
"运行所有测试,如果通过则部署到 Vercel"

Claude 会:
```bash
# 1. 运行测试
npm test

# 2. 如果测试通过
if [ $? -eq 0 ]; then
  # 构建项目
  npm run build
  
  # 部署
  vercel --prod
  
  echo "✅ 部署成功!"
else
  echo "❌ 测试失败,取消部署"
fi

安全注意事项

⚠️ 危险命令 (Claude 会警告或拒绝):
- rm -rf /
- sudo commands (除非明确授权)
- 修改系统文件
- 网络攻击命令

✅ 安全实践:
- Claude 会显示命令预览
- 需要你确认才执行
- 敏感操作会二次确认
- 自动记录命令历史

3. Git Skills 🔀

功能:Git 版本控制操作

可用操作:

  • git_status - 查看状态
  • git_diff - 查看差异
  • git_commit - 提交更改
  • git_branch - 分支操作
  • git_log - 查看历史

使用示例

示例1: 智能提交

Prompt:
"查看我改了什么,生成有意义的 commit message,
 然后提交"

Claude 会:
1. git diff 查看更改
2. 分析更改内容
3. 生成 conventional commit 格式的 message:
   "feat(auth): add OAuth login with Google
   
   - Implement Google OAuth flow
   - Add user session management
   - Update login UI with Google button"
4. 执行 git add + git commit

示例2: 代码审查前准备

Prompt:
"准备一个 PR,包括:
 - 整理 commits (squash 小改动)
 - 更新 CHANGELOG
 - 运行 linter
 - 确保测试通过"

Claude 自动化处理所有步骤!

4. API Skills 🌐

功能:调用外部 API

可用操作:

  • http_get - GET 请求
  • http_post - POST 请求
  • http_put - PUT 请求
  • http_delete - DELETE 请求
  • graphql_query - GraphQL 查询

使用示例

示例1: 数据获取和处理

Prompt:
"从 https://api.github.com/users/octocat 
 获取用户数据,然后生成一个用户卡片组件"

Claude 会:
1. 调用 API
2. 解析 JSON
3. 生成 React 组件:
```tsx
interface GitHubUser {
  login: string
  avatar_url: string
  bio: string
  // ...
}

function UserCard({ user }: { user: GitHubUser }) {
  return (
    <div className="card">
      <img src={user.avatar_url} alt={user.login} />
      <h2>{user.login}</h2>
      <p>{user.bio}</p>
    </div>
  )
}

示例2: 测试 API 端点

Prompt:
"测试我的 REST API 的所有端点,
 生成测试报告"

Claude 会:
1. 读取 API 文档/路由定义
2. 对每个端点发送测试请求
3. 验证响应状态和数据
4. 生成 Markdown 测试报告

5. Database Skills 🗄️

功能:数据库操作 (通过 MCP)

支持的数据库:

  • PostgreSQL
  • MySQL
  • MongoDB
  • SQLite
  • Redis

可用操作:

  • query - 执行查询
  • insert - 插入数据
  • update - 更新数据
  • delete - 删除数据
  • schema - 查看表结构

使用示例

示例1: 数据分析

Prompt:
"分析 users 表,告诉我:
 - 用户增长趋势
 - 活跃用户占比
 - 地区分布
 生成可视化图表的代码"

Claude 会:
1. 查询数据库
2. 执行 SQL 聚合分析
3. 生成 Chart.js/Recharts 代码

示例2: 数据库迁移

Prompt:
"创建一个迁移脚本,
 为 users 表添加 email_verified 字段"

Claude 生成:
```sql
-- Migration: add_email_verified_to_users
-- Created: 2024-12-22

ALTER TABLE users 
ADD COLUMN email_verified BOOLEAN DEFAULT false;

CREATE INDEX idx_users_email_verified 
ON users(email_verified);

-- Rollback
ALTER TABLE users DROP COLUMN email_verified;

6. Test Skills 🧪

功能:自动化测试

可用操作:

  • run_tests - 运行测试
  • generate_tests - 生成测试用例
  • coverage_report - 覆盖率报告
  • debug_test - 调试失败的测试

使用示例

示例1: TDD 开发

Workflow:
1. "为用户登录功能生成测试用例"
   → Claude 生成全面的测试

2. "实现这些测试"
   → Claude 实现功能代码

3. "运行测试"
   → Claude 执行测试并报告结果

4. "修复失败的测试"
   → Claude 调整代码直到全部通过

示例2: 测试覆盖率优化

Prompt:
"检查测试覆盖率,
 为覆盖率<80%的文件添加测试"

Claude 会:
1. 运行 jest --coverage
2. 分析报告
3. 识别覆盖不足的文件
4. 生成补充测试用例
5. 再次验证覆盖率

7. Browser Skills 🌐

功能:浏览器自动化

可用操作:

  • navigate - 访问 URL
  • click - 点击元素
  • fill_form - 填写表单
  • screenshot - 截图
  • scrape_data - 抓取数据

使用示例

示例1: 端到端测试

Prompt:
"测试用户注册流程:
 1. 打开注册页面
 2. 填写表单
 3. 提交
 4. 验证跳转到首页"

Claude 会生成 Playwright/Puppeteer 测试:
```typescript
test('user registration flow', async ({ page }) => {
  await page.goto('http://localhost:3000/register')
  
  await page.fill('input[name="email"]', 'test@example.com')
  await page.fill('input[name="password"]', 'SecurePass123!')
  await page.click('button[type="submit"]')
  
  await expect(page).toHaveURL('http://localhost:3000/dashboard')
  await expect(page.locator('h1')).toContainText('Welcome')
})

🛠️ 创建自定义 Skills

自定义 Skill 结构

// my-custom-skill.ts

export const myCustomSkill = {
  name: 'my_custom_skill',
  description: '描述这个 Skill 做什么',
  
  parameters: {
    type: 'object',
    properties: {
      param1: {
        type: 'string',
        description: '参数1的说明'
      },
      param2: {
        type: 'number',
        description: '参数2的说明'
      }
    },
    required: ['param1']
  },
  
  async execute(params: {
    param1: string
    param2?: number
  }) {
    // 实现你的逻辑
    const result = await doSomething(params)
    return result
  }
}

示例:创建 Notion API Skill

// notion-skill.ts

import { Client } from '@notionhq/client'

export const notionSkill = {
  name: 'notion_operations',
  description: 'Interact with Notion databases and pages',
  
  parameters: {
    type: 'object',
    properties: {
      action: {
        type: 'string',
        enum: ['create_page', 'query_database', 'update_page'],
        description: 'Action to perform'
      },
      database_id: {
        type: 'string',
        description: 'Notion database ID'
      },
      content: {
        type: 'object',
        description: 'Page content'
      }
    },
    required: ['action']
  },
  
  async execute(params) {
    const notion = new Client({
      auth: process.env.NOTION_API_KEY
    })
    
    switch (params.action) {
      case 'create_page':
        return await notion.pages.create({
          parent: { database_id: params.database_id },
          properties: params.content
        })
        
      case 'query_database':
        return await notion.databases.query({
          database_id: params.database_id
        })
        
      // ... 其他操作
    }
  }
}

注册自定义 Skill

// .cursor/skills/index.ts

import { notionSkill } from './notion-skill'
import { slackSkill } from './slack-skill'

export const customSkills = [
  notionSkill,
  slackSkill,
  // ... 更多自定义 Skills
]

使用自定义 Skill

Prompt:
"在 Notion 中创建一个新的项目任务"

Claude 会:
1. 识别 notion_operations skill
2. 调用 create_page action
3. 传入参数
4. 返回结果

💡 Skills 最佳实践

1. 组合使用 Skills

强大的组合示例:

Prompt:
"从 GitHub API 获取最近的 issues,
 分析问题类型,
 在 Notion 中创建任务看板,
 发送 Slack 通知给团队"

Claude 会组合使用:
1. API Skill → 获取 GitHub issues
2. 分析和分类(AI 能力)
3. Database/Notion Skill → 创建任务
4. API Skill → 发送 Slack 消息

一个 Prompt 完成复杂工作流!

2. 错误处理

// Skill 中的错误处理

async execute(params) {
  try {
    const result = await riskyOperation(params)
    return {
      success: true,
      data: result
    }
  } catch (error) {
    return {
      success: false,
      error: error.message,
      suggestion: '请检查参数是否正确'
    }
  }
}

Claude 会智能处理错误:

  • 向用户报告问题
  • 提供解决建议
  • 必要时重试

3. 性能优化

// 缓存结果
const cache = new Map()

async execute(params) {
  const cacheKey = JSON.stringify(params)
  
  if (cache.has(cacheKey)) {
    return cache.get(cacheKey)
  }
  
  const result = await expensiveOperation(params)
  cache.set(cacheKey, result)
  
  return result
}

4. 安全性

// 输入验证
import { z } from 'zod'

const ParamsSchema = z.object({
  userId: z.string().uuid(),
  email: z.string().email(),
  role: z.enum(['admin', 'user', 'guest'])
})

async execute(params) {
  // 验证输入
  const validated = ParamsSchema.parse(params)
  
  // 权限检查
  if (validated.role !== 'admin') {
    throw new Error('Insufficient permissions')
  }
  
  // 执行操作
  return await secureOperation(validated)
}

🚀 高级用法

1. 条件执行链

Prompt:
"检查 API 健康状态,
 如果不健康,重启服务,
 如果重启失败,发送告警"

Claude 会创建执行链:
1. HTTP GET /health
2. IF status !== 200:
   3. run_command('pm2 restart api')
   4. IF restart failed:
      5. send_alert('API down!')

2. 循环操作

Prompt:
"对 users 表的每一行:
 1. 调用外部 API 获取用户详情
 2. 更新数据库
 3. 记录日志"

Claude 会处理循环,并智能:
- 批量处理(避免逐个请求)
- 并发控制(防止 API 限流)
- 进度报告

3. 数据流水线

Prompt:
"建立数据处理流水线:
 GitHub issues → 清洗数据 → 分类标签 → 
 存入数据库 → 生成报告 → 发送邮件"

Claude 自动化整个流程!

📊 Skills 性能对比

Skill 类型执行速度资源消耗使用频率
File System⚡ 极快低极高
Terminal⚡ 快中高
API🐌 取决网络低高
Database⚡ 快中中
Browser🐌 较慢高低

✅ 检查清单

完成本章后,你应该能够:

  • [ ] 理解 Skills 的工作原理
  • [ ] 熟练使用所有内置 Skills
  • [ ] 创建简单的自定义 Skills
  • [ ] 组合多个 Skills 完成复杂任务
  • [ ] 处理 Skills 执行中的错误
  • [ ] 优化 Skills 性能

🎯 实战练习

练习1: 自动化工作流

创建一个自动化脚本:
1. 从 Google Sheets 读取任务列表
2. 为每个任务创建 GitHub Issue
3. 在 Notion 中创建项目看板
4. 发送 Slack 通知

练习2: 自定义 Skill

创建一个 Weather Skill:
- 调用天气 API
- 缓存结果
- 提供友好的响应格式

练习3: 数据处理流水线

建立 ETL 流程:
Extract: 从 API 获取数据
Transform: 清洗和转换
Load: 存入数据库

📚 下一步

掌握了 Skills,你已经能让 Claude 做很多事情!

接下来学习:

  • 06 - MCP 协议 - 更强大的扩展系统
  • 07 - 高级功能 - 组合使用所有能力
  • 08 - 最佳实践 - 生产环境使用指南

⚡ Skills 让 Claude 从"会说话"变成"会做事"

掌握 Skills,你就掌握了 AI 自动化的核心!

最近更新: 2025/12/22 14:25
Contributors: wsyx
Prev
04 - 架构深入解析
Next
06 - MCP 协议完全指南