Skip to content

Monorepo Structure

This page details the organization of the uniswap-ai repository.

Directory Layout

text
uniswap-ai/
├── .claude/                # Claude Code configuration
│   └── rules/              # Agent rules (agnostic design)
├── .claude-plugin/         # Claude Code marketplace config
│   └── marketplace.json    # Plugin registry
├── .github/
│   ├── actions/            # Reusable composite actions
│   ├── workflows/          # CI/CD workflows
│   └── vale/               # Prose linting styles
├── docs/                   # VitePress documentation
│   ├── .vitepress/         # VitePress configuration
│   ├── architecture/       # Architecture documentation
│   ├── contributing/       # Contribution guides
│   ├── evals/              # Eval framework docs
│   ├── getting-started/    # Getting started guides
│   ├── plugins/            # Plugin documentation
│   └── skills/             # Skill documentation
├── evals/                  # AI tool evaluations
│   ├── rubrics/            # Shared evaluation rubrics
│   ├── suites/             # Per-skill eval suites
│   └── templates/          # Templates for new suites
├── packages/
│   └── plugins/            # Claude Code plugins
├── scripts/                # Build/validation scripts
├── AGENTS.md -> CLAUDE.md  # Symlink for agent-agnostic access
├── CLAUDE.md               # Project guidelines
├── nx.json                 # Nx workspace configuration
├── package.json            # Root package configuration
└── tsconfig.base.json      # Base TypeScript config

Package Scopes

TypeScopenpmMarketplace
Plugins@uniswapNoYes (Claude Code Marketplace)

Nx Configuration

Workspace (nx.json)

The workspace is configured with:

  • Plugins: TypeScript, ESLint, Jest
  • Caching: Build outputs cached in node_modules/.cache/nx
  • Parallel execution: Up to 5 concurrent tasks
  • Release: Conventional commits with independent versioning

Project Configuration

Each package has a project.json with:

json
{
  "name": "package-name",
  "projectType": "library",
  "targets": {
    "build": { ... },
    "test": { ... },
    "lint": { ... }
  }
}

Plugin Structure

Each plugin in packages/plugins/ follows this structure:

text
plugin-name/
├── .claude-plugin/
│   └── plugin.json        # Plugin manifest
├── skills/                 # AI skills
│   └── skill-name/
│       ├── SKILL.md       # Skill definition
│       └── references/    # Supporting materials
├── agents/                 # Specialized agents
├── package.json           # Package metadata
├── project.json           # Nx configuration
└── README.md              # Plugin documentation

Evals Structure

Evaluation suites in evals/suites/ follow this structure:

text
suite-name/
├── promptfoo.yaml          # Suite configuration
├── prompt-wrapper.txt      # Prompt template (injects SKILL.md context)
├── cases/                  # Test case prompts
│   └── test-name.md
└── rubrics/                # Evaluation rubrics (.txt files)
    └── rubric-name.txt

Key Files

FilePurpose
CLAUDE.mdProject guidelines and AI agent instructions
AGENTS.mdSymlink to CLAUDE.md for agent-agnostic access
nx.jsonNx workspace configuration
.vale.iniProse linting configuration

Released under the MIT License.