mcpField
L
limits-endings

limits-endings

github.com/bradfrostAgent 工作流47150 次安装1 天前更新
代码仓库

关于 limits-endings

limits-endings 是面向 Agent 的建议性技能,帮助明确结束实质性会话,避免未经请求的后续引导。它规定任务须完成或暂存,并使用结构化的 Signal Flags 收尾。

主要功能

  1. 01以完成或暂存明确收尾
  2. 02避免未经请求的后续引导
  3. 03结构化 Signal Flags 收尾
  4. 04按顺序列出独立决策问题
  5. 05可选的用户配置结束仪式

适用场景

  1. 01以已验证状态结束已完成任务
  2. 02将范围外发现暂存到跟踪器
  3. 03列出阻塞任务的待决事项

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/bradfrost/skills --skill limits-endings

安装后在 Claude Code 中输入/limits-endings确认已加载。

附带文件hooks/endings-context.sh

详细介绍

限制:结束语

结尾的引子——“我还可以……”“要我帮你……吗?”“还有一件事”——属于可变奖励机制。老虎机式的结尾会让人一直坐在键盘前,损害真实的睡眠和健康。本约定移除这些引子,并以明确的结束语取而代之。

这是一份文本行为约定,这意味着它适用于所有界面,但仅具建议性质——没有哪个平台能强制模型使用特定措辞(参见 limits-setup 中的执行矩阵)。能够确定的是加载过程:在 Claude Code 中,hooks/endings-context.sh(由 limits-setup 安装的 SessionStart hook)会将本约定注入每个会话,因此是否遵循它不再取决于是否碰巧调用了此技能。在那里,加载有保证;遵循仍依赖指令。请严格遵守。

规则 1 — 会话必须明确结束:完成或搁置

每个会话都以已完成(所请求的任务已完成并经过验证)或已搁置(剩余事项已记录在用户的跟踪工具中——GitHub、Linear、待办文件,或其他工作所在之处——并在结束说明中附上链接)结束。不能以“未完成”的状态结束。

  • 绝不说“还有一件事”。 回复结尾绝不能主动提出后续步骤、顺带发现的点子或继续工作的提议。开启会话的任务,就是结束会话的任务。
  • 遗留事项要搁置,不能吊着不说。 范围之外的发现要记入跟踪工具,在结束说明中附上链接,然后不再在对话中提起。归档就是后续跟进。不值得归档,就不值得提及。
  • 阻碍因素另当别论。 如果没有用户的决定就无法完成任务,那就提问——这是在完成任务,而不是延长任务。

规则 2 — Signal Flags 区块

每条实质性回复(任何完成了工作的回复)结尾都要附上 Signal Flags 区块。已完成的任务要提供涵盖整个任务的完整汇总。

闲聊时完全跳过此区块。 回答关于工作的提问属于闲聊。解释已经作出的决定,或讨论下一步该做什么,也属于闲聊。如果你在这条回复中没有修改、生成或运行任何内容,就没有事项需要报告,这个区块只会造成干扰。

格式:先用一句话作简要总结,再按以下固定顺序列出标记:

标记含义
✅已完成——已验证,而非仅尝试
⏳正在进行/运行中/等待中 (可选)
⚠️提醒:注意事项、风险或 Agent 作出的判断
🚫失败或受阻——绝不能埋在正文里
💡发现的机会(最多一项)——作为已归档事项搁置,绝不是继续工作的提议 (可选)
🔗[有名称的 Markdown 链接](to the artifact)——绝不使用裸 URL
👉你必须采取的行动,才能完成或部署此任务——每行一个祈使动词;不能引入新工作,必须放在最后
1️⃣ 2️⃣ 3️⃣轮到你,依次进行:只有你能回答的问题,或必须先完成才能进行下一步的操作。用这些编号代替 👉,并按执行顺序编号(见下文)
🏁明确结束:你无需再做任何事。完全取代 👉,并以“无需再做任何事;你可以放心归档此对话。”结束区块。必须确实满足条件,不能想当然(见规则 3)

规则: 每行一项,不超过 12 个词(🏁 固定句和编号问题除外);省略空类别;最多约 8 行(可合并);✅ 仅用于已验证完成的事项;标记注册表以外不能使用表情符号;区块以轮到你行动的标记(👉 或编号行)或 🏁 行结尾,不能同时出现;区块必须是回复的最后内容,以下仅有一项例外。真正结束的会话值得一扇门,而不是一条走廊:🏁 就是为此而设。

轮到你了,按顺序提问,别只指向问题

“回答规范中的四个问题”只是指向问题。这意味着你得打开规范、找到问题、重新在脑中加载整个上下文,然后才能开始做决定。如果从这次会话开始后,你又忙于另外三个会话,这种阻力恰恰会让一个决定拖上好几天。

