让AI知识触手可及

首页 » 【工具技巧】通过ClaudeCode的Skills实现周报自动发送

引言

Claude Code作为Anthropic推出的官方CLI工具,近期推出了Skills功能,让开发者能够创建自定义的自动化任务。本文将分享如何利用Skills功能实现一个自动生成周报的实用工具,通过分析Git提交记录来总结每周工作内容。

Skill功能简介

SkillsClaude Code的一项核心功能,允许开发者创建自定义的自动化任务。与传统的脚本不同,Skills能够:

  • 智能识别:自动匹配用户意图,无需手动调用
  • 上下文感知:理解项目结构和开发环境
  • 多工具集成:结合Bash、文件操作等工具完成复杂任务

文件目录

Claude Code的配置文件结构如下:

.claude/
├── skills/           # Skills技能目录
│   └── git-report/   # Git报告生成技能
│       ├── SKILL.md  # 技能定义文件
│       └── README.md # 技能说明文档
├── agents/           # 智能代理定义
├── commands/         # 自定义命令
└── hooks/            # 钩子脚本

Skill实现方式

Skills的实现基于Markdown文件,通过详细的指令描述来指导Claude完成特定任务。每个Skill包含:

  • 技能名称和描述:定义技能的基本信息
  • 核心能力:详细说明技能的功能范围
  • 执行流程:分步骤的操作指南
  • 特殊场景处理:异常情况的应对策略

具体实现案例

我们实现了一个Git报告生成技能,主要功能包括:

需求背景

  • 开发团队需要定期总结工作进展
  • 手动整理Git提交记录耗时耗力
  • 需要将报告自动发送到企业微信

实现功能

  • 智能分析Git提交日志
  • 生成日报和周报
  • 支持企微机器人自动发送
  • 智能时间计算(自动处理周末)

1. Skill具体实现

技能定义

SKILL.md中定义技能的基本信息:

---
name: git-report
description: 分析Git提交日志生成简洁的日报和周报,提取核心工作内容并附带提交数据,支持发送到企微机器人
---

智能时间计算

技能能够智能计算日期范围:

# 日报模式:智能计算上一个工作日
case $(date '+%u') in
    1) target_date=$(date -v-3d '+%Y-%m-%d') ;; # 周一返回上周五
    2|3|4|5) target_date=$(date -v-1d '+%Y-%m-%d') ;; # 工作日返回前一天
    6|7) target_date=$(date -v-2d '+%Y-%m-%d') ;; # 周末返回上周五
esac

Git日志分析

通过Git命令获取提交数据:

git log --since="${target_date} 00:00" --until="${target_date} 23:59" \
       --pretty=format:"%h %an %ad %s" --date=short

企微机器人集成

支持将报告自动发送到企业微信:

curl -H "Content-Type: application/json" \
     -d '{
       "msgtype": "markdown",
       "markdown": {
         "content": "## 日报标题\n\n日报内容..."
       }
     }' \
     "$WECHAT_WEBHOOK_URL"

完整的SKILL内容

---
name: git-report
description: 分析Git提交日志生成简洁的日报和周报,提取核心工作内容并附带提交数据,支持发送到企微机器人
---

# Git报告生成专家

你是一位专业的开发工作分析专家,专门从Git提交日志中提取关键工作内容,生成简洁明了的日报和周报。你能够智能分析提交信息,识别核心工作项,并提供附带相关提交数据的专业报告。

## 核心能力

### 📊 Git日志分析
- **提交分析**:解析Git提交日志,提取有意义的工作内容
- **时间筛选**:支持指定日期范围(默认上一个工作日或上周)的提交分析
- **内容提取**:从提交信息中提取核心工作项和关键数据
- **分类整理**:按功能、修复、优化等类型对工作内容进行分类

### 📝 报告生成
- **简洁输出**:生成3-4行简短的工作内容描述
- **数据量化**:在描述中嵌入代码统计、问题修复等量化指标
- **专业格式**:使用清晰、专业的语言表达
- **重点突出**:突出显示重要的工作成果和进展

### 📅 智能时间计算
- **日报模式**:智能计算上一个工作日,自动处理周末
- **周报模式**:智能计算上周日期范围(周一至周五)
- **提交检查**:智能查找有提交记录的工作日
- **优雅降级**:如果找不到有提交的工作日,使用计算出的时间

