GitHub Actions workflow (subset)
- Pack id
github-actions-workflow-subset- Version
- 0.1.0 — 2026-10-30
- Dialect
- JSON Schema 2020-12
- License
- MIT — self-authored by ValidateYAML (no third-party schema text copied)
- Provenance
- Self-authored from public GitHub Actions workflow-syntax documentation, Oct 2026. Not the SchemaStore schema.
- Checks
- Top-level workflow keys (name, on, permissions, env, concurrency, jobs); job runs-on/needs/if/steps/strategy/timeout; steps must use exactly one of uses/run; action references must be owner/repo@ref, ./path or docker://.
- Does not check
- Event filter details (branches, paths, types) beyond basic shapes
- Expression syntax inside ${{ }}
- Reusable-workflow inputs/secrets types
- Whether an action, runner label or secret exists
- GitHub-side acceptance of the workflow
- Size
- 6,906 characters, bundled with the site (no download, works offline)
View schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://validateyaml.com/packs/github-actions-workflow-subset/0.1.0",
"title": "GitHub Actions workflow (ValidateYAML subset)",
"type": "object",
"required": [
"on",
"jobs"
],
"properties": {
"name": {
"type": "string"
},
"run-name": {
"type": "string"
},
"on": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
},
"minItems": 1
},
{
"type": "object",
"minProperties": 1
}
]
},
"permissions": {
"anyOf": [
{
"enum": [
"read-all",
"write-all"
]
},
{
"type": "object",
"additionalProperties": {
"enum": [
"read",
"write",
"none"
]
}
}
]
},
"env": {
"$ref": "#/$defs/env"
},
"defaults": {
"type": "object"
},
"concurrency": {
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"required": [
"group"
],
"properties": {
"group": {
"type": "string"
},
"cancel-in-progress": {
"type": [
"boolean",
"string"
]
}
}
}
]
},
"jobs": {
"type": "object",
"minProperties": 1,
"propertyNames": {
"pattern": "^[A-Za-z_][A-Za-z0-9_-]*$"
},
"additionalProperties": {
"$ref": "#/$defs/job"
}
}
},
"additionalProperties": false,
"$defs": {
"env": {
"type": "object",
"additionalProperties": {
"type": [
"string",
"number",
"boolean"
]
}
},
"job": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"runs-on": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
},
"minItems": 1
},
{
"type": "object"
}
]
},
"needs": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
},
"uniqueItems": true
}
]
},
"if": {
"type": [
"string",
"boolean"
]
},
"permissions": {
"type": [
"string",
"object"
]
},
"environment": {
"type": [
"string",
"object"
]
},
"env": {
"$ref": "#/$defs/env"
},
"strategy": {
"type": "object",
"properties": {
"matrix": {
"type": [
"object",
"string"
]
},
"fail-fast": {
"type": [
"boolean",
"string"
]
},
"max-parallel": {
"type": [
"integer",
"string"
]
}
}
},
"timeout-minutes": {
"type": [
"number",
"string"
]
},
"continue-on-error": {
"type": [
"boolean",
"string"
]
},
"container": {
"type": [
"string",
"object"
]
},
"services": {
"type": "object"
},
"outputs": {
"type": "object"
},
"defaults": {
"type": "object"
},
"concurrency": {
"type": [
"string",
"object"
]
},
"uses": {
"type": "string"
},
"with": {
"type": "object"
},
"secrets": {
"type": [
"string",
"object"
]
},
"steps": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[A-Za-z_][A-Za-z0-9_-]*$"
},
"name": {
"type": "string"
},
"if": {
"type": [
"string",
"boolean"
]
},
"uses": {
"type": "string",
"pattern": "^(\\./|docker://|[^/@\\s]+/[^@\\s]+@[^\\s]+$)"
},
"run": {
"type": "string",
"minLength": 1
},
"shell": {
"type": "string"
},
"with": {
"type": "object",
"additionalProperties": {
"type": [
"string",
"number",
"boolean"
]
}
},
"env": {
"$ref": "#/$defs/env"
},
"working-directory": {
"type": "string"
},
"continue-on-error": {
"type": [
"boolean",
"string"
]
},
"timeout-minutes": {
"type": [
"number",
"string"
]
}
},
"oneOf": [
{
"required": [
"uses"
],
"not": {
"required": [
"run"
]
}
},
{
"required": [
"run"
],
"not": {
"required": [
"uses"
]
}
}
],
"additionalProperties": false
}
}
},
"anyOf": [
{
"required": [
"runs-on",
"steps"
]
},
{
"required": [
"uses"
]
}
],
"additionalProperties": false
}
}
}