git-daily-report

发送 image-tool (所有 remote 分支) 和 voc 项目 (dev 分支) 的每日 Git 变化报告 + 代码审查(安全 + 通用)(前一天)。

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "git-daily-report" with this command: npx skills add kidok/git-daily-report

Git 日报技能

每天自动发送 image-tool 和 voc 项目前一天的 Git 提交记录。

  • image-tool: 所有 remote 分支
  • voc-frontend / voc-backend: 仅 dev 分支

📋 项目路径

项目路径分支
image-tool/home/admin/ua-image/code/UA-EC-Image-Tool所有 remote 分支
voc-frontend/home/admin/voc/code/UA-VOC-Frontenddev
voc-backend/home/admin/voc/code/UA-VOC-Backenddev

🔧 获取 Git 变化

# 获取指定日期的提交(前一天)
TARGET_DATE="2026-03-22"
START_DATE="${TARGET_DATE} 00:00:00"
END_DATE="${TARGET_DATE} 23:59:59"

cd /path/to/repo

# image-tool: 获取所有 remote 分支
REMOTE_BRANCHES=$(git branch -r | grep -v '\->' | sed 's/^[[:space:]]*//')
for branch in $REMOTE_BRANCHES; do
    echo "📍 $branch:"
    git log --since="$START_DATE" --until="$END_DATE" --oneline --no-decorate "$branch"
done

# voc 项目:仅获取 dev 分支
echo "📍 origin/dev:"
git log --since="$START_DATE" --until="$END_DATE" --oneline --no-decorate "origin/dev"

🔍 代码审查

1️⃣ 安全审查

# 获取变更的文件列表
CHANGED_FILES=$(git diff --name-only "origin/main~1" "origin/main")

for file in $CHANGED_FILES; do
    # 1. 检查硬编码密码/密钥
    rg -n "(password|passwd|pwd|secret|api_key|apikey|token|credential)\s*[=:]\s*[\"'][^\"']+[\"']" "$file"
    
    # 2. 检查硬编码 IP/URL
    rg -n "(https?://|ftp://)[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" "$file"
    
    # 3. 检查 SQL 拼接风险
    rg -n "(execute|query|cursor\.execute)\s*\(\s*[\"'].*\+.*[\"']" "$file"
    
    # 4. 检查 eval/exec 危险函数
    rg -n "\b(eval|exec|system|os\.system|subprocess\.call)\s*\(" "$file"
    
    # 5. 检查调试代码残留
    rg -n "(console\.log|debugger|print\s*\(|logging\.debug)" "$file"
    
    # 6. 检查 TODO/FIXME 标记
    rg -n "(TODO|FIXME|XXX|HACK):" "$file"
done

安全检查项:

风险类型检查内容严重程度
🔴 高危硬编码密码/API 密钥/Token严重
🔴 高危SQL 注入风险(字符串拼接)严重
🟡 中危eval/exec/system 危险函数中等
🟡 中危硬编码内网 IP/URL中等
🟢 低危console.log/debugger 调试代码轻微
🟢 低危TODO/FIXME 技术债务轻微

2️⃣ 通用 Code Review

for file in $CHANGED_FILES; do
    # 1. 检查长函数 (>50 行)
    # 2. 检查大文件 (>500 行)
    # 3. 检查重复代码模式
    # 4. 检查命名规范 (驼峰/下划线)
    # 5. 检查注释完整性
    # 6. 检查错误处理
    # 7. 检查边界条件
    
    # 示例:检查空 catch 块
    rg -n "catch\s*\(\s*\w+\s*\)\s*\{\s*\}" "$file"
    
    # 示例:检查魔法数字
    rg -n "[^0-9][0-9]{4,}[^0-9]" "$file" | grep -v "//"
    
    # 示例:检查 var 使用 (JS)
    rg -n "\bvar\s+\w+\s*=" "$file"
    
    # 示例:检查缺少默认值
    rg -n "process\.env\.[A-Z_]+\s*[^|]" "$file"
done

通用审查项:

