# Getting started

A **Job** is a versioned scene file. A prompt only writes a Job. The same file emits a Blender scene, stills, `.glb`, `.blend`, and a checksum manifest.

`@mrkt_frwd/job` is on npm. Install nothing:

```bash
npx @mrkt_frwd/job
```

That is the whole instruction. Then:

```bash
npx @mrkt_frwd/job docs cat getting-started.md
npx @mrkt_frwd/job examples pull collar-01 --output-dir ./out
npx @mrkt_frwd/job check ./out/job.json
npx @mrkt_frwd/job export ./out/job.json --output-dir ./out
```

You get `collar-01.blend`, `collar-01.glb`, `hero.png` / `side.png` / `front.png`, and `manifest.json` with SHA-256.

Do not invent a node graph from an empty file. Pull `collar-01` and mutate catalog ids.

Do not shell `blender -b`. The wrapper is `npx job export`. Unchecked Jobs do not run.

The skill is `skills/job/` in this repo (not `npx skills add` until that path is public).

## Attach surfaces

| Surface | Command | True today |
|---|---|---|
| CLI | `npx @mrkt_frwd/job` | yes, from npm |
| MCP (hosted, read-only) | `npx -y add-mcp https://joeasare.com/api/job/mcp -g` | yes, after `/api/job/mcp` is on main |
| MCP (local writes) | `npx @mrkt_frwd/job mcp --output-dir ./out` | yes, from npm |
| Package `@mrkt_frwd/job` | `pnpm add @mrkt_frwd/job` | yes, on npm |
| Skill registry | `npx skills add joeasare/job` | **not published** — use `skills/job/` |

## Public API

```
job(input)
check(job)                 // catalogs + doctrine. Fail closed.
run(job)                   // headless blender via wrapper
still(job)
exportScene(job, dir)      // blend + glb + png + manifest.json
```

Agents author `job.json`, not bpy.

See: `job-schema.md`, `catalogs.md`, `check.md`, `cli.md`, `mcp.md`, `doctrine.md`.

## Licence

Job is MIT (`LICENSE` in this package). Use it, fork it, sell what you build
with it — keep the copyright notice, expect no warranty.

One nuance worth knowing rather than discovering: `blender/run_job.py` and
`blender/studio.py` run *inside* Blender and `import bpy`. The Blender
Foundation's stated position is that scripts importing `bpy` are derivative
works of Blender and must be GPL-compatible when distributed. That reading is
contested — Job drives Blender as a subprocess rather than shipping an add-on —
but MIT is GPL-compatible either way, so nothing here conflicts under either
interpretation.
