Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@ jobs:
- name: Install dependencies
run: npm ci

- name: Typecheck
run: npm run typecheck

- name: Build publishable packages
run: npm run build:packages

- name: Typecheck
run: npm run typecheck

- name: Build playground
run: npm run build

Expand Down
4 changes: 4 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@
"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",
Expand Down
15 changes: 11 additions & 4 deletions packages/posecode-embed/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,14 @@
"description": "Embed a live 3D Posecode movement anywhere with one <script> tag \u2014 the <posecode-player> web component.",
"license": "MIT",
"type": "module",
"main": "./src/index.ts",
"types": "./src/index.ts",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": {
".": "./src/index.ts"
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js",
"default": "./dist/index.js"
}
},
"files": [
"dist",
Expand All @@ -34,9 +38,12 @@
"dependencies": {
"posecode-parser": "0.2.0",
"posecode-render": "0.2.0",
"posecode-share": "0.1.0"
"posecode-share": "0.2.0"
},
"devDependencies": {
"esbuild": "^0.24.2"
},
"publishConfig": {
"access": "public"
}
}
1 change: 1 addition & 0 deletions packages/posecode-eval/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "posecode-eval",
"version": "0.2.0",
"private": true,
"description": "Fidelity eval harness for Posecode: headless kinematic probing + geometric invariant scoring.",
"license": "MIT",
"type": "module",
Expand Down
1 change: 1 addition & 0 deletions packages/posecode-language/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "posecode-language",
"version": "0.2.0",
"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": "MIT",
"type": "module",
Expand Down
1 change: 1 addition & 0 deletions packages/posecode-lsp/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"name": "posecode-lsp",
"version": "0.2.0",
"private": true,
"description": "Language Server Protocol implementation for the Posecode (.posecode) DSL: diagnostics, completion, and hover, powered by posecode-language.",
"license": "MIT",
"type": "module",
Expand Down
15 changes: 11 additions & 4 deletions packages/posecode-mcp/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,14 @@
"mcpName": "io.github.posecode-dev/posecode-mcp",
"license": "MIT",
"type": "module",
"main": "./src/index.ts",
"types": "./src/index.ts",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": {
".": "./src/index.ts"
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js",
"default": "./dist/index.js"
}
},
"bin": {
"posecode-mcp": "dist/posecode-mcp.mjs"
Expand Down Expand Up @@ -41,12 +45,15 @@
"dependencies": {
"@modelcontextprotocol/sdk": "^1.12.0",
"posecode-parser": "0.2.0",
"posecode-share": "0.1.0",
"posecode-share": "0.2.0",
"zod": "^3.24.1"
},
"devDependencies": {
"@types/node": "^22.10.2",
"esbuild": "^0.24.2",
"tsx": "^4.19.2"
},
"publishConfig": {
"access": "public"
}
}
15 changes: 11 additions & 4 deletions packages/posecode-parser/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,14 @@
"description": "Parse the .posecode kinematic motion DSL into a validated, ROM-clamped intermediate representation.",
"license": "MIT",
"type": "module",
"main": "./src/index.ts",
"types": "./src/index.ts",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": {
".": "./src/index.ts"
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js",
"default": "./dist/index.js"
}
},
"bin": {
"posecode-parser": "dist/cli.js"
Expand Down Expand Up @@ -39,5 +43,8 @@
"files": [
"dist",
"README.md"
]
],
"publishConfig": {
"access": "public"
}
}
15 changes: 11 additions & 4 deletions packages/posecode-render/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,14 @@
"description": "Render a Posecode IR as an animated 3D human figure (skinned character or procedural mannequin) with Three.js.",
"license": "MIT",
"type": "module",
"main": "./src/index.ts",
"types": "./src/index.ts",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": {
".": "./src/index.ts"
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js",
"default": "./dist/index.js"
}
},
"dependencies": {
"three": "^0.171.0"
Expand Down Expand Up @@ -39,5 +43,8 @@
"files": [
"dist",
"README.md"
]
],
"publishConfig": {
"access": "public"
}
}
17 changes: 12 additions & 5 deletions packages/posecode-share/package.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
{
"name": "posecode-share",
"version": "0.1.0",
"version": "0.2.0",
"description": "Encode/decode .posecode documents to URL-safe share tokens \u2014 the distribution primitive for Posecode permalinks and embeds.",
"license": "MIT",
"type": "module",
"main": "./src/index.ts",
"types": "./src/index.ts",
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": {
".": "./src/index.ts"
".": {
"types": "./dist/index.d.ts",
"import": "./dist/index.js",
"default": "./dist/index.js"
}
},
"repository": {
"type": "git",
Expand All @@ -28,5 +32,8 @@
"files": [
"dist",
"README.md"
]
],
"publishConfig": {
"access": "public"
}
}
24 changes: 11 additions & 13 deletions playground/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,8 @@
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Posecode: Describe Human Movement as Text, Animated in 3D</title>
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16.png" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="192x192" href="/favicon-192.png" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<meta
name="description"
content="Posecode is an open-source text-to-motion language for LLMs. Describe exercises, physiotherapy, yoga, or dance in plain text and watch an anatomically safe 3D figure animate in your browser."
Expand All @@ -16,17 +14,17 @@
name="keywords"
content="text to motion, LLM animation, kinematic motion protocol, 3D human movement, exercise animation, physiotherapy animation, pose language, AI motion generation, ChatGPT animation, Claude animation, open source motion language"
/>
<link rel="canonical" href="https://posecode.org/" />
<link rel="canonical" href="https://www.posecode.org/" />
<meta name="theme-color" content="#0a0d12" />
<meta property="og:title" content="Posecode: human movement, written as text" />
<meta
property="og:description"
content="A Mermaid-style language for kinematic motion. LLMs write it; the browser renders an animated, anatomically safe 3D figure."
/>
<meta property="og:type" content="website" />
<meta property="og:url" content="https://posecode.org/" />
<meta property="og:url" content="https://www.posecode.org/" />
<meta property="og:site_name" content="Posecode" />
<meta property="og:image" content="https://posecode.org/og.png" />
<meta property="og:image" content="https://www.posecode.org/og.png" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta name="twitter:card" content="summary_large_image" />
Expand All @@ -35,7 +33,7 @@
name="twitter:description"
content="A Mermaid-style language for kinematic motion. LLMs write it; the browser renders an animated, anatomically safe 3D figure."
/>
<meta name="twitter:image" content="https://posecode.org/og.png" />
<meta name="twitter:image" content="https://www.posecode.org/og.png" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<!-- Load fonts without blocking render: fetch as a low-priority stylesheet
Expand Down Expand Up @@ -65,16 +63,16 @@
"@graph": [
{
"@type": "WebSite",
"@id": "https://posecode.org/#website",
"url": "https://posecode.org/",
"@id": "https://www.posecode.org/#website",
"url": "https://www.posecode.org/",
"name": "Posecode",
"description": "An open-source text-to-motion language for LLMs. Describe human movement as text; render it as an animated 3D figure in the browser."
},
{
"@type": "SoftwareApplication",
"@id": "https://posecode.org/#app",
"@id": "https://www.posecode.org/#app",
"name": "Posecode",
"url": "https://posecode.org/",
"url": "https://www.posecode.org/",
"applicationCategory": "DeveloperApplication",
"operatingSystem": "Any (web browser)",
"description": "Posecode is a tiny language LLMs can write to describe human movement: exercises, stretches, physiotherapy, yoga, and dance. The browser renders it as an animated 3D figure, with every joint clamped to a safe range of motion.",
Expand All @@ -85,7 +83,7 @@
},
{
"@type": "FAQPage",
"@id": "https://posecode.org/#faq",
"@id": "https://www.posecode.org/#faq",
"mainEntity": [
{
"@type": "Question",
Expand Down
2 changes: 1 addition & 1 deletion playground/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
"posecode-language": "0.2.0",
"posecode-parser": "0.2.0",
"posecode-render": "0.2.0",
"posecode-share": "0.1.0",
"posecode-share": "0.2.0",
"three": "^0.171.0"
},
"devDependencies": {
Expand Down
12 changes: 5 additions & 7 deletions playground/play.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,23 @@
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Posecode Playground: Write and Preview 3D Human Movement as Text</title>
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16.png" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="192x192" href="/favicon-192.png" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<meta
name="description"
content="Try Posecode live: paste text from ChatGPT, Claude, or Gemini and watch it animate a 3D figure. Browse a library of movements across fitness, physiotherapy, yoga, and dance."
/>
<link rel="canonical" href="https://posecode.org/play" />
<link rel="canonical" href="https://www.posecode.org/play" />
<meta name="theme-color" content="#0a0d12" />
<meta property="og:title" content="Posecode Playground: live editor for movement as text" />
<meta
property="og:description"
content="Paste a .posecode document and watch a 3D figure animate it, with every joint clamped to a safe range of motion."
/>
<meta property="og:type" content="website" />
<meta property="og:url" content="https://posecode.org/play" />
<meta property="og:url" content="https://www.posecode.org/play" />
<meta property="og:site_name" content="Posecode" />
<meta property="og:image" content="https://posecode.org/og.png" />
<meta property="og:image" content="https://www.posecode.org/og.png" />
<meta name="twitter:card" content="summary_large_image" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
Expand Down
Binary file modified playground/public/favicon-192.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 6 additions & 8 deletions playground/public/llm-guide.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,18 @@
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>How to Teach an LLM to Write Posecode: The Authoring Guide</title>
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16.png" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="192x192" href="/favicon-192.png" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<meta name="description" content="The system prompt that teaches ChatGPT, Claude, or Gemini to author valid .posecode documents: syntax, joints, phases, and worked examples." />
<link rel="canonical" href="https://posecode.org/llm-guide.html" />
<link rel="canonical" href="https://www.posecode.org/llm-guide.html" />
<meta name="theme-color" content="#0a0d12" />
<meta property="og:title" content="How to Teach an LLM to Write Posecode: The Authoring Guide" />
<meta property="og:description" content="The system prompt that teaches ChatGPT, Claude, or Gemini to author valid .posecode documents: syntax, joints, phases, and worked examples." />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://posecode.org/llm-guide.html" />
<meta property="og:url" content="https://www.posecode.org/llm-guide.html" />
<meta property="og:site_name" content="Posecode" />
<meta property="og:image" content="https://posecode.org/og.png" />
<meta name="twitter:image" content="https://posecode.org/og.png" />
<meta property="og:image" content="https://www.posecode.org/og.png" />
<meta name="twitter:image" content="https://www.posecode.org/og.png" />
<meta name="twitter:card" content="summary_large_image" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
Expand Down
4 changes: 2 additions & 2 deletions playground/public/llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ Key facts:

## Tools

- [Playground](https://posecode.org/play): live editor with a 3D viewer, movement library, and shareable links
- [Playground](https://www.posecode.org/play): live editor with a 3D viewer, movement library, and shareable links
- [GitHub repository](https://github.com/posecode-dev/posecode): parser, renderer, share codec, embed web component, MCP server, and VS Code extension
- [MCP server](https://github.com/posecode-dev/posecode/tree/main/packages/posecode-mcp): lets any AI agent validate a movement and get a render link

## Optional

- [Landing page](https://posecode.org/): project overview and highlights
- [Landing page](https://www.posecode.org/): project overview and highlights
14 changes: 6 additions & 8 deletions playground/public/moves/arm-circles.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,18 @@
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Arm circles: How to Do It (Animated 3D Guide) | Posecode</title>
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32.png" />
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16.png" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
<link rel="icon" type="image/png" sizes="192x192" href="/favicon-192.png" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<meta name="description" content="How to do the arm circles (warm-up): 3 phases targeting the deltoids, body weight, beginner level. Animated 3D guide generated from Posecode, a text-to-motion language for LLMs." />
<link rel="canonical" href="https://posecode.org/moves/arm-circles.html" />
<link rel="canonical" href="https://www.posecode.org/moves/arm-circles.html" />
<meta name="theme-color" content="#0a0d12" />
<meta property="og:title" content="Arm circles: How to Do It (Animated 3D Guide) | Posecode" />
<meta property="og:description" content="How to do the arm circles (warm-up): 3 phases targeting the deltoids, body weight, beginner level. Animated 3D guide generated from Posecode, a text-to-motion language for LLMs." />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://posecode.org/moves/arm-circles.html" />
<meta property="og:url" content="https://www.posecode.org/moves/arm-circles.html" />
<meta property="og:site_name" content="Posecode" />
<meta property="og:image" content="https://posecode.org/og.png" />
<meta name="twitter:image" content="https://posecode.org/og.png" />
<meta property="og:image" content="https://www.posecode.org/og.png" />
<meta name="twitter:image" content="https://www.posecode.org/og.png" />
<meta name="twitter:card" content="summary_large_image" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
Expand Down
Loading
Loading