# Project export: Posecode: Spatial DSL for LLMs

This document was generated by HackStack to give an AI agent context about a hackathon project. Sections are labeled with their provenance; content marked as truncated was cut to keep this document small.

## Project metadata

- Hackathon: OpenAI Build Week
- Tagline: A human-readable kinematic DSL that gives AI spatial reasoning. It enables LLMs to describe, validate, and render complex 3D biomechanical movements via an MCP server and WebGL.
- Devpost: https://devpost.com/software/posecode-spatial-dsl-for-llms
- GitHub: https://github.com/posecode-dev/posecode
- Demo: https://www.posecode.org/
- Video: https://www.youtube.com/embed/p70EaAgvfF0?enablejsapi=1&hl=en_US&rel=0&start=&version=3&wmode=transparent
- Team: 3 GitHub contributor(s) — a-baran-orhan (68 commits), github-actions[bot] (5 commits), dependabot[bot] (3 commits)

## Devpost submission (written by the team)

### Inspiration

LLMs are excellent at generating text and code, but they still struggle to describe precise movement in 3D space. A prompt like “raise the left arm, rotate the torso, and bend the knees” is understandable to a human, but too ambiguous for a renderer or simulation system. It does not define exact joints, angles, timing, coordinate frames, or physical limits. That inspired Posecode: a human-readable spatial DSL that gives AI a structured way to describe movement.

### What it does

Posecode sits between natural language and low-level 3D motion data. An LLM can translate a movement request into structured Posecode, which can then be: validated, scored for biomechanical fidelity, rendered in the browser, and used by AI agents through an MCP server. The project includes: a human-readable kinematic DSL, a client-side WebGL renderer, an MCP server for agent workflows, and a biomechanical fidelity scorecard. The scorecard evaluates factors such as joint limits, balance, continuity, and spatial consistency. Conceptually, the final score is: $$ F = \sum_{i=1}^{n} w_i s_i $$ where (s_i) is an individual biomechanical check and (w_i) is its weight. How I built it The system follows a simple pipeline: A user describes a movement in natural language. GPT-5.6 converts it into Posecode. The parser creates a structured motion representation. The validator checks syntax, joint references, and movement constraints. The scorecard evaluates biomechanical plausibility. The WebGL renderer displays the motion in 3D. The MCP server exposes these capabilities to AI agents, allowing them to generate, validate, inspect, and improve movements programmatically. I kept the language, validation engine, renderer, and MCP layer separate so each component can evolve independently. How I used GPT-5.6 and Codex GPT-5.6 acts as the reasoning layer between natural-language instructions and structured movement. It interprets anatomy, direction, sequencing, joint relationships, and timing before generating valid Posecode. Codex helped me: design and refine the DSL grammar, implement the parser and validation logic, connect Posecode to the WebGL skeleton, build the MCP tools, create tests, and debug coordinate-system and transformation issues. I used Codex as an engineering collaborator while making the key product, architecture, and language-design decisions myself. Challenges The hardest challenge was translating ambiguous language into exact geometry. Words such as “forward,” “slightly,” or “turn” depend on the coordinate system, body orientation, active joint, and movement range. Another challenge was designing a DSL that is readable for humans but constrained enough for LLMs to generate reliably. Rendering was also difficult because human motion is hierarchical. Rotating a shoulder affects the elbow, wrist, and hand, so joints cannot be treated independently. Finally, syntax validation alone was not enough. A pose can be valid code but still be physically unrealistic, which led to the biomechanical scorecard. What I learned The biggest lesson was that spatial reasoning needs an explicit representation. Prompting alone cannot fully remove ambiguity. A structured DSL creates a shared contract between the LLM, developer, validator, and renderer. I also learned that validation should explain more than whether something failed. It should show what failed, why it matters, and how the movement could be improved. This enables an agent loop: generate, validate, inspect the score, revise, render. Potential impact Posecode could be useful for: game and character animation, fitness and exercise visualization, dance and choreography, education and anatomy, rehabilitation demonstrations, sports analysis, robotics, and synthetic motion generation. The long-term goal is to create a shared spatial interface between language models and systems that operate in the physical world. LLMs already have languages for software, data, and interfaces. Posecode gives them a language for movement.