类别检查内容建议
📐 代码结构函数过长 (>50 行)拆分函数
📐 代码结构文件过大 (>500 行)模块化拆分
📐 代码结构嵌套过深 (>4 层)提前返回/卫语句
🏷️ 命名规范变量/函数命名不清晰使用语义化命名
🏷️ 命名规范魔法数字提取为常量
📝 注释缺少函数/类注释添加文档注释
📝 注释注释与代码不一致更新或删除注释
⚠️ 错误处理空 catch 块添加日志或处理
⚠️ 错误处理缺少边界检查添加验证
♻️ 代码复用重复代码提取公共函数
🔧 最佳实践使用 var 而非 let/const使用块级作用域
🔧 最佳实践硬编码配置使用环境变量/配置

📤 发送 DingTalk 消息

使用 message 工具发送:

{
  "action": "send",
  "channel": "dingtalk",
  "target": "1923216025-1426160278",
  "message": "📊 **Git 日报 - 2026-03-22**\n\n📁 **image-tool**:\n  📍 origin/main:\n    - abc123 修复登录问题\n\n📁 **voc-frontend**:\n  📍 origin/main:\n    - 无更新\n\n📁 **voc-backend**:\n  📍 origin/main:\n    - ghi789 优化查询性能"
}

⏰ 定时任务配置

使用 cron 工具设置每天 10:00 执行:

{
  "action": "add",
  "job": {
    "name": "git-daily-report",
    "schedule": {
      "kind": "cron",
      "expr": "0 10 * * *",
      "tz": "Asia/Shanghai"
    },
    "sessionTarget": "isolated",
    "wakeMode": "now",
    "payload": {
      "kind": "agentTurn",
      "message": "你是一个 Git 日报助手。请执行以下任务:\n1. 获取昨天的日期(格式:YYYY-MM-DD)\n2. 检查以下仓库的 Git 提交记录:\n   - /home/admin/ua-image/code/UA-EC-Image-Tool (所有 remote 分支)\n   - /home/admin/voc/code/UA-VOC-Frontend (仅 dev 分支)\n   - /home/admin/voc/code/UA-VOC-Backend (仅 dev 分支)\n3. 对 image-tool,先获取所有 remote 分支列表 (git branch -r),然后遍历每个分支获取提交;对 voc 项目,直接获取 origin/dev 分支的提交\n4. 获取每个项目的变更文件列表及改动统计 (git diff --stat, git diff --numstat)\n5. 对有代码变更的项目,进行代码审查:\n   - 安全审查:硬编码密码、SQL 注入、危险函数、调试代码等\n   - 通用 Code Review:代码结构、命名规范、注释、错误处理、最佳实践等\n6. 生成格式化的报告并通过 DingTalk 发送给用户 (target: 1923216025-1426160278)\n\n报告格式要求:\n- 每个项目列出提交信息和变更文件 (+x -y)\n- 代码审查分【安全审查】和【Code Review】两部分\n- 风险等级标注 (🔴🟡🟢)\n- 汇总风险和改进建议",
      "deliver": true,
      "channel": "dingtalk",
      "to": "1923216025-1426160278"
    }
  }
}

💬 用户交互

设置 Git 日报

用户: 每天早上 10 点发送 git 日报

AI 操作:

  1. 确认当前时间和时区
  2. 调用 cron 工具创建定时任务
  3. 回复确认信息

AI 回复: ✅ 已设置 Git 日报,每天 10:00 发送 image-tool 和 voc 项目所有 remote 分支的昨日提交记录~

查询 Git 日报状态

用户: git 日报设置了吗?

AI 操作:

  1. 调用 cron 工具 action: "list" 查询任务

AI 回复:

📋 Git 日报状态:

🔄 git-daily-report - 每天 10:00

说"取消 git 日报"可删除~

取消 Git 日报

用户: 取消 git 日报

AI 操作:

  1. 调用 cron 工具 action: "list" 找到任务 ID
  2. 调用 cron 工具 action: "remove" 删除任务

AI 回复: ✅ 已取消 Git 日报任务


📝 报告格式模板

📊 **Git 日报 - {日期}**

📁 **image-tool** (origin/main):
  📝 提交:abc123 修复登录问题
  📄 变更文件 (2):
    - src/login.js (+15 -3)
    - src/api.js (+8 -1)

📁 **voc-frontend** (origin/dev):
  📝 提交:def456 新增用户组件
  📄 变更文件 (5):
    - src/components/UserForm.vue (新增)
    - src/views/UserView.vue (+120 -45)
    - src/router/index.ts (+25 -2)
    - src/types/user.ts (+10 -0)
    - src/api/user.js (+30 -5)

