| name | progress-tracker |
| description | 收集零散想法、整理成结构化任务、追踪进度并生成报告。支持两种输入:(1) 被动收集 - 扫描 docs/temp/ideas/ 文件夹;(2) 主动输入 - 用户直接说,AI 记录。支持 HTML 可视化编辑和拖拽排序。触发词:记录想法、整理ideas、收集想法、进度报告、总结进展、idea、想法。 |
Progress Tracker Skill
收集零散想法,整理成结构化任务,追踪进度并生成报告。
存储结构
docs/
├── temp/
│ └── ideas/ # 用户随手写的地方(原始输入)
└── progress/ # AI 整理后的地方
├── ideas.md # Ideas 收集箱
├── tasks.md # 任务列表(AI 读写)
└── reports/ # 定期报告
└── YYYY-MM-DD.md
首次使用时:如果 docs/progress/ 不存在,自动创建。
可视化编辑器
HTML 编辑器支持:
- 拖拽排序(SortableJS,活跃区内跨列拖拽)
- 进行中任务优先级高于待开始任务
- 按优先级排序(一键重排)
- 搜索和筛选
- 右侧滑出面板编辑任务详情
- JSON 导入/导出/复制到剪贴板
- 归档区(已完成 + 已取消)可折叠
文件位置:
- 模板:
skills/progress-tracker/assets/tasks.html(skill 资源,勿修改)
- 输出:
docs/progress/tasks.html(实际数据文件,由脚本生成)
同步脚本:skills/progress-tracker/scripts/sync_tasks.py
python skills/progress-tracker/scripts/sync_tasks.py md2html
python skills/progress-tracker/scripts/sync_tasks.py html2md
python skills/progress-tracker/scripts/sync_tasks.py validate
典型工作流:
- AI 读写
docs/progress/tasks.md(AI 侧的主要操作)
- 运行
md2html 生成 docs/progress/tasks.html
- 用户在浏览器打开
docs/progress/tasks.html 拖拽排序、编辑任务
- 用户编辑后,运行
html2md 同步回 markdown
触发场景
| 场景 | 触发词 | 动作 |
|---|
| 被动收集 | "整理 ideas"、"收集想法" | 扫描 docs/temp/ideas/ → 提取 → ideas.md |
| 主动输入 | "记一下..."、"我有个想法..." | 直接记录到 ideas.md |
| 确认想法 | "看看 ideas"、"哪些可以做" | 展示待确认 → 转化为任务 |
| 进度报告 | "总结进展"、"进度报告" | 读取 tasks.md → 生成报告 |
| 可视化编辑 | "打开任务面板"、"编辑任务" | 用 HTML 编辑器 |
字段规范
Tasks.md 字段
必填字段
| 字段 | 格式 | 说明 |
|---|
| 编号 | ### N. | 任务编号,递增 |
| 标题 | ### N. [标题] | 任务标题 |
| 来源 | **来源**: | idea #N / 用户直接指定 |
| 状态 | **状态**: | ⏳ 待开始 / 🚧 进行中 / ✅ 已完成 / ❌ 已取消 |
| 创建时间 | **创建时间**: | YYYY-MM-DD |
| 描述 | **描述**: | 任务描述 |
可选字段
| 字段 | 格式 | 何时使用 |
|---|
| 优先级 | **优先级**:N | 有待排序时,数字越小优先级越高 |
| 完成时间 | **完成时间**: | 状态为✅时 |
| 取消原因 | **取消原因**: | 状态为❌时 |
| 分支名称 | **分支**:type/id-description | 需要并行开发时 |
| 分支状态 | **分支状态**:✅ 已创建 / ⏳ 未创建 | 有分支时 |
| 涉及模块 | **涉及模块**: | 跨模块任务 |
| 需求清单 | **需求清单**: | 复杂任务 |
| 背景 | **背景**: | 需要上下文时 |
| 子任务 | **子任务拆分**: | 可拆分的任务 |
| 相关文档 | **相关文档**: | 有文档时 |
| 进度 | **进度**: | 进行中的详细进度 |
| 备注 | **备注**: | 补充说明 |
分支命名规范
[type]/[task-id]-[short-description]
类型:
feat - 新功能
fix - Bug 修复
refactor - 重构
docs - 文档
chore - 其他
示例:
feat/30-agent-quality
fix/23-concurrency-race
feat/12-single-chat-continue
任务示例
### 30. Agent 质量提升四件套 ⭐
- **来源**:用户直接输入
- **状态**:🚧 进行中
- **创建时间**:2026-06-09
- **优先级**:1
- **分支**:feat/30-agent-quality
- **分支状态**:✅ 已创建
- **描述**:提升 Agent 响应质量和闭环能力
- **背景**:CLI 模式下 Agent 表现"降智"
- **涉及模块**:
- 后端:提示词优化、Hook 机制
- 前端:状态展示
- **需求清单**:
1. 系统提示词优化
2. 延缓闭合提醒
3. MCP 连接失败检测
4. Hook 机制
Ideas.md 字段
必填字段
| 字段 | 格式 | 说明 |
|---|
| 标题 | ### [emoji] YYYY-MM-DD [标题] | 想法标题 |
| 来源 | **来源**: | 文件路径 / 用户直接输入 |
| 内容 | **内容**: | 想法内容 |
| 类型 | **类型**: | 灵感 / 观察 / 需求 / 问题 |
可选字段
| 字段 | 格式 | 何时使用 |
|---|
| 优先级 | **优先级**: | 有待排序时 |
| 背景 | **背景**: | 需要上下文时 |
| 决定 | **决定**: | 已确认时 |
| 任务 | **任务**: | 已转化为任务时 |
| 讨论点 | **讨论点**: | 状态为❓时 |
| 原因 | **原因**: | 状态为❌时 |
想法状态
| 状态 | Emoji | 说明 |
|---|
| 待确认 | 💭 | 新收集的想法 |
| 已确认 | ✅ | 可转化为任务 |
| 需要讨论 | ❓ | 有疑问需讨论 |
| 已废弃 | ❌ | 不再需要 |
| 进行中 | 🚧 | 已转化为任务,正在执行 |
阶段 1:收集(Collect)
1.1 被动收集:扫描 docs/temp/ideas/
步骤:
- 读取
docs/temp/ideas/ 下所有 .md 文件
- 区分用户编写 vs AI 编写(见下方判断逻辑)
- 提取想法内容
- 追加到
docs/progress/ideas.md
用户 vs AI 内容判断:
| 特征 | 用户编写 | AI 编写 |
|---|
| 格式 | 松散、不统一 | 整齐、有结构 |
| 内容 | 零散、跳跃 | 完整、有逻辑 |
| 标记 | 少用 emoji/checkbox | 大量使用 |
| 长度 | 短句、碎片化 | 长段落 |
处理方式:
- 用户内容:原样保留,不转换格式
- AI 内容:提取结构化信息
1.2 主动输入:用户直接说
触发:
- 用户说"记一下"、"我有个想法"、"想法是..."
- 用户描述一个想法或需求
步骤:
- 提取用户的想法内容
- 追加到
docs/progress/ideas.md
- 确认记录成功
阶段 2:确认(Confirm)
2.1 展示待确认的想法
触发:"看看 ideas"、"哪些可以做"、"确认想法"
步骤:
- 读取
docs/progress/ideas.md
- 筛选状态为
💭 待确认 的想法
- 展示列表,等待用户确认
2.2 处理确认结果
根据用户反馈:
| 决定 | 操作 |
|---|
| 可以做 | 状态改为 ✅,创建任务到 tasks.md |
| 需要讨论 | 状态改为 ❓,记录讨论点 |
| 暂时搁置 | 保持 💭,添加备注 |
| 废弃 | 状态改为 ❌,记录原因 |
阶段 3:结构化(Organize)
3.1 创建任务
从已确认的想法创建任务:
- 生成任务编号(当前最大编号 + 1)
- 按字段规范填写任务信息
- 追加到 tasks.md 的对应状态区域
- 运行
md2html 同步到 HTML
3.2 生成进度报告
触发:"总结进展"、"进度报告"
步骤:
- 读取 tasks.md
- 统计各状态任务数量
- 生成报告写入
docs/progress/reports/YYYY-MM-DD.md
重要约束
- 不强制结构化:ideas.md 保持轻量,只在转化为任务时才结构化
- 尊重原始内容:用户编写的内容原样保留,不转换格式
- 确认再转化:想法必须经过用户确认才能转化为任务
- 定期清理:提醒用户定期回顾 ideas.md,避免积压
- 报告自动生成:进度报告基于 tasks.md 自动生成,不依赖手动更新
- 字段完整性:创建任务时必须填写所有必填字段
- 分支命名规范:分支名称必须包含任务编号,格式为
type/id-description
- AI 读写 md,用户操作 html:AI 修改 tasks.md 后运行 md2html;用户在 html 编辑后运行 html2md
示例对话
场景 1:主动输入
你:记一下,我想做一个 xxx 功能
AI:好的,已记录到 ideas.md
- 内容:做一个 xxx 功能
- 类型:需求
- 状态:💭 待确认
场景 2:被动收集
你:整理一下 ideas
AI:正在扫描 docs/temp/ideas/...
发现 3 个新想法,已添加到 ideas.md:
1. [06-06] xxx - 来自 temp/ideas/xxx.md
2. [06-06] yyy - 来自 temp/ideas/yyy.md
3. [06-06] zzz - 来自 temp/ideas/zzz.md
场景 3:确认转化
你:看看 ideas,哪些可以做
AI:当前有 3 个待确认的想法:
1. xxx - ...
2. yyy - ...
3. zzz - ...
哪些可以转化为任务?
你:1 和 3 可以做
AI:已创建 2 个任务:
- tasks.md #1: xxx (feat/1-xxx)
- tasks.md #2: zzz (feat/2-zzz)
已同步到 tasks.html
场景 4:可视化编辑
你:打开任务面板
AI:HTML 编辑器位于:
skills/progress-tracker/assets/tasks.html
功能:拖拽排序、优先级排序、搜索筛选、右侧面板编辑。
编辑完成后运行:
python scripts/sync_tasks.py html2md