Agent Skills

The free SKILL.md library that teaches coding agents to use Spatial9, how to install it and what each skill does.

Agent Skills are a free library of SKILL.md files that teach coding agents and assistants how to use Spatial9 correctly. Each skill is a short, plain-text procedure: which MCP tools to call, in what order, with which arguments, and which rules to follow. With the skills installed, you can ask an agent in plain words to make a song immersive, split stems or convert Dolby Atmos to Eclipsa Audio, and it follows the same tested sequence every time.

This page describes the format, how to install the library, every skill in it, the example integrations that ship alongside it and how to write a skill of your own. The library is MIT licensed. Browse it at /agents/skills or download everything as a zip from /agents/skills?download=zip.

Anatomy of a SKILL.md file: frontmatter with name and description, then steps and rules
A skill is frontmatter the agent reads first, followed by the steps it reads only when a request matches.

Supported agents

The skills work in any agent that reads SKILL.md files, including Claude, Claude Code, OpenAI Codex, GitHub Copilot, VS Code, Cursor and Gemini CLI. Every skill relies on the Spatial9 MCP server, so the agent also needs an MCP connection. See MCP server reference.

The SKILL.md format

Anthropic released the SKILL.md format as an open standard in December 2025, documented at https://agentskills.io. A skill is a folder containing a SKILL.md file. The file starts with YAML frontmatter followed by Markdown instructions.

PartPurpose
nameUnique identifier, for example spatial9-immersive-mix
descriptionWhat the skill does and when to use it
BodyWhen to use, numbered steps and rules

Agents use progressive disclosure. They read only the name and description of every installed skill, and load the full steps only when a request matches. This keeps the context small even with many skills installed.

---
name: spatial9-immersive-mix
description: Turn a stereo song, a set of stems or a video into immersive Eclipsa Audio (IAMF) with a binaural headphone version, using the Spatial9 MCP server. Use when the user asks to make a track immersive, 3D, spatial, 360 or "Atmos-like", or to prepare music for YouTube spatial audio.
---

Install

  1. Connect the Spatial9 MCP server, using examples/setup/claude-code.sh for Claude Code or examples/setup/mcp.json for clients that read an MCP configuration file.
  2. Copy the skill folders into your agent's skills folder: .claude/skills/ for a project or ~/.claude/skills/ for your user. Other agents use their own skills folder, and the Claude apps accept an uploaded zipped skill.
  3. Ask in plain words, for example "make this song immersive" or "split this track into stems".
claude mcp add --transport http spatial9 https://spatial9.ai/mcp --header "Authorization: Bearer $SPATIAL9_KEY"
mkdir -p .claude/skills
cp -r spatial9-* .claude/skills/

Create the key at https://spatial9.ai/connect. To try the skills without an account, connect the guest server at https://spatial9.ai/mcp/free instead.

Skill catalog

The repository contains seven skills.

SkillFreeTimeOutput
spatial9-immersive-mixUses a project10-20 minEclipsa Audio, MP4, binaural WAV
spatial9-stem-splitUses a project4-8 minStem WAVs and ZIP
spatial9-atmos-to-eclipsaUses a projectDepends on lengthEclipsa Audio and MP4
spatial9-chorus-previewFreeUnder 2 min30-second binaural WAV
spatial9-remix-by-voicePreview free, render uses a project10-20 minNew mix version
spatial9-release-publisherFreeMinutesYouTube link and 9:16 MP4
spatial9-enterprise-catalogUses a project per track10-20 min per trackCopies of the binaural, IAMF and YouTube files in governed storage

spatial9-immersive-mix

Turns a stereo song, a set of stems or a video into Eclipsa Audio with a binaural headphone version.

  1. Offer the free preview_chorus first if the user has not heard Spatial9 before.
  2. Get the source: a public https link as source_url, or create_upload_link, a PUT to direct_upload_url, then upload_id.
  3. Start create_spatial_audio with media_type, title, optional style and include_binaural: true, or create_from_stems with 2 to 16 stems.
  4. Always send an idempotency_key so a retry never starts a second render.
  5. Poll get_job_status every 30-60 seconds and report stage and progress.
  6. Call get_downloads and present files by label, leading with the binaural WAV and the YouTube MP4.

Rules: one project per render, refunded on failure; 3 renders at once and 20 per 24 hours; never invent links; on isError, relay the message and stop.

spatial9-stem-split

Calls split_stems with title and idempotency_key; the job runs for 4-8 minutes. Downloads are listed as stem:<stem_id> entries plus a stems_package ZIP. Quiet stems can be merged with combine_quiet_stems. Suggested follow-ups are create_from_stems and preview_chorus. The skill only processes music the user owns.

spatial9-atmos-to-eclipsa

Calls convert_dolby_to_eclipsa, optionally with include_video and visual_url or visual_upload_id. ADM BWF keeps its beds and objects. AC-3, E-AC-3 and TrueHD keep speaker channels up to 7.1 only, without the Dolby Atmos height and object layer.

