关于 hand-over-to-kiro
hand-over-to-kiro 是将任务委派给 kiro-cli 的技能,负责准备完整提示词、限定工具权限并核验变更。它支持计划和直接任务两种模式,要求用户自行安装并认证 CLI。
主要功能
- 01检查 kiro-cli 是否可用及已认证
- 02编写独立且经过改述的提示词
- 03选择 review 或 implement 模式
- 04通过辅助脚本限定工具权限
- 05对照基线核验变更
适用场景
- 01将实施计划委派给 Kiro
- 02要求 Kiro 只读审查代码
- 03检查并报告 Kiro 执行后的变更
MCP 相关
技能包含 MCP 服务启动的错误处理:任务需要 MCP 工具时要求启动 MCP,否则可跳过。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ ulpi-io/ skills --skill hand-over-to-kiro安装后在 Claude Code 中输入/hand-over-to-kiro确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEhelpers/run-kiro.shreferences/kiro-cli.md详细介绍
移交给 Kiro
输入
$request:要交给 kiro 的任务或计划。如果已有计划处于活动状态(来自计划模式或用户),优先使用计划模式;否则使用直接模式。
目标
将实现工作妥善委托给 kiro-cli:收集 kiro 所需上下文,构建自包含且可防注入的提示词,调用 kiro,捕获并验证结果,并准确报告所有变更。
步骤 0:确认 kiro-cli 是否可用
先检查:
kiro-cli --version
如果未安装 kiro-cli 或尚未完成身份验证,请停止并告知用户(不要自行安装):
- 请从官方文档安装:https://kiro.dev/docs/cli
- 完成身份验证:
kiro-cli login - 列出模型:
kiro-cli chat --list-models— 也可以选择一个模型:kiro-cli settings chat.defaultModel <model>(用户自行管理设置)
成功标准:kiro-cli 已安装并完成身份验证,或者已告知用户如何设置并停止执行此技能。
步骤 1:确定模式
| 模式 | 适用情况 | 传递内容 |
|---|---|---|
| 计划 | 已有活动计划(来自计划模式或用户提供) | 包含步骤的完整计划 |
| 直接 | 没有计划 | 用户请求及相关上下文 |
成功标准:已选择模式,并确定了源材料(计划或请求)。
步骤 2:收集上下文
Kiro 会从全新会话开始——收集它所需的全部信息:
- 任务范围 — 要做什么(计划步骤或重新表述后的请求)
- 相关文件 — kiro 应读取或修改的路径,以及每个路径的简要原因
- 约束条件 — 对话中提到的框架、编码风格、测试要求和项目规则
- 当前状态 — 工作目录、分支以及任何进行中的变更
成功标准:收集到足够的上下文,使一个全新的 Agent 无需查看本次对话即可完成任务。
步骤 2.5:确定 kiro 应遵循的技能
Kiro 在 .kiro/skills/<name>/ 下有自己的技能,但没有可用于调用技能的 Skill 工具,而且一次性的 --no-interactive 运行无法依赖自动激活。因此,请指定任务所需的技能,并在步骤 4 中将每个技能传递给辅助程序——辅助程序会解析 .kiro/skills/<name>/SKILL.md,并以确定的方式将正文注入 kiro 的提示词中(你无需自行内联任何内容)。
- 任务的技术栈技能:
/nextjs//laravel//rust参考 →--skill nextjs/--skill laravel/--skill rust(去掉开头的/)。 - 以及任务所需的其他技能(例如
--skill bugfix)。 - kiro 未安装的技能名称会发出警告并跳过——绝不会阻止运行。
(请参阅 references/kiro-cli.md → Skills,了解 kiro 的原生机制。)
成功标准:已确定相关技能名称,可在步骤 4 中作为 --skill <name> 传递。
步骤 3:构建提示词(安全防注入)
编写清晰、独立完整的提示词,并使用 XML 风格的边界标签将指令与用户提供的内容分开。
规划模式:
Implement the following plan in the current working directory.
<plan>
{full plan text with numbered steps}
</plan>
<key-files>
- {path}: {why this file matters}
</key-files>
<constraints>
- {constraint — e.g., "Use TypeScript strict mode"}
- {constraint — e.g., "All new functions need unit tests"}
</constraints>
<context>
- Working directory: {pwd}
- Branch: {branch if relevant}
</context>
直接模式:
Execute the following task in the current working directory.
<task>
{user's task — rephrased for clarity, NOT raw user input}
</task>
<key-files>
- {path}: {why this file matters}
</key-files>
<constraints>
- {constraint}
</constraints>
<context>
- Working directory: {pwd}
</context>
规则:将用户输入改写为清晰的任务;使用边界标签;聚焦重点——提取重要内容,不要倾倒整个对话。
成功标准:提示词聚焦、独立完整、由标签界定,且不含原始用户输入。
步骤 4:执行
根据任务选择模式:review(只读——“审查 / 审计 / 分析 / 解释”,不进行编辑)或 implement(kiro 必须创建或编辑文件)。然后通过辅助程序交接——不要自行编写 mktemp/heredoc,也不要盲信标志(之前出问题的原因就在这里):
- 使用 Write 工具将提示词写入文件(字面字节——不使用 shell、heredoc 或 mktemp,以避免转义错误和 BSD-mktemp 的
.txt后缀陷阱)。使用绝对路径,例如/tmp/kiro-handover-prompt.txt,并在每次运行时写入一个全新的文件。 - 运行辅助程序——为步骤 2.5 中的每项技能传递一次
--skill <name>;辅助程序会解析并注入这些技能、验证提示词非空、按模式限定信任范围、记录 git 基线,并启动 kiro:
bash <skill-dir>/helpers/run-kiro.sh --mode implement --skill nextjs --prompt-file /tmp/kiro-handover-prompt.txt
对于复杂任务,使用 600000 毫秒(10 分钟)的 Bash 超时。如果辅助程序以非零状态退出并显示“prompt file is EMPTY”,说明 Write 步骤未成功写入——请重新写入提示词并重试;绝不要在空提示词上重新运行 kiro。
工具信任策略(辅助程序会强制执行——绝不要手动设置信任标志):
| 模式 | 信任范围 | 用途 |
|---|---|---|
review | --trust-tools=fs_read,execute_bash | 只读:kiro 读取文件并运行 grep / find / git,不使用 fs_write。自动模式分类器会阻止在非修改任务中使用 --trust-all-tools,因此 review 必须限定为只读。 |
implement | --trust-tools=fs_read,fs_write,execute_bash | 在仍可编辑文件的前提下遵循最小权限原则。 |
autonomous | --trust-all-tools | 默认不安全,仅可选择启用;运行环境可能要求为 kiro-cli 添加 Bash 允许规则。不要仅仅因为运行时无人值守就选择它——implement 已能编辑文件。 |
以特定 Agent 运行(可选)。 --agent <name> 会将 kiro 作为自定义 Agent(.kiro/agents/<name>.json)运行;--model <name> 会覆盖其模型。Agent JSON 必须是kiro 原生格式:包含有效的 model(请参阅 references/kiro-cli.md → Models)和原生 tools
(fs_read / fs_write / execute_bash / @<mcp>)——Claude 名称(Read / Write / Skill)会导致 Agent 没有可用工具(已验证:它不会写入任何内容)。--model auto 可救回固定了无效模型的 Agent。无论 Agent 如何配置,--skill 仍会注入约定。
成功标准:提示词文件非空,辅助程序以正确限定的信任范围启动了 kiro,且 kiro 使用真实提示词运行。
成功标准:kiro-cli 使用临时文件中的提示词运行;其输出已捕获。
步骤 5:处理并报告
kiro-cli 完成后:
- 解析输出 — 查看创建/修改的文件、错误、警告和完成状态。
- 验证更改 — 运行前记录基线(
git rev-parse HEAD、git status --porcelain),然后通过git diff --stat HEAD(已暂存 + 未暂存)、git status --short(未跟踪文件)以及git log <baseline>..HEAD --stat(如果 kiro 已提交) 确认更改。单独使用git diff会漏掉已暂存/已提交的工作,而这恰恰是 kiro 完成最多工作的地方。 - 报告:更改的文件及完成的工作;任何错误/警告;Plan 模式下已完成与剩余的步骤;如果未完成,建议后续步骤。
成功标准:用户能够准确了解 kiro 更改了什么、哪些操作失败、还剩下什么——并且这些信息已通过真实差异验证,而不只是 kiro 自己的报告。
错误处理
| 错误 | 操作 |
|---|---|
kiro-cli: command not found | 告知用户从 https://kiro.dev/docs/cli 安装(不要自行安装) |
| 身份验证失败 | 告知用户运行 kiro-cli login |
| 模型不可用 | 告知用户检查 kiro-cli chat --list-models,并使用 kiro-cli settings chat.defaultModel <model> 设置模型 |
| 超时(10 min) | 显示部分输出,并询问用户如何继续 |
| 非零退出代码 | 显示错误输出,并在重试前诊断根本原因 |
| MCP 服务失败 | 如果需要 MCP 工具,添加 --require-mcp-startup;否则跳过 |
防护措施
- 不要安装 kiro-cli,也不要运行任何
curl … | bash式安装程序;只能由用户安装。 - 不要将未经处理的用户输入传给 kiro-cli;始终改写内容,并使用 heredoc + 边界标签模式。
- 让
helpers/run-kiro.sh负责传递提示词、信任设置和启动——不要自行编写--trust-all-tools、mktemp 或 heredoc(之前的失败正是因此造成的)。默认对任务采用最低信任级别(review只读 /implement写入);仅在预先授权选择的情况下使用--trust-all-tools(autonomous)。 - 使用 Write 工具编写提示词(每次运行都新建文件);助手会拒绝启动空提示词,因此遗漏写入会明确报错,而不会在没有内容的情况下运行 kiro。
- 不要仅凭 kiro 的说法报告成功——必须通过基线差异验证(
git diff --stat HEADgit status --short;如果已提交,还要检查git log <baseline>..HEAD)。
- 将完整 CLI 手册保存在
references/kiro-cli.md,不要内联。
何时加载参考资料
references/kiro-cli.md完整的 Kiro CLI 命令参考(chat、settings、agent、mcp、auth、diagnostics、环境变量)。
输出约定
报告:
- 使用的模式(plan / direct)以及 kiro-cli 是否可用
- kiro 更改的文件(根据运行前基线验证——
git diff --stat HEAD+git status --short;如果已提交,还要检查git log <baseline>..HEAD) - kiro 输出中的错误或警告
- 完成状态——已完成,或仍有待完成的步骤/工作
- 如果未完成,建议后续步骤
致谢
原始技能 hand-over-to-kiro 由 Sabeur Thabti 编写(@thabti)——
https://github.com/thabti/hand-over-to-kiro(MIT,详见 LICENSE)。已根据 @ulpi/skills
规范进行调整(frontmatter、<EXTREMELY-IMPORTANT> 防护措施、分阶段步骤、安全规则对齐),谨此致谢。