task-tracker

SKILL.md

任务跟踪技能

何时使用

✅ 用户明确要求跟踪任务("创建任务跟踪"、"记录进度"、"跟踪这个任务") ✅ 复杂的多步骤开发任务 ✅ 需要跨会话恢复的工作

❌ 简单的单步操作 ❌ 纯咨询性对话

目录结构

{项目根目录}/
└── docs/
    └── tasks/
        ├── README.md          # 使用说明(首次自动生成)
        ├── active/            # 进行中的任务
        │   └── task-20260121-153045-用户反馈.md
        └── archive/           # 已完成的任务
            └── 2026-01/
                └── task-20260120-优惠券系统.md

文档模板

# 任务:{任务标题}

**状态**: 🟢 进行中 | 🔵 已完成 | 🔴 已暂停
**创建时间**: {YYYY-MM-DD HH:MM:SS}
**更新时间**: {YYYY-MM-DD HH:MM:SS}
**Git 分支**: {branch_name}

---

## 📋 需求描述

{用户原始需求的详细描述,包括背景、目标、约束条件}

---

## 🎯 实现步骤

- [ ] 1. {步骤1简述}
  - **文件**: `path/to/file.ext`
  - **说明**: {详细说明}

- [x] 2. {步骤2简述}
  - **文件**: `another/file.ext`
  - **说明**: {详细说明}
  - **完成时间**: {YYYY-MM-DD HH:MM}

- [ ] 3. {步骤3简述}

---

## 📝 关键决策

- **模块归属**: {模块名称}
- **数据库表**: {表名前缀}
- **主键策略**: {ID生成方式}
- **技术选型**: {框架/库版本}

---

## 🔄 当前进度

**已完成**: {X} / {总数} 步骤 ({百分比}%)

**下一步操作**:
1. {下一步具体要做的事情}
2. {再下一步}

---

## 📁 相关文件

- `{文件路径}` - {文件用途}

---

## ⚠️ 注意事项

- {需要特别注意的点}
- {已知问题或风险}

---

## 💬 变更记录

### {YYYY-MM-DD HH:MM}
- {本次更新内容}

核心操作

1. 创建任务

触发:用户说"创建任务跟踪"、"记录这个任务"

步骤

# 1. 确保目录存在
mkdir -p docs/tasks/active docs/tasks/archive

# 2. 生成文件名
# 格式: task-{YYYYMMdd-HHMMSS}-{任务简称}.md
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
SLUG="{任务标题简化版,截断30字符}"
FILENAME="task-${TIMESTAMP}-${SLUG}.md"

# 3. 创建文档
# 填充上述模板内容到 docs/tasks/active/$FILENAME

# 4. 首次使用时创建 README.md(如不存在)

README.md 内容

# 任务跟踪中心

## 目录说明
- `active/` - 进行中的任务
- `archive/` - 已完成的任务(按月归档)

## 使用方法
1. Claude 自动创建任务跟踪文档
2. 手动编辑文档更新进度(修改复选框)
3. 任务完成后移动到 archive/{年-月}/

