Thank you for your interest in contributing! This guide will help you get started.
- Fork and clone the repository
- Install dependencies:
npm install
- Build the extension:
npm run build
- Press
F5in VS Code to launch the Extension Development Host
| Command | Description |
|---|---|
npm run build |
Bundle the extension with esbuild |
npm run watch |
Rebuild on file changes |
npm run lint |
Type-check with TypeScript (no emit) |
npm test |
Run unit tests with Vitest |
npm run test:watch |
Run tests in watch mode |
├── src/ # TypeScript source
│ ├── extension.ts # Extension entry point
│ ├── webviewProvider.ts # Webview sidebar provider
│ ├── editorPanel.ts # Editor tab panels
│ ├── graphqlExecutor.ts # Query execution engine
│ ├── schemaIntrospector.ts # Schema introspection
│ ├── schemaDiffer.ts # Schema diff & impact analysis
│ ├── queryHealer.ts # Auto-heal broken queries
│ ├── queryCostCalculator.ts # Query cost estimation
│ ├── querySecurityAnalyzer.ts # Security analysis
│ ├── sdlParser.ts # SDL / JSON schema parser
│ ├── responseDiffer.ts # Cross-environment response diffing
│ ├── performanceTracker.ts # Performance anomaly detection
│ ├── nlToGraphql.ts # Natural language to GraphQL
│ ├── serviceDetector.ts # GraphQL service auto-detection
│ ├── storage.ts # Workspace-scoped persistence
│ └── types.ts # Shared type definitions
├── media/ # Webview HTML, CSS, JS
├── resources/ # Extension icons
├── dist/ # Bundled output (gitignored)
├── package.json # Extension manifest
├── tsconfig.json # TypeScript config
└── esbuild.js # Build script
The extension follows VS Code's webview extension pattern:
- Extension Host (
src/): Runs in Node.js. Handles storage, schema introspection, query execution, and all business logic. - Webview (
media/): Runs in a sandboxed iframe. Plain HTML/CSS/JS UI that communicates with the extension host viapostMessage. - Communication: The webview sends typed messages (
WebviewMessage) to the extension host, which replies withExtensionMessageresponses.
- Create a feature branch from
main - Make your changes
- Ensure
npm run lintandnpm testpass - Submit a pull request with a clear description of the change
- Keep PRs focused — one feature or fix per PR
- Add tests for new pure-logic modules
- Update
CHANGELOG.mdif adding user-facing changes - Follow existing code style (TypeScript strict mode, no
anywhere avoidable)
Use GitHub Issues to report bugs or request features. Please include:
- VS Code version
- Extension version
- Steps to reproduce (for bugs)
- Expected vs actual behavior