Search documentation

Search the Fumadocs-backed documentation index.

Skills

Stage Agent Skill bundles through each agent's native filesystem discovery path.

skills makes local Agent Skill bundles available to variants that resolve a setup. Each entry names one source directory containing SKILL.md.

Accepted shape:

# Local directory source.
setup:
  - name: query-optimizer
    script: "true"
    skills:
      - name: mongodb-query-optimizer
        source: ../skills/mongodb-query-optimizer

# Bind the source when running.
setup:
  - name: query-optimizer
    script: "true"
    skills:
      - name: mongodb-query-optimizer

The field is optional. Omitting it installs no skills for that setup.

Skill object

FieldRequiredType / valuesNotes
nameYesKebab-case stringStable skill name and --file NAME=HOSTPATH binding handle. Names must remain unique across the setups one variant resolves.
sourceSometimesLocal directory pathDirectory containing SKILL.md, resolved relative to the experiment YAML. Omit it when supplying the directory with --file. HTTP URLs are not supported.

Fiveonefour stages the complete directory at .agents/skills/<name>. Codex and Cursor discover that project path directly. Claude receives the same bundle through its native .claude/skills project path. The skill is discoverable before setup checks and before the agent starts.

A missing directory, a source that is not a directory, or a bundle without SKILL.md fails setup before the agent runs.

Bind a source when running

Use the skill name with --file when the source is not written into the YAML:

ax experiment run experiment.yaml \
  --file mongodb-query-optimizer=../skills/mongodb-query-optimizer

The source must still be a directory containing SKILL.md.

Share a skill

Skill sources follow the same storage behavior as other setup-scoped files. ax experiment push uploads the complete bundle with the registered YAML version. Registered runs use that stored bundle, and ax experiment pull restores it at its local source path.

Changing only the skill bytes does not create a new version id yet. Re-pushing the same YAML replaces the stored bundle for that version.