关于 pulumi-neo-handoff
pulumi-neo-handoff 是将进行中的工作转交给新的 Pulumi Neo 任务的技能。它收集仓库信息并整理对话摘要,写入提示词文件后启动任务并返回链接;控制权不会回到原 Agent。
主要功能
- 01检查 Pulumi CLI 是否可用
- 02收集仓库和分支信息
- 03整理已定事项与待解决问题
- 04将交接提示词写入临时文件
- 05启动 Neo 并提供任务链接
适用场景
- 01将未完成的任务转交给 Pulumi Neo
- 02向新任务传递仓库状态和相关文件
- 03明确要求交接后在 Neo 中继续工作
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ pulumi/ agent-skills --skill pulumi-neo-handoff安装后在 Claude Code 中输入/pulumi-neo-handoff确认已加载。
附带文件agents/openai.yamluse_cases.yaml
详细介绍
Pulumi Neo 交接
将当前正在进行的工作转交给新的 Pulumi Neo 任务。这是单向交接:控制权交给 Neo 后,不会返回调用方 Agent。
调用方 Agent 的行为
此技能启动时,请充当交接协调者,而非执行者:
- 不要逐步叙述交接过程。用户已作出决定;请安静地完成交接。
- 不要在聊天中粘贴整理好的提示词正文。仅显示临时文件路径,方便用户按需查看。
- 启动任务后不要继续处理该任务。返回任务 URL 后,请干净地退出。
交接内容
Neo 任务会收到一条包含以下三个部分的开场提示词:
- 目标 — 用一句话说明 Neo 接下来要做什么。
- 仓库指引 — 仓库根目录、分支、工作目录、工作树状态,以及与当前工作最相关的 3 到 5 个文件。
- 对话摘要 — 简要概述讨论过的内容、已作出的决定和仍未解决的问题。
不要包含差异、完整文件内容或工具输出。Neo 可以直接查看本地工作树(包括未提交的更改);重复这些内容会浪费 Neo 的开场上下文。
工作流
0. 预检
起草任何内容前,确认 CLI 可用:
command -v pulumi >/dev/null || { echo "pulumi CLI not installed"; exit 1; }
pulumi neo --help >/dev/null 2>&1 || { echo "pulumi neo unavailable — run 'pulumi login' or upgrade the CLI"; exit 1; }
如果预检失败,请向用户显示错误并停止。不要先整理提示词再在启动时失败。
1. 确定目标
目标是用一句话说明 Neo 接下来要做什么。如果用户的交接消息中已包含目标(例如“把这项工作交给 Neo,并应用暂存迁移”),请直接使用该目标。否则只询问一次:“您希望 Neo 接下来做什么?”
不要复述目标以供确认——交接应当无缝进行;如果 Neo 对目标理解有误,用户可以在 Neo 任务中纠正。
2. 收集仓库上下文
记录规范的仓库指引和分支状态:
git rev-parse --show-toplevel # repo root (canonical pointer)
git rev-parse --abbrev-ref HEAD # branch; returns "HEAD" if detached
git status --short # working-tree summary
如果 git rev-parse --show-toplevel 失败,说明当前目录不是 git 仓库——省略“仓库”部分,仅记录工作目录。Neo 仍可继续操作,但仓库上下文会受限。
如果分支显示为 HEAD,请记录提交 SHA,并将条目标记为“分离状态,位于 <sha>”。
根据对话,找出与当前工作最相关的 3 到 5 个文件(已读取、编辑或反复讨论的文件)。如果对话无法明确指出相关文件,就不要列出任何文件,而不要猜测——错误的文件会误导 Neo,其危害大于遗漏文件。
3. 起草对话摘要
按照以下结构撰写简明摘要。没有有用内容的部分应省略,不要凑内容。
## What's been done
<bullets: decisions made, code changed, dead ends ruled out>
## Open questions
<bullets: things the user has not resolved>
## Next step
<one or two sentences describing what Neo should do first>
摘要目标约为 400 个单词。尽可能精简。目的是让 Neo 能顺利接手,而不是重述整个对话。
4. 整理提示词并写入临时文件
将这三个部分合并为一份 Markdown 文档。使用 mktemp 生成可移植的临时路径:
PROMPT_FILE="$(mktemp -t neo-handoff.XXXXXX.md)"
格式:
# Goal
<one-sentence goal>
# Repository
- Root: <repo root>
- Branch: <branch or "detached at <sha>">
- Working directory: <cwd>
- Working tree: <clean | dirty>
- Files in play:
- <file 1>
- <file 2>
# Conversation summary
<summary from step 3>
5. 启动
打印临时文件路径,并附上一行简短的文件大小摘要,方便用户按需查看:
Prompt written to <PROMPT_FILE> (<line count> lines, <byte count> bytes).
Launching Neo task...
调用 CLI:
pulumi neo "$(cat "$PROMPT_FILE")"
pulumi neo 将提示词作为单个位置参数接收;它没有 --file 标志,且通过 stdin 重定向会启动 TUI,而不是读取提示词。"$(cat ...)" 形式会将文件字节作为数据捕获(命令替换中的 $、反引号或 \ 不会由 shell 重新求值),并将其作为一个参数传递。不要“修正”为 pulumi neo --file ... 或 pulumi neo < ...——这两种形式与当前 CLI 配合时都会出错。
如果 CLI 以非零状态退出,请原样显示其 stderr,并保留提示词文件,以便用户重试。不要假称交接已成功。
6. 显示任务 URL
CLI 成功时会打印任务 URL。请原样输出,然后停止。
不要做的事
- 不要在没有明确交接意图时调用此技能。 检测到类似基础设施的工作并不意味着要触发此技能;“Neo 能做 X 吗?”这类能力问题不属于交接。如果因此激活此技能,会造成干扰并导致误用。
- 不要在提示词中包含差异、文件内容或命令输出。 Neo 可以直接查看本地工作树,因此重复这些内容会浪费它的初始上下文。
- 不要把组装好的提示词粘贴到聊天中供用户确认。 摘要可能很长;用户需要查看时,提供文件路径即可。
- 不要代表用户提交、更改或修改工作树。 用户负责自己的 git 状态——此技能用于交接上下文,而不是控制工作流。
说明
- 单向交接。控制权交给 Neo 任务后,不会返回调用方 Agent。
- Neo 任务可以中断。如果发现摘要有误,用户可以在 Neo 任务中调整方向;此技能无需在启动时防范摘要错误。
- 展示任务 URL 是此技能的成功标准,而非底层工作的成功完成。Neo 可能会在任务中拒绝或调整请求方向。