前言¶
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>
必須覈對的三類資源爲:
- JSON Schema —
https://api.expo.dev/v2/workflows/schema(編寫前必須拉取;job 類型、觸發器、runner、枚舉值的結構真源;EAS CLI 仍是最終校驗方) - Syntax Documentation — Expo 倉庫中的
syntax.mdx(YAML 概覽、示例、表達式與上下文) - 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 時:
- 拉取 Schema,確認當前 job 類型與參數
- 覈對各 job 類型的必填字段
- 確認
needs、after引用的 job 存在 - 檢查表達式是否引用合法上下文與輸出
- 確認
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