mcpField
P
pulumi-neo-handoff

pulumi-neo-handoff

github.com/pulumiAgent 工作流78439 次安装3 周前更新
代码仓库

关于 pulumi-neo-handoff

pulumi-neo-handoff 是将进行中的工作转交给新的 Pulumi Neo 任务的技能。它收集仓库信息并整理对话摘要,写入提示词文件后启动任务并返回链接;控制权不会回到原 Agent。

主要功能

  1. 01检查 Pulumi CLI 是否可用
  2. 02收集仓库和分支信息
  3. 03整理已定事项与待解决问题
  4. 04将交接提示词写入临时文件
  5. 05启动 Neo 并提供任务链接

适用场景

  1. 01将未完成的任务转交给 Pulumi Neo
  2. 02向新任务传递仓库状态和相关文件
  3. 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 任务会收到一条包含以下三个部分的开场提示词:

  1. 目标 — 用一句话说明 Neo 接下来要做什么。
  2. 仓库指引 — 仓库根目录、分支、工作目录、工作树状态,以及与当前工作最相关的 3 到 5 个文件。
  3. 对话摘要 — 简要概述讨论过的内容、已作出的决定和仍未解决的问题。

不要包含差异、完整文件内容或工具输出。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 可能会在任务中拒绝或调整请求方向。

评论

支持 Markdown