## README (from the GitHub repository)

<h1 align="center">Posecode</h1>

<p align="center">
  <b>Kinematic motion as text.</b>
  <br />
  An inspectable, editable movement format for animation tools, LLMs, and web products.
</p>

<p align="center">
  Like Mermaid for movement: small text documents for describing, validating, and rendering
  <br />
  deterministic human motion without hiding the source inside a black box.
</p>

<p align="center">
  <a href="https://posecode.org/play"><b>Live Playground</b></a> ·
  <a href="https://posecode.org/moves/">Movement Library</a> ·
  <a href="https://posecode.org/spec.html">Language Specification</a> ·
  <a href="spec/examples">Examples</a> ·
  <a href="packages/posecode-mcp">MCP Server</a>
</p>

<p align="center">
  <a href="https://github.com/posecode-dev/posecode/actions/workflows/ci.yml">
    <img src="https://github.com/posecode-dev/posecode/actions/workflows/ci.yml/badge.svg" alt="CI status" />
  </a>
  <a href="https://www.npmjs.com/package/posecode-parser">
    <img src="https://img.shields.io/npm/v/posecode-parser.svg?color=emerald" alt="npm version" />
  </a>
  <a href="https://github.com/posecode-dev/posecode/blob/main/docs/legal/LICENSING.md">
    <img src="https://img.shields.io/badge/license-Apache--2.0%20%2B%20AGPL--3.0-blue.svg" alt="Apache 2.0 and AGPL 3.0 licenses" />
  </a>
  <a href="https://github.com/posecode-dev/posecode/tree/main/packages/posecode-mcp">
    <img src="https://img.shields.io/badge/MCP-Compatible-orange.svg" alt="MCP compatible" />
  </a>
</p>

---

## Why Posecode?

Animation clips and generated trajectories can show movement, but they often hide the semantic decisions that produced it.

Posecode keeps those decisions in readable source. A human can write the document, an animation tool can emit it, or an LLM can draft it. Parsing, validation, editing, and rendering do not require an AI model.


<p align="center">
  <img
    src="docs/media/jumping-jacks.gif"
    width="440"
    alt="Jumping jacks rendered from a Posecode document"
  />
</p>

<p align="center">
  <sub>
    One <code>.posecode</code> document —
    <code>shoulders: abduct 160</code>,
    <code>hips: abduct 30</code>,
    <code>repeat 12</code> —
    rendered live in the browser.
  </sub>
</p>

For example:

> Bend your knees, move your hips backward, and keep your chest upright.

A human may understand that instruction, but a renderer cannot reliably determine:

- which joints should move,
- by how many degrees,
- in which coordinate frame,
- over what duration,
- in what sequence,
- or within which physical limits.

Humans, tools, and language models all need a shared syntax for expressing movement in a renderable and testable form.

Posecode provides that missing representation.

### See Posecode in 28 seconds

From readable movement source to validated 3D rendering, MCP tools, and a
one-script web embed.

<p align="center">
  <a href="docs/launch-media/posecode-cut2-builder-16x9.mp4">
    <img
      src="docs/launch-media/posecode-cut2-payoff.png"
      width="800"
      alt="Watch the 28-second Posecode builder demo"
    />
  </a>
</p>

<p align="center">
  <a href="docs/launch-media/posecode-cut2-builder-16x9.mp4"><b>▶ Watch the 28-second builder demo</b></a>
  <br />
  <sub>Plain text in. Smooth, programmable 3D motion out.</sub>
</p>

### Movement examples

