Skill v1.0.0
currentAutomated scan100/100name: sling-platform description: > Sling Platform CLI — sling platform jobs|executions|files|connections, creating and scheduling jobs, activating/deactivating, checking run history, investigating failed executions, and pushing file fixes back to the platform. Also indexes docs for monitors (freshness, schema drift, anomaly detection), agents, and self-hosting. Use when the user is managing or debugging anything hosted on Sling Platform. metadata: version: "1.0.0"
Sling Platform — Working with Hosted Projects
The Sling Platform stores replications, pipelines, jobs, and connections on a server. The CLI authenticates via SLING_PROJECT_TOKEN and exposes the platform through sling platform ... subcommands. Full reference: https://docs.slingdata.io/llms.txt.
Authentication
Every platform command requires SLING_PROJECT_TOKEN. Project tokens are created in the platform UI (Settings → Tokens). Sling never reads the token from an AI agent's environment — only its own.
export SLING_PROJECT_TOKEN=... # requiredsling platform status # smoke test: project info + counts
Subcommand map
| Subcommand | Purpose | |
|---|---|---|
sling init | Scaffold a local project folder (no token needed) | |
sling platform status | Platform project overview (needs a token) | |
sling platform sync [--force] | Two-way file sync (local dir ↔ platform, by mtime) | |
sling platform jobs list | List jobs; --type, --name, --file-name filters | |
sling platform jobs status | Job states + last run; --id/--name substring match | |
sling platform jobs get <id> | Full job JSON (use as template for edits) | |
sling platform jobs save | Create/update a job; -f - (stdin) or -p '<json>' | |
sling platform jobs trigger <id> | Run now; --wait, --streams s1,s2, --full-refresh | |
sling platform jobs activate <id> | Enable a job's schedules | |
sling platform jobs deactivate <id> | Disable a job's schedules | |
sling platform jobs delete <id> | Remove a job (--force skips confirm) | |
sling platform executions list | Run history; --job-id, --job-name, --status, --since, --until, --limit | |
sling platform executions status <id> | Per-task / per-step state of one execution | |
sling platform executions log <id> | Full log; --task <stream/step>, --status error to filter | |
sling platform executions cancel <id> | Cancel a running exec | |
sling platform files list | List YAML files (replications, pipelines, specs) | |
sling platform files get <name> | Print a file | |
sling platform files save <name> | Write a file: -f <path>, -f - (stdin), or -b '<body>' | |
sling platform files delete <name> | Delete a file (--force skips confirm) | |
sling platform files rename | Rename a file | |
sling platform connections list | Project-scoped connections | |
sling platform connections test <name> | Test a project connection |
Most list/get commands accept -o json — prefer it when parsing output.
Two MCP servers
If both the CLI stdio MCP (sling serve mcp) and the Platform HTTP MCP are attached, pick by location:
- Local
env.yaml, local files, local validate → stdio toolsconnection,database,file_system,replication,pipeline,api_spec. - Hosted project (this skill) → platform tools
jobs,executions,files,connections,agents,replications,pipelines,builds,project,monitors,specs.
Same vocabulary as the CLI. jobs trigger in the shell is jobs.trigger over MCP.
| CLI | MCP | |
|---|---|---|
sling platform jobs list/get/save/trigger/activate/deactivate/status | jobs.list / get / save / trigger / activate / deactivate / status | |
sling platform executions list/status/log/cancel | executions.list / status / log / cancel | |
sling platform files list/get/save/delete/rename | files.list / get / save / delete / rename | |
sling platform connections list/test | connections.list / test | |
sling platform status | project.status |
Job payload shape
jobs save sends the JSON straight to the platform's Job model. Key fields:
{"name": "Users daily","type": "replication","file_name": "replications/users.yaml","active": true,"schedules": ["0 4 * * *"],"timezone": "America/New_York","streams": [],"config": {"mode": "incremental", "threads": 2, "retries": 1}}
- Omit `id` to create — the server assigns a
job_...ID. Include the existingidto update. type:replication|pipeline|query|monitor.schedulesis an array of cron expressions (multiple allowed), paired withtimezone.activecontrols whether they fire.streams: []means all streams; list names to restrict.config(optional):mode,threads,retries,timeout,range,variables(list of{NAME: value}maps — setSLING_AGENT_IDto pin an agent).- Free-plan projects cannot save
active: true,threads > 1, or retries — the server rejects with an upgrade message; monitors need the Advanced plan.
Common workflows
Create + schedule a job
cat job.json | sling platform jobs save -f - # no "id" → createssling platform jobs get <returned_id>sling platform jobs trigger <returned_id> --wait # verify it runs
Activate / deactivate a job
sling platform jobs deactivate <id> # pause: schedules stop firingsling platform jobs activate <id> # resume
For any other field change, note `jobs save` is a full replace, not a patch — sending only {"id": ..., "name": "new"} would wipe the job's schedules, streams, and config (the CLI warns and lists the fields that would be cleared). Always round-trip the full object:
sling platform jobs get <id> > job.json# edit job.jsoncat job.json | sling platform jobs save -f -
Check history / last run
sling platform jobs status --name users # per-job: status, last executed, next scheduledsling platform executions list --job-name users --limit 1 # most recent run (name must match one job)sling platform executions list --job-id <id> --since 7d # last week's historysling platform executions list --status error --since 24h # all recent failures
Investigate a failed exec
sling assist --id <exec_id> starts an assist session with this workflow pre-loaded when the exec exists on the platform.
sling platform executions list --status error --limit 5— find the failure.sling platform executions status <exec_id>— which task/stream/step failed.sling platform executions log <exec_id> --status error— logs for failing tasks only (add--task <name>to zoom in;--no-colorfor clean text).sling platform files get <file_name>— pull the YAML to read/edit locally.- Validate the fix locally with MCP
replication validate/pipeline validate, then run it:sling run -r users.yamlorsling run -p pipeline.yaml. cat fixed.yaml | sling platform files save <file_name> -f -— push back.sling platform jobs trigger <job_id> --wait— verify green.
Edit a platform file in place
sling platform files get replications/users.yaml > users.yaml# edit locally, validate via MCP, then sling run -r users.yamlcat users.yaml | sling platform files save replications/users.yaml -f -
For bulk work, sling init + sling platform sync keeps a local directory mirrored with the platform instead of per-file get/save.
Monitors
Monitors observe data without moving it: schema drift, freshness, row counts, column statistics, and anomaly detection. They are YAML files (connection: + objects:) saved under the project's monitors/ directory and scheduled as jobs with type: monitor. They require the Advanced plan.
To author a monitor, read MONITORS.md — object and column keys, patterns, anomalies, and a worked example.
| Monitor topic | Doc | |
|---|---|---|
| Overview + quick start | https://docs.slingdata.io/sling-platform/monitors.md | |
| YAML structure | https://docs.slingdata.io/sling-platform/monitors/structure.md | |
| Object metrics & freshness | https://docs.slingdata.io/sling-platform/monitors/object-metrics.md | |
| Column metrics & validation | https://docs.slingdata.io/sling-platform/monitors/column-metrics.md | |
| Anomaly detection | https://docs.slingdata.io/sling-platform/monitors/anomaly-detection.md | |
| Schema changes | https://docs.slingdata.io/sling-platform/monitors/schema-changes.md |
Agents & Self-Hosting (docs index)
Jobs execute on agents in the customer's infrastructure — data never flows through the control plane. For deployment questions, fetch:
- Agents (deploy, pin via
SLING_AGENT_ID): https://docs.slingdata.io/sling-platform/agents.md - Self-hosting the platform: https://docs.slingdata.io/sling-platform/self-hosting.md
- Architecture: https://docs.slingdata.io/sling-platform/architecture.md
- Platform HTTP API: https://docs.slingdata.io/sling-platform/api.md
Tips
- The platform never executes against the user's local
env.yaml— connections are project-scoped. "connection not found" means missing on the platform, not locally. files getreturns the file with${VAR}references preserved — do not interpolate them.- When unsure of job field names,
jobs geta known-good job and edit that JSON rather than composing from scratch. jobs trigger --streams a,band--full-refreshoverride the job's saved streams/mode for that one run only.