From 176f93614b4b00c3bcf51fced8add959d8f83b2e Mon Sep 17 00:00:00 2001 From: admin Date: Fri, 27 Feb 2026 14:44:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20weekly-report=20=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 涵盖前置要求、配置文件格式、环境变量说明、插件启用方式及常见问题 Co-Authored-By: Claude Sonnet 4.6 --- skills/weekly-report/README.md | 104 +++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 skills/weekly-report/README.md diff --git a/skills/weekly-report/README.md b/skills/weekly-report/README.md new file mode 100644 index 0000000..3ee277c --- /dev/null +++ b/skills/weekly-report/README.md @@ -0,0 +1,104 @@ +# weekly-report + +统计项目过去 7 天的 commit 和 PR,为每位协作者生成个人工作日志,并生成项目整体进度报告,通过 SMTP 发送到指定邮箱。 + +> 适用于自建 Gitea 仓库,不依赖 `gh` CLI。 + +## 前置要求 + +- Python 3.8+ +- 项目使用 Git,且 `origin` 指向 Gitea 实例 +- 有可用的 SMTP 邮件账号 + +## 第一步:在项目根目录创建配置文件 + +在**需要生成周报的项目**根目录下创建 `report-config.json`(可提交到 git): + +```json +{ + "recipients": ["boss@company.com", "team@company.com"], + "project_name": "你的项目名称", + "smtp_host": "smtphz.qiye.163.com", + "smtp_port": 994 +} +``` + +| 字段 | 必填 | 说明 | +|------|------|------| +| `recipients` | 是 | 收件人邮箱列表 | +| `project_name` | 是 | 项目名称,显示在邮件标题中 | +| `smtp_host` | 否 | SMTP 服务器地址,内置服务商可省略(见下表) | +| `smtp_port` | 否 | SMTP 端口,内置服务商可省略 | + +### 内置服务商(smtp_host/smtp_port 可省略) + +| 发件邮箱后缀 | 自动使用的服务器 | 端口 | +|-------------|----------------|------| +| `@gmail.com` | smtp.gmail.com | 587 | +| `@qq.com` | smtp.qq.com | 465 | +| `@163.com` | smtp.163.com | 465 | +| `@126.com` | smtp.126.com | 465 | +| `@outlook.com` / `@hotmail.com` | smtp.office365.com | 587 | + +企业自定义域名(如 `@yourcompany.com`)需手动填写 `smtp_host` 和 `smtp_port`。 + +## 第二步:设置环境变量 + +账号密码**不要写入任何文件**,在终端中临时设置: + +```bash +export SMTP_USER=your@email.com +export SMTP_PASSWORD=your-smtp-password-or-auth-code +``` + +> **说明**:`export` 仅对当前终端会话有效,关闭后自动失效。 +> 如需持久化,可写入 `~/.bashrc`(注意文件权限 `chmod 600 ~/.bashrc`)。 + +### 私有 Gitea 仓库 + +如果仓库是私有的,还需要额外设置 Gitea 访问令牌: + +```bash +export GITEA_TOKEN=your-gitea-token +``` + +在 Gitea 中生成令牌:`头像 → 设置 → 应用 → 管理 Access Token`,权限勾选 `repository: Read`。 + +公开仓库无需配置此项。 + +## 第三步:启用插件 + +在项目的 `.claude/settings.json` 中添加插件路径: + +```json +{ + "plugins": ["/path/to/ieslab_skills"] +} +``` + +## 第四步:调用技能 + +在 Claude Code 中输入: + +``` +/weekly-report +``` + +Claude 会自动执行以下流程: +1. 读取 `report-config.json` +2. 拉取 `origin/main` 最新代码 +3. 通过 Gitea API 获取过去 7 天的 commits 和已合并 PR +4. 生成每位协作者的个人工作日志 +5. 生成项目整体进度报告 +6. 发送 HTML 格式邮件到 `recipients` 列表 + +## 常见问题 + +**Q:发送失败,提示认证错误** +A:SMTP 密码通常需要使用"授权码"而非登录密码。QQ/163 邮箱请在邮箱设置中开启 SMTP 并生成授权码;Gmail 需要开启两步验证后生成"应用专用密码"。 + +**Q:没有 PR 数据** +A:直接 `git push` 的提交不会产生 PR 记录,只有通过 Gitea 创建 Pull Request 并合并的才会被统计。 + +**Q:私有仓库报 401 错误** +A:需要设置 `GITEA_TOKEN` 环境变量,参考上方说明。