← ClaudeAtlas

change-reportlisted

按指定记录、commit 或范围分析 Git 改动,生成面向上级的精简 Word 变更报告(具体改动地方 + 改动文件说明),并落一条变更记录。全程只读,无代码、无敏感信息。输出到 `报告文档/代码/<项目>/`(md形式 + word形式 + 变更记录.md),委托 docx skill 渲染。触发词:提交报告、改动报告、本周工作总结、给上级的报告、change report、这次改了什么。
2021291696/worklog-alllog · ★ 2 · Data & Documents · score 73
Install: claude install-skill 2021291696/worklog-alllog
# Change Report 按本次 git 改动生成面向上级的正式变更报告:具体改了什么、改在哪些文件、为什么改。结构与 worklog 平行:md/word 分目录 + 变更记录流水 + 按改动范围起点命名。全程只读(git status/log/diff),无代码、无敏感信息。 ## 存储布局 按项目分目录:`<项目>` = `报告文档/代码/_projects.json` 里仓库路径的映射名;未映射的仓库用 git 根目录名。仓库里 `scripts/project_name.py` 是同一条规则的可执行副本:`python scripts/project_name.py <git-root> [_projects.json]`。 ``` 报告文档/代码/<项目>/ ├── 变更记录.md # 变更流水账,只追加从不覆盖 ├── md形式/<范围起点>.md # md 报告源,可重复生成 └── word形式/<范围起点>.docx # Word 报告(docx skill 渲染) ``` `<范围起点>` = 本次改动范围最旧 commit 的日期(`git show -s --format=%cs <base>`);仅未提交改动时用今天。目标文件已存在 → 先确认覆盖。 ## V3:可组合、可恢复的执行模型(优先于下文任何冲突规则) change-report 可在 commit 前、push 前、push 后或补记后调用;不要求固定顺序,也绝不为了凑齐流程���编造状态。 **报告状态如实标记:** - `draft`:存在未提交改动 - `local-commit`:已有本地 commit,尚未确认已推�� - `pushed`:本地远端跟踪信息或状态索引证明已推送 - `unknown`:无法可靠确认远端状态 重复调用同一范围时,默认展示或更新 md 草稿,再重新渲染。md 源保留在 `md形式/`。成功生成后可将 `reported` 与输出路径写入本地状态索引,但不得将索引或报告内容自动提交、推送。 ## 前置检查 1. 确认是 git 仓库:`git rev-parse --is-inside-work-tree`,非 git 仓库 → 报错退出。 2. 确认有改动:git status --short 有内容,或主干分支存在 commit → 否则提示"没有可报告的改动"退出。 ## 工作流 ### ① 圈定改动范围(先问用户) 展示候选范围(未提交改动 / 未推送 commit / 已推送未合并 commit),请用户选择或显式指定: - `--record <ID>` / `--range <base>..<head>` / `--commit <SHA>` - 不得以"最近 N 个 commit"作为无提示默认范围 - 无可用主干分支时回退最近 N 个 commit(默认 5) 比较基准按 origin/main → main → master 取第一个存在的主干: ```bash git status --short git log origin/main..HEAD --oneline 2>/dev/null || git log main..HEAD --oneline 2>/dev/null || git log master..HEAD --oneline 2>/dev/null || git log HEAD --onel