Thank you for your interest in contributing to the Numix VS Code Theme! This document provides guidelines and instructions for contributing.
- Code of Conduct
- Getting Started
- Development Setup
- Making Changes
- Submitting Changes
- Style Guidelines
- Accessibility Requirements
- Communication
This project follows the Numix Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to the project maintainers.
- Node.js 22.x or later
- npm 10.x or later
- Git
- VS Code 1.60 or later (for testing)
numix-vscode-theme/
├── numix-theme.json # Theme definition (colors, token colors)
├── package.json # Extension manifest
├── LICENSE # GPL-3.0 license
├── CHANGELOG.md # Change history
├── CONTRIBUTING.md # This file
├── README.md # Project documentation
├── Makefile # Build automation
├── dev.sh # Development script
├── .nvmrc # Node.js version
├── .gitignore # Git ignore rules
├── .github/
│ └── workflows/
│ ├── ci.yml # CI pipeline
│ └── release.yml # Release pipeline
└── .vscode/
├── extensions.json # Recommended extensions
├── settings.json # Editor settings
├── launch.json # Debug configurations
└── tasks.json # VS Code tasks
- Go to numix-vscode-theme
- Click the "Fork" button in the top-right corner
- Clone your fork:
git clone https://github.com/YOUR-USERNAME/numix-vscode-theme.git
cd numix-vscode-theme# Using nvm (recommended)
nvm install 22
nvm use 22
# Install development dependencies
npm install -g @vscode/vsce
# Verify installation
vsce --version# Create and switch to a new branch
git checkout -b feature/your-feature-name
# Or for bug fixes
git checkout -b fix/your-bug-descriptionThe theme is defined in numix-theme.json. The file contains:
- Colors section - UI element colors (editor background, syntax highlighting, etc.)
- Token colors - Syntax highlighting rules
- Semantic token colors - Modern semantic highlighting
- Use WCAG AA compliant colors (minimum 4.5:1 contrast ratio)
- For dark backgrounds, use lighter foreground colors
- Follow the Numix color palette when possible
- Test colors for color blindness compatibility
{
"name": "New Feature Color",
"scope": ["entity.name.feature"],
"settings": {
"foreground": "#81c784",
"fontStyle": "italic"
}
}- Validate locally:
# Using npm
npm run validate
# Using Make
make validate
# Using dev.sh
./dev.sh validate- Test in VS Code:
# Press F5 to open Extension Development Host
# Or manually:
code --install-extension numix-vscode-theme-0.1.0.vsix- Run tests:
make test# Package the extension
npm run package
# Or use Make
make package
# Or use dev.sh
./dev.sh packageWrite clear, descriptive commit messages:
feat(theme): Add new syntax highlighting for Rust
- Added support for Rust lifetime annotations
- Updated semantic tokens for better type recognition
- Fixed contrast ratio for error messages (WCAG AA compliant)
Closes #123
git push origin feature/your-feature-name- Go to the original repository
- Click "New Pull Request"
- Select your fork and branch
- Fill in the PR template
- Submit the PR
- One focus per PR: Keep changes small and focused
- Include tests: Add or update tests for new features
- Update documentation: Update README, CHANGELOG, or add inline comments
- Pass CI: Ensure all checks pass before requesting review
- Describe changes: Explain what you changed and why
- Use 2 spaces for indentation
- Use semicolons in JavaScript
- Follow JSON formatting standards
- Use lowercase hex colors:
#2a2a2anot#2A2A2A - Group related colors together
- Use comments to explain color choices
- Maintain consistent saturation/brightness levels
- Use descriptive names:
editor.selectionBackgroundnotselBg - Follow VS Code color naming patterns
- Use consistent casing: camelCase for keys, Title Case for names
Follow TextMate scope naming:
source.js- JavaScript sourceentity.name.function- Function nameskeyword.control- Control keywordsstorage.type- Type declarations
All contributions must maintain accessibility standards:
| Text Type | Minimum Ratio |
|---|---|
| Normal text | 4.5:1 (AA) |
| Large text | 3:1 (AA) |
| UI components | 3:1 (AA) |
- Contrast checker: Use WebAIM Contrast Checker
- Color blindness: Test with Coblis
- Keyboard navigation: Ensure focus states are visible
- Avoid red/green alone for status (use icons + color)
- Ensure 25%+ luminance difference between similar colors
- Use blue for critical information (universally visible)
- Test with deuteranopia, protanopia, and tritanopia simulations
- Use GitHub Issues for:
- Bug reports
- Feature requests
- Accessibility concerns
- Questions about the theme
- Use GitHub Discussions for:
- Questions
- Ideas and brainstorming
- Show and tell (share your configs)
For security vulnerabilities, please email maintainers directly instead of opening public issues.
Contributors will be recognized in:
- CHANGELOG.md
- GitHub release notes
- Project README (for significant contributions)
Your contributions help make the Numix VS Code Theme better for everyone. We appreciate your time and effort!
Questions? Open an issue or start a discussion.