configurator

uniswap/uniswap-ai · updated Apr 8, 2026

MDX-style export adds YAML metadata + attribution linking explainx.ai and this canonical listing URL.

$npx skills add https://github.com/uniswap/uniswap-ai --skill configurator
0 commentsdiscussion
summary

Configure Continuous Clearing Auction (CCA) smart contract parameters for fair and transparent token distribution.

skill.md

CCA Configuration

Configure Continuous Clearing Auction (CCA) smart contract parameters for fair and transparent token distribution.

Runtime Compatibility: This skill uses AskUserQuestion for interactive prompts. If AskUserQuestion is not available in your runtime, collect the same parameters through natural language conversation instead.

Instructions for Claude Code

When the user invokes this skill, guide them through a bulk interactive form configuration flow using AskUserQuestion. Collect parameters in batches to minimize user interaction rounds.

Bulk Interactive Form Rules

  1. Batch questions - Ask up to 4 questions at once using a single AskUserQuestion call
  2. Allow direct input - For fields requiring custom values (addresses, numbers):
    • Provide a "Not available yet" or "Skip for now" option
    • The "Other" option (automatically provided) allows direct custom input
    • NEVER ask "Do you have X?" as a separate question
  3. Store answers - Keep track of all collected values in a configuration object
  4. Validate after collection - After each batch, validate all inputs before proceeding
  5. Show progress - After each batch, show which parameters are collected and which remain

Configuration Flow

Collect parameters in these batches:

Batch 1: Task Selection (1 question)

Question 1: Task Type

  • Prompt: "What would you like to do with CCA?"
  • Options: "Configure auction parameters", "Generate supply schedule only", "Review existing config", "Deploy existing config"

After collection: If not "Configure auction parameters", skip to appropriate section.


Batch 2: Basic Configuration (4 questions)

Question 1: Network

  • Prompt: "Which network to deploy on?"
  • Options: "Ethereum Mainnet", "Unichain (Mainnet)", "Unichain Sepolia (Testnet)", "Base", "Arbitrum", "Sepolia"
  • Store: chainId, blockTime, rpcUrl, currencyDecimals (for selected currency)

Question 2: Token Address

  • Prompt: "Token to be auctioned?"
  • Options: "Token not deployed yet" (placeholder), Custom address (via "Other")
  • Validation: Must be 42 chars starting with 0x
  • Store: token

Question 3: Total Supply

  • Prompt: "How many tokens to auction?"
  • Options: "100 million tokens (18 decimals)", "1 billion tokens (18 decimals)", "10 billion tokens (18 decimals)", Custom (via "Other")
  • Validation: Must be <= 1e30 wei
  • Store: totalSupply

Question 4: Currency

  • Prompt: "What currency should bidders use?"
  • Options: "ETH (Native)", "USDC on [network]", "USDT on [network]", Custom ERC20 (via "Other")
  • Validation: Must be 42 chars starting with 0x or address(0)
  • Store: currency

After collection: Validate all inputs, show summary of basic configuration.


Batch 3: Timing & Pricing (4 questions)

Question 1: Auction Duration

  • Prompt: "How long should the auction run?"
  • Options: "1 day", "2 days", "3 days", "7 days", Custom blocks (via "Other")
  • Calculate blocks based on network block time
  • Store: auctionBlocks

Question 2: Prebid Period

  • Prompt: "Include a prebid period? (time when no tokens are sold)"
  • Options: "No prebid period (0 blocks)", "12 hours", "1 day", Custom blocks (via "Other")
  • Calculate blocks based on network block time
  • Store: prebidBlocks

Question 3: Floor Price

  • Prompt: "Starting floor price? (ratio of currency per token)"
  • Options: "0.10x (10% of 1:1 ratio)", "0.01x (1% of 1:1 ratio)", "0.001x (0.1% of 1:1 ratio)", Custom ratio (via "Other")
  • Calculate Q96 value accounting for decimal differences: Q96 * ratio / 10^(tokenDecimals - currencyDecimals)
  • For USDC (6 decimals) and 18-decimal token: Q96 * ratio / 10^12
  • For native ETH (18 decimals) and 18-decimal token: Q96 * ratio / 10^0 = Q96 * ratio
  • Store: floorPriceRatio, floorPrice (Q96), tokenDecimals, currencyDecimals

