This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.
When you submit a pull request, a CLA bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.
This repository accepts pull requests, but not every type of change should start as a pull request.
Small, scoped pull requests are generally welcome without prior discussion when they:
- Fix a clear bug
- Correct typos, broken links, or other documentation issues
- Add or improve tests for existing behavior
- Make low-risk maintenance changes that do not change product direction, architecture, or user experience
These changes should still be focused, easy to review, and aligned with the existing codebase.
Please do not open a pull request first for changes such as:
- New features or user-visible capabilities
- Large refactors or architectural changes
- Changes to public behavior, workflows, or UI patterns
- Significant dependency changes
- Broad performance, telemetry, or security-related changes that affect product direction
These kinds of changes need review and guidance from the Microsoft team responsible for the product roadmap and design direction.
If you want to propose a new feature or substantial change, start a GitHub Discussion in the Ideas category instead of opening a pull request immediately.
Your proposal should briefly cover:
- The problem you are trying to solve
- Why the current behavior is insufficient
- The user impact and expected benefit
- A rough implementation approach, if relevant
- Alternatives you considered
When you believe the discussion is ready for formal consideration, add the design review label. That label means a design review is requested. It does not mean the proposal has been approved.
The team may:
- Approve the proposal
- Decline the proposal
- Request changes to the scope or design
- Meet with the author to refine the design
- Decide to implement it internally
- Mark it as open for a community contribution
When a design is under review a corresponding issue will be opened for it that will track the proposal's progress. The issue may also revise the proposal or add detail for implementation.
Only after that process has resulted in an "open for contribution" status, should a pull request be opened.
- Fork the repository.
- If the change is more than a small bug fix or documentation update, open a GitHub Discussion in
Ideasfirst and wait for guidance. - If you are proposing a larger change, use the
design reviewlabel when you are requesting formal design consideration. - If the design is accepted, wait for a member of the Microsoft design team to create the corresponding GitHub Issue for implementation tracking.
- Create a branch for the approved or clearly scoped change.
- Make the smallest change that fully addresses the issue.
- Run relevant tests and ensure the build passes.
- Update documentation when behavior or workflows change.
- Submit a pull request with a clear description of the problem, approach, and validation.
If a pull request arrives without prior discussion for a change that needs design or roadmap approval, it may be closed and redirected to Discussions.
For a component-level overview of how the extension works — the client/server split, the LSP +
custom kusto/* RPC seam, how a query runs end-to-end, and the design intent behind the
structure — see ARCHITECTURE.md.
| Path | Description |
|---|---|
KustoExplorerVscode.slnx |
Visual Studio solution for the entire extension |
src/Client |
TypeScript VS Code extension (UI, LSP client, extension features) |
src/Server |
C# LSP server (Kusto parser integration, code services) |
src/ServerTests |
C# tests for the server |
The Client is written in TypeScript and contains the VS Code extension code, including the UI components, LSP client and other extension features that are not dependent on the Kusto parser library.
The Server is written in C# to interact with the .NET version of the Kusto parser library for better typing performance. It primarily contains LSP handlers and redirects requests to the parser library's code services.
- .NET 10 SDK
- Node.js (LTS version recommended)
- Visual Studio Code
cd src/Server
dotnet buildcd src/Client
npm install
npm run compile- Open the repository in VS Code
- Select the Run Extension debug profile
- Press
F5to build the client, build the debug server, and launch the Extension Development Host - Open a
.kqlfile to activate the extension
- Open the repository root folder in VS Code
- Select the Run Extension debug profile
- Press F5 to build the client, build the debug server, and launch the Extension Development Host with debugging enabled
- Launch the extension in debug mode (above) — the server starts automatically
- Attach to the server process:
- Visual Studio — open
KustoExplorerVscode.slnxand attach to thedotnet.exeprocess for the extension - VS Code — from the repo root, run
Debug: Attach to a .NET 5+ or .NET Core process(Ctrl+Shift+P) and select theServerprocess
- Visual Studio — open
# Requires vsce: npm install -g @vscode/vsce
cd src/Client
npm run packageThis will create a .vsix file that can be installed in VS Code.
code --install-extension <vsix-file> [--force]
code --uninstall-extension ms-kusto.kusto-explorer-vscodePlease use GitHub Issues to report bugs or request features.
When reporting a bug, please include:
- VS Code version
- Extension version
- Steps to reproduce
- Expected vs actual behavior
- Any relevant error messages from the Output panel (Kusto channel)
- Keep changes focused and atomic
- Follow existing code style and conventions
- Update documentation if needed
- Ensure the build passes before submitting
- Link the relevant GitHub Discussion when prior approval was required