# Ac Report

> 基于 Git 提交记录生成周报或月报。

- Skill: `yz0812/ac-report` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add yz0812/ac-report`
- Raw SKILL.md: https://api.skillmd.com/api/skills/yz0812/ac-report/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: yz0812 (https://skillmd.com/u/yz0812)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/yz0812/ac-report

---


# Report - Git 周报/月报

基于 Git 提交记录生成周报/月报。

## 使用方法

```bash
/ac-report [参数]
```

## 触发解析

解析用户输入，提取以下参数：

| 参数 | 默认值 | 示例 |
|------|--------|------|
| 类型 | 周报 | "周报" / "月报" |
| 用户 | 当前 git user.name | "@张三" |
| 日期 | 本周/本月 | "12月"、"2025-01"、"最近10天" |

**解析示例：**

```
"/ac-report 生成本周周报"       → 类型=周报, 用户=当前, 日期=本周
"/ac-report 生成12月月报"       → 类型=月报, 用户=当前, 日期=12月
"/ac-report 生成周报 @张三"     → 类型=周报, 用户=张三, 日期=本周
"/ac-report 生成最近10天的周报" → 类型=周报, 用户=当前, 日期=最近10天
```

## 执行流程

### 1. 检测 MCP 可用性

优先使用 `mcp__server-git__git_log`，不可用则使用 Bash `git log`。

### 2. 计算日期范围

```
周报（无指定）→ 本周一 00:00 ~ 今天 23:59
月报（无指定）→ 本月1日 00:00 ~ 今天 23:59
"12月月报"   → 12月1日 ~ 12月31日（或今天，若当月）
"最近N天"    → N天前 00:00 ~ 今天 23:59
```

### 3. 获取用户名

指定 `@用户名` 则使用该用户，否则：

```bash
git config user.name
```

### 4. 查询提交记录

**使用 MCP（优先）：**

```
mcp__server-git__git_log
  repo_path: 当前目录
  start_timestamp: 起始日期
  end_timestamp: 结束日期
```

然后按 author 过滤。

**使用 Bash（降级）：**

```bash
git log --author="用户名" --since="起始日期" --until="结束日期" --pretty=format:"%h - %s (%ai)" --no-merges
```

### 5. 美化提交记录

**禁止原样输出 git log**，必须进行以下处理：

1. **合并相似提交**：同一功能的多次提交合并为一条
2. **过滤噪音**：忽略 Merge commit、Delete 目录等无意义提交
3. **规范描述**：将简短的 "更新"、"修改" 补充为完整描述
4. **分类整理**：按功能模块或类型分组

**输出格式：序号列表，不含日期**

```markdown
1. 完成用户认证模块开发，包括登录、注册、密码重置功能
2. 添加签到日志请求详情和状态筛选功能
3. 修复打包配置问题
```

### 6. 填充模板

读取 `assets/templates/weekly.md` 或 `assets/templates/monthly.md`，替换变量：

| 变量 | 说明 |
|------|------|
| `{{DATE_RANGE}}` | 日期范围，如 "2025-01-06 ~ 2025-01-10" |
| `{{USER}}` | 用户名 |
| `{{COMMITS}}` | **美化后的**工作内容 |
| `{{COMMIT_COUNT}}` | 提交总数 |
| `{{REPOS}}` | 涉及仓库名（从 repo_path 提取） |
| `{{STAT_LINES}}` | 代码行数统计（仅模板包含时计算） |

### 7. 输出结果

将填充后的模板内容输出给用户。

## 模板自定义

模板位于 `assets/templates/`，用户可修改或新增模板。

**可选变量 `{{STAT_LINES}}`**：若模板包含此变量，额外执行：

```bash
git log --author="用户名" --since="起始" --until="结束" --shortstat --oneline | grep -E "^\s*\d+\s+file"
```

汇总 insertions/deletions。

## 多仓库支持

若用户指定多个路径，对每个路径分别查询，合并结果后生成报告。

