Contributing Guide
Thank you for your interest in contributing to Uniswap AI! This guide will help you get started.
Prerequisites
- Node.js 22.x or later
- npm 11.7.0 or later
- Git
- Familiarity with TypeScript and Nx
Getting Started
1. Fork and Clone
bash
# Fork the repository on GitHub, then clone
git clone https://github.com/YOUR_USERNAME/uniswap-ai.git
cd uniswap-ai2. Install Dependencies
bash
# Ensure you have the correct npm version
npm install -g npm@11.7.0
# Install dependencies
npm install3. Verify Setup
bash
# Run tests
npx nx run-many --target=test
# Build all packages
npx nx run-many --target=build
# Start docs dev server
npm run docs:devDevelopment Workflow
Creating Changes
Create a branch from
main:bashgit checkout -b feature/your-feature-nameMake your changes following the code guidelines
Test your changes:
bash# Run affected tests npx nx affected --target=test # Run affected linting npx nx affected --target=lint # Check formatting npx nx format:checkCommit using conventional commits:
bashgit commit -m "feat(hooks): add new feature"
Pull Request Process
- Push your branch and create a PR
- Ensure all CI checks pass
- Request review from maintainers
- Address any feedback
- Once approved, the PR will be merged
Code Guidelines
TypeScript
- Use strict TypeScript (
strict: true) - Never use
any- preferunknownwith type guards - Use explicit types at function boundaries
- Prefer union types over enums
Nx Usage
- All packages must be Nx projects
- Use Nx commands for build, test, lint
- Leverage Nx caching and affected detection
Documentation
After making changes:
- Update relevant CLAUDE.md files
- Update README.md if needed
- Add/update documentation in
docs/ - Run
npm exec markdownlint-cli2 -- --fix "**/*.md"
Creating New Packages
New Plugin
bash
# Plugins go in packages/plugins/
mkdir -p packages/plugins/my-pluginEach plugin needs:
package.jsonwith plugin metadataproject.jsonfor Nx configuration.claude-plugin/plugin.jsonmanifestREADME.mddocumentation
New Skill
Skills are defined in packages/plugins/*/skills/:
bash
mkdir -p packages/plugins/uniswap-hooks/skills/my-skillEach skill needs:
SKILL.md- The skill definition- Corresponding eval suite in
evals/suites/
Eval Requirements
All new skills must have corresponding evaluation suites:
bash
# Create eval suite for new skill
mkdir -p evals/suites/my-skill/cases
mkdir -p evals/suites/my-skill/rubricsSee Writing Evals for details.
Commit Message Format
We use Conventional Commits:
text
<type>(<scope>): <description>
[optional body]
[optional footer]Types
| Type | Description |
|---|---|
feat | New feature |
fix | Bug fix |
docs | Documentation only |
style | Formatting changes |
refactor | Code restructuring |
test | Adding/updating tests |
chore | Maintenance tasks |
Scopes
hooks- uniswap-hooks plugincca- uniswap-cca plugintrading- uniswap-trading pluginviem- uniswap-viem plugindriver- uniswap-driver pluginevals- Evaluation frameworkdocs- Documentationci- CI/CD workflows
Getting Help
- Open an issue for bugs or feature requests
- Join the Uniswap Discord for discussions
- Check existing issues before creating new ones
Related
- PR Workflow - Detailed PR process
- Architecture - Project architecture
- Evals - Evaluation framework