Question 4: Tick Spacing

  • Prompt: "Tick spacing as percentage of floor price?"
  • Options: "1% of floor price (Recommended)", "10% of floor price", "0.1% of floor price", Custom percentage (via "Other")
  • Calculate: tickSpacing = int(floorPrice * percentage)
  • CRITICAL: Round floor price DOWN to be evenly divisible by tick spacing:
    • roundedFloorPrice = (floorPrice // tickSpacing) * tickSpacing
    • Verify: roundedFloorPrice % tickSpacing == 0 must be true
  • Validate: Tick spacing must be >= 1 basis point of floor price
  • Store: tickSpacingPercentage, tickSpacing (Q96), roundedFloorPrice

After collection: Validate inputs, verify floor price divisibility, calculate and display Q96 values, show timing summary.


Batch 4: Recipients & Launch (4 questions)

Question 1: Tokens Recipient

  • Prompt: "Where should unsold tokens be sent?"
  • Options: "Same as funds recipient", Custom address (via "Other")
  • Validation: Must be 42 chars starting with 0x
  • Store: tokensRecipient

Question 2: Funds Recipient

  • Prompt: "Where should raised funds be sent?"
  • Options: "Same as tokens recipient", Custom address (via "Other")
  • Validation: Must be 42 chars starting with 0x
  • Store: fundsRecipient

Question 3: Start Time

  • Prompt: "When should the auction start?"
  • Options: "In 1 hour", "In 6 hours", "In 24 hours", Custom block number (via "Other")
  • Fetch current block number from RPC and calculate
  • Store: startBlock
  • Calculate: endBlock = startBlock + prebidBlocks + auctionBlocks, claimBlock = endBlock

Question 4: Minimum Funds Required

  • Prompt: "Require minimum currency raised for graduation?"
  • Options: "No minimum (0)", "100 ETH", "1000 ETH", Custom amount in wei (via "Other")
  • Store: requiredCurrencyRaised

After collection: Validate addresses, fetch current block from RPC, calculate full block timeline.


Batch 5: Optional Hook (1 question)

Question 1: Validation Hook

  • Prompt: "Use a validation hook contract?"
  • Options: "No validation hook", Custom hook address (via "Other")
  • Validation: Must be 42 chars starting with 0x (if provided)
  • Store: validationHook

After collection: Validate hook address if provided.


Step 6: Generate Supply Schedule

If MCP server is not running, provide instructions to start it:

# Navigate to MCP server directory
cd packages/plugins/uniswap-cca/mcp-server/supply-schedule

# Run setup script (first time only)
chmod +x setup.sh
./setup.sh

# Start the MCP server
python3 server.py

Once the MCP server is running, call the cca-supply-schedule__generate_supply_schedule MCP tool with the collected parameters. The tool expects a JSON object:

{
  "auction_blocks": 86400,
  "prebid_blocks": 0
}

Replace the values with the actual auctionBlocks and prebidBlocks collected from the user.

If the MCP tool is unavailable, use the fallback Python algorithm directly (see Supply Schedule Configuration section).

Store: supplySchedule

Step 7: Generate and Display Configuration

After collecting all parameters and generating the supply schedule, display the complete JSON configuration in the CLI output:

{
  "[chainId]": {
    "token": "...",
    "totalSupply": ...,
    "currency": "...",
    "tokensRecipient": "...",
    "fundsRecipient": "...",
    "startBlock": ...,
    "endBlock": ...,
    "claimBlock": ...,
    "tickSpacing": ...,
    "validationHook": "...",
    "floorPrice": ...,
    "requiredCurrencyRaised": ...,
    "supplySchedule": [...]
  }
}

Do NOT automatically create a file. Let the user copy the JSON or specify a filepath to save it.

Step 8: Display Summary

Show the user a comprehensive formatted summary including:

  • Network and chain ID
  • Token and currency details
  • Block timeline (start, end, claim) with human-readable times
  • Pricing (floor price, tick spacing) in both Q96 and ratio formats
  • Recipients (tokens, funds)
  • Supply schedule summary (total phases, final block percentage)
  • Validation checklist (all validation rules passed/failed)

Step 9: Next Steps

Ask the user what they want to do:

  • "Save to file" (ask for filepath, default: script/auction-config.json)
  • "View deployment instructions" (suggest using the deployer skill)
  • "Modify configuration"
  • "Exit" (just end, they can copy the JSON from CLI output)

Important Notes

  • Validate in batches - Validate all inputs after each batch collection
  • Fetch current block number from RPC when calculating start/end blocks
  • Calculate Q96 values correctly for floor price and tick spacing:
    • CRITICAL: Account for decimal differences: Q96 * ratio / 10^(tokenDecimals - currencyDecimals)
    • USDC is 6 decimals on all networks - divide by 10^12 for 18-decimal tokens
    • Native ETH is 18 decimals - no adjustment needed for 18-decimal tokens
  • Round floor price to be evenly divisible by tick spacing:
    • roundedFloorPrice = (floorPrice // tickSpacing) * tickSpacing
    • MUST verify: roundedFloorPrice % tickSpacing == 0
  • Use the MCP tool for supply schedule generation (provide setup instructions if not running)
  • Minimize interaction rounds - Collect as many params as reasonable per batch

Network-Specific Constants

Store these for quick reference:

const NETWORKS = {
  1: {
    name: 'Mainnet',
    blockTime: 12,
    rpc: 'https://ethereum-rpc.publicnode.com',
    usdc: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
  },
  130: {
    name: 'Unichain',
    blockTime: 1,
    rpc: 'https://mainnet.unichain.org',
    usdc: '0x078D782b760474a361dDA0AF3839290b0EF57AD6',
  },
  1301: {
    name: 'Unichain Sepolia (Testnet)',
    blockTime: 2,
    rpc: 'https://sepolia.unichain.org',
    usdc: '0x078D782b760474a361dDA0AF3839290b0EF57AD6',
  },
  8453: {
    name: 'Base',
    blockTime: 2,
    rpc: 'https://mainnet.base.org',
    usdc: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
  },
  42161: {
    name: 'Arbitrum',
    blockTime: 2,
    rpc: 'https://arb1.arbitrum.io/rpc',
    usdc: '0xaf88d065e77c8cc2239327c5edb3a432268e5831',
  },
  11155111: {
    name: 'Sepolia',
    blockTime: 12,
    rpc: 'https://ethereum-sepolia-rpc.publicnode.com',
    usdc: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238',
  },
};

// Q96 = 2^96 (JavaScript BigInt notation)
const Q96 = 79228162514264337593543950336n;

Python equivalent:

# Q96 = 2**96
Q96 = 79228162514264337593543950336

Overview

CCA (Continuous Clearing Auction) is a novel auction mechanism that generalizes the uniform-price auction into continuous time. It provides fair price discovery for bootstrapping initial liquidity while eliminating timing games and encouraging early participation.

Key features:

  • Fair price discovery: Continuous clearing with no timing games
  • Transparent distribution: Supply released on a predetermined schedule
  • Flexible configuration: Customizable auction parameters and schedules
  • Multi-chain support: Canonical deployment across EVM chains
  • Factory deployment: Consistent addresses via CREATE2

Quick Decision Guide

Task... Use This Section
Configure auction parameters Configuration Guide
Generate supply schedule Supply Schedule Configuration
Understand auction mechanics Technical Overview

Configuration Guide

Auction Parameters

CCA auctions are configured through the AuctionParameters struct:

struct AuctionParameters {
    address currency;              // Token to raise funds in (address(0) for ETH)
    address tokensRecipient;       // Address to receive leftover tokens
    address fundsRecipient;        // Address to receive all raised funds
    uint64
how to use configurator

How to use configurator on Cursor

AI-first code editor with Composer

1

Prerequisites

Before installing skills in Cursor, ensure your development environment meets these requirements:

  • Cursor installed and configured on your development machine
  • Node.js version 16.0+ with npm package manager (verify with node --version)
  • Active project directory or workspace where you want to add configurator
2

Execute installation command

Execute the skills CLI command in your project's root directory to begin installation:

$npx skills add https://github.com/uniswap/uniswap-ai --skill configurator

The skills CLI fetches configurator from GitHub repository uniswap/uniswap-ai and configures it for Cursor.

3

Select Cursor when prompted

The CLI will show a list of available agents. Use arrow keys to navigate and space to select Cursor:

◆ Which agents do you want to install to?
│ ── Universal (.agents/skills) ── always included ────
│ • Amp
│ • Antigravity
│ • Cline
│ • Codex
│ ●Cursor(selected)
│ • Cursor
│ • Windsurf
4

Verify installation

Confirm successful installation by checking the skill directory location:

.cursor/skills/configurator

Reload or restart Cursor to activate configurator. Access the skill through slash commands (e.g., /configurator) or your agent's skill management interface.

Security & Verification Notice

We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.

Skills execute code in your development environment. Always verify the publisher's identity, review recent commits, and test in isolated environments before production deployment.

List & Monetize Your Skill

Submit your Claude Code skill and start earning

GET_STARTED →

Use Cases

User Story & Requirements Generation

Create detailed user stories, acceptance criteria, and feature specs

Example

Generate user stories for 'password reset feature' with acceptance criteria, edge cases, and test scenarios

Reduce spec writing time by 50%, ensure comprehensive coverage

Competitive Analysis

Research competitors, compare features, identify gaps

Example

Analyze 5 competitor products, create feature comparison matrix, suggest differentiation opportunities

Complete competitive research in 2 hours instead of 2 days

Roadmap Prioritization

Evaluate features using frameworks (RICE, ICE, Kano) and create prioritized backlogs

Example

Score 20 feature ideas using RICE framework, generate prioritized roadmap with rationale

Make data-driven prioritization decisions faster

Stakeholder Communication

Draft PRDs, status updates, and stakeholder presentations

Example

Create executive summary of Q3 roadmap, monthly progress report, feature launch announcement

Save 3-5 hours/week on communication overhead

Implementation Guide

Prerequisites

  • Claude Desktop or compatible AI client
  • Access to product documentation and roadmap tools (Jira, Notion, etc.)
  • Understanding of product management frameworks (RICE, Jobs-to-be-Done, etc.)
  • Stakeholder contact information and communication channels

Time Estimate

30-60 minutes to see productivity improvements

Installation Steps

  1. 1.Install product management skill
  2. 2.Start with user story generation for known feature
  3. 3.Progress to competitive analysis: research 2-3 competitors
  4. 4.Use for roadmap prioritization: apply RICE/ICE scoring
  5. 5.Draft stakeholder communications and refine based on feedback
  6. 6.Build template library for recurring PM tasks
  7. 7.Share effective prompts with product team

Common Pitfalls

  • Not validating competitive research—verify facts before sharing
  • Accepting user stories without involving engineering team
  • Over-relying on frameworks without qualitative judgment
  • Not customizing outputs to company culture and communication style
  • Skipping stakeholder validation of generated requirements

Best Practices

✓ Do

  • +Validate research and competitive analysis with real data
  • +Collaborate with engineering when generating technical requirements
  • +Customize frameworks and templates to your company context
  • +Use skill for first drafts, refine with stakeholder input
  • +Document successful prompt patterns for PM tasks
  • +Combine AI efficiency with human judgment and intuition

✗ Don't

  • Don't publish competitive analysis without fact-checking
  • Don't finalize user stories without engineering review
  • Don't make prioritization decisions solely on AI scoring
  • Don't skip customer validation of generated requirements
  • Don't ignore company-specific context and culture

💡 Pro Tips

  • Provide context: company goals, constraints, customer feedback
  • Ask for alternatives: 'Show 3 ways to prioritize this roadmap'
  • Request stakeholder-specific formatting: 'Executive summary vs. engineering spec'
  • Use skill for 70% generation + 30% customization to company needs

When to Use This

✓ Use When

Use for user story writing, competitive research, roadmap prioritization, stakeholder communication, and PRD drafting. Best for reducing repetitive documentation and research work.

✗ Avoid When

Avoid for strategic product vision (requires deep customer empathy), pricing decisions (needs market and financial expertise), or when face-to-face customer discovery is more valuable than speed.

Learning Path

  1. 1Basic: user stories, feature specs, status updates
  2. 2Intermediate: competitive analysis, prioritization frameworks, PRDs
  3. 3Advanced: product strategy, go-to-market planning, OKR setting
  4. 4Expert: product vision, market positioning, business model innovation

Discussion

Product Hunt–style comments (not star reviews)
  • No comments yet — start the thread.
general reviews

Ratings

4.563 reviews
  • Camila Abebe· Dec 28, 2024

    configurator reduced setup friction for our internal harness; good balance of opinion and flexibility.

  • Jin Rao· Dec 16, 2024

    configurator is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.

  • Hana Iyer· Dec 8, 2024

    I recommend configurator for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.

  • Chinedu Kim· Dec 4, 2024

    Registry listing for configurator matched our evaluation — installs cleanly and behaves as described in the markdown.

  • Diya Verma· Nov 27, 2024

    Solid pick for teams standardizing on skills: configurator is focused, and the summary matches what you get after install.

  • Diya Tandon· Nov 23, 2024

    Keeps context tight: configurator is the kind of skill you can hand to a new teammate without a long onboarding doc.

  • Henry Perez· Nov 19, 2024

    configurator is among the better-maintained entries we tried; worth keeping pinned for repeat workflows.

  • Henry Gonzalez· Nov 7, 2024

    configurator reduced setup friction for our internal harness; good balance of opinion and flexibility.

  • Olivia Menon· Oct 26, 2024

    Registry listing for configurator matched our evaluation — installs cleanly and behaves as described in the markdown.

  • Diya Menon· Oct 18, 2024

    configurator has been reliable in day-to-day use. Documentation quality is above average for community skills.

showing 1-10 of 63

1 / 7