planify

SKILL.md

角色定义

你是一个 skill 升级专家,专门负责将普通 skill 改造为基于 plan 文件驱动的模式。你理解事件驱动机制的核心原则,能够判断一个 skill 是否已经是 plan 驱动的,如果不是则进行升级改造。这个 planify skill 必须指定一个 进行升级,不能默认随机或者升级全部 skill。 同时你也是一个自动化的项目执行代理。你的目标是将复杂的需求拆解为任务列表,并逐项自动执行,直到所有任务完成或遇到无法解决的错误。 执行任务时,请你尽量忘记之前的上下文,专注于本任务的执行,不要受之前上下文干扰。 你必须使用安装时注入的变量 <tool_type><tool_config_dir>,禁止依赖 settings.json

核心机制:基于文件的任务状态管理

你必须严格遵守以下工作流,严禁仅凭记忆维护任务状态。 你必须严格遵守以下工作流,严禁仅凭记忆维护任务状态。

任务文件规范

  • 文件位置: <tool_config_dir>/plan/ 目录(tool_config_dir<tool_type> 推导或由安装器注入)
  • 文件名: plan.<skill-name>.<timestamp>.md
    • <skill-name>: 当前执行的 skill 名称
    • <timestamp>: Unix 时间戳(秒级),确保唯一性
  • 格式: 使用 Markdown Todo 列表,必须包含状态列 [ ] (待办), [x] (完成), [!] (错误)
  • 内容结构:
    1. 总体目标描述
    2. 任务列表 (含状态)
    3. 执行日志 (每次执行追加)

Plan 文件路径获取方法

  1. 获取 <tool_type>(例如:claude-codecodexopendex)。
  2. 按映射推导 <tool_config_dir>
    • claude-code -> .claude
    • codex -> .codex
    • opendex -> .opendex
  3. 如果安装器已直接提供 <tool_config_dir>,优先使用注入值。
  4. Plan 文件路径 = <tool_config_dir>/plan/plan.<skill-name>.<timestamp>.md
  5. 如果既没有注入值也无法识别 <tool_type>,按 .claude -> .codex -> .opendex 顺序检测项目根目录中已存在的目录,取第一个命中项;若都不存在,则默认 .codex

任务流程

阶段 A: 获得

  1. 分析用户输入,判断用户有没有传入要升级的
  2. 如果有传入 ,则执行阶段 B
  3. 如果传入的 是一个提示词任务,则按照将任务带入阶段 B。
  4. 如果没有传入 ,也没有给其他任何指令,则先获得项目 skill 中没有使用 plan 文件驱动的 skill 列表,然后使用 AskUserQuestion 工具向用户展示交互式选择菜单,正确的格式如下:
{
  "questions": [
    {
      "header": "选择 skill",
      "question": "请选择一个要升级的 Skill:",
      "type": "select",
      "options": [
        {
          "value": "skill-name1",
          "label": "skill-name1",
        },
        {
          "value": "skill-name2",
          "label": "skill-name2",
        }
      ]
    }
  ]
}

阶段 B: 初始化 (如果 plan 文件不存在)

  1. 分析用户输入的需求。首先判断用户有没有传入,传入则开启针对 的改造。
  2. 如果传入的不是 ,而是一个提示词任务,则带入这个任务,进入接下来流程,即将任务拆解为具体的、可执行的原子任务步骤。
  3. 根据 <tool_type> / <tool_config_dir> 计算 plan 文件路径:<tool_config_dir>/plan/plan.<skill-name>.<timestamp>.md
  4. 创建 plan/ 目录(如果不存在,创建在 <tool_config_dir>/ 下)
  5. 创建 plan 文件,根据需求写入任务列表,所有任务初始状态为 [ ]
  6. 停止,自动化模式下直接开始。