## 快速恢复
```bash
# 查看活跃任务
ls -1 active/

# 恢复任务
cat active/task-20260121-*.md

2. 更新进度

触发:用户说"更新进度"、"标记步骤X完成"

步骤

# 1. 找到当前任务文档(最新的那个)
TASK_FILE=$(ls -t docs/tasks/active/*.md | head -1)

# 2. 更新复选框: - [ ] → - [x]
sed -i "s/^- \[ \] ${STEP_NUMBER}\./- [x] ${STEP_NUMBER}./" "$TASK_FILE"

# 3. 更新时间戳
CURRENT_TIME=$(date '+%Y-%m-%d %H:%M:%S')
sed -i "s/^\*\*更新时间\*\*:.*/\*\*更新时间\*\*: $CURRENT_TIME/" "$TASK_FILE"

# 4. 添加变更记录
echo -e "### $CURRENT_TIME\n- 完成步骤 $STEP_NUMBER: $DESCRIPTION" >> "$TASK_FILE"

# 5. 重新计算进度百分比
TOTAL=$(grep -c "^- \[.\]" "$TASK_FILE")
DONE=$(grep -c "^- \[x\]" "$TASK_FILE")
PERCENT=$((DONE * 100 / TOTAL))

3. 列出活跃任务

触发:用户说"有哪些任务"、"列出任务"

步骤

for file in docs/tasks/active/*.md; do
  TITLE=$(grep "^# 任务:" "$file" | sed 's/^# 任务://')
  STATUS=$(grep "^\*\*状态\*\*:" "$file" | sed 's/.*: //')
  PROGRESS=$(grep "^\*\*已完成\*\*:" "$file" | sed 's/.*: //')
  
  echo "📄 $TITLE"
  echo "   状态: $STATUS | 进度: $PROGRESS"
  echo "   文件: $file"
  echo ""
done

4. 恢复任务

触发:用户说"继续上次的任务"、"恢复任务"

步骤

# 1. 确定要恢复的任务
if [ 用户指定了任务名 ]; then
  TASK_FILE=$(find docs/tasks/active -name "*{用户指定的关键词}*.md" | head -1)
else
  TASK_FILE=$(ls -t docs/tasks/active/*.md | head -1)  # 最新的
fi

# 2. 读取文档内容
cat "$TASK_FILE"

# 3. 提取关键信息并向用户确认
TITLE=$(grep "^# 任务:" "$TASK_FILE" | sed 's/^# 任务://')
NEXT_STEPS=$(提取 "下一步操作" 部分)

# 4. 输出恢复信息
echo "正在恢复任务:$TITLE"
echo "下一步操作:"
echo "$NEXT_STEPS"

5. 归档任务

触发:用户说"任务完成"、"归档任务"

步骤

# 1. 更新状态
sed -i "s/^\*\*状态\*\*:.*/\*\*状态\*\*: 🔵 已完成/" "$TASK_FILE"

# 2. 移动到归档目录
YEAR_MONTH=$(date +%Y-%m)
mkdir -p "docs/tasks/archive/$YEAR_MONTH"
mv "$TASK_FILE" "docs/tasks/archive/$YEAR_MONTH/"

echo "✅ 已归档到: docs/tasks/archive/$YEAR_MONTH/"

使用示例

场景1:创建任务

用户: "创建一个用户反馈功能的任务跟踪"

Claude:
✅ 创建文档: docs/tasks/active/task-20260121-153045-用户反馈.md
📋 已记录需求描述
🎯 列出5个实现步骤
💡 开始第一步:设计数据库表结构

场景2:更新进度

用户: "标记步骤1和2完成"

Claude:
✅ 已更新进度: 2/5 (40%)
⏰ 更新时间: 2026-01-21 16:45:30
📌 下一步: 实现 Service 层

场景3:恢复任务

[用户重新打开窗口]
用户: "继续上次的用户反馈功能"

Claude:
📄 正在恢复任务:用户反馈管理功能
✅ 已完成: 数据库设计、实体类创建 (2/5)
📌 下一步: 实现 Service 层
🔗 文件: docs/tasks/active/task-20260121-153045-用户反馈.md

最佳实践

应该做

  • ✅ 一个任务 = 一个完整功能开发
  • ✅ 及时更新进度(完成一步更新一次)
  • ✅ 详细记录关键决策
  • ✅ 保留原始需求描述

不应该做

  • ❌ 为每个小改动创建任务
  • ❌ 删除旧任务(归档即可)
  • ❌ 自动归档(由用户决定)

错误处理

目录不存在 → 自动创建 docs/tasks/activearchive

没有活跃任务 → 提示用户:创建新任务 | 恢复归档任务 | 查看历史

文档格式错误 → 尽量解析,提示用户保持格式:

  • 保持 ## 标题层级
  • 复选框格式:- [ ]- [x]
  • 不删除 **字段** 标记

功能边界

适用于:单人开发、本地存储、快速恢复上下文

不适用于:多人协作、实时同步、复杂依赖管理(请使用专业项目管理工具)

Weekly Installs
2
GitHub Stars
8
First Seen
6 days ago
Installed on
amp2
cline2
opencode2
cursor2
kimi-cli2
codex2