# Contributing to Context Please

Thank you for your interest in contributing to Context Please! This guide will help you get started.

> **Note:** This is a fork of [claude-context](https://github.com/zilliztech/claude-context) by Zilliz. For contributions to the original project, please visit their repository.

## 🚀 Getting Started

### Prerequisites

- Node.js >= 20.0.0 and < 24.0.0
- pnpm >= 10.0.0
- Git

### Development Setup

1. **Fork and Clone**

   ```bash
   git clone https://github.com/your-username/context-please.git
   cd context-please
   ```

2. **Platform-Specific Setup**

   **Windows Users:**

   ```powershell
   # Configure git line endings (recommended)
   git config core.autocrlf false

   # Ensure pnpm is installed
   npm install -g pnpm
   ```

   **Linux/macOS Users:**

   ```bash
   # Standard setup - no additional configuration needed
   ```

3. **Install Dependencies**

   ```bash
   pnpm install
   ```

4. **Build All Packages**

   ```bash
   pnpm build
   ```

5. **Start Development Mode**

   ```bash
   pnpm dev
   ```

## 📁 Project Structure

```
claude-context/
├── packages/
│   ├── core/              # Core indexing engine
│   ├── vscode-extension/  # VSCode extension
│   └── mcp/              # Model Context Protocol server
├── examples/
│   └── basic-usage/      # Basic usage example 
```

### Package-Specific Development

Each package has its own development guide with specific instructions:

- **[Core Package](packages/core/CONTRIBUTING.md)** - Develop the core indexing engine
- **[VSCode Extension](packages/vscode-extension/CONTRIBUTING.md)** - Develop the VSCode extension
- **[MCP Server](packages/mcp/CONTRIBUTING.md)** - Develop the MCP protocol server

## 🛠️ Development Workflow

### Building All Packages

```bash
# Build all packages
pnpm build

# Clean and rebuild
pnpm clean && pnpm build

# Development mode (watch all packages)
pnpm dev
```

### Package-Specific Development

For detailed development instructions for each package, see:

- [Core Package Development](packages/core/CONTRIBUTING.md)
- [VSCode Extension Development](packages/vscode-extension/CONTRIBUTING.md)
- [MCP Server Development](packages/mcp/CONTRIBUTING.md)

## 📝 Making Changes

### Commit Guidelines

We follow conventional commit format:

```
type(scope): description

feat(core): add new embedding provider
fix(vscode): resolve search result display issue
docs(readme): update installation instructions
refactor(mcp): improve error handling
```

**Types**: `feat`, `fix`, `docs`, `refactor`, `perf`, `chore`

**Scopes**: `core`, `vscode`, `mcp`, `examples`, `docs`

### Pull Request Process

1. **Create Feature Branch**

   ```bash
   git checkout -b feature/your-feature-name
   ```

2. **Make Your Changes**
   - Keep changes focused and atomic
   - Update documentation if needed

3. **Build and Verify**

   ```bash
   pnpm build
   ```

4. **Commit Your Changes**

   ```bash
   git add .
   git commit -m "feat(core): add your feature description"
   ```

5. **Push and Create PR**

   ```bash
   git push origin feature/your-feature-name
   ```

## 🎯 Contribution Areas

### Priority Areas

- **Core Engine**: Improve indexing performance and accuracy
- **Embedding Providers**: Add support for more embedding services
- **Vector Databases**: Extend database integration options
- **Documentation**: Improve examples and guides
- **Bug Fixes**: Fix reported issues

### Ideas for Contribution

- Add support for new programming languages
- Improve code chunking strategies
- Enhance search result ranking
- Add configuration options
- Create more usage examples

## 📋 Reporting Issues

When reporting bugs or requesting features:

1. **Check Existing Issues**: Search for similar issues first
2. **Use Templates**: Follow the issue templates when available
3. **Provide Context**: Include relevant details about your environment
4. **Steps to Reproduce**: Clear steps for reproducing bugs

## 💬 Getting Help

- **GitHub Issues**: For bugs and feature requests
- **GitHub Discussions**: For questions and general discussion

## 📄 License

By contributing to Claude Context, you agree that your contributions will be licensed under the MIT License.

---

Thank you for contributing to Claude Context! 🎉
