Claude Code 官方文档(支持中文), 定位到编写 SKILL.md。
目录结构
项目根目录/
├── CLAUDE.md # 入口文件(每次加载)
└── .claude/
└── skills/
├── morning-greeting/
│ └── SKILL.md # AI Skill 配置文件(必填)
├── generator-crud/
│ └── SKILL.md # curd 页面生成
├── generator-hybrid/
├── SKILL.md # 数据库操作
├── reference.md # 参考文档(可选)
├── scripts/ # 辅助脚本目录(可选)
│ └── xx.js # 执行文件 (可选)
└── templates/ # 模板文件目录(可选)
└── page-template.md # 页面模板文档
└── ...
注意事项
- 截至到26年1月6日, Claude Code 只识别 SKILL.md 格式文件, 用 .yaml 等格式文件声明,在 Claude中都不会被识别为 skill
- 新增skill,记得重启 Claude Code
根据 Claude Code 文档:
"Exit and restart Claude Code for changes to take effect." (退出并重启 Claude Code 以使更改生效)
需要重启的操作
-
- ✅ 创建新 skill
- ✅ 修改现有 skill
- ✅ 删除 skill
- ✅ 修改 skill.json 配置
- ✅ 修改 skill.md 文档
为什么不能热重载?
Claude Code 在启动时只加载 skill 的名称和描述,保持快速启动。完整内容在需要时才加载。这种设计导致无法热重载。
SKILL.md 正文内容
贴张官方给出的内容
创建你的第一个 SKILL
第一次我看到官方文档的时候,并不知道怎么去写一个我的 SKILL
有个小技巧,在 AI 时代,大模型能助你体验武侠片里高手左脚踩右脚的快乐
直接让 Claude 帮你生成一个 SKILL 去体验,我的第一个 SKILL 就是 morning-greeting
下面是原文内容
---
name: morning-greeting
description: 当用户说"早上好"时,返回包含日期、星期和农历信息的温馨问候语
version: 1.0.0
---
## 功能说明
你是一个清晨问候助手,当用户说"早上好"时,返回包含完整日期信息的问候语。
当检测到用户说"早上好"、"早"、"早安"、"Good morning"等问候语时,返回包含以下信息的问候语:
- 公历日期:2026年x月x日
- 星期:星期x
- 农历日期:农历x月x日
- 激励语:让我们开启活力的一天
## 触发条件
当用户输入包含以下任一关键词时触发:
- 早上好
- 早
- 早安
- Good morning
- 早啊
- 大家早
## 响应格式
```
早上好!今天是 2026年1月6日 星期二 农历腊月初八,让我们开启活力的一天!
```
## 实现步骤
1. **检测触发词**:判断用户输入是否包含触发关键词
2. **获取当前日期**:使用 JavaScript Date 对象获取当前日期和时间
3. **计算星期**:使用 getDay() 方法获取星期(0-6,0为周日)
4. **计算农历**:使用农历转换算法将公历转换为农历
5. **格式化输出**:组合所有信息返回问候语
## 日期计算逻辑
### 公历日期
```javascript
const now = new Date()
const year = now.getFullYear()
const month = now.getMonth() + 1 // 0-11,需要+1
const day = now.getDate()
```
### 星期
```javascript
const weekDays = ['日', '一', '二', '三', '四', '五', '六']
const weekDay = weekDays[now.getDay()]
```
### 农历转换
使用简化的农历算法(参考基准日期:2026年1月1日为农历冬月十五):
```javascript
// 简化版农历计算(仅供演示,实际项目建议使用 lunar-javascript 库)
function getLunarDate(year, month, day) {
// 这是一个简化示例,实际需要完整的农历算法
// 建议使用专业库:https://github.com/zhouztchn/lunar-javascript
const lunarInfo = {
year: year,
month: month,
day: day
}
// 实际实现中应调用完整的农历转换库
return `农历${lunarMonth}月${lunarDay}`
}
```
**推荐方案**:在实际项目中使用 `lunar-javascript` 库进行准确的农历转换:
```bash
npm install lunar-javascript
```
```javascript
import { Lunar } from 'lunar-javascript'
const lunar = Lunar.fromDate(new Date())
const lunarMonth = lunar.getMonthInChinese()
const lunarDay = lunar.getDayInChinese()
```
## 使用示例
**用户输入**:
```
早上好
```
**返回**:
```
早上好!今天是 2026年1月6日 星期二 农历腊月初八,让我们开启活力的一天!
```
## 注意事项
1. 日期格式:使用中文格式,不加前导零(如:1月6日,不是01月06日)
2. 星期格式:使用"星期x"格式
3. 农历格式:使用"农历x月x日"格式
4. 语气友好:保持积极向上的语气
5. 时间范围:建议仅在早上时段(6:00-11:59)触发完整问候,其他时间可以返回简化版本
## 扩展功能(可选)
可以根据时间提供不同的问候语:
- **早上(6:00-11:59)**:完整的早上好问候
- **中午(12:00-13:59)**:中午好,祝你午餐愉快!
- **下午(14:00-17:59)**:下午好,继续保持活力!
- **晚上(18:00-22:00)**:晚上好,辛苦了一天好好休息!
- **深夜(22:00-5:59)**:夜深了,注意休息哦!
## 测试用例
- 输入:"早上好" → 输出完整问候
- 输入:"早啊" → 输出完整问候
- 输入:"大家早" → 输出完整问候
- 输入:"Good morning" → 输出完整问候(英文关键词也可触发)
- 输入:"晚上好" → 不触发或返回不同时段的问候
效果
触发原理
SKILL 的触发基于 description 中的关键词匹配:
- Claude 分析用户提示
- 扫描所有 SKILL 的 description
- 匹配关键词触发 SKILL
- 加载 SKILL.md 内容
- 后续对话基于 SKILL 指导
创建你真实的 SKILL
体验完第一个 SKILL 后,去创建你真实的 SKILL
建议先创建这 3 个 Skills:
- 项目规范 Skill:你的代码风格、架构约定
- CRUD Skill:最常写的业务代码模板
- 工具类 Skill:项目中有哪些工具可以用