← 返回
未分类

Personal Goals Pro(个人目标管理)

全自动层级目标管理系统,支持年度、季度、月度全维度目标录入管理,自带智能自动拆解核心能力,每日固定时段自动将高层级大目标逐层拆分细化为可执行每日任务,无需人工手动规划排布。搭配多渠道定时消息推送,清晨准时下发当日待办清单与全周期目标进度,自动记录任务完成状态,月末一键生成完整月度复盘数据,清晰统计完成率、打卡时长与执行情况。消息推送支持根据本地 OpenClaw 已配置的渠道进行灵活设置,所有数据本地文件离线存储,隐私安全不联网,轻松搞定工作、学习、健康各类计划,告别拖延轻松落地每一个长期目标。
小许和大慧
未分类 community v1.0.9 7 版本 100000 Key: 无需
★ 0
Stars
📥 116
下载
💾 0
安装
7
版本
#latest

概述

Personal Goals Tracker Pro

四季目标管理系统:设定年目标/月目标 → 自动生成每日任务 → 完成记录 + 月度汇总。

快速上手

本 skill 支持定时任务自动推送,首次使用前请完成以下配置:

1. 配置定时任务

在 Claw 的定时任务管理界面中,添加以下三个定时任务:

| 任务名称 | Cron 表达式 | 触发消息 |

|---------|-----------|---------|

| 每日目标提醒 | 0 8 * | 调用Skill:personal-goals-pro,触发:查看今日任务 |

| 明日任务生成 | 0 21 * | 调用Skill:personal-goals-pro,触发:生成明天任务 |

| 月度目标汇总 | 0 21 L | 调用Skill:personal-goals-pro,触发:查看本月汇总 |

> 💡 Cron 表达式说明:

> - 0 8 *:每天 08:00 触发

> - 0 21 *:每天 21:00 触发

> - 0 21 L :每月最后一天 21:00 触发(L 表示月末)

2. 配置 IM 推送渠道(可选)

你可以随时通过发送关键字(如「查看今日任务」「查看目标」)主动查询任务和目标。如需定时自动推送,请在 Claw 环境中配置 IM 平台(微信、钉钉、飞书等)的推送渠道,即可实现每日提醒和月度汇总的自动推送。

配置完成后即可开始使用!


配置

首次使用前,读取 skill 目录下的 config.json 获取数据存储路径:

{
  "dataDir": "./data",
  "maxBackups": 5
}
  • dataDir:数据文件的存储目录,默认为 ./data(相对于 skill 目录,即 config.json 所在目录)。用户可修改为任意绝对路径或相对路径
  • maxBackups:最大备份数量,默认 5。超过此数量时自动删除最旧的备份
  • ⚠️ 每次操作数据文件前,必须先读取 config.json 获取 dataDir,若为相对路径则基于 config.json 所在目录解析为绝对路径后再使用

数据文件(统一在 config.dataDir 目录下)

按月拆分文件,每月一个文件包含该月的所有数据(月度目标、日任务、完成记录),避免单文件无限膨胀,同时文件数量可控(一年仅12个):

{dataDir}/
├── goals_yearly.json        # 年度目标(唯一单文件,按年份分 key)
└── monthly/                 # 每月一个文件
    ├── 2026-05.json
    ├── 2026-06.json
    └── ...

{dataDir}/../backups/        # 备份目录(与 dataDir 同级)
├── 2026-05-18_210000/       # 按备份时间命名
│   ├── goals_yearly.json
│   └── monthly/
│       └── ...
├── 2026-05-17_210000/
└── ...                      # 最多保留 maxBackups 份

💡 文件路径拼接规则

  • 年度:{dataDir}/goals_yearly.json(单文件)
  • 月度/日/完成记录:{dataDir}/monthly/{YYYY-MM}.json(每月一个文件)
  • 文件不存在时创建,内容为空模板(见下方格式)

goals_yearly.json 格式(按年份分 key,唯一单文件)

