Skip to content
Agentmart
Submit a tool

validate-expanso-pipeline

Validate an Expanso pipeline job spec with both expanso-edge validate and expanso-cli job validate --offline, explain what each result does and does not…

Skill by expanso-io

IndexedMIT
Write a review

Chalk Labs

Need help deploying validate-expanso-pipeline?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/expanso-io-validate-expanso-pipeline

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Validate an Expanso pipeline job spec with both expanso-edge validate and expanso-cli job validate --offline, explain what each result does and does not prove, and fix the errors they report. Use when the user asks to validate, lint, check or fix an Expanso pipeline YAML, sees a VALIDATION_ERROR or bloblang syntax error from expanso-edge, or asks whether a pipeline is ready to deploy.

Use cases: documents, devops, data

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/validate-expanso-pipeline

What's inside

Skill name
validate-expanso-pipeline
Description
Validate an Expanso pipeline job spec with both expanso-edge validate and expanso-cli job validate --offline, explain what each result does and does not prove, and fix the errors they report. Use when the user asks to validate, lint, check or fix an Expanso pipeline YAML, sees a VALIDATION_ERROR or bloblang syntax error from expanso-edge, or asks whether a pipeline is ready to deploy.
License
MIT
Instructions
82 lines in SKILL.md · view on GitHub

Files (1)

  • SKILL.md

SKILL.md (first lines)

# Validate an Expanso pipeline

Expanso has **two validators, and they answer different questions**. Run both.
Many files pass the first and fail the second.

| Command | Question it answers |
|---|---|
| `expanso-cli job validate FILE --offline` | Is this a well-formed **job spec**? Does not check component configuration. |
| `expanso-edge validate FILE` | Is the inner **pipeline config** valid: known components, known fields, value types, Bloblang syntax and arity? |

Passing the first alone proves almost nothing about whether the pipeline will
build. Neither proves it will run: that needs a deploy and an execution check
(the `deploy-expanso-job` skill).

## Step 1: check the tools

```bash
expanso-edge version
expanso-cli version
```

Both use a `version` **subcommand**; there is no `--version` flag. If either is
missing, the install commands are in the `deploy-expanso-job` skill. Without
them you cannot validate: say so plainly and do not describe the file as valid.
In chat without a shell, review the file against the build skill's references
instead and label the result "reviewed, not validated".

## Step 2: run both

```bash
expanso-edge validate pipeline.yaml
expanso-cli job validate pipeline.yaml --offline
```

`expanso-edge validate` takes several files, or `-` to read stdin. Neither
command needs a control plane connection.

## Step 3: fix what `expanso-edge validate` reports

Errors name the line and the config path, for example
`(line 44) bloblang syntax error in pipeline.processors.0.mapping`. Fix them one
at a time and re-run. The common ones:

| Error text contains | Fix |
|---|---|
| ``Statement keyword `let` is not allowed inside an expression-position`` (or `meta`) | Move the `let`/`meta` statement above the `if`/`match` expression. |
| `filter() takes 1 argument(s)`, same for `map_each`, `or`, `merge`, `re_find_all` | Pass exactly one argument; `filter`/`map_each` take a lambda `x -> ...`. |
| `Dynamic array indexing requires .index() method` | `this.items.index(0)` instead of `this.items[0]`. |
| `Unrecognised method 'ts_add'` (or any `Unrecognised method`) | The method does not exist at this version. Find a supported one in the Bloblang docs; don't guess another name. |
| `parsing time "2h" as "2006-01-02T15:04:05..."` | A duration string was used where a timestamp is expected. |
| `Unknown field 'X' in <component>` | Remove the field or use the name the component's docs page gives. Seen in this catalog: `max_retries`, `backoff`, `compression`, `storage_class`, `time_partitioning`, `processors` in `broker`, `catch` in a `switch` case. |
| `Unknown component or field 'X'` | Misspelled or unsupported component. |
| `[output.switch] Expected object, got array` | The output `switch` is an object with `cases:`; only the processor `switch` is a bare list. |
| `Missing required field 'tools'` on `openai_chat_completion` | Add `tools: []`. |
| a numeric field given a string, often `${VAR}` | Numeric fields such as a rate-limit `count` or `batching.count` need a literal number. |

The `build-expanso-pipeline` skill's Bloblang and component reference files
have working forms of each construct.

## Step 4: check what neither validator checks

Read the file for these, which pass validation and still fail or misbehave:

- `stdin` input in a job that will run on a Cloud-scheduled node: nothing can
  reach it. Replace the input.
- `codec: json_object` on `stdout`: rejected at runtime in testing. Use
  `stdout: {}`.
- A bounded input without `restart_policy: never`: a failing job restarts
  forever.
- A hyphen in a `selector.match_labels` key: the pipeline failed to build on
  the node.
- A secret written into the file instead of a node environment variable.
- Paths, ports and env vars that exist on the user's laptop but not on the
  node.

## Report

State both results separately, with the tool version, for example: "`expanso-edge
validate` v2.1.21: pass. `expanso-cli job validate --offline`: pass. Not yet
executed." Never summarize a job-spec-only pass as "valid".

From expanso-io/skills.expanso.io, MIT.

More from expanso-io/skills.expanso.io

Signals

Stars
0
Forks
1
Open issues
0
Last commit (this folder)
Sep 26, 2026 (1 month ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
Website
expanso.io
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from expanso-io

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get validate-expanso-pipeline running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying validate-expanso-pipeline?

CallGet help
Cite this page

validate-expanso-pipeline skill. Agent Mart. https://agentmart.dev/skills/expanso-io-validate-expanso-pipeline (last updated 2026-10-24)