Communitygithub.com

Loop It(循环控制)

为 Codex、Claude Code、Cursor 以及兼容 SKILL.md 的 AI 智能体设定有边界、可验证的编码循环。

Loop It(循环控制) 是什么?

Loop It 是一个用于 AI 辅助编码的循环技能,它能够将一个开放式的编码目标转化为一个有明确边界且可验证的迭代工作流。该技能并非让智能体无限地“持续改进”,而是通过强制设定“目标”、“范围”、“成功检验标准”、“迭代上限”以及“停止条件”等契约,确保每次循环都产生可衡量的进展。它内置了丰富的循环库(如“工单到验证修复”、“失效 CI 修复”、“文档扫描”、“性能优化”等),用户可以直接从库中选择匹配的循环,或根据项目进度文件(`.loop-it/progress.json`)推荐下一步循环。Loop It 支持 Codex、Claude Code、Cursor 等多种平台,安装后可通过 `/loop-it` 或 `$loop-it` 等命令调用。该技能特别强调在涉及生产写入、凭证、破坏性 Git 操作等场景时必须设置审批关卡,防止 AI 做出不可逆的决策。

兼容平台✓Claude Code✓Codex CLI✓Cursor
npx skills add fhajjej-ship-it/loop-it

在你喜欢的 AI 中提问

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

文档

Loop It(循环控制) 是做什么的?

将开放式编码目标转变为有边界、可验证的循环。Loop It 也是一个循环库:选择合适的起点循环,根据用户上下文进行调整,并跟踪进度,使下一步迭代目标清晰可见。

决策

首先确定用户所需的模式:

  • 从库中选取:为用户目标选择一个捆绑的循环。
  • 根据进度推荐下一步:检查 .loop-it/progress.json 或 .loop-it/LOOP.md,并推荐下一步循环。
  • 仅设计:生成一个可复用的循环提示或项目本地的循环文件。
  • 立即运行:每次执行一个有限制的迭代,验证结果,并判断是否需要继续下一次迭代。
  • 导出/安装:为 Codex、Claude Code、Cursor 或其他兼容 SKILL.md 的智能体适配相同的循环。

如果任务表述模糊,不要提出宽泛的发现式问卷。首先推荐最合适的库中循环,并说明其假设前提。只有当目标、成功标准、仓库范围或审批边界确实存在阻碍时,才最多提出三个有针对性的问题。

契约

每次循环执行前都需要包含以下字段:

  • 目标:具体的产出成果,而非主题。
  • 范围:仓库、文件、功能区域、数据源或环境。
  • 成功检查:命令、基准测试、人工检查、审查标准或可衡量的阈值。
  • 迭代上限:最大执行次数或时间预算。
  • 停止条件:成功、无有意义改进、反复失败、访问被阻止、不安全操作或需要审批。
  • 证据:每次通过后应记录的内容。
  • 审批关卡:生产写入、外部消息、支付、破坏性 Git 操作、凭证、部署或不可逆的数据变更。

如果用户提出的循环仅仅是“持续改进”而没有检查标准,应予以拒绝。转而提供一个带有明确检查机制的更小范围的循环。

选择循环

优先使用捆绑的循环库,而非从头设计循环。

如果选择脚本可用,请使用以下命令:

node <skill-dir>/scripts/select-loop.mjs list
node <skill-dir>/scripts/select-loop.mjs search "failing ci"
node <skill-dir>/scripts/select-loop.mjs recommend --goal "fix failing checkout test"
node <skill-dir>/scripts/select-loop.mjs next --cwd <project>

将 <skill-dir> 解析为此技能的文件夹。在 Claude Code 中,${CLAUDE_SKILL_DIR} 可能可用。在其他智能体中,请找到包含此 SKILL.md 的目录。

选择时:

  1. 当用户询问下一步循环时,首先检查 .loop-it/progress.json。
  2. 如果没有进度记录,则将用户的目标与 references/library/loops.json 进行匹配。
  3. 推荐一个循环,最多两个备选方案。
  4. 用一句话解释匹配原因。
  5. 仅在必要时提出该循环的核心问题。
  6. 如果没有匹配的库循环,则设计一个自定义循环,并说明待其证明有用后应考虑加入库中。

仅在选择脚本不可用或需要手动检查时,才读取 references/library/loops.json。当任务需要通用的持久状态模板时,请读取 references/loop-template.md。

当前库类别包括:

  • 工单到已验证修复:复现、诊断、修补、添加回归测试、验证。
  • 失效 CI 修复:检查失败输出、复现、修补、重新运行失败检查。
  • 文档扫描:将文档与实现对比、更新过时文档、验证示例或链接。
  • 产品评估:定义场景和标准、测试、修复遗漏、重新运行受影响及全部检查。
  • 性能优化循环:测量基准、进行一次聚焦更改、重新测量、仅保留有证据证明的改进。
  • 审查修复循环:审查差异、修复阻塞性发现、重新运行检查、重复直到只剩可接受风险。
  • 全新设置循环:从干净环境开始、按照文档设置、修复隐藏的假设、干净地重试。
  • 发布就绪:在发布前验证包、部署或公开安装路径。
  • UX 打磨、依赖升级、安全加固、重构隔离和测试覆盖缺口循环。

草拟循环

使用以下结构创建循环提示和状态文件:

  1. 说明目标和非目标。
  2. 在一个紧凑周期内定义重复动作:检查、行动、验证、记录、决策。
  3. 明确说明验证命令或人工检查的具体名称。
  4. 定义迭代上限和停止条件。
  5. 定义最终报告必须包含的内容。

保持版本 1 的范围狭窄:一个仓库、一个主要角色、一个主要成功检查。在手动循环被证明有用之前,延迟安排、仪表盘、多智能体编排和生产自动化。

当需要持久状态文件时,根据 references/loop-template.md 创建 .loop-it/LOOP.md,或运行:

node <skill-dir>/scripts/create-loop.mjs --name "Loop name" --objective "Concrete outcome" --check "Verification command or criterion"
node <skill-dir>/scripts/create-loop.mjs --from failing-ci-repair

基于库的循环文件还会创建 .loop-it/progress.json,除非传递了 --no-progress。

运行循环

每次迭代:

  1. 重新阅读目标、成功检查、上限和审批关卡。
  2. 仅检查下次有界行动所需的上下文。
  3. 做出最小的可信更改。
  4. 首先运行最窄的相关验证,仅在需要时才进行更广泛的检查。
  5. 如果存在状态文件,则在 .loop-it/LOOP.md 中记录证据;如果存在 .loop-it/progress.json,则更新它。
  6. 决策:停止、继续、请求审批或报告阻塞。

如果继续执行需要基于关于安全、凭证、生产数据、计费、用户消息、破坏性 Git 操作或部署审批的隐藏假设,则立即停止。

不要将已耗尽、受阻或部分验证的循环描述为完成。应准确说明导致停止的条件以及在何种证据基础下停止。

导出

在跨工具使用时,保持相同的循环文本,仅更改调用方式:

  • Codex:安装到 .agents/skills/loop-it/ 或作为 Codex 插件,然后通过 $loop-it 调用。
  • Claude Code:安装到 .claude/skills/loop-it/,然后通过 /loop-it 调用。
  • Cursor:安装到 .cursor/skills/loop-it/,然后通过在 Agent 对话中输入 /loop-it 或要求进行循环来调用。对于始终保持的项目约定,请使用 Cursor 规则,而非此过程性循环。

导出时,保持一个规范的循环体,除非工具强制要求特定语法,否则避免使用工具特有语法。

相关技能