{
  "2026": [
    {
      "id": "uuid",
      "content": "目标描述",
      "category": "health|learning|work|life|other",
      "createdAt": "2026-01-15",
      "active": true,
      "completed": false,
      "progress": 0,
      "notes": [
        {
          "id": "uuid",
          "date": "2026-03-15",
          "content": "阶段性进度或附属信息"
        }
      ]
    }
  ],
  "2027": []
}

monthly/{YYYY-MM}.json 格式(每月一个文件,包含该月全部数据)

{
  "goals": [
    {
      "id": "uuid",
      "content": "月度目标描述",
      "category": "health|learning|work|life|other",
      "createdAt": "2026-05-01",
      "active": true,
      "completed": false,
      "progress": 0,
      "notes": [
        {
          "id": "uuid",
          "date": "2026-05-10",
          "content": "备注内容"
        }
      ]
    }
  ],
  "days": {
    "2026-05-01": [
      {
        "id": "uuid",
        "content": "任务描述",
        "source": "manual|yearly|monthly",
        "sourceGoalId": "uuid(可选,关联来源目标)",
        "sourcePeriod": "2026-05(对应月度)或 2026(对应年度)",
        "completed": false,
        "completedAt": null,
        "createdAt": "ISO date"
      }
    ],
    "2026-05-02": []
  },
  "completion_log": [
    {
      "date": "2026-05-16",
      "completed": ["task-id-1", "task-id-2"],
      "total": 3,
      "rate": 0.67
    }
  ]
}

💡 年目标与月目标是并列的,不存在包含关系:用户独立设定年目标和月目标,日任务由二者共同生成。

💡 跨月目标处理:拆分为两条记录,分别写入对应月份文件,各月标注进度比例。

💡 notes 字段:目标的日志记录,用于记录目标的完整生命周期事件,包括进度更新、阶段性成果、完成记录等。每条记录含 iddatecontent,按时间倒序存储(最新的在前)。新建目标时 notes 默认为空数组 []。完成目标、补充备注、删除目标等操作均应自动写入一条 note。

💡 progress 字段:目标当前进度,浮点数 0~1(归一化),0 表示未开始,1 表示已完成。新建目标时默认为 0,目标 completed=true 时为 1。补充备注时根据备注内容智能推断进度并更新此字段;若无法推断则保持原值不变。展示时乘以 100 转为百分比显示。

⚠️ completion_log 按日期倒序存储(最新的在前)。


用户命令(自然语言识别)

修改数据目录

Trigger: "修改数据目录", "换个存储位置", "数据存到XX"

config.json 中的 dataDir 更新为用户指定路径,并提示是否迁移已有数据文件到新目录。

添加目标

Trigger: "添加目标", "新增", "加一条", "我要..."

识别层级:

  • 含「今年/明年/2026年」→ 年度目标,写入 goals_yearly.json
  • 含「X月」→ 月度目标,写入 monthly/{YYYY-MM}.json 的 goals 字段(默认当年)
  • 含「每天/每日」→ 日任务,写入 monthly/{YYYY-MM}.json 的 days.{YYYY-MM-DD} 字段
  • 默认 → 日任务

跨月目标(如「5月、6月减肥15斤」):

拆分为两条记录,分别写入 monthly/2026-05.json 和 monthly/2026-06.json 的 goals 字段,content 注明归属月份。

添加后自动提示是否需要基于此目标自动生成日任务。

查看目标

Trigger: "查看目标", "我的目标", "看看计划", "列出"

显示指定年/月的目标,注明已完成状态。

  • 「看看今年的目标」→ 读取 goals_yearly.json 的 "2026" key
  • 「看看5月目标」→ 读取 monthly/2026-05.json 的 goals 字段
  • 展示目标时,若该目标有 notes 则一并展示最近的备注内容

补充目标备注

Trigger: "补充备注", "记录进度", "记一下", "已完成XX(非完成目标)"

