Skip to content
Agent Orchestration
Skill

/deployer

Deploy CCA (Continuous Clearing Auction) smart contracts using the Factory pattern. Use when user says "deploy auction", "deploy cca", "factory deployment", or wants to deploy a configured auction.

BOOST
From plugin
uniswap-ai
23418 skills2 agents1 MCP
Install
$ npx -y skills add uniswap/uniswap-ai --skill deployer --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/deployer

Context preview

The summary Claude sees to decide when to auto-load this skill.

Deploy CCA (Continuous Clearing Auction) smart contracts using the Factory pattern. Use when user says "deploy auction", "deploy cca", "factory deployment", or wants to deploy a configured auction.

SKILL.md

deployer.SKILL.md
name: deployer
description: Deploy CCA (Continuous Clearing Auction) smart contracts using the Factory pattern. Use when user says "deploy auction", "deploy cca", "factory deployment", or wants to deploy a configured auction.
allowed-tools: Read, Glob, Grep, Bash(forge:*), Bash(cast:*), Bash(curl:*), AskUserQuestion
model: opus
license: MIT
metadata:
  author: uniswap
  version: '1.0.0'

CCA Deployment

Deploy Continuous Clearing Auction (CCA) smart contracts using the `ContinuousClearingAuctionFactory` with CREATE2 for consistent addresses across chains.

> **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 the CCA deployment process with appropriate safety warnings and validation.

Pre-Deployment Requirements

Before proceeding with deployment, you MUST:

1. **Show educational disclaimer** and get user acknowledgment 2. **Validate configuration file** if provided 3. **Verify factory address** for the target network 4. **Confirm deployment parameters** with user

Deployment Workflow

1. **Show Educational Disclaimer** (REQUIRED) 2. **Load or Request Configuration** 3. **Validate Configuration** 4. **Display Deployment Plan** 5. **Get User Confirmation** 6. **Provide Deployment Commands** 7. **Post-Deployment Steps**

---

⚠️ Educational Use Disclaimer

**IMPORTANT: Before proceeding with deployment, you must acknowledge:**

This tool and all deployment instructions are provided **for educational purposes only**. AI-generated deployment commands may contain errors or security vulnerabilities.

**You must:**

1. ✅ **Review all configurations carefully** before deploying 2. ✅ **Verify all parameters** (addresses, pricing, schedules) are correct 3. ✅ **Test on testnets first** before deploying to mainnet 4. ✅ **Audit your contracts** before deploying with real funds

**Use AskUserQuestion to confirm the user acknowledges these warnings before proceeding with deployment steps.**

Input Validation Rules

Before interpolating ANY user-provided value into forge/cast commands or deployment scripts:

  • **Ethereum addresses**: MUST match `^0x[a-fA-F0-9]{40}$` — reject otherwise
  • **Chain IDs**: MUST be from the supported chains list (1, 130, 1301, 8453, 42161, 11155111)
  • **Numeric values** (supply, prices, blocks, chain IDs): MUST be non-negative and match `^[0-9]+\.?[0-9]*$`
  • **RPC endpoint URL** (`$RPC_URL`): MUST be `https://`-scheme and MUST NOT contain any metacharacter or whitespace from the rule below. This value does not come from the configuration file, the user supplies it during the walkthrough, and it reaches `--rpc-url` on every `forge script`, `cast send`, and `forge verify-contract` command below. "It came from the user, not the config" is not an exemption. Validate it the first time it is supplied, assign it to `$RPC_URL`, and reference only that variable afterwards; never re-read a raw URL into a later command. An endpoint whose URL needs a query string (a provider API key, for example) is exported into the environment out of band and referenced as `$RPC_URL`, never pasted into command text.
  • **REJECT** any input containing shell metacharacters or whitespace: `;`, `|`, `&`, `$`, `` ` ``, `(`, `)`, `>`, `<`, `\`, `'`, `"`, spaces, tabs, newlines. `$(...)` and backticks execute even inside double quotes, and a space splits one value into extra `forge`/`cast` flags, so neither is ever safe to interpolate. Abort and report which value and which character failed rather than stripping the offending characters and continuing.
  • **Never** pass raw user input directly to shell commands without validation
  • **Always double-quote every interpolation** in a generated command (write `--rpc-url "$RPC_URL"`, never the bare unquoted form). Quoting is the second layer, not the first: validate the value before it reaches the command, then quote it as well.

⚠️ Permission Safety

**Do NOT auto-approve `Bash(forge:*)` or `Bash(cast:*)` in your Claude Code settings.** Always require per-invocation approval for commands that spend gas or broadcast transactions. The PreToolUse hooks in `.claude/hooks/` provide programmatic validation as a safety net, but user approval per command is the primary control.

---

🔐 Private Key Security

**CRITICAL: Handling private keys safely is essential for secure deployments.**

⚠️ Never Do These

  • ❌ **Never** store private keys in git repositories or config files
  • ❌ **Never** paste private keys directly in command line (visible in shell history)
  • ❌ **Never** share private keys or store them in shared environments
  • ❌ **Never** use mainnet private keys on untrusted computers
  • ❌ **Never** use `--private-key` flag (blocked by PreToolUse hook)

✅ Recommended Practices

Option 1: Hardware Wallets (Most Secure)

Use Ledger or Trezor hardware wallets with the `--ledger` flag:

forge script script/Example.s.sol:ExampleScript \
  --rpc-url "$RPC_URL" \
  --broadcast \
  --ledger

Option 2: Encrypted Keystore

Create an encrypted keystore with `cast wallet import`:

# Import private key to encrypted keystore (one-time setup)
cast wallet import deployer --interactive

# Use keystore for deployment
forge script script/Example.s.sol:ExampleScript \
  --rpc-url "$RPC_URL" \
  --broadcast \
  --account deployer \
  --sender "$DEPLOYER_ADDRESS"

Option 3: Environment Variables (For Testing Only)

If using environment variables, ensure they are:

  • Set in a secure `.env` file (never committed to git)
  • Loaded via `source .env` or `dotenv`
  • Only used on trusted, secure computers
  • Use testnet keys for development

**Example:**

# .env file (add to .gitignore)
PRIVATE_KEY=0x...
RPC_URL=https://...

# Load environment
source .env

# Deploy (use en
Read more
Ships withuniswap-ai

Uniswap-specific AI tools (skills, plugins, agents) for developers and AI agents integrating the Uniswap ecosystem.

Get the whole plugin

Other skills on uniswap-ai.