Framesmith is an engine-agnostic fighting game character authoring tool. It manages portable character data on disk (JSON) and exports runtime-specific formats.
json-blob, zx-fspack)A Framesmith project is a directory with this shape:
my-game/
framesmith.rules.json
characters/
test_char/
character.json
cancel_table.json
states/
5L.json
236P.json
rules.json # Optional per-character overrides
This repository root is also a valid project because it includes framesmith.rules.json and characters/.
npm install
npm run tauri dev
# Frontend + app shell
npm run dev
npm run tauri dev
npm run tauri build
# TypeScript checks/tests
npm run check
npm run test:run
# Runtime WASM package
npm run wasm:build
npm run wasm:build:dev
# Rust backend checks/tests
cd src-tauri
cargo test
cargo clippy --all-targets
cd src-tauri
cargo run --bin mcp -- --characters-dir ../characters
See docs/mcp-server.md for tools, resources, and integration details.
cd src-tauri
cargo run --bin framesmith -- export --project .. --all --out-dir ../exports
See docs/cli.md for full CLI reference.
docs/README.md: documentation index and routing guidedocs/data-formats.md: on-disk JSON schema and layoutdocs/rules-spec.md: rules semantics and validation behaviordocs/zx-fspack.md: binary pack format referencedocs/runtime-guide.md: runtime integration guidedocs/runtime-api.md: runtime API detailsdocs/mcp-server.md: MCP server setup and tool listdocs/global-states.md: global state authoring and behaviordocs/character-authoring-guide.md: practical authoring workflowAGENTS.md: contributor and code-map referenceCLAUDE.md: repo constraints and invariantsframesmith/
src/ # SvelteKit UI
src-tauri/ # Rust app backend, MCP server, CLI
crates/ # Runtime and FSPK library crates
characters/ # Local project data samples
docs/ # Design and reference docs