为目标添加附属备注信息,不改变目标的完成状态。

  • 识别目标:根据用户描述匹配对应年/月目标
  • 将备注追加到目标的 notes 数组开头(倒序,最新在前),包含 id、date、content
  • 根据备注内容智能推断当前进度,更新目标的 progress 字段(0~1 的浮点数)
  • 可推断时更新:如目标"读6本书",备注"已读3本"→ progress=0.5
  • 无法推断时保持原值:如备注仅为附属信息,无法量化进度
  • 若推断进度为 1,提示用户是否将该目标标记为已完成

⚠️ 补充备注 ≠ 完成目标,仅记录进度细节,不自动修改 completed 状态。

查看今日任务

Trigger: "查看今日任务", "今日任务", "今天的任务"

读取 monthly/{YYYY-MM}.json 的 days.{YYYY-MM-DD} 字段(当日),展示当日任务及完成状态。

查看/完成/删除目标

Trigger: "完成了XX", "XX做完了", "删除XX", "完成目标:XX", "删除目标:XX"

  • 完成("完成了XX"):
  • 日任务:标记 completed=true,记录完成时间,同步更新 monthly/{YYYY-MM}.json 的 completion_log
  • 年/月目标:标记 completed=true,progress 更新为 1,同时在 notes 中追加一条完成记录(含完成日期和说明)
  • 删除("删除XX"):采用软删除,标记 active=false,不物理移除数据
  • 年/月目标:将 active 设为 false,该目标不再出现在日常展示和日任务生成中,同时在 notes 中追加一条删除记录
  • 日任务:将 active 设为 false,该任务不再显示
  • ⚠️ 已关联的日任务不清理,保留历史记录完整性

查看本月汇总

Trigger: "查看本月汇总", "本月汇总", "月度汇总"

读取 monthly/{YYYY-MM}.json 的 completion_log,输出本月完成率和目标完成情况。

生成/更新日任务

Trigger: "生成明天任务", "更新日任务"

读取月/年目标,智能生成日任务(按来源标注)。

自动生成逻辑(核心)

每日 21:00 日任务生成规则:

年目标与月目标是并列的,日任务由二者共同生成,不存在"年目标拆解为月目标"的逻辑。

  1. 执行数据备份:将 config.dataDir 目录下的全部内容(含 goals_yearly.jsonmonthly/ 等所有文件和子目录)递归复制到 {dataDir}/../backups/{YYYY-MM-DD_HHmmss}/,备份完成后检查备份数量,超过 config.maxBackups 则按时间倒序删除最旧的备份
  2. 获取次日日期,提取 YYYY-MM-DD、YYYY-MM 和 YYYY
  3. 读取 monthly/{YYYY-MM}.json 的 goals 字段,取该月 active 目标
  4. 读取 goals_yearly.json 中次日所在年份("YYYY")的 active 目标
  5. 将上述月目标 + 年目标中每个 active 目标各生成一条日任务,内容根据原文长度决定(≤15字直接用原文,>15字概括核心),如"减肥7斤"、"读完8本书"等
  6. 写入 monthly/{YYYY-MM}.json 的 days.{YYYY-MM-DD} 字段,每条任务标 source、sourceGoalId、sourcePeriod
  7. 不覆盖已有记录,只追加

⚠️ 关键规则:日任务内容按目标原文长度决定展示方式,绝不自行推测时间/数量!

  • 目标原文 ≤ 15 字:直接使用原文作为日任务内容
  • "减肥7斤" → 日任务 = 减肥7斤
  • "读完8本书" → 日任务 = 读完8本书
  • 目标原文 > 15 字:在原文基础上概括核心,保留关键信息
  • "5月减肥7斤,因为这个月我要去其他地方玩" → 日任务 = 减肥7斤
  • "今年系统学习前端开发,完成React和Vue两个框架的实战项目" → 日任务 = 学习前端开发
  • 不自行补充用户未提及的时长、频率、数量等细节

手动日任务:用户随时可添加,source=manual

定时任务

⚠️ 触发机制:skill 本身无法设置系统定时器,以下定时任务由外部调度器(如 cron、云函数定时触发)按时间调用,或由用户发消息时检查当前时间判断是否需要执行。

每日目标提醒(每天 08:00)