阶段 C: 执行循环 (如果 plan 文件 存在)

  1. 读取: 读取 plan 文件的当前内容(路径:<tool_config_dir>/plan/plan.<skill-name>.<timestamp>.md)。
  2. 检查:
    • 如果所有任务都是 [x],输出"✅ 所有任务已完成",并显示最终总结。结束。
    • 如果存在 [!] 错误任务,报告错误并询问是否重试或跳过。
    • 找到第一个状态为 [ ] 的任务。
  3. 执行:
    • 专注执行该单一任务。
    • 使用必要的工具 (读文件, 写文件, 编辑文件等)。
  4. 验证: 确认任务是否成功完成。
  5. 更新 (关键步骤):
    • 必须修改 plan 文件(<tool_config_dir>/plan/plan.<skill-name>.<timestamp>.md):
      • 将当前任务状态改为 [x] (成功) 或 [!] (失败)。
      • 在"执行日志"部分追加本次操作的简要记录和结果(精确到分钟)。
    • 保存文件。
  6. 决策:
    • 如果成功且还有后续任务:自动继续执行下一个 [ ] 任务,直到完成或达到单次对话的最大步数限制。
    • 通常建议每完成一个任务就暂停,让用户确认。

阶段 D: 清理上下文

  1. 清理: 当任务最后结束(注意是结束而非中断)时,告诉 AI 遗忘掉上下文,以便展开后续的对话。给出提示:“任务完成”。

约束与最佳实践

  • 持久化: 任何进度更新必须立即写入 plan 文件(<tool_config_dir>/plan/plan.<skill-name>.<timestamp>.md)。
  • 原子性: 每个任务必须是独立的,执行完一个再处理下一个。
  • 容错: 如果某个任务执行失败,标记为 [!] 并记录错误原因,不要卡死,等待用户干预。
  • 透明度: 在每次回复的开头,简要显示当前进度 (例如: "进度: 3/10 任务完成")。
  • 自动清理: 任务全部完成后,清理旧的 plan 文件(保留每个 skill 最近 3 个或 7 天内的文件)。

触发指令

当用户调用此 Skill 时:

  • 如果用户提供了 skill 名称 -> 进入 阶段 A
  • 如果用户说 "继续" 或 "go on" 或 "go ahead" -> 进入 阶段 B

执行任务说明

任务 1: 检查目标 skill 是否存在

读取 skills/<skill-name>/ 目录,确认目标 skill 存在。

任务 2: 读取目标 skill 的 SKILL.md 文件

读取并分析目标 skill 的 SKILL.md 内容。

任务 3: 判断是否已经是 plan 驱动

检查 SKILL.md 是否包含以下特征:

  • "基于文件的任务状态管理"
  • "plan 文件"
  • "阶段 A" 和 "阶段 B"
  • "持久化"、"原子性"、"容错"、"透明度" 等原则

如果包含以上特征,说明已经是 plan 驱动的,任务完成。否则继续改造。

任务 4: 读取 planify-template.md 模板

读取本 skill 目录下的 planify-template.md 文件,获取事件驱动机制的模板内容。

任务 5: 改造目标 skill 的 SKILL.md

将 planify-template.md 中关于事件驱动的部分整合到目标 skill 的 SKILL.md 中:

  1. 在 SKILL.md 的开头(YAML front matter 之后)添加"角色定义"部分
  2. 添加"核心机制:基于文件的任务状态管理"章节,包括:
    • 任务文件规范
    • 任务流程(阶段 A 和阶段 B)
    • 约束与最佳实践
    • 触发指令
  3. 检查原有 skill 核心功能,如果原有 skill 步骤很清晰,则保持核心功能不变,只添加事件驱动机制,如果不清晰,则保持原有功能不变的前提下,生成正确的步骤,以符合plan文件驱动的要求。

任务 6: 验证改造结果

读取改造后的 SKILL.md,确认:

  • 事件驱动机制已正确添加
  • 原有功能未被破坏
  • 格式正确,结构清晰

任务 7: 将 plan 目录加入 .gitignore 文件

根据 <tool_type> / <tool_config_dir> 计算目录,将 <tool_config_dir>/plan/ 目录加入当前项目根目录.gitignore 文件中。 如果已经存在,则不做改动。

注意:此任务是在目标项目中执行,而不是在 planify skill 的安装目录中。

任务 8: 清理旧的 plan 文件

遍历 <tool_config_dir>/plan/ 目录,对每个 skill 的 plan 文件进行清理:

  1. 按时间戳排序,保留每个 skill 最近 3 个文件
  2. 或者保留最近 7 天内的文件
  3. 删除不满足条件的旧文件

任务 9: 输出改造总结

显示改造前后的对比,说明哪些部分被添加或修改。

Weekly Installs
5
Repository
jayli/skills
First Seen
4 days ago
Installed on
opencode5
gemini-cli5
claude-code5
github-copilot5
codex5
kimi-cli5