add-holidaylisted
Install: claude install-skill realRoc/my-calendar
# add-holiday
用户想新增一个节日定义。**不要直接手写文件**——按下面的流程走,确保 schema 一致、id 不冲突、日期规则正确。
## 步骤
### 1. 确认基本信息
问清以下字段(一次性问完,不要逐个挤牙膏):
- **中文名**(必须)
- **英文名**(可选,没有就跳过)
- **类别**:`cn-legal` / `western` / `custom`
- 拿不准就归 `custom`
- **日期类型**:固定公历 / 农历 / 某月第 N 个星期 X
- **日期具体值**(看类型)
- **关联人物**(可选):默认会想到谁?比如母亲节默认 mom
- **备注**(可选):送礼参考、忌讳、历史背景等
### 2. 推导 holiday-id
规则:
- 优先用英文名 kebab-case(`Father's Day` → `fathers-day`)
- 没英文名就用拼音(`七夕` → `qixi`)
- 自定义生日:`<person-id>-birthday`(如 `mom-birthday`)
- 自定义纪念日:`<event>-anniversary`(如 `wedding-anniversary`)
### 3. 检查是否已存在
```bash
ls holidays/*/<id>.md 2>/dev/null
```
已存在 → 询问用户是覆盖还是改 id。
### 4. 写文件
路径 `holidays/<category>/<id>.md`,frontmatter 严格按 AGENTS.md 的 holiday schema:
```yaml
---
id: <id>
name_cn: <中文名>
name_en: <英文名> # 没有则省略此行
category: <category>
date_rule:
type: fixed | lunar | nth_weekday
# type=fixed:
month: <1-12>
day: <1-31>
# type=lunar:
month: <1-12>
day: <1-30>
# type=nth_weekday:
month: <1-12>
weekday: <0-6> # 0=周一, 6=周日 (ISO weekday - 1)
n: <±1..5> # 第几个;负数表示倒数(-1=最后一个)
default_people: [<id>, ...] # 可选
lead_days: [7, 1] # 可选,默认 [7, 1]
notes: | # 可选
<自由文本>
---
```
正文部分可以为空,或写一段对节日含义的简短说明。
### 5. 反馈
告诉用户:
- 写到了哪个路径
- 下次跑 `daily_check.py` 会被自动扫到
- 如果是今天/最近 7 天内的节日,提示可以立即跑一次 `daily_check.py` 让事件出现在日历
## 常见日期换算速查
| 节日 | 规则 |
|---|---|
| 母亲节 | nth_weekday: 5月第2个周日 → `month:5, weekday:6, n:2` |
| 父亲节 | nth_weekday: 6月第3个周日 → `month: