expo-cicd-workflows
Install this skill
npx skills add expo/skillsWorks across Claude Code, Cursor, Codex, Copilot & Antigravity
The expo-cicd-workflows skill assists developers in managing EAS CI/CD pipelines defined in YAML. Because workflow specifications change frequently, this skill relies on dynamic data retrieval rather than static memory. By interacting with the official JSON schema and syntax documentation, the agent ensures that generated configurations for runners, triggers, and job definitions remain accurate to the current Expo platform. It manages the full lifecycle of `.eas/workflows/*.yml` files, from initial structure generation to deep validation. By using the provided fetch scripts and validation tools, the agent verifies context expressions, job dependencies, and required parameters before finalizing any configuration. This approach prevents common syntax errors and ensures that CI/CD definitions align with the latest runner capabilities and platform constraints.
When to Use This Skill
- β’Setting up a new automated build and submission pipeline for production
- β’Refactoring existing workflow files to accommodate new runner types
- β’Troubleshooting syntax errors in existing .eas/workflows YAML files
- β’Adding dynamic triggers based on git events or manual inputs
How to Invoke This Skill
Example prompts that trigger this skill in Claude Code, Cursor, or Antigravity:
- βCreate a new EAS workflow file for my production build
- βCheck my .eas/workflows/build.yml for schema errors
- βHow do I add a dependency between jobs in my Expo workflow
- βGenerate a workflow that triggers on pull requests
- βValidate my EAS workflow syntax against the latest schema
Pro Tips
- π‘Always fetch the latest EAS workflow JSON schema (https://api.expo.dev/v2/workflows/schema) using the provided script before attempting to validate or generate new YAML files, as it's the definitive source of truth.
- π‘Leverage the skill's ability to reference syntax and pre-packaged job documentation to avoid common mistakes and implement best practices directly in your workflow configurations.
- π‘For complex workflows, break down the configuration into smaller, manageable jobs and test them incrementally before combining them, using the skill for step-by-step validation and refinement.
What this skill does
- β’Generates valid YAML workflow configurations for EAS
- β’Validates workflow syntax against the official Expo JSON schema
- β’Resolves dynamic expressions like github.* or inputs.* contexts
- β’Configures complex job chains using needs and after dependencies
- β’Retrieves current platform documentation using authenticated fetch scripts
When not to use it
- βManaging general Expo project source code outside of CI/CD configuration
- βRunning local build tasks that do not involve the EAS cloud environment
Example workflow
- Fetch the latest JSON schema via the provided script
- Draft the YAML structure with required triggers and job definitions
- Insert steps and configure cross-job dependencies using needs
- Run the validation script against the generated YAML file
- Review any output errors and perform necessary schema-compliant adjustments
Prerequisites
- βAn existing Expo project initialized with EAS
- βNode.js installed locally for the fetch and validation scripts
Pitfalls & limitations
- !Relying on outdated hardcoded documentation instead of fetching the live schema
- !Forgetting to validate the YAML after manual edits to the .eas/workflows directory
- !Referencing non-existent workflow contexts or invalid job triggers
FAQ
How it compares
Unlike generic YAML generation, this skill actively fetches the platform's live JSON schema to ensure compatibility with current EAS runner capabilities and constraint rules.
π Full skill instructions β original source: expo/skills
Help developers write and edit EAS CI/CD workflow YAML files.
## Reference Documentation
Fetch these resources before generating or validating workflow files. Use the fetch script (implemented using Node.js) in this skill's
scripts/ directory; it caches responses using ETags for efficiency:# Fetch resources
node {baseDir}/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 validation
- 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).## 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 runsConsult 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 workflow4. 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 against the schema:
# Install dependencies if missing
[ -d "{baseDir}/scripts/node_modules" ] || npm install --prefix {baseDir}/scripts
node {baseDir}/scripts/validate.js <workflow.yml> [workflow2.yml ...]The validator fetches the latest schema and checks the YAML structure. Fix any reported errors before considering the workflow complete.
## 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.
How to Use This Skill Unit
Option A: Project-Specific (Recommended)
- Click "Download" above
- In your project, create the directory:
.agent/skills/expo-cicd-workflows/ - Save the file as
SKILL.md - The agent will automatically discover the skill based on its description.
Option B: Global Installation (All Agents)
Save the file to these locations to make it available across all projects:
- Claude Code:
~/.claude/skills/expo/skills/expo-cicd-workflows/SKILL.md - Cursor:
~/.cursor/skills/expo/skills/expo-cicd-workflows/SKILL.md - Antigravity:
~/.gemini/antigravity/skills/expo/skills/expo-cicd-workflows/SKILL.md
π Install with CLI:npx skills add expo/skills
