Community编程与开发github.com

jsahani/already-told-you

从你的 Already Told You 报告 D 部分中选取一个重复性工作,并协助你为其设置自动化——可以是纯技能、技能加应用连接(MCP)、或定时执行的任务——所有方案最后都包含一个人工审批步骤,确保任何发送、发布、付费或删除操作都需得到确认。

already-told-you 是什么?

Already Told You 是一个专为 Claude Code(或兼容 AI 编码代理)设计的技能,旨在帮你逐个自动化重复性工作。它首先从 `~/already-told-you/` 目录下最新的 `findings.json` 中读取报告,并以编号列表展示 D 部分的工作项。你可以直接通过 `$ARGUMENTS` 指定某个工作项,或从列表中选择。接着,技能会与你一起确认自动化方案的“形状”:触发器(时间或手动启动)→ Claude 执行什么 → 输出什么 → 人工在哪里审批。它支持三种自动化类型:纯技能(用户手动触发)、技能 + MCP(需要连接外部应用,如邮件、日历、Slack 等,通过 `claude mcp add ...` 或 `/mcp` 配置)、以及定时任务(桌面定时任务、云端 Routine、或 macOS launchd / Linux crontab)。技能会自动编写或完善 `SKILL.md`,并使用专用的安装脚本部署到 `~/.claude/skills/` 或项目目录中。关键约束:任何涉及发送、发布、付费或删除的操作,技能都只生成草稿或预览,然后等待人工确认,绝不自动执行。最后,它会总结整个设置,并给出关闭自动化的方法。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jsahani/already-told-you/tree/HEAD/skills/automate

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Already Told You:自动化一个工作项

一次处理一个工作项,使用通俗易懂的英文,每一步都需用户确认。在未获得“是”的答复前,不会在 ~/already-told-you/ 之外创建或更改任何内容。

  1. 选择工作项。 读取最新的 ~/already-told-you/<YYYY-MM-DD>/findings.json(使用 Glob 查找)。如果没有找到 → 提示“请先运行 /already-told-you:run”并停止。将 D 部分显示为编号列表:标题、当前每周小时数 → 自动化后所需分钟数、建议的 how 字段。如果 $ARGUMENTS 指定了某个工作项,直接使用它;否则询问用户选择哪个。
  2. 确认方案。 重新表述该工作项为:触发器(何时/由谁启动)→ Claude 做什么 → 输出什么 → 人工在哪里审批。使用下方列出的自动化选项确认类型;如果用户偏好其他类型则进行更改。只询问缺失的信息(哪个文件夹、哪个应用、什么时间、输出应放在哪里)。
  3. 创建技能。 每个自动化都通过一个技能运行。如果 C 部分已经为该工作项起草了一个技能,则从 <report>/skills/<name>/SKILL.md 开始;否则在该路径下创建一个新的草稿,并遵循相同的规则(frontmatter 包含 name 和 description,引用用户的原话;编号步骤;最后一步为审批)。展示草稿,与用户一起完善,然后使用捆绑的安装器进行安装,切勿自行写入技能文件夹:询问安装位置(~/.claude/skills = 所有项目,${CLAUDE_PROJECT_DIR}/.claude/skills = 当前项目),运行 python3 ${CLAUDE_PLUGIN_ROOT}/scripts/install_skill.py --check --src <report>/skills/<name> --dest <dest>,在获得“是”的确认后运行 python3 ${CLAUDE_PLUGIN_ROOT}/scripts/install_skill.py --install --src <report>/skills/<name> --dest <dest>(该命令会请求权限,除非用户同意 --force,否则不会替换现有技能)。 审批步骤: 如果该工作项涉及发送、发布、付费或删除,技能会准备好结果并停止。定时任务没有人工询问的机会,因此定时任务运行时,技能只将草稿写入文件夹(或应用中的草稿,例如邮件草稿),用户稍后审批。绝不允许定时任务直接发送。
  4. 连接/定时执行——仅处理所选类型所需的部分:
    • 技能 + MCP:指出该工作项需要的应用连接。如果该应用尚未连接,告知用户如何连接(根据应用文档使用 claude mcp add ...,使用 /mcp 检查,或使用 claude.ai 连接器)。切勿将密钥粘贴到文件或聊天中;API 密钥应属于用户自己的密钥存储或环境变量。
    • 定时任务 (桌面):提供在 Claude Code Desktop 应用中进行点击的逐步说明 → 任务 → 新建本地任务,包括要粘贴的确切提示(/<技能名称> 加上任何细节)、计划、项目文件夹和权限选择。提醒:该应用只在应用打开且电脑唤醒时运行。
    • 定时任务 (云端例行任务):提供要键入的确切命令,例如 /schedule every Monday at 9am, run /<技能名称> ...,并说明它在云端运行,使用 GitHub 仓库的副本和连接器——没有本地文件。
    • 定时任务 (cron) macOS:填写下面的 launchd 模板。使用 command -v claude 查找 claude 路径(运行前先询问)。将填充好的 plist 文件先写入 ~/already-told-you/automation/<标签>.plist 并展示给用户。获得“是”的确认后,将其复制到 ~/Library/LaunchAgents/ 并使用 launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/<标签>.plist 加载(每个命令都需请求权限)。其中的 --allowedTools 只列出工作项所需的工具——绝不能使用 --dangerously-skip-permissions。在 Linux 上,显示等效的 crontab 行,供用户使用 crontab -e 添加。
  5. 尝试运行一次(如果用户同意):现在手动运行该技能,并展示它生成的草稿。
  6. 完成。 总结设置了什么、审批在哪里进行、预计节省的时间(来自报告的当前每周小时数 → 自动化后分钟数),以及如何关闭自动化。

