用途:为 Elasticstack Terraform Provider 中全新的资源(resource)或数据源(data source)收集初始需求,并物化为 OpenSpec 提案,即 openspec/changes/<name>/ 下的变更,包含 proposal.md、design.md、tasks.md 与 delta 能力规格。信息来源包括仓库 API 客户端代码、Elastic API 文档(可用时经 Elastic docs MCP 服务器,否则用网页抓取/搜索),以及代码和文档无法回答时由用户输入的决定。
主要能力与流程:一、解析 API 面:Elasticsearch 封装位于 internal/clients/elasticsearch/,调用 apiClient.GetESClient() 与 go-elasticsearch 客户端,共享模型在 internal/models/;Kibana 与 Fleet 使用 generated/kbapi/kibana.gen.go 及 internal/clients/kibanaoapi/、internal/clients/fleet/ 封装。需识别 create/update、read、delete、请求响应结构、标识符及版本或特性标志。二、查阅 Elastic API 文档:优先使用 Elastic docs MCP 服务器,否则回退到网页抓取或搜索;提取端点、必填与可选字段、校验规则、版本要求、错误语义及创建/更新是否合并。三、创建 OpenSpec 提案:不要直接写 openspec/specs/<capability>/spec.md;先运行 openspec new change "<name>",再按 openspec-propose 步骤用 openspec status --change "<name>" --json 与 openspec instructions <artifact-id> --change "<name>" --json 按依赖顺序生成 apply-ready 工件,按 applyRequires 循环至完成。四、面向用户的访谈:收集 schema 歧义、id 格式、导入支持、生命周期、版本支持等问题,优先用 AskQuestion 工具,回填 delta 规格并替换 TBD;用户推迟的决定保留 TBD 并加“Open point”说明。五、最终化:确保每条需求来自 API/客户端/文档或用户回答,移除臆测内容,运行 openspec status --change "<name>" 确认可实施。
输出为完整的 OpenSpec 变更目录,含全部 applyRequires 工件与 delta 规格,而非仅 openspec/specs/ 下的独立文件;需求须可追溯到 API 文档链接或用户决定。限制:需 OpenSpec CLI(make setup 安装);文档获取依赖 MCP 服务器或网页;不确定信息须标注 TBD,不得编造行为;具体分类、平台与收费信息暂未提供。