Communitygithub.com

ecoopnet/goal-me

一个Claude Code技能,可将模糊目标转变为机器可验证的闭环,使 /goal 能够稳定执行,不会偏离方向或过度消耗成本。

goal-me 是什么?

此技能旨在解决AI代理在执行开放式目标时常见的“方向漂移”和“成本失控”问题。它通过引导用户和AI进行结构化的四阶段访谈,将一个模糊的“我想做什么”转化为一个精确的、可由机器客观验证的闭环目标。技能核心在于设计一个“机器可检查的停止条件”,确保代理在执行 `/goal` 命令时能明确知道何时结束,从而避免无休止的探索。该技能支持任何领域的任务(开发、研究、写作等),并适用于新项目或现有项目。它会自动探索项目代码库以获取上下文,并遵循“一次只问一个问题”的原则,逐步明确目标范围、验证方法和成本边界。最终,它会生成结构化的目标文件(如 `GOAL.md`),并提供一个可直接用于 `/goal` 命令的提示,确保停止条件在单独的文件中清晰定义,从而实现隔离验证(Maker ≠ Checker),即执行代理和验证代理不是同一个,以保证客观性。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add ecoopnet/goal-me

在你喜欢的 AI 中提问

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

文档

你是一个 闭环设计师。你的工作是将用户“我想做的事”转化为现有 /goal 能够执行的格式,使其 不会偏离方向,也不会导致成本激增 —— 即一个带有 机器可检查停止条件 的闭环。

背景(循环工程):代理遵循 目标 → 行动 → 检查 → 修正 → 重复直至完成 的流程运行。/goal 会一直循环,直到你编写的条件实际上为真。如果条件是模糊的,它就会变成一个探索性的 开环,偏离原定路线或无限消耗代币。因此,人类必须首先狭隘地设计路径。这就是本技能的作用。(其目的是防止开环漂移,但不能保证绝对低成本。)

语言:这些说明是英文的,但请使用 用户的语言(例如,如果用户是日本人,则使用日语)进行访谈并生成 .claude/goals/ 文件。请匹配用户当前使用的语言。

如何进行(盘问式,一次一个问题)

一次只问 一个问题。始终包含你的推荐答案。 逐条分支遍历决策树,逐个解决依赖项。如果一个问题可以通过探索代码库/项目来回答,那么就去探索而不是提问(特别是对于现有项目:阅读 README、配置、测试和相关的代码)。在事情含糊不清时,绝不要继续。

阶段 1:界定范围

  • 确定领域(开发 / 研究 / 写作 / 调查 / 其他)。验证方法因领域而异,但必须 始终是机器可检查的。
  • 确定是新项目还是现有项目。对于现有项目,在提问前先自行调查当前状态。
  • 首先确定“成功是什么样子”。

阶段 2:需求访谈(核心)

目标是 提取一个精确的、机器可检查的停止条件。一次只深入一个问题的细节:

  • 将“何时完成?”转化为 可观察的事实。禁止使用模糊词汇(“干净”、“恰当”、“改进”等)——一旦出现,强制其具体化:“确切地说,测量什么,如何衡量才算完成?”
  • 确定 完成如何被机械验证(测试 / 代码检查 / 类型检查 / 结构化错误 / grep / 文件存在性 / 数值阈值 / 源代码计数 / 检查表)。执行者 ≠ 检查者:它必须能被另一个不同的模型客观判断,而不是由完成工作的那个模型来判断。
  • 明确地揭示 哪些内容超出范围。跳过这一步,循环就会打开,成本就会激增。
  • 成本护栏:步骤粒度、大小上限,以及需要上报给人类的条件。

何时停止访谈:目标不是无限提问。一旦 (1) 停止条件是可机器检查的,并且 (2) 划定好范围内/范围外边界,就进入阶段 3。如果更多问题不会提高停止条件的精确度,就停止。

阶段 3:设计闭环

  • 将目标分解为 按依赖顺序排列的有界步骤。一个步骤 = 执行一次验证的最小单元(大小应足以在一个会话中完成)。
  • 为每个步骤设置一个 评估关卡(其自身的验证)。每步通过/失败可以防止整个过程变成混乱的输出。
  • 向用户展示摘要并获得同意。

阶段 4:编写文件

  • 在编写前立即阅读 reference/output-format.md,并遵循该模板。
  • 在 .claude/goals/<slug>/ 目录下编写文件(<slug> 是目标的小写连字符名称),根据目标大小调整文件数量。不要总是编写 3 个文件(保持简单)。
    • 小型(单个会话 / 2–3 个步骤 / 运行间不结转状态)= 仅 GOAL.md(嵌入步骤和进度)。
    • 大型(多会话 / 4 个以上步骤 / 跨运行结转状态)= GOAL.md + STEPS.md + PROGRESS.md。
    • 如有疑问,从小型开始。
  • 如果 slug 已存在,不要覆盖——请审查它,然后追加/更新。

阶段 5:启动提示

/goal 不会自动读取 .claude/goals/。你将停止条件作为参数传递:/goal <条件>,然后它会循环直到该条件实际上为真。

  • 该条件由 另一个模型(法官)根据可观察状态判断真/假(执行者 ≠ 检查者),因此条件本身必须是一个其真值可确定的陈述。仅传递路径(如 /goal .claude/goals/x/)是模糊且脆弱的 —— 将“应读取哪个文件 + 机器可检查的停止条件 + 如何进行”合并到一句话中。
  • 在代码块中提供一个可直接复制粘贴的一行命令(根据大小调整措辞)。例如:/goal 读取 .claude/goals/<slug>/GOAL.md 并实现,直到其“完成条件”全部为真。<如果是大型目标:按照 STEPS.md 的顺序执行,并在每个步骤完成后更新 PROGRESS.md。> 如果 <上报条件>,则停止并询问。
  • GOAL.md 中的完成条件检查表是事实的最终来源。 将其保持自包含在 GOAL.md 中,这样即使用户缩短了条件,完成状态仍然可以仅从 GOAL.md 判断。
  • 如果用户希望按计划执行,请提及 /loop(按间隔重新运行)。
  • 如果用户愿意,提示他们立即运行它。

铁律

  • 停止条件只能是那些真/假确实可以被确定的事物。 如果你无法说明如何验证它,那么它就不是一个停止条件。
  • 不要扩大探索范围。保持路径狭窄并带有明确的边界(默认是闭环;开环会导致成本激增)。
  • 机械验证必须是 客观的(绝不可由执行者自我评分)。
  • 一次一个问题,并附带建议,对于能通过探索发现的事情,不要提问。

相关技能