读取 monthly/{YYYY-MM}.json 的 days.{YYYY-MM-DD} 字段(当日),重点展示未完成任务,简要提及月/年目标。

明日任务生成(每天 21:00)

执行"自动生成逻辑",生成次日任务。

月度目标汇总(每月最后一天 21:00)

读取 monthly/{YYYY-MM}.json 的 completion_log,取本月记录,输出月度复盘。

推送格式

> 以下为模板定义,{} 内为动态变量,实际推送时替换为真实数据。

每日目标提醒(08:00)

📅 {M}月{D}日 {周X}
⏳ 今日任务:{未完成数}项未完成

{序号}. [ ] {任务内容} {来源标签}
{序号}. [x] {任务内容} {来源标签}
...

—— 🎯 目标进度 ——

{YYYY}年 | {目标内容}
{进度条} {百分比}%

{M}月 | {目标内容}
{进度条} {百分比}%
(仅展示未完成的年/月目标,已完成的不显示)
...

变量说明:

  • 标题行:{M}月{D}日 {周X} + 未完成数;全部完成时显示 ⏳ 今日任务:全部完成 ✓
  • 任务行:[ ] 未完成,[x] 已完成
  • 来源标签:年目标 [年]、月目标 [月]、手动添加不显示
  • 目标进度行:仅展示 completed=false 的年/月目标,已完成的不显示(避免消息随完成数增多而变长);年目标用 {YYYY}年 | 标注年份,月目标用 {M}月 | 标注月份;进度百分比由 progress 字段(0~1)乘以 100 取整得到;进度条 10 格, 填充 + 空白

明日任务生成推送(21:00)

✅ 明日任务已生成
📆 {次日M}月{次日D}日 | 共{任务数}项

{序号}. {任务内容} {来源标签}
...

晚安,明天也要加油呀 💪

变量说明:

  • 来源标签:年目标 [年]、月目标 [月]、手动添加不显示

月度目标汇总推送(月末 21:00)

📊 {M}月目标复盘
━━━━━━━━━━━━━━━━

📈 整体完成率:{百分比}%
📅 达标天数:{达标天数}天 / {有记录天数}天

— 目标完成情况 —
{目标内容}  ✅ 已完成
{目标内容}  🔄 进行中({百分比}%)
...

— 任务统计 —
📝 总任务:{总数}项
✅ 已完成:{完成数}项
☐ 未完成:{未完成数}项

{M+1}月继续加油,未来可期 ✨

完成打卡反馈

当用户说"完成了XX":

  • 单项完成:{任务内容} ✓ 剩余 {N} 项
  • 全部完成:今日任务全部完成 ✓

边界场景

跨月/跨年处理

  • 12月31日生成次日任务:次日为1月1日,需写入 monthly/{nextYear}-01.json,读取的月目标也是1月的,年目标取新年份
  • 12月完成日任务:completion_log 写入 monthly/2026-12.json,即使当前已进入1月,完成记录仍归属于任务所在月份
  • 跨月目标(如"5月、6月减肥15斤"):拆分为两条记录,分别写入各自月份文件

补录历史任务

  • 用户补录昨天的任务时,按目标日期(而非当前日期)写入对应 monthly/{YYYY-MM}.jsondays.{YYYY-MM-DD} 字段
  • 若目标日期跨月(如今天是6月1日,补5月31日的任务),写入 monthly/2026-05.json
  • completion_log 同样写入目标日期所在月份的文件

异常处理

config.json 损坏或缺失

  • config.json 不存在:自动重建,dataDir 默认 ./data(相对于 skill 目录),maxBackups 默认 5,然后从重建后的 config.json 中读取配置,并提示用户「配置文件缺失,已用默认配置重建」
  • config.json 内容非法(JSON 解析失败):备份原文件为 config.json.broken,用默认值重建,提示用户「配置文件损坏,已备份并重建默认配置」

dataDir 目录不存在

  • 读写数据文件前检查 dataDir 目录是否存在,不存在则自动创建(含 monthly/ 子目录)
  • 提示用户「数据目录不存在,已自动创建」