📁 **voc-backend** (origin/dev):
  📝 提交:ghi789 优化查询性能
  📄 变更文件 (3):
    - routes/user.js (+45 -12)
    - services/db.js (+20 -8)
    - utils/validator.js (+15 -3)

🔍 **代码审查**:

📁 **image-tool**:
变更文件:src/login.js, src/api.js

【安全审查】
- ✅ 未发现硬编码密码/密钥
- ✅ 未发现 SQL 注入风险
- ⚠️ src/login.js:15 发现 console.log 调试代码

【Code Review】
- ✅ 函数长度合理
- ✅ 命名规范清晰
- 💡 建议:提取魔法数字为常量

---

📁 **voc-frontend**:
变更文件:UserForm.vue, TestView.vue, router/index.ts, comment.ts, CommentView.vue

【安全审查】
- ✅ 未发现硬编码密码/密钥
- ✅ 未发现 SQL 注入风险
- ⚠️ TestView.vue:22 发现 console.log 调试代码

【Code Review】
- ⚠️ TestView.vue: 函数过长 (176 行),建议拆分
- ⚠️ TestForm.vue: 硬编码测试数据,建议移至 mock 文件
- 💡 建议:添加类型定义和注释

---

📁 **voc-backend**:
变更文件:11 个 Java 文件

【安全审查】
- ✅ 已清理多处 System.out.println 调试代码 👍
- ✅ 未发现硬编码密码/密钥
- ✅ 未发现 SQL 注入风险
- ✅ 未发现危险函数调用

【Code Review】
- ✅ 代码结构清晰
- ✅ 命名规范良好
- 💡 建议:添加单元测试

---

🚨 **风险汇总**:
- 🔴 高危:0 处
- 🟡 中危:2 处 (函数过长、测试数据硬编码)
- 🟢 低危:1 处 (console.log)

📈 **改动统计**:
- 总文件数:18
- 新增行数:+253
- 删除行数:-59

💡 **改进建议**:
1. 移除 TestView.vue 中的 console.log
2. 拆分 TestView.vue 中的长函数
3. 将测试数据移至 mock 文件

_Generated at {时间}_

⚠️ 注意事项

  1. 时区: 使用 Asia/Shanghai (GMT+8)
  2. 日期计算: 报告的是前一天的提交(例如 23 号早上发 22 号的)
  3. 分支覆盖:
    • image-tool: 所有 remote 分支 (origin/*)
    • voc-frontend / voc-backend: 仅 dev 分支 (origin/dev)
  4. 无更新处理: 如果项目/分支没有提交,显示「无更新」
  5. 错误处理: 如果仓库不存在或 git 命令失败,在报告中注明
  6. 代码审查:
    • 分【安全审查】和【Code Review】两部分
    • 仅对有代码变更的项目进行审查
    • 使用 git diff --name-only 获取变更文件列表
    • 优先报告🔴高危问题(密码泄露、SQL 注入等)
    • 发现高危问题时,在报告开头添加🚨警告提示
  7. 通用 Code Review 重点:
    • 代码结构:函数长度、文件大小、嵌套深度
    • 命名规范:语义化命名、避免魔法数字
    • 注释文档:函数/类注释、注释与代码一致性
    • 错误处理:空 catch 块、边界检查
    • 最佳实践:var vs let/const、环境变量配置
  8. 依赖工具: 需要安装 ripgrep (rg) 进行代码搜索

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

Spicy Ai Video

Turn a 60-second talking head clip into 1080p high-energy edited videos just by typing what you need. Whether it's turning bland footage into visually intens...

Registry SourceRecently Updated
Coding

Video Maker Fast

Get polished MP4 videos ready to post, without touching a single slider. Upload your video clips (MP4, MOV, AVI, WebM, up to 500MB), say something like "trim...

Registry SourceRecently Updated
Coding

Generation Generator

generate text prompts or clips into AI generated videos with this skill. Works with MP4, MOV, PNG, JPG files up to 500MB. marketers, content creators, social...

Registry SourceRecently Updated
Coding

Editor On Android

Get edited MP4 clips ready to post, without touching a single slider. Upload your video clips (MP4, MOV, AVI, WebM, up to 500MB), say something like "trim th...

Registry SourceRecently Updated