Skip to main content
Requirement 描述对象对目标环境的外部依赖。它只能嵌入 Skill.spec.requirements[]Profile.spec.requirements[]Adapter.spec.requirements[],不是顶层 kind。 Flow stage 与 Lifecycle Handler 的 requires 不是 Requirement:前者声明 capability 与 binding role,本页的 requirements[] 声明文件、可执行程序、MCP、凭证等环境依赖。

字段

requirements 数组本身没有 minItemsuniqueItems。schema 因而允许空数组和重复 id;当前 Preflight 会把可达对象中的重复 id 记录为失败检查。

Requirement 类型

合法示例

Requirement 必须放在所属对象内。以下是完整合法的 Skill:
对应 source example:examples/skills/spec-outline-writer.yaml

当前 Preflight 行为

Preflight 分开记录 resolutionreadiness:前者回答目标是否明确、引用是否解析,后者回答当前环境是否可用。 MCP live 检查会初始化 MCP session,并对 tool/resource 分别调用 tools/listresources/list,最多读取 20 页,每次响应体上限为 1 MiB。它不会调用 MCP tool,也不会读取 MCP resource 内容;报告不保留 URL credential、query、fragment 或远端 error text。 Preflight 只收集当前 Run 可达的依赖:有效 Profile、被 stage 或 handler binding 选中的 Skill/Adapter,以及 Skill 关联 Adapter、Adapter 关联 Trust、Profile/Trust 关联 Policy。它不会扫描 workspace 中每个未使用对象的 Requirement。 origin: inferredreviewStatus: needsReview 的依赖,其 resolution 和 readiness 都是 Unknownoptional: true 的失败或未知不阻断 gate;required 依赖的处理见 Preflight

验证边界

  • schema 检查字段形状、条件必填、枚举、正则和 freshness。
  • huoban validate 不检查本地路径、PATH、环境变量或网络。
  • Preflight 不把依赖可用解释为 Policy 允许或 Trust 授权。
  • 动态检查产生的 validUntil 只在 readiness 不是 Unknown 且存在 freshness 时生成。
  • 任何带 source.path 的 Adapter source 必须有路径完全相同且包含 read 的 required localPath Requirement。
  • mcpTool source 必须有 server URL 与 tool name 完全相同的 required mcpTool Requirement。

相邻概念边界

常见错误

  • 写成顶层 kind: Requirement
  • Flow.spec.stages[].requires 写成 requirements[] 的目标结构。
  • contextSource 同时写 pathurl;该目标使用 oneOf,只能选一个。
  • 给 URL、MCP、credential 或 runner capability 动态依赖漏写 freshness
  • 认为 optional 会让 schema 忽略字段错误;它只影响 Preflight gate。
  • 认为 executable.version 已被实际探测;当前 CLI 明确返回 Unknown