EngineHall for VS Code
Where hardware gets built, checked and released, together. EngineHall is a Newmatik product.
This is the optional VS Code and Cursor UI for EngineHall, packaged as
newmatik.enginehall for the VS Marketplace and Open VSX. The viewer and tracker work on their own;
the whole-project consistency review also needs the Python engine (enginehall command) on the
extension host's PATH.
This extension replaces newmatik.pcba-studio. Install newmatik.enginehall and uninstall the
old one; nothing in your projects has to change.
- Settings move from
pcbastudio.* to enginehall.*. A pcbastudio.* value you set is still read
while the matching enginehall.* key is unset (in any scope), so existing configurations keep
working. VS Code marks the old keys as deprecated; move them when convenient.
- Commands are now
enginehall.* and appear under the EngineHall category. Update any
keybindings that named a pcbastudio.* command.
- The engine command is
enginehall. If it is not installed and you have not set
enginehall.engine.executable, the review falls back to the older pcba command.
- The extension's MCP server registers as
enginehall-extension (formerly pcba-studio); its
schdoc_* and tracker_* tools are unchanged. Run EngineHall: Set up MCP server for AI chat
once: it replaces the entry the old extension wrote and leaves entries you wrote by hand alone.
- On-disk names stay as they are: the tracker lock
project/tracker/.pcba-studio.lock (old and new
extensions serialize on it), generated-section markers in tracker files, the engine config
pcba-studio.toml, and the JSON model's $schema altium-schdoc-viewer/v1.
Features
Hardware/firmware review
Run EngineHall: Run Hardware/Firmware Review from the Command Palette or the action on an open
.SchDoc. The extension executes the deterministic engine locally and publishes its findings to
the Problems panel. The status bar shows the active finding count; the completion message also
reports suppressed findings and skipped checks.

Settings:
enginehall.engine.executable: engine command, default enginehall (falls back to pcba when
left at the default and enginehall is not found).
enginehall.engine.target: optional target from pcba-studio.toml.
enginehall.engine.baseline: optional baseline path relative to the workspace.
Install the engine with python -m pip install enginehall, or python -m pip install -e ".[dev]"
in a source checkout.
Altium schematic viewer
Open binary .SchDoc and .SchDot files without Altium. The custom editor provides component, pin,
and net tables; a geometric heuristic netlist; an SVG preview; and grouped BOM CSV, Protel netlist,
and versioned JSON exports. The viewer is useful for inspection, not an ERC or sign-off tool. Engine
review findings always use the Python extractor, not this heuristic netlist.

Markdown project tracker
EngineHall: Initialize project tracking creates project/tracker/. Central registers hold open
and closed actions, questions, and decisions; meeting notes are immutable narratives that reference
their IDs. Six sidebar views, live lint diagnostics, quick fixes, and guided commands cover the
normal workflow.

Every mutation holds a cross-process project lock and replaces files atomically. IDs are allocated
as max+1 per prefix across the corpus, touched front matter gets a revision bump, and historical
meeting notes are never rewritten. The agent contract is skills/enginehall-tracker/SKILL.md at the
repository root.
EngineHall: Import project into the workspace copies a tracker project into an EngineHall
workspace project after a dry run. It reads enginehall.workspace.url and
enginehall.workspace.anonKey (or the former pcbastudio.workspace.* values) and asks for them
when they are empty.
MCP server
dist/mcp-server.js is a zero-SDK stdio server for single-sheet and tracker operations. Use
EngineHall: Set up MCP server for AI chat to register it and EngineHall: Test MCP server to
check the handshake.
It is separate from the engine's MCP server, which reviews whole projects.
- Eleven
schdoc_* tools read summaries, title blocks, components, pins, nets, BOMs, searches,
netlists, and the JSON model. Parsed sheets are cached by path and modification time.
- Thirteen
tracker_* tools inspect, search, lint, format, initialize, and mutate tracker data. All
mutation tools enforce the same locking and format invariants as the UI.
Development
Requirements: Node 20, 22, or 24.
npm ci
npm run build # dist/extension.js, dist/webview.js, dist/mcp-server.js
npm test # typecheck, bundle, Vitest
npm run package # enginehall-<version>.vsix
Open this directory in VS Code and press F5 to launch the Extension Development Host. Schematic
tests use the generated board under ../fixtures/synthetic/; real sheets belong only in the
gitignored test/fixtures/local/ directory.
The Python and TypeScript record decoders share
../fixtures/conformance/schdoc-record-streams.json, and both parsers select placed pins of
multi-part symbols by ../fixtures/conformance/schdoc-placed-pins.json. Update the corpus and both
implementations in the same change when record-stream or placed-pin behavior changes.
Releases
From the repository root, python tools/release.py runs both test suites, builds the Python wheel
and sdist plus the VSIX, and verifies both MCP handshakes. The manual GitHub release workflow uploads
those artifacts. scripts/publish.sh publishes the VSIX named in package.json with publisher
tokens; authenticated publisher web sessions can upload that same checked VSIX directly.
legacy/README.md holds the notice and the steps for the final newmatik.pcba-studio release,
which points existing users here. It is not part of this package.
Proprietary software, © 2026 Newmatik GmbH. See the license.