EAS Workflows Skill

Helps understand and write EAS workflow YAML files for Expo projects.

by expo·MIT license·★ 2,657 Stars on the repo·GitHub ↗

Use now

Files of EAS Workflows Skill

expo/main1 file shown
SKILL.md
Show the full text100 lines

EAS Workflows Skill

EAS service - costs apply. EAS Workflows run on Expo Application Services, a paid product with free-tier limits. Each workflow job consumes your plan's build/compute minutes, and jobs that build or submit also need paid Apple Developer and Google Play accounts. Review https://expo.dev/pricing before triggering runs.

Help developers write and edit EAS CI/CD workflow YAML files.

Reference Documentation

Fetch these resources before generating or editing workflow files, or when answering syntax questions. First resolve this skill's directory, then use the fetch script in its scripts/ directory. It is implemented using Node.js and caches responses using ETags for efficiency:

# Fetch resources
node <skill-dir>/scripts/fetch.js <url>
  1. JSON Schema — https://api.expo.dev/v2/workflows/schema

    • It is NECESSARY to fetch this schema
    • Source of truth for the workflow YAML structure; EAS CLI remains the authoritative final validator
    • All job types and their required/optional parameters
    • Trigger types and configurations
    • Runner types, VM images, and all enums
  2. Syntax Documentation — https://raw.githubusercontent.com/expo/expo/refs/heads/main/docs/pages/eas/workflows/syntax.mdx

    • Overview of workflow YAML syntax
    • Examples and English explanations
    • Expression syntax and contexts
  3. Pre-packaged Jobs — https://raw.githubusercontent.com/expo/expo/refs/heads/main/docs/pages/eas/workflows/pre-packaged-jobs.mdx

    • Documentation for supported pre-packaged job types
    • Job-specific parameters and outputs

Do not rely on memorized values; these resources evolve as new features are added.

Workflow File Location