spatial9-chorus-preview

Works on both the account server and the guest server, where each guest has 3 free previews. Calls preview_chorus with title and optional start_sec and seconds, then polls get_clip with the returned clip_id.

spatial9-remix-by-voice

Reads the current mix with get_mix, get_effects and analyze_song, then sends remix_render changes with preview: true first. It can also use find_effects, apply_effects, find_spaces and save_mix_template, and reuse a saved mix with template_id. Rules: keep the lead vocal, kick, snare and bass near the front centre, and tie every movement to a musical moment.

spatial9-release-publisher

  1. Confirm the render is complete with get_job_status.
  2. Publish with publish_to_youtube, which defaults to unlisted.
  3. Poll get_youtube_upload for the video link.
  4. Create a 9:16 clip with create_social_clip and poll get_clip.

Rules: never publish as public without explicit confirmation; at most 5 publishes per 24 hours; YouTube processes spatial audio after the upload finishes.

spatial9-enterprise-catalog

Runs a scheduled catalog pipeline on a data platform.

  • The service key is stored in the platform's secret store.
  • A queue table catalog.renders_queue holds track_id, title, source_url and status='pending'.
  • Each render uses the idempotency key <platform>-<track_id>-<version>.
  • The binaural, iamf and youtube_video downloads are copied to governed storage.
  • job_id, status, stage, file paths and timestamps are written back to the queue.
  • A failed track is retried at most twice.

See Enterprise platforms for platform-specific versions.

Job lifecycle followed by every Spatial9 skill: start, poll status, fetch downloads
Every rendering skill follows the same start, poll and download lifecycle.

Example integrations

The examples folder contains working integrations that follow the same rules as the skills.

FolderContents
setupclaude-code.sh and mcp.json connection files
pythonspatial9_pipeline.py, three workers matching the limit of three renders at once, polling every 45 seconds
nodeAn A2A webhook receiver
n8nHTTP Request nodes, or an AI Agent with the MCP Client Tool
zapierA catch hook and a custom request to /a2a
power-automateA Do until loop that polls job status
github-actionsspatial9.yml, which renders masters when a new WAV lands in masters/, with the key stored as a repository secret
airflowA DAG that uses a pool of 3
enterpriseDatabricks, Snowflake, Vertex AI and Bedrock, plus shared spatial9_mcp.py and spatial9_a2a.py clients
open-sourceMinIO, Kafka, PostgreSQL, FFmpeg, FastAPI and Dagster

n8n

Option A uses HTTP Request nodes with a Header Auth credential and a Switch on $json.result.structuredContent.status. Option B uses an AI Agent node with the MCP Client Tool: set the endpoint, choose the HTTP Streamable transport, use Bearer authentication and pick Selected tools.

Power Automate

A Do until loop with a count of 40 and a timeout of PT1H polls status. The condition reads the status with this expression.

body('HTTP_Check_status')?['result']?['structuredContent']?['status']

Airflow

A pool limits Airflow to three concurrent renders, matching the account limit.

airflow pools set spatial9 3 "Spatial9 render limit"

See Workflow automation for the full flows.

Writing your own skill

Start from templates/SKILL.template.md. The template shows a label-specific skill named acme-label-immersive-release.

---
name: acme-label-immersive-release
description: Prepare an ACME Records release in immersive audio with Spatial9. Use when someone at ACME asks to make a single or album immersive, or to prepare a YouTube spatial audio upload.
---

Requires the Spatial9 MCP server at https://spatial9.ai/mcp.

## Steps
1. Always start with preview_chorus and share the headphone WAV.
2. After approval, run create_spatial_audio with style "cinema" for ballads
   and "live_concert" for everything else, include_binaural: true,
   and idempotency_key "acme-<ISRC>".
3. Poll get_job_status every 60 seconds and report progress in plain words.
4. Name files "<ARTIST> - <TITLE> (Immersive)" when sharing get_downloads links.

## Rules
- Never publish to YouTube. The ACME release team publishes manually.
- Keep the lead vocal at the front centre.

Follow these guidelines when you write a skill:

  • Name only tools that exist; read them from tools/list or get_capabilities.
  • Write a description that states both what the skill does and when to use it.
  • Always include an idempotency key rule for any step that starts a render.
  • State the polling interval and what to report while waiting.
  • Add rules for anything that spends a project or makes content public.
  • Tell the agent to relay isError messages and stop rather than retry blindly.

Shared rules

Every Spatial9 skill follows the same rules, which also apply to agents that call the tools without a skill:

  • Each render uses one project from the plan and is refunded on failure.
  • Chorus previews and remix previews are free.
  • 3 renders run at once and 20 per 24 hours.
  • Download links come only from get_downloads; never invent them.
  • Anything public or anything that spends a project needs the user's approval.

Next steps

Go deeper on the blog