Thank you for your interest in contributing to Chat Customizations Evaluations! This guide will help you get started.
# Clone the repository
git clone https://github.com/microsoft/vscode-chat-customizations-evaluation.git
cd vscode-chat-customizations-evaluation
# Install dependencies (also installs client dependencies)
npm install
# Build everything
npm run build
# Run tests
npm testchat-customizations-evaluations/
├── src/ # Language server source
│ ├── server.ts # Server entry point
│ ├── types.ts # Shared type definitions
│ ├── analyzers/
│ │ └── llm.ts # LLM-powered semantic analysis
│ └── __tests__/ # Unit tests
├── client/ # VS Code extension client
│ ├── src/extension.ts # Extension entry point
│ └── package.json # Extension manifest & configuration
└── vitest.config.ts # Test configuration
- Make changes to the server (
src/) or client (client/src/) - Build with
npm run build - Test with
npm test - Debug in VS Code by pressing
F5(launches Extension Development Host)
- Open the project in VS Code
- Press
F5to launch the Extension Development Host - In the new VS Code window, open any
.prompt.md,.system.md, or.agent.mdfile - Diagnostics will appear automatically
For faster iteration, use watch mode in separate terminals:
# Terminal 1: Watch server changes
npm run watch
# Terminal 2: Watch client changes
cd client && npm run watchTests live in src/__tests__/ and use Vitest.
# Run all tests
npm test
# Run tests in watch mode
npx vitestWhen adding new analyzers or modifying existing ones, add corresponding tests that:
- Test both positive cases (issue detected) and negative cases (no false positives)
- Verify correct severity levels
- Check that suggestions are provided where applicable
- Validate correct range/position information
- Add your analysis method to
src/analyzers/static.ts(for static checks) orsrc/analyzers/llm.ts(for LLM-powered analysis) - Call your method from the
analyze()function - Add tests in
src/__tests__/ - Document the new diagnostic code in
docs/SPEC.md
- TypeScript strict mode is enabled
- Use descriptive variable and function names
- Add JSDoc comments for public APIs
- Keep analyzer methods focused on a single concern
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-feature) - Make your changes with tests
- Ensure
npm run build && npm testpasses - Submit a pull request
When reporting bugs, please include:
- The prompt file content that triggers the issue
- Expected vs actual behavior
- Your VS Code and Node.js versions