自动化选项(依据 code.claude.com/docs,2026 年 10 月——仅使用这些)

选择能完全完成工作且最轻量的选项。how 字段的取值可以是:skill、skill + MCP、schedule (desktop)、schedule (routine)、schedule (cron)。

  1. skill ——该工作每次都遵循相同的流程,由用户启动。一个位于 ~/.claude/skills/<名称>/(所有项目)或 <项目>/.claude/skills/<名称>/(单个项目)的技能可以将 15 分钟的解释和引导缩短为一个 /<名称> 命令。通常也在 C 部分有草稿。
  2. skill + MCP ——流程需要另一个应用(邮件、日历、Notion、Slack、数据库……)。技能通过 MCP 服务器调用该应用。用户通过 claude mcp add ... 或 /mcp,或使用 claude.ai 连接器进行连接。只有当过往记录表明用户使用某个特定应用时,才指出该应用。
  3. schedule (desktop) ——需要按周期执行且依赖本地文件。Claude Code Desktop 应用中的桌面定时任务(任务页面 → 新建本地任务)会在指定时间和频率启动一个新的会话。在用户机器上运行,仅当应用打开且电脑唤醒时有效;权限按任务设置。
  4. schedule (routine) ——需要按周期执行但不依赖本地文件(基于 GitHub 仓库或通过连接器工作)。云端例行任务在 Anthropic 的云端运行,即使笔记本电脑合上也能执行;在 Claude Code 中使用 /schedule 创建(例如 /schedule every Monday at 9am, ...),或在 claude.ai/code/routines 创建。研究预览版,Pro/Max/Team/Enterprise 计划,最小间隔为一小时。
  5. schedule (cron) ——在没有 Desktop 应用时的后备方案:macOS launchd(或 cron)在设定时间以无头模式运行 claude -p "/<技能名称>",使用 --allowedTools 只列出工作项所需的工具。

不适用于重复性工作的选项: /loop 和会话 cron 任务仅在 Claude Code 会话打开时运行,并在七天后过期。

每个自动化的审批规则: 任何发送、发布、付费或删除的操作都会停止,等待一个人工审批步骤(运行会准备草稿或预览;用户确认后才能发送)。


launchd 模板(macOS 上的 schedule (cron))

填写每一个 {{...}},并保存为 <标签>.plist:

  • {{label}} ——例如 com.already-told-you.weekly-client-update
  • {{claude}} ——command -v claude 打印的绝对路径
  • {{skill}} ——已安装的技能名称
  • {{tools}} ——仅该工作需要的工具,例如 Read,Write(~/drafts/**),Bash(git log *)
  • {{project}} ——该工作所在的项目绝对路径
  • {{weekday}} / {{hour}} / {{minute}} ——0 = 星期日;小时 0-23
  • {{home}} ——用户主文件夹的完整路径(launchd 不展开 ~)

文件的第一行必须是 XML 声明,接着是 Apple plist 的 DOCTYPE 行(PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"),然后是:

<plist version="1.0">
<dict>
  <key>Label</key><string>{{label}}</string>
  <key>WorkingDirectory</key><string>{{project}}</string>
  <key>ProgramArguments</key>
  <array>
    <string>{{claude}}</string>
    <string>-p</string>
    <string>/{{skill}} (定时运行:仅准备草稿,绝不发送、发布、付费或删除)</string>
    <string>--allowedTools</string>
    <string>{{tools}}</string>
  </array>
  <key>StartCalendarInterval</key>
  <dict>
    <key>Weekday</key><integer>{{weekday}}</integer>
    <key>Hour</key><integer>{{hour}}</integer>
    <key>Minute</key><integer>{{minute}}</integer>
  </dict>
  <key>StandardOutPath</key><string>{{home}}/already-told-you/automation/{{label}}.log</string>
  <key>StandardErrorPath</key><string>{{home}}/already-told-you/automation/{{label}}.log</string>
</dict>
</plist>

在展示给用户之前,使用 plutil -lint <file> 检查完成的文件。

Individual skills in this repo

This repo contains 3 individual skills — each has its own dedicated page.

相关技能