# Contributing to Solana Agent Kit

First off, thank you for considering contributing to Solana Agent Kit! 🎉 Your contributions are **greatly appreciated**.

## Table of Contents

- [Contributing to Solana Agent Kit](#contributing-to-solana-agent-kit)
  - [Table of Contents](#table-of-contents)
  - [Code of Conduct](#code-of-conduct)
  - [How Can I Contribute?](#how-can-i-contribute)
    - [Reporting Bugs](#reporting-bugs)
    - [Suggesting Enhancements](#suggesting-enhancements)
    - [Your First Code Contribution](#your-first-code-contribution)
    - [Pull Requests](#pull-requests)
  - [Style Guides](#style-guides)
    - [Code Style](#code-style)
    - [Commit Messages](#commit-messages)
    - [Naming Conventions](#naming-conventions)
  - [Development Setup](#development-setup)
    - [Prerequisites](#prerequisites)
    - [Installation](#installation)
    - [Building the Project](#building-the-project)
    - [Running Tests](#running-tests)
    - [Generating Documentation](#generating-documentation)
  - [Security](#security)
  - [License](#license)

## Code of Conduct

This project adheres to the [Contributor Covenant Code of Conduct](https://www.contributor-covenant.org/version/2/0/code_of_conduct/). By participating, you are expected to uphold this code. Please report unacceptable behavior to [aryan@sendai.fun](mailto:aryan@sendai.fun).

## How Can I Contribute?

### Reporting Bugs

**Great**! Opening an issue is the best way to help us improve. Here's how you can report a bug:

1. **Search** the [existing issues](https://github.com/sendaifun/solana-agent-kit/issues) to make sure it hasn't been reported.
2. **Open a new issue** and fill out the template with as much information as possible.
3. **Provide reproduction steps** if applicable.

### Suggesting Enhancements

We welcome your ideas for improving Solana Agent Kit! To suggest an enhancement:

1. **Search** the [existing issues](https://github.com/sendaifun/solana-agent-kit/issues) to see if it's already been suggested.
2. **Open a new issue** and describe your idea in detail.

### Your First Code Contribution

Unsure where to start? You can help out by:

- Fixing simple bugs.
- Improving documentation.
- Adding tests.

Check the [Good First Issues](https://github.com/sendaifun/solana-agent-kit/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) to get started!

### Pull Requests

1. **Fork** the repository.
2. **Create** a new branch for your feature or bugfix.
   ```bash
   git checkout -b feature/your-feature-name
   ```
3. **Commit** your changes with clear and descriptive messages.
4. **Push** to your fork.
   ```bash
   git push origin feature/your-feature-name
   ```
5. **Open a Pull Request** against the `main` branch of this repository.

## Style Guides

### Code Style

- **Language**: TypeScript
- **Formatting**: Follow the existing codebase formatting. Consider using [Prettier](https://prettier.io/) for consistent code formatting.
- **Code Quality**: Adhere to the code quality rules defined in `.eslintrc`. Ensure all checks pass before submitting a PR.

### Commit Messages

Use [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) for your commit messages. Examples:

- `feat: add ability to deploy new SPL token`
- `fix: handle edge case when deploying collection`
- `docs: update README with new usage examples`

### Naming Conventions

- **Variables and Functions**: `camelCase`
- **Classes and Types**: `PascalCase`
- **Constants**: `UPPER_SNAKE_CASE`

## Development Setup

### Prerequisites

- **Node.js**: v23.x or higher
- **npm**: v10.x or higher
- **Git**: Installed and configured

### Installation

1. **Clone** the repository:
   ```bash
   git clone https://github.com/yourusername/solana-agent-kit.git
   ```
2. **Navigate** to the project directory:
   ```bash
   cd solana-agent-kit
   ```
3. **Install** dependencies:
   ```bash
   pnpm install
   ```

### Building the Project

To compile the TypeScript code:

```bash
pnpm run build
```

### Running Tests

To execute the test suite:

```bash
pnpm run test
```

### Generating Documentation

To generate the project documentation using TypeDoc:

```bash
npm run docs
```

The documentation will be available in the `docs/` directory.

## Security

This toolkit handles sensitive information such as private keys and API keys. **Ensure you never commit `.env` files or any sensitive data**. Review the `.gitignore` to confirm that sensitive files are excluded.

For security vulnerabilities, please follow the [responsible disclosure](mailto:aryan@sendai.fun) process.

## License

This project is licensed under the [ISC License](LICENSE).

---
