Contributions

Contribute skills, plugins, and improvements to Uniswap AI.

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

# Fork the repository on GitHub, then clone
git clone https://github.com/YOUR_USERNAME/uniswap-ai.git
cd uniswap-ai

2. Install dependencies

# Ensure you have the correct npm version
npm install -g [email protected]

# Install dependencies
npm install

3. Verify setup

# Run tests
npx nx run-many --target=test

# Build all packages
npx nx run-many --target=build

# Start docs dev server
bun dev-portal dev

Development Workflow

Creating changes

  1. Create a branch from main:

    git checkout -b feature/your-feature-name
  2. Make your changes following the code guidelines

  3. Test your changes:

    # Run affected tests
    npx nx affected --target=test
    
    # Run affected linting
    npx nx affected --target=lint
    
    # Check formatting
    npx nx format:check
  4. Commit using conventional commits:

    git commit -m "feat(hooks): add new feature"

Pull request process

  1. Push your branch and create a PR
  2. Ensure all CI checks pass
  3. Request review from maintainers
  4. Address any feedback
  5. Once approved, the PR will be merged

Code Guidelines

TypeScript

  • Use strict TypeScript (strict: true)
  • Never use any - prefer unknown with 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:

  1. Update relevant CLAUDE.md files
  2. Update README.md if needed
  3. Add/update documentation in docs/
  4. Run npm exec markdownlint-cli2 -- --fix "**/*.md"

Creating New Packages

New plugin

# Plugins go in packages/plugins/
mkdir -p packages/plugins/my-plugin

Each plugin needs:

  • package.json with plugin metadata
  • project.json for Nx configuration
  • .claude-plugin/plugin.json manifest
  • README.md documentation

New skill

Skills are defined in packages/plugins/*/skills/:

mkdir -p packages/plugins/uniswap-hooks/skills/my-skill

Each skill needs:

  • SKILL.md - The skill definition
  • Validation through lint, tests, and documentation updates

PR Workflow Highlights

Branch naming

Use descriptive branch names:

feature/add-v4-security-skill
fix/plugin-timeout-issue
docs/update-installation-guide

PR title and commit format

Use Conventional Commits for both commit messages and PR titles:

feat(hooks): add dynamic fee hook skill
fix(trading): improve swap integration guidance
docs: update installation guide

CI checks to expect

Typical checks include:

  • Build
  • Lint
  • Format
  • Tests
  • Plugin validation

Commit Message Format

You can use Conventional Commits:

<type>(<scope>): <description>

[optional body]

[optional footer]

Types

TypeDescription
featNew feature
fixBug fix
docsDocumentation only
styleFormatting changes
refactorCode restructuring
testAdding/updating tests
choreMaintenance tasks

Scopes

  • hooks - uniswap-hooks plugin
  • cca - uniswap-cca plugin
  • trading - uniswap-trading plugin
  • viem - uniswap-viem plugin
  • driver - uniswap-driver plugin
  • docs - Documentation
  • ci - 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