关于 pulumi-context-api
pulumi-context-api 是查询 Pulumi Context API 的技能,帮助 Agent 分析云基础设施资源、堆栈及其依赖关系。它要求每次会话先获取实时查询规范,并按完整性信号判断结果能否支持穷尽性结论。
主要功能
- 01查询资源与堆栈关系
- 02分析变更影响范围
- 03每次会话获取实时查询规范
- 04检查结果完整性信号
适用场景
- 01查找依赖特定资源的对象
- 02评估基础设施变更影响
- 03判断清理清单是否完整
MCP 相关
若会话中已有 graph_query 和 get_graph_schema 工具,可直接调用;否则技能通过 Pulumi CLI 获取查询规范并执行图查询。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ pulumi/ agent-skills --skill pulumi-context-api安装后在 Claude Code 中输入/pulumi-context-api确认已加载。
附带文件use_cases.yaml
详细介绍
查询 Pulumi Context API
Context API 以图的形式回答有关组织云基础设施的问题:有哪些资源、资源之间有何依赖关系,以及某项更改会产生什么影响。它涵盖通过 Pulumi Discovery 发现的资源,而不仅限于由 Pulumi 管理的资源。
只要问题涉及关系,就优先使用它,而不是 Resource Search。Resource Search 会查找单个资源,但无法沿着边追踪,因此反复搜索来回答“哪些资源依赖于 X”既缓慢,结果通常也不完整。
公开预览版,面向 Enterprise 和 Business Critical 版本的组织开放;同时需要具有 resources:search 权限的角色(默认的 Member 和 Admin 角色均具备此权限)。
首先:当前会话中是否已有图查询工具?
如果有 — 无论服务器为这些工具注册了什么前缀,只要存在 graph_query 和 get_graph_schema — 就调用它,并跳过步骤 1 和步骤 2。根据 graph_query 工具自身的说明构造选择器,该说明包含语法;工具会自行解析组织和凭据,并为你处理完所有分页。如果该说明信息不足,get_graph_schema 会返回当前有效的字段词汇和限制;在请求时,它也会提供完整的步骤 1 入门指南。步骤 3 仍然规定了如何处理结果。
步骤 1 和步骤 2 适用于能够使用 shell、但没有此类工具的 Agent。
步骤 1:始终获取入门指南
需要 Pulumi CLI v3.243.0 或更高版本,并且已执行 pulumi login。
pulumi api GetGraphQuerySchema --output=markdown
这会返回一份独立完整的指南,介绍如何构造选择器 — 包括词汇、边类型、引擎上限、示例、分页、完整性规则、会拒绝查询的限制,以及那些会让你信心十足地得出错误答案而不是报错的陷阱。该指南由响应你查询的部署提供,因此它就是契约,并会随架构版本变化。本技能会引导你获取这份指南,然后到此为止;以下所有内容均以它为准。每次会话都要重新获取 — 之前记住的指南可能描述的是此部署已不再提供的架构。
此操作不需要指定组织;一个架构适用于登录账号可以访问的所有组织。对其使用 --output=json 会返回相同的契约,只是以机器可读的形式呈现,便于通过程序读取 limits 或 fieldValues;但构造选择器时应以 Markdown 为准。
完整阅读 — 绝不要使用 head、tail 或字节数上限截断内容。 入门指南若被截断,就可能导致选择器格式错误和查询遭拒。
如果此调用失败
你还没有入门指南,因此请在此处处理,而不是去其他地方查找:
| 响应 | 含义 |
|---|---|
401 Unauthorized | 尚未执行 pulumi login,或令牌已过期 |
404 Not Found,无详细信息 | 路径错误,或部署没有此端点 |
503 Service Unavailable | 暂时性问题 — 请重试 |
授权限制按组织生效,因此不会出现在此次调用中 — 它们会在步骤 2 中显现;届时你已经有了入门指南中的“拒绝请求时”表格。如果 pulumi api 完全不认识 GetGraphQuerySchema,这不是权限限制:运行 pulumi api list --refresh-spec 刷新缓存的规范,然后重试获取。
步骤 2:查询
pulumi api GraphQuery -F orgName=<org> --input selector.json
请求体是 JSON 选择器,而不是查询文本。请根据刚读过的入门指南构造它,不要依赖记忆,也不要使用你记得的其他会话中的语法。
明确指定组织。如果省略 -F orgName,会从选定的 stack 或默认组织中解析;默认组织通常是没有相应权限的个人账号;pulumi whoami -v 会列出登录账号可以访问的所有组织。此处的拒绝响应会指出具体限制 — 入门指南中的“拒绝请求时”表格会说明哪些值得重试,哪些应报告给用户。
第 3 步:回答前应用入门指南中的完整性规则
每个响应都包含保真度信号——目前包括 meta.resultMode、
meta.visibility 和 pageInfo.continuationToken;入门指南列出了权威信号集合。请阅读并遵循其中针对这些信号的规则;每种信号的处理方式都不同,在这里沿用过时的转述还不如不提。
最重要的是:要声称结果完整,所有信号都必须正常。 影响分析、“没有任何依赖项”、详尽的清理列表、分组总数——如果结果被截断、遍历被裁减或分页未取尽,这些结论都站不住脚。如果无法做到这一点,请说明答案实际涵盖的范围。
图的范围
资源、堆栈及它们之间的关系,范围受限于调用者可见的堆栈和账户。入门指南中的“目前无法回答的问题”一节界定了当前边界——下结论说某个问题无法回答前,请先查看该节;对于其中的能力缺口,请改用其他 API,而不要试图用图查询来近似实现。
有一项边界值得提前了解,因为它决定了该使用哪个 API:图中每种节点类型只返回架构声明的字段子集,而非完整的资源属性集合。入门指南列出了每种节点类型可用于匹配的字段以及可返回的字段;如果问题需要属性值本身,则应通过 Resource Search 获取。
人类可读的参考资料: Context API 概览和 查询指南。