<table align="center">
  <tr>
    <td align="center">
      <img src="docs/media/deadlift.gif" width="230" alt="Deadlift rendered from Posecode" />
      <br />
      <sub><code>pelvis: hinge</code> — deadlift</sub>
    </td>
    <td align="center">
      <img src="docs/media/squat.gif" width="230" alt="Squat rendered from Posecode" />
      <br />
      <sub><code>knees: flex 95</code> — squat</sub>
    </td>
    <td align="center">
      <img src="docs/media/lateral-raise.gif" width="230" alt="Lateral raise rendered from Posecode" />
      <br />
      <sub><code>shoulders: abduct 90</code> — lateral raise</sub>
    </td>
  </tr>
</table>

---

## Why Not Diffusion Text-to-Motion?

Neural text-to-motion systems can generate impressive movement, but they introduce problems for lightweight, programmable applications.

### Resource intensive

Many systems require large models and GPU-backed inference, making real-time consumer deployment expensive.

### Difficult to control

They usually produce coordinate trajectories rather than editable semantic instructions.

It is difficult to request a precise change such as:

> Reduce knee flexion by 10 degrees during the second phase.

### Hard to validate

Black-box trajectories do not naturally expose readable joint rules, phase definitions, or range-of-motion limits.

### Hard to debug

When a movement looks wrong, developers may not know which semantic instruction caused the problem.

---

## The Posecode Approach

Posecode uses a lightweight, text-driven pipeline.

- **Readable:** movements are stored as small `.posecode` documents.
- **Structured:** joints, actions, angles, timings, and constraints are explicit.
- **Editable:** developers and models can modify individual movement properties.
- **Fast:** parsing and rendering happen client-side.
- **Deterministic:** the same Posecode input produces the same validated representation.
- **Inspectable:** parser warnings and fidelity checks explain problems.
- **Agent-friendly:** the MCP server exposes generation, validation, critique, and sharing tools.
- **Safety-aware:** authored and IK-generated angles are constrained by configured range-of-motion limits.

---

## The Idea in 30 Seconds

A `.posecode` file describes movement as timed phases with targeted joint actions.

| 1. Write `.posecode` | 2. Render the movement |
| :--- | :--- |
| **`posecode`** `exercise "Body-weight squat"`<br />**`rig`** `humanoid`<br />**`pose`** `start = standing`<br /><br />**`step`** `"Descend" 1.6s settle`:<br />&nbsp;&nbsp;`hips: flex 80`<br />&nbsp;&nbsp;`knees: flex 95`<br />&nbsp;&nbsp;`ankles: dorsiflex 14`<br />&nbsp;&nbsp;`ground-lock: feet`<br />&nbsp;&nbsp;`cue "Sit the hips back"`<br /><br />**`step`** `"Drive up" 1.2s drive`:<br />&nbsp;&nbsp;`hips: flex 0`<br />&nbsp;&nbsp;`knees: flex 0`<br />&nbsp;&nbsp;`ankles: dorsiflex 0`<br />&nbsp;&nbsp;`ground-lock: feet`<br /><br />**`repeat`** `8` | <img src="docs/media/squat.gif" width="340" alt="Squat animation" /> |

---



> **OpenAI Build Week 2026:** Posecode existed before the hackathon. During Build Week, the project was extended using **Codex** — running on **GPT-5.6** — as the primary engineering tool for a real batch of shipped work: motion/grounding quality, language contract diagnostics, licensing restructuring, release automation, and product-facing pages. The sections below distinguish previous work from Build Week work using actual commit history, not a roadmap.

---

## OpenAI Build Week Extension

### What existed before Build Week

Before Build Week, Posecode already included:

- the core `.posecode` domain-specific language,
- a parser and intermediate motion representation,
- basic range-of-motion validation,
- a Three.js/WebGL renderer,
- forward kinematics,
- basic inverse-kinematics and ground-lock behavior,
- a browser playground,
- example movement files,
- shareable Posecode links,
- and an MCP server foundation.

This original version was developed primarily with **Claude** as an AI-assisted engineering tool.

That prior work provides the foundation for the project, but it is not presented as the new hackathon contribution.

### What was added during Build Week

