eas-workflows:让 Agent 按规范编写 EAS Workflow YAML

前言

Expo 项目要上 EAS Build、提审商店或做 PR 预览,往往要在仓库里维护 .eas/workflows/ 下的 YAML。字段会随 EAS 迭代,触发器、预置 Job、表达式上下文和 eas.json 里的 build profile 还要能对上。单靠模型记忆很容易写出「看起来像 GitHub Actions、但过不了 EAS 校验」的配置。

下面介绍 Expo 官方维护的 Agent Skill eas-workflows:在用户谈到 Expo/EAS 的 CI/CD、workflow、构建流水线或部署自动化时,引导 Agent 先拉取官方 Schema 与文档,再生成或修改 workflow,并用 EAS CLI 做最终校验。

这是什么

eas-workflows 是 Expo Skills 集合里「Services & paid distribution」分组下的一个 Skill,源码路径为 plugins/expo/skills/eas-workflows。当前 Skill 元数据版本为 1.0.0,采用 MIT License。

Skill 的 description 写明:帮助理解与编写 Expo 项目的 EAS workflow YAML;适用于用户询问 CI/CD、提到 .eas/workflows/、或需要 EAS 构建流水线与部署自动化帮助的场景。Expo 文档、EAS CLI 仍是权威来源;Skill 负责让 Agent 按同一套流程去查资料、写文件、跑校验。

Skill 声明允许使用的工具包括:Read、Write、Bash(node:*)、Bash(npx *eas-cli@*),与「用 Node 拉文档 + 用 EAS CLI 验证」的工作方式一致。

核心功能

按需拉取三类参考资源

生成或修改 workflow、回答语法问题时,Skill 要求先定位本 Skill 目录,再用其 scripts/ 下的 Node 脚本拉取并缓存文档(通过 ETag 减少重复请求):

node <skill-dir>/scripts/fetch.js <url>

必须核对的三类资源为:

  1. JSON Schema — https://api.expo.dev/v2/workflows/schema(编写前必须拉取;job 类型、触发器、runner、枚举值的结构真源;EAS CLI 仍是最终校验方)
  2. Syntax Documentation — Expo 仓库中的 syntax.mdx(YAML 概览、示例、表达式与上下文)
  3. Pre-packaged Jobs — Expo 仓库中的 pre-packaged-jobs.mdx(预置 Job 类型、参数与输出)

Skill 明确说明:不要依赖记忆里的字段取值,这些资源会持续更新。

Workflow 文件约定与顶层结构

Workflow 放在 .eas/workflows/*.yml 或 .yaml,单文件不超过 16 KiB。

顶层键包括:

  • name — 展示名称
  • on — 触发器(至少一种)
  • jobs — Job 定义(必填)
  • defaults — 各 Job 共享默认
  • concurrency — 并行运行控制

完整字段以 Schema 为准。

表达式上下文

动态值使用 ${{ }}。Schema 中定义的上下文包括 github.*、inputs.*、needs.*、jobs.*、steps.*、workflow.* 等。

生成与编辑时的检查清单

Skill 要求 Agent 在产出 YAML 时:

  1. 拉取 Schema,确认当前 job 类型与参数
  2. 核对各 job 类型的必填字段
  3. 确认 needs、after 引用的 job 存在
  4. 检查表达式是否引用合法上下文与输出
  5. 确认 if 条件符合 Schema 长度等约束

用 EAS CLI 校验(不可替代)

改完 workflow 后,须在 Expo 项目根目录对每个变更文件单独执行:

npx -y eas-cli@latest workflow:validate .eas/workflows/<workflow.yml> --non-interactive

需要已登录的 EAS CLI 且项目已 link。相比仅做 Schema 校验,该命令还会对照项目 eas.json 的 build profile,并做服务端校验。须修到输出 Workflow configuration YAML is valid.;Skill 要求不要用本地 YAML 或 JSON Schema 校验替代此命令。

回答问题时的原则

用户问 job 类型、触发器、runner 等可选值时,应从 Schema 推导答案,而非凭旧知识回答。

安装与启用

Expo Skills 面向 Cursor、OpenCode、GitHub Copilot 等 Agent 时,推荐用 skills CLI。在项目根目录安装全部 Expo Skill(包含 eas-workflows):

npx skills@latest add expo/skills --skill '*'

CLI 会询问安装目标;若只面向某一 Agent,可加 --agent <agent>。安装后重启或刷新 Agent 会话,以便发现 SKILL.md。

Claude Code 与 Codex 可通过各自官方插件市场安装 expo 插件(内含 Skills 与 MCP 配置),与 Cursor 路径不同;详见 expo/skills 的 Installation 小节。

更新已安装的 Skill:

npx skills@latest update

典型用法

安装并刷新会话后,可用自然语言描述 EAS CI/CD 需求。Expo 官方示例提示包括:

  • 「Create an EAS workflow that builds previews on pull requests.」

Agent 会根据任务与 Skill 描述选中 eas-workflows,按上文流程拉 Schema、写 .eas/workflows/ 下的文件,再建议或执行 workflow:validate。

若发现 Skill 文档有误或过时,可提交反馈(需具体、可执行):

npx --yes submit-expo-feedback@latest --category skills --subject "eas-workflows" "<actionable feedback>"

适用场景与注意

适合谁

  • 使用 Expo / EAS,需要在仓库内维护 workflow YAML 的团队
  • 希望 Coding Agent 写 pipeline 时遵循当前 Schema,并走 EAS CLI 校验闭环的开发者

成本与账号

Skill 开篇注明:EAS Workflows 运行在 Expo Application Services 上,为付费产品(有免费额度限制);每个 job 消耗套餐内的 build/compute 分钟;涉及构建或提交的 job 还需要 Apple Developer、Google Play 等账号。触发运行前应阅读 expo.dev/pricing。

与 MCP 的关系

Expo MCP server 可让 Agent 触发并监控 EAS build 与 workflow 等;Skills 教的是「怎么做对」,MCP 提供的是「在环境里执行」。Claude Code / Codex 装官方插件时会一并配置 MCP;其他 Agent 可按文档单独接入。

局限

  • 校验命令依赖登录与已 link 的项目,无 EAS 环境时 Agent 只能做到 Schema/文档层面的生成,无法替代服务端校验
  • Workflow 单文件 16 KiB 上限需在拆分多文件或精简 job 时自行规划

结尾

移动端的 CI/CD YAML 字段多、与 eas.json 耦合紧,让 Agent 凭训练数据「猜」配置成本高。eas-workflows 把「拉 Schema → 对照文档写 .eas/workflows/ → eas-cli workflow:validate」固定成流程,与 Expo 官方工具链对齐。

官方 Skill 地址:github.com/expo/skills/tree/main/plugins/expo/skills/eas-workflows

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