build-extension
SKILL.md
Build VSCode Extensions
This repo has two VSCode extension components:
| Component | Location | What it is |
|---|---|---|
| dart_node_vsix | packages/dart_node_vsix/ |
The SDK package — Dart bindings for the VSCode extension API (commands, tree views, webviews, status bar, etc.) |
| too_many_cooks | examples/too_many_cooks_vscode_extension/ |
A concrete extension built with that SDK — multi-agent coordination UI |
too-many-cooks extension
Full build (MCP server + extension + .vsix package):
bash examples/too_many_cooks_vscode_extension/build.sh
This does:
- Compiles MCP server:
dart compile js→add_preamble.dart→server_node.js - Compiles extension:
dart compile js→wrap-extension.jsbridge →out/lib/extension.js - Packages:
vsce package→.vsixfile
Test (runs Mocha tests under a real VSCode instance):
cd examples/too_many_cooks_vscode_extension && npm run pretest && npm test
On headless Linux, prefix with xvfb-run -a.
Install into VSCode:
code --install-extension examples/too_many_cooks_vscode_extension/*.vsix
dart_node_vsix SDK package
Test the SDK (Dart tests compiled to JS, run in VSCode):
cd packages/dart_node_vsix && npm install && npm run compile && npm test
What it provides — Dart bindings for:
commands,window,workspace,statusBarTreeView,Webview,OutputChannelExtensionContext,DisposableMochatest API bindings- JS interop helpers (
Promise,EventEmitter)
Architecture
Both use the same pattern: Dart → dart compile js → wrapper script → VSCode-compatible JS module.
The wrapper scripts (scripts/wrap-extension.js, scripts/wrap-tests.js) bridge dart2js output to VSCode's CommonJS require/module.exports system and inject polyfills (navigator, self) needed by dart2js async scheduling.