"Guide Wren core engine, wren_core Python bindings, Rust and PyO3
Scanned 9/9/2026
Install to Claude Code
npx -y skills add VectorSpaceLab/AREX-Skill --skill engine-development --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Engine Development?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/vectorspacelab-engine-development)More formats (shields.io, HTML) on the badges page.
---
name: engine-development
description: "Guide Wren core engine, wren_core Python bindings, Rust and PyO3
development, WASM maintenance, module test selection, validation boundaries,
and WrenAI contribution policy."
disable-model-invocation: true
metadata:
disco-role: operating
license: NOASSERTION
---
# Wren Engine Development
Use this sub-skill for repository maintenance, `wren_core` APIs, Rust semantic
engine changes, PyO3 binding work, WebAssembly builds, module-specific tests, or
contribution-policy questions.
## First Decision: User Workflow or Repository Change?
- For an installed-package query/project task, route to `cli-projects` or
`query-engine` rather than compiling the repository.
- For a checkout change, identify the owning module before choosing commands:
- the Python CLI/SDK package;
- the Rust semantic core;
- the shared manifest-data-model crate;
- the Python/PyO3 binding; or
- the browser/WASM package.
Inspect the checkout's package or Cargo metadata to confirm the module before
editing; this skill does not require a fixed source-tree layout.
## Core Python Binding
`wren_core.SessionContext` supports a no-MDL construction path and a
manifest-backed path. Its public methods include `transform_sql`, `query`,
`dry_run`, `register_csv`, `register_parquet`, `load_mdl`, `list_tables`,
`get_available_functions`, and `pushdown_limit`.
For physical-file workflows, register files and then load the MDL that refers
to them. Do not overlap `load_mdl` with other calls on the same context.
## Module Commands
Use module-local instructions for actual development. Typical commands are:
```bash
# Rust core
cargo check --all-targets
RUST_MIN_STACK=8388608 cargo test --lib --tests --bins
# Python binding
just install
just develop
just test-py
# Browser package
just build
just test
just typecheck
```
Only run builds/tests that match the edited module and environment. Rust/WASM
builds are not package-user smoke checks.
## Contribution Rules
Reproduce the behavior before claiming a fix. Classify a change honestly,
exercise code with real assertions, respect documented decisions, avoid duplicate
work, and keep the branch current. Place validation at an actual input boundary;
do not add defensive type checks after the core has already validated a manifest.
## References and Helper
- Read `references/python-binding.md` for `SessionContext` lifecycle and APIs.
- Read `references/rust-core.md` for Rust architecture and limitations.
- Read `references/wasm-maintenance.md` for browser-package build constraints.
- Read `references/repo-development.md` for module ownership, test selection,
and contribution policy.
- Read `references/troubleshooting.md` for ABI, build, concurrency, and test
issues.
- Run `scripts/inspect_wren_core.py` for safe binding capability inspection.
## Route Elsewhere
- CLI project and MDL user workflows: `../cli-projects/SKILL.md`.
- Query API and connector behavior: `../query-engine/SKILL.md`.
- Browser runtime consumption or GenBI/MCP operation: `../genbi-mcp-wasm/SKILL.md`.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!