| name | thesis-status |
| version | 1.0.0 |
| description | 秘书:进度看板与任务管理。展示当前状态,推荐下一步操作。
触发词:"进度"、"status"、"看板"、"还剩什么"。
|
| allowed-tools | ["Read","Write","Bash","Grep","Glob","AskUserQuestion"] |
秘书(thesis-status)
进度看板与任务管理技能,遵循 gstack /office-hours 模式:重新定位当前状态 + 推荐下一步操作。
触发条件
用户提到以下任意关键词时激活本技能:
- "进度"、"status"、"看板"、"还剩什么"、"做到哪了"、"接下来干什么"
执行步骤
Step 0:加载配置
CONFIG=""
for candidate in ".thesis/config.json" "../.thesis/config.json" "../../.thesis/config.json"; do
if [ -f "$candidate" ]; then
CONFIG="$(cd "$(dirname "$candidate")" && pwd)/$(basename "$candidate")"
break
fi
done
if [ -z "$CONFIG" ]; then
echo "ERROR: 未找到 .thesis/config.json"
echo "请先运行 /thesis-init 初始化论文项目"
exit 1
fi
echo "CONFIG: $CONFIG"
THESIS_DIR=$(python3 -c "import json; print(json.load(open('$CONFIG'))['thesis_dir'])")
CHAPTERS_DIR=$(python3 -c "import json; print(json.load(open('$CONFIG'))['chapters_dir'])")
BUILD_CMD=$(python3 -c "import json; print(json.load(open('$CONFIG'))['build_command'])")
WORKSPACE=$(python3 -c "import json; print(json.load(open('$CONFIG'))['workspace_dir'])")
echo "THESIS_DIR: $THESIS_DIR"
echo "CHAPTERS_DIR: $CHAPTERS_DIR"
echo "WORKSPACE: $WORKSPACE"
如果 preamble 输出 ERROR,立即停止并提示用户运行 /thesis-init。
第一步:读取任务文件
从 $WORKSPACE 目录读取以下文件:
- PROGRESS.md:总体进度记录
- thesis-tasks.md:任务清单与待办事项
如果文件不存在,跳转到「第六步:初始化任务文件」。
第二步:扫描章节状态
扫描 $THESIS_DIR 下所有章节文件($CHAPTERS_DIR),收集:
- 文件路径
- 最后修改时间(使用
stat 或 ls -l)
- 文件大小(粗略反映内容量)
- 字数统计(使用
wc -m 统计中文字符数,或用 Grep 统计非空行数)
典型章节文件位置:
$THESIS_DIR/
├── $CHAPTERS_DIR/
│ ├── c1.tex (绪论)
│ ├── c2.tex (文献综述)
│ ├── c3.tex (方法)
│ ├── c4.tex (实验)
│ └── c5.tex (结论)
├── abstract.tex (摘要)
├── appendix.tex (附录)
└── main.tex (主文件)
注意:实际文件名和目录结构以 config.json 配置和 Glob 扫描结果为准。
第三步:检查编译产物
检查 main.pdf 是否存在:
- 若存在:记录修改时间、文件大小、页数
- 若不存在:标记为"未编译"
- 比较 PDF 时间戳与源文件时间戳:如果源文件更新于 PDF,标记为"PDF 已过期"
第四步:展示进度看板
输出格式化的进度看板:
╔══════════════════════════════════════════════════╗
║ 论文进度看板 ║
╠══════════════════════════════════════════════════╣
║ ║
║ 章节状态 ║
║ ────── ║
║ [完成] 第一章 绪论 最后更新:03-20 约 3200 字 ║
║ [进行] 第二章 文献综述 最后更新:03-22 约 5100 字 ║
║ [待做] 第三章 方法 最后更新:03-15 约 800 字 ║
║ [待做] 第四章 实验 尚未创建 ║
║ [待做] 第五章 结论 尚未创建 ║
║ ║
║ 编译状态 ║
║ ────── ║
║ PDF:已过期(源文件有更新) ║
║ 上次编译:2026-03-20 14:30 ║
║ 页数:45 页 / 文件大小:2.3 MB ║
║ ║
║ 任务概览 ║
║ ────── ║
║ 已完成:5 项 ║
║ 进行中:2 项 ║
║ 待处理:8 项 ║
║ 已阻塞:1 项 ║
║ ║
╚══════════════════════════════════════════════════╝
任务状态标记说明:
[完成]:已完成并已审校
[进行]:正在撰写中
[待做]:尚未开始
[阻塞]:因依赖项未就绪而无法推进
第五步:推荐下一步操作
根据以下优先级顺序推荐操作:
- 阻塞项解除(最高优先级):如果有阻塞任务,优先建议解除阻塞
- 截止日期临近:根据任务文件中的时间节点,优先处理紧急任务
- 编译过期:如果 PDF 已过期,建议重新编译
- 进行中章节:建议继续当前正在撰写的章节
- 待开始章节:按章节顺序建议开始下一章
- 审校与优化:所有章节完成后,建议进行全文审校
输出格式:
推荐下一步操作:
━━━━━━━━━━━━━━
优先级 操作 原因
────── ──── ────
P0 解决参考文献格式问题 阻塞第二章定稿
P1 继续撰写第二章 §2.3 当前进行中,距上次编辑 2 小时
P2 重新编译 PDF 源文件已更新,PDF 已过期
P3 开始第三章框架 第二章接近完成
第六步:初始化任务文件(仅在文件不存在时)
如果 PROGRESS.md 或 thesis-tasks.md 不存在,使用 AskUserQuestion 询问用户是否创建。
若用户同意,创建初始模板:
PROGRESS.md 模板:
# 论文修改进度记录
## 基本信息
- 论文题目:(待填写)
- 目标完成日期:(待填写)
## 进度日志
| 日期 | 内容 | 备注 |
|------|------|------|
| YYYY-MM-DD | 初始化进度跟踪 | 由 thesis-status 创建 |
thesis-tasks.md 模板:
# 论文任务清单
## 图例
- [ ] 待处理
- [x] 已完成
- [!] 阻塞中
- [~] 进行中
## 第一章 绪论
- [ ] 撰写初稿
- [ ] 导师审阅
- [ ] 修改定稿
## 第二章 文献综述
- [ ] 撰写初稿
- [ ] 导师审阅
- [ ] 修改定稿
## 第三章 方法
- [ ] 撰写初稿
- [ ] 导师审阅
- [ ] 修改定稿
## 第四章 实验
- [ ] 撰写初稿
- [ ] 导师审阅
- [ ] 修改定稿
## 第五章 结论
- [ ] 撰写初稿
- [ ] 导师审阅
- [ ] 修改定稿
## 其他
- [ ] 摘要(中英文)
- [ ] 致谢
- [ ] 参考文献格式检查
- [ ] 全文格式审校
- [ ] 查重
- [ ] 打印装订
创建后,返回第一步重新读取并展示看板。
收尾协议(完成后必须执行)
每次 skill 执行完毕后,无论结果如何,必须执行以下三步:
1. 更新问题清单 $WORKSPACE/issues.md
- 本次发现的新问题:追加到"待处理"区,格式为
- [ ] **编号** 位置 — 问题描述 → 建议skill
- 本次解决的问题:从"待处理"移到"已解决",标注完成时间
- 未变化的问题:不动
2. 更新进度文件 $WORKSPACE/progress.md
- 在"完成记录"区追加一行:
- YYYY-MM-DD HH:MM /skill名 — 执行摘要(N项修改/N个问题)
- 如果任务看板中有对应任务项,更新其状态(勾选
[x])
3. 保存报告(如有输出)
- 报告保存到
$WORKSPACE/reports/ 目录
- 文件名格式:
YYYYMMDD-skill名-目标.md(如 20260322-review-chapter-c4.md)
完成状态协议
任务完成时,输出以下结构化状态块:
[thesis-status] 完成
看板状态:已展示
章节扫描:XX 个文件
任务统计:已完成 X / 进行中 X / 待处理 X / 阻塞 X
PDF 状态:最新 / 已过期 / 不存在
推荐操作:<最高优先级的下一步>
下一步建议:<具体可执行的操作描述>
若任务文件刚被初始化,额外提示用户填充具体任务内容。
若所有任务已完成,输出祝贺信息并建议进行最终检查清单。