数据文件损坏(JSON 解析失败)

  • goals_yearly.json 损坏:备份为 goals_yearly.json.broken,重建空模板 {},提示用户「年度目标文件损坏,已备份并重建空文件,历史数据需手动恢复」
  • monthly/{YYYY-MM}.json 损坏:备份为 {YYYY-MM}.json.broken,重建空模板(goals/days/completion_log),提示用户「X月数据文件损坏,已备份并重建空文件,该月历史数据需手动恢复」
  • ⚠️ 绝不静默丢弃数据,损坏文件必须备份后才可重建

数据文件缺失

  • 文件不存在时直接创建空模板,无需额外提示(这是正常首次使用场景)

通用原则

  1. 先备份再修复:任何损坏文件都先 .broken 备份,再重建
  2. 主动告知用户:异常情况必须提示,不可静默处理
  3. 最小影响:仅重建出问题的文件,不影响其他正常文件
  4. 可恢复:备份文件保留原始数据,用户有机会手动抢救

Rules

  1. UUID 生成方式:使用 Date.now() + 随机数 拼接生成,不依赖外部 UUID 库。示例:Date.now().toString(36) + Math.random().toString(36).slice(2, 8)
  2. 所有 JSON 数据文件必须格式化:写入时使用 indent=2 缩进,ensure_ascii=False 保留中文,不可压缩成一行
  3. 读取数据前必须先 load 对应文件
  4. 写操作后立即验证 JSON 可读
  5. 完成日任务时同步更新 monthly/{YYYY-MM}.json 的 completion_log
  6. 生成日任务时注明 sourceGoalId 和 sourcePeriod 便于追溯(月目标和年目标地位平等,不存在谁拆解谁)
  7. 每月汇总用上个月的时间范围(不是当月)
  8. 日任务生成不删除同日已有任务,只追加
  9. completion_log 每文件内按日期倒序存储(最新的在前)
  10. 年度/月度目标按年份/月份精确匹配,不是模糊匹配
  11. 每次读写数据文件前,必须先读取 config.json 获取 dataDir,若为相对路径则基于 config.json 所在目录解析为绝对路径,用其拼接完整文件路径,不可硬编码 data/ 目录
  12. notes 按时间倒序存储(最新的在前),补充备注时追加到数组开头
  13. notes 是目标日志,完成目标、删除目标等状态变更操作均须自动追加一条 note 记录
  14. 补充备注(notes)不改变目标 completed 状态,仅记录附属信息
  15. progress 字段为 0~1 的浮点数(归一化),新建目标默认 0,completed=true 时为 1;补充备注时根据内容智能推断进度并更新,无法推断则保持原值
  16. 推送格式中目标进度百分比由 progress × 100 取整得到,不另行计算

版本历史

共 7 个版本

  • v1.0.9 1. 对于已完成的月和年目标,每日目标不进行推送。 2. 格式优化。 当前
    2026-05-19 16:57 安全 安全
  • v1.0.8 1. 优化推送内容 2. 优化文段矛盾点
    2026-05-19 15:09 安全 安全
  • v1.0.6 1. 变更每日推送格式 2. 定时任务修改优化
    2026-05-19 14:02 安全 安全
  • v1.0.4 添加定时任务安装
    2026-05-18 09:31 安全 安全
  • v1.0.3 1. 添加备份机制 2. 优化整体Data存储逻辑
    2026-05-18 09:10 安全 安全
  • v1.0.1 1. SKILL.md 新增「首次使用初始化」 2. 优化部分规则
    2026-05-16 15:07 安全 安全
  • v1.0.0 Initial release
    2026-05-16 11:00 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

life-service

healthcheck

stellarhold170nt
使用 JSON 文件存储追踪饮水和睡眠
★ 11 📥 30,346
life-service

Weather

steipete
获取当前天气和预报(无需API密钥)
★ 460 📥 229,916
life-service

Caldav Calendar

asleep123
使用 vdirsyncer + khal 同步并查询 CalDAV 日历(iCloud、Google、Fastmail、Nextcloud 等)。适用于 Linux。
★ 244 📥 30,803