Every item below is a merged, dated pull request built with Codex (GPT-5.6) — see [Build Week Evidence](#build-week-evidence) for direct links.

1. **Motion and grounding overhaul** — ROM-constrained reach IK, semantic palm/fist/sole/knee/pelvis contact surfaces, multi-contact refinement, stable support handoffs, and XBot-aware grounding ([#76](https://github.com/posecode-dev/posecode/pull/76)).
2. **Language contract and diagnostics** — Posecode language/IR v0.3 cu

[README truncated for size]

## Detected evidence (automated analysis)

Indexed codebase: 233 recognized source files, 1862 KB.
- CSS (language) — detected in the code
- HTML (language) — detected in the code
- TypeScript (language) — detected in the code
- Node.js (technology) — claimed on Devpost, not found in the code
- AI coding agent: Claude Code — evidence: config files committed to the repository; commit authorship or trailers

## Codebase structure (from repository index)

### Files (120 of 383)

```
.changeset/config.json
.changeset/README.md
.changeset/select-rendered-joints.md
.claude/launch.json
.github/dependabot.yml
.github/FUNDING.yml
.github/ISSUE_TEMPLATE/bug_report.md
.github/ISSUE_TEMPLATE/feature_request.md
.github/ISSUE_TEMPLATE/movement_render_error.md
.github/PULL_REQUEST_TEMPLATE.md
.github/workflows/ci.yml
.github/workflows/release.yml
.gitignore
CHANGELOG.md
CODE_OF_CONDUCT.md
CONTRIBUTING.md
DCO
Dockerfile
docs/brand/README.md
docs/coverage-gap.md
docs/development/VERCEL_AGENTS.md
docs/diagnostics/pose-summary.json
docs/legal/COMMERCIAL-LICENSE.md
docs/legal/LEGAL_REVIEW.md
docs/legal/LICENSING.md
docs/legal/THIRD_PARTY_NOTICES.md
docs/legal/TRADEMARK.md
docs/market-research.md
docs/product-analytics.md
docs/README.md
docs/releases/0.3.0.md
docs/releases/RELEASING.md
docs/superpowers/plans/2026-07-11-l2-spline-interpolation.md
docs/superpowers/plans/2026-07-11-l3-1-foot-flat.md
docs/superpowers/specs/2026-07-11-l2-spline-interpolation-design.md
docs/superpowers/specs/2026-07-11-l3-1-foot-flat-design.md
docs/superpowers/specs/2026-07-11-l3-2-bar-grip-design.md
docs/superpowers/specs/2026-07-11-l4-secondary-motion-design.md
docs/superpowers/specs/2026-07-12-mixamo-hero-hook-design.md
editors/vscode/language-configuration.json
editors/vscode/package.json
editors/vscode/README.md
editors/vscode/src/extension.ts
editors/vscode/syntaxes/posecode.tmLanguage.json
editors/vscode/tsconfig.json
glama.json
LICENSE
LICENSES/AGPL-3.0-only.txt
NOTICE
package.json
packages/posecode-embed/.gitignore
packages/posecode-embed/CHANGELOG.md
packages/posecode-embed/LICENSE
packages/posecode-embed/NOTICE
packages/posecode-embed/package.json
packages/posecode-embed/README.md
packages/posecode-embed/src/auto.ts
packages/posecode-embed/src/compat.ts
packages/posecode-embed/src/element.ts
packages/posecode-embed/src/index.ts
packages/posecode-embed/src/options.ts
packages/posecode-embed/src/source.ts
packages/posecode-embed/src/styles.ts
packages/posecode-embed/test/compat.test.ts
packages/posecode-embed/test/options.test.ts
packages/posecode-embed/test/source.test.ts
packages/posecode-embed/tsconfig.json
packages/posecode-eval/CHANGELOG.md
packages/posecode-eval/LICENSE
packages/posecode-eval/package.json
packages/posecode-eval/src/checks.ts
packages/posecode-eval/src/cli.ts
packages/posecode-eval/src/diagnostics.ts
packages/posecode-eval/src/generator.ts
packages/posecode-eval/src/index.ts
packages/posecode-eval/src/metrics.ts
packages/posecode-eval/src/probe.ts
packages/posecode-eval/src/report.ts
packages/posecode-eval/src/xbot.ts
packages/posecode-eval/test/eval.test.ts
packages/posecode-eval/test/locomotion-grounding.test.ts
packages/posecode-eval/test/travel-planting.test.ts
packages/posecode-eval/tsconfig.json
packages/posecode-language/CHANGELOG.md
packages/posecode-language/LICENSE
packages/posecode-language/package.json
packages/posecode-language/src/completion.ts
packages/posecode-language/src/diagnostics.ts
packages/posecode-language/src/hover.ts
packages/posecode-language/src/index.ts
packages/posecode-language/src/vocab.ts
packages/posecode-language/test/language.test.ts
packages/posecode-language/tsconfig.json
packages/posecode-lsp/CHANGELOG.md
packages/posecode-lsp/LICENSE
packages/posecode-lsp/package.json
packages/posecode-lsp/src/convert.ts
packages/posecode-lsp/src/server.ts
packages/posecode-lsp/test/convert.test.ts
packages/posecode-lsp/tsconfig.json
packages/posecode-mcp/CHANGELOG.md
packages/posecode-mcp/LICENSE
packages/posecode-mcp/NOTICE
packages/posecode-mcp/package.json
packages/posecode-mcp/README.md
packages/posecode-mcp/server.json
packages/posecode-mcp/src/analyze.ts
packages/posecode-mcp/src/guide.ts
packages/posecode-mcp/src/index.ts
packages/posecode-mcp/src/server.ts
packages/posecode-mcp/src/stdio.ts
packages/posecode-mcp/test/posecode-mcp.test.ts
packages/posecode-mcp/tsconfig.json
packages/posecode-parser/CHANGELOG.md
packages/posecode-parser/LICENSE
packages/posecode-parser/NOTICE
packages/posecode-parser/package.json
packages/posecode-parser/README.md
packages/posecode-parser/src/clamp.ts
packages/posecode-parser/src/cli.ts
[263 more files omitted for size]
```

### Dependencies

- editors/vscode/package.json: @types/node@^26.1.1, @types/vscode@^1.85.0, esbuild@^0.28.1, typescript@^7.0.2, vscode-languageclient@^10.1.0
- package.json: @changesets/cli@^2.31.0, @remotion/cli@4.0.499, @vitest/coverage-v8@^4.1.10, gifenc@^1.0.3, playwright-core@^1.61.1, remotion@4.0.499, tsx@^4.19.2, typescript@^7.0.2, vitest@^4.1.10
- packages/posecode-embed/package.json: esbuild@^0.28.1, posecode-parser@0.4.2, posecode-render@0.4.2, posecode-share@0.4.2
- packages/posecode-eval/package.json: @types/node@^26.1.1, @types/three@^0.185.1, posecode-parser@0.4.2, posecode-render@0.4.2, three@^0.185.1
- packages/posecode-language/package.json: posecode-parser@0.4.2
- packages/posecode-lsp/package.json: @types/node@^26.1.1, esbuild@^0.28.1, posecode-language@0.2.2, tsx@^4.19.2, vscode-languageserver@^10.1.0, vscode-languageserver-textdocument@^1.0.12
- packages/posecode-mcp/package.json: @modelcontextprotocol/sdk@^1.12.0, @types/node@^26.1.1, esbuild@^0.28.1, posecode-parser@0.4.2, posecode-share@0.4.2, tsx@^4.19.2, zod@^4.4.3
- packages/posecode-parser/package.json: @types/node@^26.1.1, zod@^4.4.3
- packages/posecode-render/package.json: @types/three@^0.185.1, posecode-parser@>=0.2.2 <0.5.0, three@^0.185.1
- playground/package.json: @codemirror/autocomplete@^6.18.4, @codemirror/commands@^6.7.1, @codemirror/language@^6.10.8, @codemirror/lint@^6.8.4, @codemirror/state@^6.5.0, @codemirror/view@^6.36.1, @lezer/highlight@^1.2.1, @vercel/analytics@^2.0.1, posecode-language@0.2.2, posecode-parser@0.4.2, posecode-render@0.4.2, posecode-share@0.4.2, three@^0.185.1, typescript@^7.0.2, vite@^8.1.5

### Recent commits (newest first)

- Add guided first-edit activation (#121)
- Add privacy-conscious playground analytics (#118)
- Fix live angle previews and improve LLM guide (#117)
- Add direct angle controls and restore streamlined exports (#115)
- Streamline playground GitHub and export actions (#114)
- fix: compare contact evals at report precision
- fix: declare Node types for TypeScript 7
- chore: release packages
- Reposition Posecode as an inspectable movement format (#113)
- Add meaningful product usage analytics (#112)
- build(deps-dev): bump the development-dependencies group with 5 updates
- build(deps): bump three in the production-dependencies group
- Playground: hide motion-export buttons on mobile (#109)
- Issue triage: editor docs, playground speed persistence, desk presets, BVH + glTF export (#108)
- Reduce contact warnings: honest reach/ground-lock + locomotion-aware grounding (#99)
- Make traveling gait moves carry the body to their waypoints (#97)
- Update README with Build Week 2026 details
- chore: release packages (#96)
- build(deps-dev): bump @types/node to 26 and vite to 8.1.5 (#95)
- build(deps): bump zod to 4 and language-server tooling to 10 (#94)

## Key source files (fetched from GitHub, selected and truncated for size)

### SECURITY.md

```markdown
# Security Policy

## Supported Versions

We actively support and fix security issues in the following versions of Posecode:

| Version | Supported |
| ------- | --------- |
| v0.2.x  | Yes       |
| v0.1.x  | Security fixes only |

---

## Reporting a Vulnerability

If you discover a security vulnerability in Posecode, please do not open a public GitHub issue. Instead, report it privately:

1. **Email us**: Send a detailed report to **hello@posecode.org**.
2. **Include details**: Provide a description of the issue, steps to reproduce, and any potential exploit or impact.
3. **Response timeline**: We aim to acknowledge receipt of your vulnerability report within 48 hours and provide a resolution plan within 7 days.

We request that you practice responsible disclosure and give us reasonable time to address and patch the issue before making it public.

```

### CODE_OF_CONDUCT.md

```markdown
# Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our community include:

* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
* Focusing on what is best for the overall community, and not just for us as individuals

Examples of unacceptable behavior include:

* The use of sexualized language or imagery, and unwelcome sexual attention or advances
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting

## Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.

Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at **hello@posecode.org**. All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the reporter of any incident.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.1, available at [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][version].

[truncated — 131 more characters]
```

### Dockerfile

```
FROM node:20-alpine AS builder

WORKDIR /app

# Copy lockfiles and config files
COPY package*.json tsconfig.base.json ./

# Copy packages required for building posecode-mcp
COPY packages/posecode-parser ./packages/posecode-parser
COPY packages/posecode-share ./packages/posecode-share
COPY packages/posecode-mcp ./packages/posecode-mcp

# Install all dependencies (including workspace dependencies)
RUN npm ci

# Build the MCP server
RUN npm run build -w packages/posecode-mcp

# Production stage
FROM node:20-alpine AS release

WORKDIR /app

# Copy the built bundles and node_modules (since SDK and Zod are external)
COPY --from=builder /app/packages/posecode-mcp/dist ./packages/posecode-mcp/dist
COPY --from=builder /app/node_modules ./node_modules

# Set environment to production
ENV NODE_ENV=production

# Run the stdio server
ENTRYPOINT ["node", "packages/posecode-mcp/dist/posecode-mcp.mjs"]

```

### package.json

```
{
  "name": "posecode-monorepo",
  "version": "0.2.0",
  "private": true,
  "description": "Posecode: a kinematic motion protocol for LLMs. Describe 3D human movement as text; render it in the browser.",
  "license": "Apache-2.0",
  "workspaces": [
    "packages/*",
    "playground",
    "editors/*"
  ],
  "scripts": {
    "test": "vitest run",
    "test:watch": "vitest",
    "coverage": "vitest run --coverage",
    "dev": "npm run dev -w playground",
    "build": "npm run build -w playground",
    "build:packages": "npm run build -w posecode-parser && npm run build -w posecode-share && npm run build -w posecode-render && npm run build -w posecode-embed && npm run build -w posecode-mcp",
    "check:packages": "node scripts/check-packages.mjs",
    "changeset": "changeset",
    "version-packages": "changeset version && node scripts/sync-mcp-version.mjs",
    "release": "npm run build:packages && npm run check:packages && changeset publish",
    "prepare:xbot": "node scripts/prepare-xbot.mjs",
    "eval": "tsx packages/posecode-eval/src/cli.ts",
    "video:cut2": "remotion render video/cut2/index.tsx PosecodeCut2 docs/launch-media/posecode-cut2-builder-16x9.mp4 --public-dir video/cut2/public --codec h264 --crf 16",
    "video:cut2:vertical": "remotion render video/cut2/index.tsx PosecodeCut2Vertical docs/launch-media/posecode-cut2-builder-9x16.mp4 --public-dir video/cut2/public --codec h264 --crf 16",
    "video:cut2:still": "remotion still video/cut2/index.tsx PosecodeCut2 docs/launch-media/posecode-cut2-payoff.png --public-dir video/cut2/public --frame 825",
    "typecheck": "for p in packages/*/tsconfig.json playground/tsconfig.json editors/*/tsconfig.json; do tsc --noEmit -p \"$p\" || exit 1; done",
    "gifs": "node scripts/capture-gifs.mjs"
  },
  "devDependencies": {
    "@changesets/cli": "^2.31.0",
    "@remotion/cli": "4.0.499",
    "@vitest/coverage-v8": "^4.1.10",
    "gifenc": "^1.0.3",
    "playwright-core": "^1.61.1",
    "remotion": "4.0.499",
    "tsx": "^4.19.2",
    "typescript": "^7.0.2",
    "vitest": "^4.1.10"
  }
}

```

### playground/package.json

```
{
  "name": "posecode-playground",
  "version": "0.2.2",
  "private": true,
  "license": "AGPL-3.0-only",
  "type": "module",
  "scripts": {
    "dev": "vite",
    "prebuild": "node ../scripts/generate-content-pages.mjs",
    "build": "vite build",
    "preview": "vite preview"
  },
  "dependencies": {
    "@codemirror/autocomplete": "^6.18.4",
    "@codemirror/commands": "^6.7.1",
    "@codemirror/language": "^6.10.8",
    "@codemirror/lint": "^6.8.4",
    "@codemirror/state": "^6.5.0",
    "@codemirror/view": "^6.36.1",
    "@lezer/highlight": "^1.2.1",
    "@vercel/analytics": "^2.0.1",
    "posecode-language": "0.2.2",
    "posecode-parser": "0.4.2",
    "posecode-render": "0.4.2",
    "posecode-share": "0.4.2",
    "three": "^0.185.1"
  },
  "devDependencies": {
    "typescript": "^7.0.2",
    "vite": "^8.1.5"
  }
}

```

### packages/posecode-language/package.json

```
{
  "name": "posecode-language",
  "version": "0.2.2",
  "private": true,
  "description": "Editor language service for .posecode: diagnostics, completions, and hovers built on posecode-parser. Powers both the playground editor and the LSP.",
  "license": "Apache-2.0",
  "type": "module",
  "main": "./src/index.ts",
  "types": "./src/index.ts",
  "exports": {
    ".": "./src/index.ts"
  },
  "dependencies": {
    "posecode-parser": "0.4.2"
  }
}

```

### packages/posecode-eval/package.json

```
{
  "name": "posecode-eval",
  "version": "0.2.2",
  "private": true,
  "description": "Fidelity eval harness for Posecode: headless kinematic probing + geometric invariant scoring.",
  "license": "AGPL-3.0-only",
  "type": "module",
  "main": "./src/index.ts",
  "types": "./src/index.ts",
  "exports": {
    ".": "./src/index.ts"
  },
  "dependencies": {
    "posecode-parser": "0.4.2",
    "posecode-render": "0.4.2",
    "three": "^0.185.1"
  },
  "devDependencies": {
    "@types/node": "^26.1.1",
    "@types/three": "^0.185.1"
  }
}

```

### packages/posecode-lsp/package.json

```
{
  "name": "posecode-lsp",
  "version": "0.2.2",
  "private": true,
  "description": "Language Server Protocol implementation for the Posecode (.posecode) DSL: diagnostics, completion, and hover, powered by posecode-language.",
  "license": "Apache-2.0",
  "type": "module",
  "main": "./src/server.ts",
  "exports": {
    ".": "./src/server.ts",
    "./convert": "./src/convert.ts"
  },
  "scripts": {
    "typecheck": "tsc --noEmit",
    "bundle": "esbuild src/server.ts --bundle --platform=node --format=cjs --outfile=dist/server.cjs",
    "start": "tsx src/server.ts"
  },
  "dependencies": {
    "posecode-language": "0.2.2",
    "vscode-languageserver": "^10.1.0",
    "vscode-languageserver-textdocument": "^1.0.12"
  },
  "devDependencies": {
    "@types/node": "^26.1.1",
    "esbuild": "^0.28.1",
    "tsx": "^4.19.2"
  }
}

```

### packages/posecode-share/package.json

```
{
  "name": "posecode-share",
  "version": "0.4.2",
  "description": "Encode/decode .posecode documents to URL-safe share tokens — the distribution primitive for Posecode permalinks and embeds.",
  "license": "Apache-2.0",
  "type": "module",
  "main": "./dist/index.js",
  "types": "./dist/index.d.ts",
  "exports": {
    ".": {
      "types": "./dist/index.d.ts",
      "import": "./dist/index.js",
      "default": "./dist/index.js"
    }
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/posecode-dev/posecode.git",
    "directory": "packages/posecode-share"
  },
  "keywords": [
    "posecode",
    "share",
    "url-encoding",
    "permalink",
    "kinematics"
  ],
  "scripts": {
    "build": "tsc -p tsconfig.json",
    "prepublishOnly": "npm run build"
  },
  "files": [
    "dist",
    "README.md",
    "LICENSE",
    "NOTICE"
  ],
  "publishConfig": {
    "access": "public"
  }
}

```

### packages/posecode-parser/package.json

```
{
  "name": "posecode-parser",
  "version": "0.4.2",
  "description": "Parse the .posecode kinematic motion DSL into a validated, ROM-clamped intermediate representation.",
  "license": "Apache-2.0",
  "type": "module",
  "main": "./dist/index.js",
  "types": "./dist/index.d.ts",
  "exports": {
    ".": {
      "types": "./dist/index.d.ts",
      "import": "./dist/index.js",
      "default": "./dist/index.js"
    }
  },
  "bin": {
    "posecode-parser": "dist/cli.js"
  },
  "dependencies": {
    "zod": "^4.4.3"
  },
  "devDependencies": {
    "@types/node": "^26.1.1"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/posecode-dev/posecode.git",
    "directory": "packages/posecode-parser"
  },
  "keywords": [
    "posecode",
    "kinematics",
    "dsl",
    "parser",
    "llm",
    "text-to-motion",
    "biomechanics"
  ],
  "scripts": {
    "build": "tsc -p tsconfig.json",
    "prepublishOnly": "npm run build"
  },
  "files": [
    "dist",
    "README.md",
    "LICENSE",
    "NOTICE"
  ],
  "publishConfig": {
    "access": "public"
  }
}

```

[223 more indexed source files omitted to keep this export small. The full file list is in the Codebase structure section above.]