# Stickman MCP and animation library

Local deterministic stick-figure animation for presentations, explainers,
websites and silent films. Node.js 20+.

This connected release candidate includes the library, CLI, stdio MCP server,
film composer/renderer, motion authoring, approved motion assets and pose library.
The matching offline gallery is a separate site archive. It demonstrates
motion previews, two original silent films and a native Stickman cloud story.
No external presentation renderer, private history or dependency binaries ship.

## Install the reviewed local candidate

```sh
npm install ./vallahrich-stickman-mcp-0.1.0.tgz
npx stickman discover
npx stickman schema
```

Install dependencies normally for rendering: the optional SVG rasterizer and
ffmpeg-static are needed for film/video and PNG strips. Their separate licenses
apply; see NOTICE. SVG/HTML engine exports do not need those renderers.
No package is currently published on npm. The tarball retains `private: true`.

## Library

```js
import { compileAnimation } from "@vallahrich/stickman-mcp";
// Also available: /browser, /room and /keyboard.
```

Node-only `/film` and `/motion-authoring` entries expose the same packaged
composer/render and draft/preview APIs used by the MCP server.

Use the CLI schema or `stickman_discover` and `stickman_schema` to learn the
actual animation contract. Gallery previews and runtime actions are distinct:
the release catalogue includes 97 mechanically qualified film/preview motions
(from the 100-entry ledger; `sneak`, `roll` and `dance` are excluded from
release), whereas `stickman.animation/v1` exposes 11 canonical runtime action IDs.

## Connect the local MCP

Launch `node /path/to/node_modules/@vallahrich/stickman-mcp/dist/mcp.js
--root /path/to/output` from your client's stdio MCP configuration, or use the
installed `stickman-mcp --root /path/to/output` executable.

```json
{
  "mcpServers": {
    "stickman": {
      "command": "node",
      "args": ["./node_modules/@vallahrich/stickman-mcp/dist/mcp.js", "--root", "./stickman-output"]
    }
  }
}
```

Resolve relative paths against the client's launch directory; absolute paths
are more reliable. There is no public HTTP endpoint or required credential.
File-writing tools stay under the launch-time `--root`; review destinations.

Discover → validate → compile → preview → export. Film tools:
`stickman_list_film_assets`, `stickman_compose_film`, `stickman_render_film`,
`stickman_check_join`. Examples ship in `examples/films`.
Author with `stickman_author_motion`: the JSON draft and PNG strip go into a
**new** outputDir under --root, never the installed library.
Preview that draft using `stickman_preview_motion` with `draftDir` equal to
the author's outputDir and a different new outputDir. Without draftDir, preview
reads packaged motions. Drafts do not become approved film assets automatically.
Continuity/anatomy checks are not a promise of arbitrary contact-safe actions.

## Offline site and rights

Extract the matching site zip and serve its directory using a local static
server; no build is required. It contains no analytics, remote renderer or
tracking. Playback is optional and honors reduced-motion defaults.
The separate curated source ZIP can rebuild the package and demos:

```sh
npm install
npm run build
npm run site:showcase -- ./local-site
```

Then set `STICKMAN_SITE_OUTPUT` to that fresh `local-site` directory and run
`npm run site:build -- --release-candidate`. This builds locally only.
For example in PowerShell: `$env:STICKMAN_SITE_OUTPUT = "$PWD/local-site"`.
Do not run npm pack on the private development checkout or assume the source
ZIP is the complete private repository.

LICENSE covers original code and authored vector/key-pose work. CMU-derived
motion data retains its own permission/restriction and attribution in NOTICE
and docs/rights.md; it is not MIT and must not be resold as a standalone dataset.

This is local preparation, **not approval for publication**. Final content,
conversion notices, immutable checksums and destination need owner sign-off.