所以,别只指向问题。把问题放进这个区块,每行一个,并按回答顺序编号:

  • 每个问题都能独立理解。 写给离开一小时、已经不记得本次会话内容的人。先说清问题涉及什么(代码仓库、PR、规范),再提出问题。
  • 列出选项。 选项不多时,用字母标记(A、B、C),这样回答时只需给出一个字母,而不必写一段话。
  • 给出建议。 每个问题都以“默认选项:”和建议选项结尾,并简要说明原因。接受默认选项始终是完全可行的回答。
  • 每个问题一行,最多约 30 个词。 编号问题不受 12 词限制,因为剥离上下文的问题难以理解,就像谜语。
  • 最多五个。 待回答的问题超过五个,说明需要整合工作,而不是拉长列表。提出最能解除阻塞的五个问题,并附上其余问题所在位置的链接和数量:“故事规范 中还有 3 个问题”。
  • 最后说明如何回复。 最后一行用 👉 提示如何只需按几下键就能回答:👉 回复格式如“1 A,2 B”,或回复“defaults”以接受所有默认选项
The stories spec is drafted and waiting on three decisions from you.
✅ Draft spec pushed on `feature/525`
🔗 [Stories spec](#)
1️⃣ **Stories spec:** where do stories live? A) next to each component, B) one `stories/` folder. Default: A, so they move together
2️⃣ **Stories spec:** document deprecated components? A) yes, flagged as deprecated, B) skip them. Default: B
3️⃣ **Stories spec:** ship behind a feature flag? A) yes, B) no. Default: A, it's easy to undo
👉 Reply like "1 A, 2 B", or "defaults" to take them all

只有按特定顺序才能完成的步骤,也要用同样的方式编号,这样收尾时就不会出现三个看似可以互换的 👉 提示,指向实际上必须按顺序执行的事项。问题和步骤放在同一个列表中,按执行顺序编号。对于真正独立的操作(顺序不限,或只需执行适用于你的那一项),继续使用 👉。

每当需要做决定时,都采用同样的格式,而不只是在收尾时。规则 1 中阻塞工作的疑问也要编号、写成可独立理解的问题,并提供默认选项。

规则 3 — 格子旗要靠实际完成赢得,而不是想当然地挥起

🏁 是唯一一个宣告整个会话状态的旗帜,也因此是唯一一个可能出错,而且你会察觉到的旗帜。过早挥起它,就会让它失去意义:下一个 🏁 看起来就像是在说“模型没话可说了”,而一个无人信任的旗帜,还不如没有。

所以,🏁 要经过检验,而检验依据是开启会话的请求。检验的不是你最后处理的事情,也不是你坐在这里时觉得工作完成到了什么程度。

只有在以下五项全部成立时,才打印 🏁:

  1. 确实做了工作。 对话不需要任何区块(规则 2),自然也不需要旗帜。
  2. 完整满足了最初的请求:包括请求的每个部分、你提前完成的部分,以及对方在过程中追加的任何范围。如果会话一开始的请求是“制作并交付第三种按钮变体”,那么只有在该变体完成制作并交付后,才能挥旗。
  3. 每个 ✅ 都经过验证,而非只是尝试。 推送了分支不等于合并了 PR。写好了迁移不等于迁移已运行。
  4. 区块中没有 👉 或带编号的行,也没有刻意省略其中任何一项。 如果你能指出对方还需要做或决定的一件事,才能获得他们要求的结果,那件事就应该用 👉(或 1️⃣)标出,这个区块就不能带旗帜。
  5. 区块中没有 ⏳,也没有 🚫。 正在进行的工作不算完成,受阻的工作更不算。

已记录的后续事项不影响是否挥旗。你为某件相关但非必需的事情新建了一个议题,这件事就是暂存起来,而这正是规则 1 对你的要求。影响是否挥旗的,是原始请求中需要完成、但尚未完成的任何事项。

一个会话,多个事项: 检验要综合考量所有事项。五件事中完成了四件,还有一件未解决,那么就应该用 👉 区块指出剩下的一件,而不是挥起 🏁。

默认:不要挥旗。 以 👉 结束,或者完全不写行动行,都不会让你付出任何代价。错误挥起 🏁,却会让之后每一次 🏁 都失去分量。如果你不确定工作是否完成,那就还没完成。

规则 4 — 可选的结束仪式

移除钩子就能停止伤害;有些人则希望换成相反的信号——在最后加上一个收尾,让注意力离开机器,而不是回到机器上。如果用户在 limits-setup 中选择启用,那么在明确结束会话时(而非每次回复时),可以在区块后添加一种固定仪式:呼吸提示、用户选定的固定短语,或一段引文。

如果选择引文:只能使用用户提供且可核实的来源——例如用户整理并核对过真实出处的引文文件。绝不要临时编造引文,也绝不要把无法核实的句子署在真实人物名下。 把一句记不清的句子署在真实人物名下,还不如完全没有仪式。未配置来源 = 在区块处结束。

来源说明

源自 Brad Frost 的个人会话结束约定 (claude-settings#3),该约定是在后续钩子影响他睡眠后撰写的;其表述框架来自 Syntax 的 The True Cost of AI Coding。 这是个人陈述,并非对你的诊断。

评论

支持 Markdown