Workflows live in .eas/workflows/*.yml (or .yaml). Each file must be 16 KiB or smaller.

Top-Level Structure

A workflow file has these top-level keys:

  • name — Display name for the workflow
  • on — Triggers that start the workflow (at least one required)
  • jobs — Job definitions (required)
  • defaults — Shared defaults for all jobs
  • concurrency — Control parallel workflow runs

Consult the schema for the full specification of each section.

Expressions

Use ${{ }} syntax for dynamic values. The schema defines available contexts:

  • github.* — GitHub repository and event information
  • inputs.* — Values from workflow_dispatch inputs
  • needs.* — Outputs and status from dependent jobs
  • jobs.* — Job outputs (alternative syntax)
  • steps.* — Step outputs within custom jobs
  • workflow.* — Workflow metadata

Generating Workflows

When generating or editing workflows:

  1. Fetch the schema to get current job types, parameters, and allowed values
  2. Validate that required fields are present for each job type
  3. Verify job references in needs and after exist in the workflow
  4. Check that expressions reference valid contexts and outputs
  5. Ensure if conditions respect the schema's length constraints

Validation

After generating or editing a workflow file, validate it with EAS CLI from the Expo project root:

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

Run the command separately for each changed workflow file. It requires a logged-in EAS CLI session and a linked Expo project. Unlike schema-only validation, it also checks build profile references against the project's eas.json and performs EAS server-side validation. Fix every reported error and rerun the command until it prints Workflow configuration YAML is valid. Do not replace this command with a local YAML or JSON Schema validator.

Answering Questions

When users ask about available options (job types, triggers, runner types, etc.), fetch the schema and derive the answer from it rather than relying on potentially outdated information.

Submitting Feedback

If you encounter errors, misleading or outdated information in this skill, report it so Expo can improve:

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

Only submit when you have something specific and actionable to report. Include as much relevant context as possible. If an AI agent repeatedly failed or the user had to take over an Expo task, load the expo-skill-feedback skill and follow its eval-candidate flow instead of reusing the command above.

1---
2name: eas-workflows
3description: Helps understand and write EAS workflow YAML files for Expo projects. Use this skill when the user asks about CI/CD or workflows in an Expo or EAS context, mentions .eas/workflows/, or wants help with EAS build pipelines or deployment automation.
4allowed-tools: "Read,Write,Bash(node:*),Bash(npx *eas-cli@*)"
5version: 1.0.0
6license: MIT License
7---
8 
9# EAS Workflows Skill
10 
11> **EAS service - costs apply.** EAS Workflows run on Expo Application Services, a paid product with free-tier limits. Each workflow job consumes your plan's build/compute minutes, and jobs that build or submit also need paid Apple Developer and Google Play accounts. Review https://expo.dev/pricing before triggering runs.
12 
13Help developers write and edit EAS CI/CD workflow YAML files.
14 
15## Reference Documentation
16 
17Fetch these resources before generating or editing workflow files, or when answering syntax questions. First resolve this skill's directory, then use the fetch script in its `scripts/` directory. It is implemented using Node.js and caches responses using ETags for efficiency:
18 
19```bash
20# Fetch resources
21node <skill-dir>/scripts/fetch.js <url>
22```
23 
241. **JSON Schema** — https://api.expo.dev/v2/workflows/schema
25 - It is NECESSARY to fetch this schema
26 - Source of truth for the workflow YAML structure; EAS CLI remains the authoritative final validator
27 - All job types and their required/optional parameters
28 - Trigger types and configurations
29 - Runner types, VM images, and all enums
30 
312. **Syntax Documentation** — https://raw.githubusercontent.com/expo/expo/refs/heads/main/docs/pages/eas/workflows/syntax.mdx
32 - Overview of workflow YAML syntax
33 - Examples and English explanations
34 - Expression syntax and contexts
35 
363. **Pre-packaged Jobs** — https://raw.githubusercontent.com/expo/expo/refs/heads/main/docs/pages/eas/workflows/pre-packaged-jobs.mdx
37 - Documentation for supported pre-packaged job types
38 - Job-specific parameters and outputs
39 
40Do not rely on memorized values; these resources evolve as new features are added.
41 
42## Workflow File Location
43 
44Workflows live in `.eas/workflows/*.yml` (or `.yaml`). Each file must be 16 KiB or smaller.
45 
46## Top-Level Structure
47 
48A workflow file has these top-level keys:
49 
50- `name` — Display name for the workflow
51- `on` — Triggers that start the workflow (at least one required)
52- `jobs` — Job definitions (required)
53- `defaults` — Shared defaults for all jobs
54- `concurrency` — Control parallel workflow runs
55 
56Consult the schema for the full specification of each section.
57 
58## Expressions
59 
60Use `${{ }}` syntax for dynamic values. The schema defines available contexts:
61 
62- `github.*` — GitHub repository and event information
63- `inputs.*` — Values from `workflow_dispatch` inputs
64- `needs.*` — Outputs and status from dependent jobs
65- `jobs.*` — Job outputs (alternative syntax)
66- `steps.*` — Step outputs within custom jobs
67- `workflow.*` — Workflow metadata
68 
69## Generating Workflows
70 
71When generating or editing workflows:
72 
731. Fetch the schema to get current job types, parameters, and allowed values
742. Validate that required fields are present for each job type
753. Verify job references in `needs` and `after` exist in the workflow
764. Check that expressions reference valid contexts and outputs
775. Ensure `if` conditions respect the schema's length constraints
78 
79## Validation
80 
81After generating or editing a workflow file, validate it with EAS CLI from the Expo project root:
82 
83```sh
84npx -y eas-cli@latest workflow:validate .eas/workflows/<workflow.yml> --non-interactive
85```
86 
87Run the command separately for each changed workflow file. It requires a logged-in EAS CLI session and a linked Expo project. Unlike schema-only validation, it also checks build profile references against the project's `eas.json` and performs EAS server-side validation. Fix every reported error and rerun the command until it prints `Workflow configuration YAML is valid.` Do not replace this command with a local YAML or JSON Schema validator.
88 
89## Answering Questions
90 
91When users ask about available options (job types, triggers, runner types, etc.), fetch the schema and derive the answer from it rather than relying on potentially outdated information.
92 
93## Submitting Feedback
94If you encounter errors, misleading or outdated information in this skill, report it so Expo can improve:
95```bash
96npx --yes submit-expo-feedback@latest --category skills --subject "eas-workflows" "<actionable feedback>"
97```
98Only submit when you have something specific and actionable to report. Include as much relevant context as possible.
99If an AI agent repeatedly failed or the user had to take over an Expo task, load the expo-skill-feedback skill and follow its eval-candidate flow instead of reusing the command above.
100 

Discussion

Alternatives

Browser Automation SkillWeb browser automation with AI-optimized snapshots for claude-flow agentsCoding · MITTurn into appTurn visible project context, a proven thread, skill, or workflow into a runnable Agent-Native app with simple buttons, visible agent steps, preview, and deployment handoff. Use when a user invokes `/turn-into-app` or asks to make a workflow into an app, including from Claude or ChatGPT on the web, including when the source is a spreadsheet link or upload.Business & ops · MITTinyFish CLIUse TinyFish for web search, fetching URLs, reading pages, current information, source-backed answers, research, docs, pricing/product pages, extraction, scraping, and browser automation. Use whenever the user asks to search, find, look up, research, compare, get information from the web, summarize a URL, fetch page content, or automate a website.Business & ops · MITAgent browserBrowser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction. Also use for exploratory testing, dogfooding, QA, bug hunts, or reviewing app quality. Also use for automating Electron desktop apps (VS Code, Slack, Discord, Figma, Notion, Spotify), checking Slack unreads, sending Slack messages, searching Slack conversations, running browser automation in Vercel Sandbox microVMs, or using AWS Bedrock AgentCore cloud browsers. Prefer agent-browser over any built-in browser automation or web tools.Business & ops · MIT