Skip to content

Commit 1823728

Browse files
Merge pull request #16 from posecode-dev/claude/github-npm-seo-content-pages
Add static content pages and movement library hub
2 parents 8923bc5 + 1b66e08 commit 1823728

95 files changed

Lines changed: 15642 additions & 25 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ as a tiny human-readable language that renders to an animated 3D figure in the b
66

77
<p align="center">
88
<a href="https://posecode.org/play"><b>▶ Live playground</b></a> ·
9-
<a href="spec/SPEC.md">Language spec</a> ·
9+
<a href="https://posecode.org/moves/">Movement library</a> ·
10+
<a href="https://posecode.org/spec.html">Language spec</a> ·
1011
<a href="spec/examples">Examples</a> ·
1112
<a href="packages/posecode-mcp">MCP server</a>
1213
</p>

packages/posecode-embed/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "posecode-embed",
33
"version": "0.1.0",
4-
"description": "Embed a live 3D Posecode movement anywhere with one <script> tag the <posecode-player> web component.",
4+
"description": "Embed a live 3D Posecode movement anywhere with one <script> tag \u2014 the <posecode-player> web component.",
55
"license": "MIT",
66
"type": "module",
77
"main": "./src/index.ts",
@@ -15,7 +15,7 @@
1515
],
1616
"scripts": {
1717
"typecheck": "tsc --noEmit",
18-
"build": "esbuild src/auto.ts --bundle --minify --format=iife --global-name=Posecode --outfile=dist/posecode-embed.js && esbuild src/index.ts --bundle --minify --format=esm --outfile=dist/posecode-embed.esm.js"
18+
"build": "tsc -p tsconfig.json && esbuild src/auto.ts --bundle --minify --format=iife --global-name=Posecode --outfile=dist/posecode-embed.js && esbuild src/index.ts --bundle --minify --format=esm --outfile=dist/posecode-embed.esm.js"
1919
},
2020
"repository": {
2121
"type": "git",

packages/posecode-mcp/package.json

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
{
22
"name": "posecode-mcp",
3-
"version": "0.1.0",
4-
"description": "Model Context Protocol server for Posecode — let any LLM agent validate, ROM-check, and get a render link for a .posecode movement, natively.",
3+
"version": "0.1.1",
4+
"description": "Model Context Protocol server for Posecode: let any LLM agent validate, ROM-check, and get a render link for a .posecode movement, natively.",
5+
"mcpName": "io.github.posecode-dev/posecode-mcp",
56
"license": "MIT",
67
"type": "module",
78
"main": "./src/index.ts",
@@ -19,7 +20,7 @@
1920
"scripts": {
2021
"typecheck": "tsc --noEmit",
2122
"start": "tsx src/stdio.ts",
22-
"build": "esbuild src/stdio.ts --bundle --platform=node --format=esm --external:@modelcontextprotocol/sdk --external:zod --outfile=dist/posecode-mcp.mjs",
23+
"build": "tsc -p tsconfig.json && esbuild src/stdio.ts --bundle --platform=node --format=esm --external:@modelcontextprotocol/sdk --external:zod --outfile=dist/posecode-mcp.mjs",
2324
"prepublishOnly": "npm run build"
2425
},
2526
"repository": {
@@ -39,13 +40,13 @@
3940
],
4041
"dependencies": {
4142
"@modelcontextprotocol/sdk": "^1.12.0",
43+
"posecode-parser": "0.1.0",
44+
"posecode-share": "0.1.0",
4245
"zod": "^3.24.1"
4346
},
4447
"devDependencies": {
4548
"@types/node": "^22.10.2",
4649
"esbuild": "^0.24.2",
47-
"posecode-parser": "0.1.0",
48-
"posecode-share": "0.1.0",
4950
"tsx": "^4.19.2"
5051
}
5152
}

packages/posecode-mcp/server.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
{
22
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json",
33
"name": "io.github.posecode-dev/posecode-mcp",
4-
"description": "Author, ROM-validate, and render 3D human movement (.posecode) — exercises, physiotherapy, posture — with a shareable playground link.",
4+
"description": "Author, ROM-validate, and render 3D human movement (.posecode) with a shareable playground link.",
55
"repository": {
66
"url": "https://github.com/posecode-dev/posecode",
77
"source": "github"
88
},
9-
"version": "0.1.0",
9+
"version": "0.1.1",
1010
"packages": [
1111
{
1212
"registryType": "npm",
1313
"identifier": "posecode-mcp",
14-
"version": "0.1.0",
14+
"version": "0.1.1",
1515
"transport": {
1616
"type": "stdio"
1717
},

packages/posecode-parser/README.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# posecode-parser
2+
3+
Parses **`.posecode`**, a small text language for describing human movement, into
4+
a validated, range-of-motion-clamped intermediate representation (IR).
5+
6+
Part of [Posecode](https://posecode.org): a kinematic-motion protocol LLMs can
7+
write, rendered as an animated 3D figure in the browser. See the
8+
[language spec](https://posecode.org/spec.html) for the full grammar.
9+
10+
## Install
11+
12+
```bash
13+
npm install posecode-parser
14+
```
15+
16+
## Usage
17+
18+
```ts
19+
import { parse } from "posecode-parser";
20+
21+
const { ir, warnings, errors } = parse(`
22+
posecode exercise "Body-weight squat"
23+
rig humanoid
24+
pose start = standing
25+
26+
step "Descend" 1.6s ease-in-out:
27+
hips: flex 80
28+
knees: flex 95
29+
ground-lock: feet
30+
31+
repeat 8
32+
`);
33+
34+
if (errors.length === 0 && ir) {
35+
// Pass `ir` to posecode-render to animate it, or inspect it directly.
36+
}
37+
```
38+
39+
`parse()` never throws — malformed or out-of-range documents come back as
40+
structured `errors`/`warnings` instead. Every joint angle in `ir` is hard-clamped
41+
to a healthy range of motion, so a hallucinated `knee: flex 200` renders at its
42+
safe ceiling with a warning, never an anatomically impossible joint.
43+
44+
## License
45+
46+
MIT

packages/posecode-parser/package.json

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,27 @@
1111
},
1212
"dependencies": {
1313
"zod": "^3.24.1"
14-
}
14+
},
15+
"repository": {
16+
"type": "git",
17+
"url": "git+https://github.com/posecode-dev/posecode.git",
18+
"directory": "packages/posecode-parser"
19+
},
20+
"keywords": [
21+
"posecode",
22+
"kinematics",
23+
"dsl",
24+
"parser",
25+
"llm",
26+
"text-to-motion",
27+
"biomechanics"
28+
],
29+
"scripts": {
30+
"build": "tsc -p tsconfig.json",
31+
"prepublishOnly": "npm run build"
32+
},
33+
"files": [
34+
"dist",
35+
"README.md"
36+
]
1537
}

packages/posecode-render/README.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# posecode-render
2+
3+
Renders a [`posecode-parser`](https://www.npmjs.com/package/posecode-parser) IR
4+
as an animated low-poly mannequin with [Three.js](https://threejs.org):
5+
forward kinematics plus ground-lock CCD IK, live in the browser at 60fps.
6+
7+
Part of [Posecode](https://posecode.org): a kinematic-motion protocol LLMs can
8+
write, rendered as text-to-motion 3D animation.
9+
10+
## Install
11+
12+
```bash
13+
npm install posecode-render posecode-parser three
14+
```
15+
16+
## Usage
17+
18+
```ts
19+
import { parse } from "posecode-parser";
20+
import { createViewer } from "posecode-render";
21+
22+
const canvas = document.querySelector("canvas")!;
23+
const viewer = createViewer(canvas, { autoRotate: false });
24+
25+
const { ir } = parse(myPosecodeSource);
26+
if (ir) {
27+
viewer.load(ir);
28+
viewer.setLoop(true);
29+
viewer.play();
30+
}
31+
32+
viewer.onPhase(({ phaseName, cue }) => {
33+
console.log(phaseName, cue);
34+
});
35+
```
36+
37+
No GPU, no diffusion model: generation is a fraction of a cent of text, and
38+
rendering is plain forward kinematics.
39+
40+
## License
41+
42+
MIT

packages/posecode-render/package.json

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,27 @@
1717
},
1818
"devDependencies": {
1919
"@types/three": "^0.171.0"
20-
}
20+
},
21+
"repository": {
22+
"type": "git",
23+
"url": "git+https://github.com/posecode-dev/posecode.git",
24+
"directory": "packages/posecode-render"
25+
},
26+
"keywords": [
27+
"posecode",
28+
"three.js",
29+
"3d",
30+
"animation",
31+
"kinematics",
32+
"forward-kinematics",
33+
"llm"
34+
],
35+
"scripts": {
36+
"build": "tsc -p tsconfig.json",
37+
"prepublishOnly": "npm run build"
38+
},
39+
"files": [
40+
"dist",
41+
"README.md"
42+
]
2143
}

packages/posecode-share/README.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# posecode-share
2+
3+
Encodes and decodes `.posecode` documents to URL-safe share tokens: the
4+
distribution primitive behind [Posecode](https://posecode.org) playground
5+
permalinks and embeds. Pure, dependency-free.
6+
7+
## Install
8+
9+
```bash
10+
npm install posecode-share
11+
```
12+
13+
## Usage
14+
15+
```ts
16+
import { buildShareHash, readShareHash } from "posecode-share";
17+
18+
const hash = buildShareHash(myPosecodeSource); // "#doc=…"
19+
const link = `https://posecode.org/play${hash}`;
20+
21+
// On the receiving page:
22+
const source = readShareHash(window.location.hash);
23+
```
24+
25+
## License
26+
27+
MIT
Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,32 @@
11
{
22
"name": "posecode-share",
33
"version": "0.1.0",
4-
"description": "Encode/decode .posecode documents to URL-safe share tokens the distribution primitive for Posecode permalinks and embeds.",
4+
"description": "Encode/decode .posecode documents to URL-safe share tokens \u2014 the distribution primitive for Posecode permalinks and embeds.",
55
"license": "MIT",
66
"type": "module",
77
"main": "./src/index.ts",
88
"types": "./src/index.ts",
99
"exports": {
1010
".": "./src/index.ts"
11-
}
11+
},
12+
"repository": {
13+
"type": "git",
14+
"url": "git+https://github.com/posecode-dev/posecode.git",
15+
"directory": "packages/posecode-share"
16+
},
17+
"keywords": [
18+
"posecode",
19+
"share",
20+
"url-encoding",
21+
"permalink",
22+
"kinematics"
23+
],
24+
"scripts": {
25+
"build": "tsc -p tsconfig.json",
26+
"prepublishOnly": "npm run build"
27+
},
28+
"files": [
29+
"dist",
30+
"README.md"
31+
]
1232
}

0 commit comments

Comments
 (0)