Requirement 描述对象对目标环境的外部依赖。它只能嵌入 Skill.spec.requirements[]、Profile.spec.requirements[] 或 Adapter.spec.requirements[],不是顶层 kind。
Flow stage 与 Lifecycle Handler 的 requires 不是 Requirement:前者声明 capability 与 binding role,本页的 requirements[] 声明文件、可执行程序、MCP、凭证等环境依赖。
字段
requirements 数组本身没有 minItems 或 uniqueItems。schema 因而允许空数组和重复 id;当前 Preflight 会把可达对象中的重复 id 记录为失败检查。
Requirement 类型
合法示例
Requirement 必须放在所属对象内。以下是完整合法的 Skill:examples/skills/spec-outline-writer.yaml。
当前 Preflight 行为
Preflight 分开记录resolution 与 readiness:前者回答目标是否明确、引用是否解析,后者回答当前环境是否可用。
MCP live 检查会初始化 MCP session,并对 tool/resource 分别调用
tools/list 或 resources/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: inferred 且 reviewStatus: needsReview 的依赖,其 resolution 和 readiness 都是 Unknown。optional: true 的失败或未知不阻断 gate;required 依赖的处理见 Preflight。
验证边界
- schema 检查字段形状、条件必填、枚举、正则和 freshness。
huoban validate不检查本地路径、PATH、环境变量或网络。- Preflight 不把依赖可用解释为 Policy 允许或 Trust 授权。
- 动态检查产生的
validUntil只在 readiness 不是Unknown且存在 freshness 时生成。 - 任何带
source.path的 Adapter source 必须有路径完全相同且包含read的 requiredlocalPathRequirement。 mcpToolsource 必须有 server URL 与 tool name 完全相同的 requiredmcpToolRequirement。
相邻概念边界
常见错误
- 写成顶层
kind: Requirement。 - 把
Flow.spec.stages[].requires写成requirements[]的目标结构。 - 给
contextSource同时写path和url;该目标使用oneOf,只能选一个。 - 给 URL、MCP、credential 或 runner capability 动态依赖漏写
freshness。 - 认为
optional会让 schema 忽略字段错误;它只影响 Preflight gate。 - 认为
executable.version已被实际探测;当前 CLI 明确返回Unknown。