UI はローカライズ済みです。スキルの紹介と説明文書は選択した言語へ AI が自動翻訳し、コード・コマンド・パス・専門用語は原文のままです。原作者の文書が優先されます。
スキルを探す
開発・技術 · SKILL.md

engine-development

engine-development

Guide Wren core engine, wren_core Python bindings, Rust and PyO3 development, WASM maintenance, module test selection, validation boundaries, and WrenAI contribution policy.

Independent GitHub snapshot · Automated classification · Original documentation governs

スキルの説明

GitHub

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:

# 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.
保存したスキル