### 📤 企微机器人集成
- **自动发送**:支持将报告自动发送到企业微信机器人
- **环境配置**:通过 `WECHAT_WEBHOOK_URL` 环境变量配置
- **格式适配**:自动适配企微机器人的消息格式

## 执行流程

### 1. 请求解析与模式识别

**识别用户意图**:
- 如果请求包含"日报"或"昨天",执行日报模式
- 如果请求包含"周报"或"上周",执行周报模式
- 如果指定具体日期,使用指定日期
- 如果没有指定,默认使用周报模式

### 2. 时间范围计算

**日报模式**:
```bash
# 获取当前星期(1=周一, 7=周日)
current_day=$(date '+%u')
echo "今天是星期 $current_day"

# 智能计算上一个工作日
case $current_day in
    1)  # 周一,返回上周五
        target_date=$(date -v-3d '+%Y-%m-%d')
        strategy="周一返回上周五"
        date_range="${target_date}"
        report_type="日报"
        ;;
    2|3|4|5)  # 周二到周五,返回前一天
        target_date=$(date -v-1d '+%Y-%m-%d')
        strategy="工作日返回前一天"
        date_range="${target_date}"
        report_type="日报"
        ;;
    6|7)  # 周六周日,返回上周五
        target_date=$(date -v-2d '+%Y-%m-%d')
        strategy="周末返回上周五"
        date_range="${target_date}"
        report_type="日报"
        ;;
esac

周报模式

# 计算上周一和上周五
last_monday=$(date -v-1w -v-monday '+%Y-%m-%d')
last_friday=$(date -v-1w -v-friday '+%Y-%m-%d')
strategy="周报模式返回上周"
date_range="${last_monday} 至 ${last_friday}"
report_type="周报"

智能提交检查

# 检查目标日期是否有提交
if [ "$report_type" = "日报" ]; then
    commit_count=$(git log --since="${target_date} 00:00" --until="${target_date} 23:59" --oneline --no-merges | wc -l | tr -d ' ')
else
    commit_count=$(git log --since="${last_monday} 00:00" --until="${last_friday} 23:59" --oneline --no-merges | wc -l | tr -d ' ')
fi

if [ "$commit_count" -gt 0 ]; then
    echo "✅ 目标日期有 $commit_count 个提交"
else
    echo "⚠️ 目标日期无提交,智能回溯查找..."
    # 智能回溯逻辑...
fi

echo "报告类型: $report_type"
echo "日期范围: $date_range"
echo "计算策略: $strategy"

3. Git日志分析与内容提取

获取提交数据

# 日报模式
if [ "$report_type" = "日报" ]; then
    git log --since="${target_date} 00:00" --until="${target_date} 23:59" --pretty=format:"%h %an %ad %s" --date=short
    git log --since="${target_date} 00:00" --until="${target_date} 23:59" --stat --oneline
else
    # 周报模式
    git log --since="${last_monday} 00:00" --until="${last_friday} 23:59" --pretty=format:"%h %an %ad %s" --date=short
    git log --since="${last_monday} 00:00" --until="${last_friday} 23:59" --stat --oneline
fi

内容分析策略

  • 工作内容识别

    • 功能开发:新功能、特性添加、模块实现
    • 问题修复:bug修复、错误处理、异常解决
    • 代码优化:性能优化、重构、代码清理
    • 文档更新:文档编写、注释完善、README更新
    • 配置调整:配置变更、环境设置、依赖更新
  • 重要性评估

    • 高重要性:核心功能、关键修复、架构变更
    • 中重要性:功能改进、优化调整、文档完善
    • 低重要性:格式调整、小修小改、注释更新
  • 数据量化

    • 统计新增代码行数、修改代码行数
    • 统计修复的bug数量
    • 统计不同类型提交的数量
    • 评估整体工作量和复杂度

4. 报告生成与格式化

日报格式

## 📅 工作日报 - YYYY-MM-DD

- 完成了[功能名称]的核心开发,涉及[提交数量]个提交,新增[代码行数]行代码
- 修复了[问题描述]相关bug,共修复[bug数量]个问题,优化了[影响范围]
- 优化了[模块/组件]的性能和代码结构,修改[代码行数]行代码,提升了[优化指标]
- 更新了[文档/配置]内容,完善了[相关方面]的说明和设置

周报格式

## 📊 工作周报 - YYYY-MM-DD 至 YYYY-MM-DD

### 本周工作概览
- **总提交数**:[总提交数]个提交
- **功能开发**:[功能提交数]个功能提交
- **问题修复**:[修复提交数]个问题修复
- **代码优化**:[优化提交数]个优化提交

### 主要工作成果
- 完成了[主要功能]的开发,涉及[提交数量]个提交,新增[代码行数]行代码
- 重点修复了[关键问题]相关bug,共修复[bug数量]个问题
- 优化了[重要模块]的性能,修改[代码行数]行代码
- 完善了[文档/配置]体系,提升了项目质量

4. 企微机器人发送(可选)

环境变量检查

# 检查环境变量
echo "检查环境变量 WECHAT_WEBHOOK_URL..."
WEBHOOK_URL=$(echo $WECHAT_WEBHOOK_URL)

if [ -n "$WEBHOOK_URL" ]; then
    echo "找到Webhook URL: ${WEBHOOK_URL:0:50}..."

    # 验证Webhook URL格式
    if [[ "$WEBHOOK_URL" =~ ^https://qyapi.weixin.qq.com/cgi-bin/webhook/send.* ]]; then
        echo "Webhook URL格式正确"
    else
        echo "❌ Webhook URL格式错误,请检查配置"
        echo "URL应该以 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send' 开头"
    fi
else
    echo "❌ 未设置 WECHAT_WEBHOOK_URL 环境变量"
    echo "配置方法:export WECHAT_WEBHOOK_URL=\"your_webhook_url\""
fi

企微消息格式
在工作日报或者周报的最后加上以下内容:

🤖 由 Claude Code 自动生成

发送消息

curl -s -w "%{http_code}" -o /tmp/wechat_response.json \
     -H "Content-Type: application/json" \
     -d '{
       "msgtype": "markdown",
       "markdown": {
         "content": "## 日报标题\n\n日报内容..."
       }
     }' \
     "$WEBHOOK_URL"

特殊场景处理

无提交的情况

  1. 明确告知用户当天没有提交记录
  2. 建议检查日期范围是否正确
  3. 提供替代方案(如查看其他日期)

大量提交的情况

  1. 优先选择重要和有代表性的提交
  2. 按重要性排序工作内容
  3. 合并相似类型的提交
  4. 突出显示关键成果

企微机器人发送失败

  1. 网络问题:检查网络连接,重试发送
  2. URL错误:验证Webhook URL格式和有效性
  3. 消息过长:简化日报内容,控制在企微机器人限制内
  4. 权限问题:检查机器人是否被禁用或权限不足
  5. 备用方案:如果发送失败,提供本地保存选项

输出质量标准

准确性

  • ✅ 提交数据准确无误
  • ✅ 工作描述真实反映提交内容
  • ✅ 日期范围正确
  • ✅ 统计信息精确

简洁性

  • ✅ 控制在3-4行描述
  • ✅ 每行聚焦一个主要工作项
  • ✅ 语言简洁专业
  • ✅ 避免技术术语堆砌

实用性

  • ✅ 附带量化数据指标
  • ✅ 突出重要工作成果
  • ✅ 便于快速阅读和理解
  • ✅ 提供有价值的工作摘要

完整性

  • ✅ 覆盖主要工作类型
  • ✅ 包含代码统计和问题修复数据
  • ✅ 反映整体工作进展
  • ✅ 提供足够的数据支撑

关键要点

  • 双模式支持:同时支持日报和周报两种模式
  • 智能时间计算:自动处理周末和节假日情况
  • 环境变量依赖:企微机器人发送功能依赖于 `WECHAT_WEBHOOK_URL` 环境变量
  • Bash工具使用:必须使用Bash工具来获取环境变量,因为Claude Code在命令行模式下无法直接访问shell环境变量
  • 简洁实用:目标是提供准确、简洁、实用的工作报告,帮助用户快速了解开发进展和关键工作成果

2. 测试结果

技能实现后,运行效果如下:

说明:
企微机器人WEBHOOK_URL获取方法:

  1. 打开企业微信,进入目标群聊
  2. 点击右上角群聊设置
  3. 选择"群机器人"
  4. 点击"添加机器人"
  5. 设置机器人名称(如:"日报机器人")
  6. 复制生成的Webhook URL

Skill与MCP的区别

为了更好地理解SkillsMCP的区别,我们可以通过一个简单的比喻:

Skills就像你的个人助理,而MCP就像公司的专业部门

特性 Skill (个人助理) MCP (专业部门)
使用场景 日常自动化任务
快速响应需求
轻量级工具
复杂系统集成
专业工具连接
企业级应用
部署方式 文件复制即可
无需额外配置
即装即用
需要安装服务
配置协议连接
环境依赖
响应速度 秒级响应
直接在当前会话执行
需要启动进程
协议通信延迟
相对较慢
功能范围 文本处理、数据分析
文件操作、简单脚本
数据库连接、API调用
复杂工具集成
学习成本 低,Markdown文档
易于理解和修改
高,需要技术背景
协议理解和配置

实际场景对比

使用Skills的场景

  • 日报生成:一键分析Git提交,生成工作摘要
  • 代码审查:快速检查代码质量,给出改进建议
  • 文档整理:批量处理Markdown文档,生成目录
  • 数据转换CSVJSONYAMLXML等格式转换

使用MCP的场景

  • 数据库操作:连接MySQLPostgreSQL执行复杂查询
  • 云服务集成:调用AWSAzure等云平台API
  • 专业工具:集成DockerKubernetes等运维工具
  • 企业系统:连接JiraConfluence等企业应用

选择建议

  • 选择Skills:当需要快速实现自动化、处理文本数据、执行简单脚本时
  • 选择MCP:当需要连接外部系统、使用专业工具、处理复杂业务逻辑时

简单来说:Skills适合做你的贴身助手,MCP适合连接专业工具

Skill的进一步应用拓展

基于Git报告生成技能的实践经验,Skills功能在更多场景中具有广阔的应用前景:

命令行环境下的独特优势

处理非结构化数据

  • 日志分析:自动分析系统日志,提取关键错误和性能指标
  • 文档处理:批量处理MarkdownJSON等文档,自动生成摘要
  • 数据转换:在不同格式间转换数据,如CSVJSONYAMLXML

复杂任务自动化

  • 项目初始化:根据模板自动创建项目结构,配置开发环境
  • 代码质量检查:集成多种代码检查工具,生成质量报告
  • 依赖管理:自动分析依赖关系,识别过时或冲突的包

与定时任务的结合应用

自动化工作流

  • 日报自动化:结合crontab定时生成日报,自动发送到团队群
  • 系统监控:定期检查系统状态,生成健康报告
  • 数据备份:自动备份重要数据,生成备份报告

智能提醒系统

  • 任务提醒:根据Git提交记录智能提醒未完成的任务
  • 代码审查:自动分析新提交的代码,生成审查建议
  • 性能监控:定期检查应用性能,发现潜在问题

Skills功能的强大之处在于其灵活性可扩展性,让开发者能够根据具体需求定制专属的自动化解决方案。

总结

通过Claude CodeSkills功能,我们成功实现了一个智能的Git报告生成工具:

核心优势

  • 🚀 自动化程度高:一键生成日报/周报
  • 🎯 智能分析:自动识别工作类型和重要性
  • 📊 数据量化:提供详细的代码统计
  • 📤 无缝集成:支持企微机器人自动发送

使用效果

  • 节省了手动整理报告的时间
  • 提高了工作汇报的准确性
  • 便于团队协作和进度跟踪

Skills功能为开发者提供了强大的自动化能力,让重复性工作变得简单高效。

参考资料

官方文档

相关资源

本文基于Claude Code最新版本编写,具体功能可能随版本更新而变化,请以官方文档为准。

声明:一起AI技术所有文章,如无特殊说明或标注,均为本站作者原创发布。任何个人或组织,在未征得作者同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。
原创不易,内容版权受保护,感谢您的尊重与支持。
0 0 投票数
Article Rating
订阅评论
提醒
guest的头像
0 评论
内联反馈
查看所有评论
Picture of Dongming
Dongming
见天地,见众生,见自己。

分类文章

推荐活动

推荐文章

【项目实战】通过ClaudeCode进行one-api系统改造的实践过程总结
【工具技巧】通过ClaudeCode的Skills实现Excel文件的读写
【工具技巧】通过Claude Code+K2模型编写Dify插件的实践过程
【工具技巧】Claude Code 使用技巧
【工具技巧】通过ClaudeCode实现技术交底书agent
【工具技巧】Claude Code+Deepseek模型的配置使用方法
【项目实战】通过多模态+LangGraph实现PPT生成助手
【课程总结】day24(上):大模型三阶段训练方法(LLaMa Factory)
【项目实战】通过LLaMaFactory+Qwen2-VL-2B微调一个多模态医疗大模型
【模型测试】基于OpenCompass实现Agent最为苛刻的基准评测:GAIA
滚动至顶部
0
希望看到您的想法,请您发表评论x