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-ai2. Install dependencies
# Ensure you have the correct npm version
npm install -g [email protected]
# Install dependencies
npm install3. 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 devDevelopment Workflow
Creating changes
-
Create a branch fromÂ
main:git checkout -b feature/your-feature-name -
Make your changes following the code guidelines
-
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 -
Commit using conventional commits:
git 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
# Plugins go in packages/plugins/
mkdir -p packages/plugins/my-pluginEach plugin needs:
package.jsonwith plugin metadataproject.jsonfor Nx configuration.claude-plugin/plugin.json manifestREADME.md documentation
New skill
Skills are defined in packages/plugins/*/skills/:
mkdir -p packages/plugins/uniswap-hooks/skills/my-skillEach 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-guidePR 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 guideCI 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
| 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 plugindocs- 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