Agent skill

Dutch Auction Patterns

by ccashwell in ccashwell/evm-cortex

A skill your agent uses when implementing Dutch auctions for token sales, NFT mints, fair launch mechanisms, or Gradual Dutch Auctions (GDAs).

MITAuto-check passedBusiness, Finance & HR

Install Dutch Auction Patterns

skills CLI
$ npx skills add ccashwell/evm-cortex --skill dutch-auction-patterns -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install ccashwell/evm-cortex dutch-auction-patterns --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/ccashwell/evm-cortex.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/dutch-auction-patterns .claude/skills/dutch-auction-patterns && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
dutch-auction-patterns
GitHub stars
131
Token cost
~1.7k tokens
SKILL.md length
193 words
Files
1
Skills in repo
89
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when implementing Dutch auctions for token sales, NFT mints, fair launch mechanisms, or Gradual Dutch Auctions (GDAs).

  • Implementing Dutch auctions for token sales
  • SKILL.md covers How Dutch Auctions Work, Linear Dutch Auction, Exponential Price Decay and Gradual Dutch Auction (GDA), plus 4 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md
  • Fair launch mechanisms

What it does

Dutch Auction Patterns is an agent skill from ccashwell/evm-cortex. Use when implementing Dutch auctions for token sales, NFT mints, fair launch mechanisms, or Gradual Dutch Auctions (GDAs). Covers linear/exponential price decay, batch auctions, and MEV-resistant patterns.

Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Business, Finance & HR, covering Crypto and DeFi analysis. The repository describes itself as: Ethereum protocol engineering squad for AI coding assistants. The licence is MIT.

When your agent uses it

  • Implementing Dutch auctions for token sales
  • Fair launch mechanisms
  • Gradual Dutch Auctions (GDAs)

Example prompts

  • “/dutch-auction-patterns”

What it can do on your machine

Read from SKILL.md and the folder at commit f8f3301. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are solidity).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Dutch Auction Patterns loads about 1.7k tokens when it runs. Until then it costs about 57 tokens; SKILL.md has 193 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~57
When it runs · the whole SKILL.md, loaded when a task matches
~1.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from ccashwell/evm-cortex at commit f8f3301, republished under its MIT licence (© ccashwell). 193 words, ~1,733 tokens.

Download SKILL.mdSave it as .claude/skills/dutch-auction-patterns/SKILL.md (or your agent's skills folder).
name
dutch-auction-patterns
description
Use when implementing Dutch auctions for token sales, NFT mints, fair launch mechanisms, or Gradual Dutch Auctions (GDAs). Covers linear/exponential price decay, batch auctions, and MEV-resistant patterns.

Dutch Auction Patterns

How Dutch Auctions Work

Price starts high and decreases over time until buyers step in. This is inherently fair — buyers pay their maximum willingness-to-pay, and price discovery happens naturally.

price(t) = startPrice - (startPrice - endPrice) * elapsed / duration   // linear
price(t) = startPrice * decay^elapsed                                  // exponential

Linear Dutch Auction

solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
import {ReentrancyGuard} from "@openzeppelin/contracts/utils/ReentrancyGuard.sol";

contract DutchAuction is ReentrancyGuard {
    using SafeERC20 for IERC20;

    IERC20 public immutable token;
    address public immutable seller;

    uint256 public immutable startPrice;
    uint256 public immutable endPrice;
    uint256 public immutable startTime;
    uint256 public immutable duration;
    uint256 public immutable totalTokens;
    uint256 public tokensSold;

    constructor(
        IERC20 _token,
        uint256 _startPrice,
        uint256 _endPrice,
        uint256 _startTime,
        uint256 _duration,
        uint256 _totalTokens
    ) {
        require(_startPrice > _endPrice, "start must exceed end");
        require(_startTime >= block.timestamp, "start in future");
        require(_duration > 0, "duration > 0");

        token = _token;
        seller = msg.sender;
        startPrice = _startPrice;
        endPrice = _endPrice;
        startTime = _startTime;
        duration = _duration;
        totalTokens = _totalTokens;
    }

    function currentPrice() public view returns (uint256) {
        if (block.timestamp < startTime) return startPrice;

        uint256 elapsed = block.timestamp - startTime;
        if (elapsed >= duration) return endPrice;

        uint256 priceDrop = (startPrice - endPrice) * elapsed / duration;
        return startPrice - priceDrop;
    }

    function buy(uint256 amount) external payable nonReentrant {
        require(block.timestamp >= startTime, "not started");
        require(tokensSold + amount <= totalTokens, "sold out");

        uint256 price = currentPrice();
        uint256 cost = price * amount / 1e18;
        require(msg.value >= cost, "insufficient payment");

        tokensSold += amount;
        token.safeTransfer(msg.sender, amount);

        uint256 refund = msg.value - cost;
        if (refund > 0) {
            (bool ok, ) = msg.sender.call{value: refund}("");
            require(ok, "refund failed");
        }

        emit Purchase(msg.sender, amount, price);
    }

    function withdrawProceeds() external {
        require(msg.sender == seller, "only seller");
        (bool ok, ) = seller.call{value: address(this).balance}("");
        require(ok, "transfer failed");
    }

    function withdrawUnsold() external {
        require(msg.sender == seller, "only seller");
        require(block.timestamp >= startTime + duration, "auction active");
        uint256 unsold = totalTokens - tokensSold;
        if (unsold > 0) token.safeTransfer(seller, unsold);
    }

    event Purchase(address indexed buyer, uint256 amount, uint256 price);
}

Exponential Price Decay

More aggressive initial decay that levels off:

solidity
// Uses fixed-point math: price = startPrice * (1 - decayRate)^elapsed_seconds
// With WAD math (1e18 scale):
function currentPrice() public view returns (uint256) {
    uint256 elapsed = block.timestamp - startTime;
    if (elapsed >= duration) return endPrice;

    // decayPerSecond in WAD, e.g., 0.9999e18 for slow decay
    uint256 factor = wadPow(decayPerSecond, elapsed);
    uint256 price = startPrice * factor / 1e18;
    return price < endPrice ? endPrice : price;
}

Gradual Dutch Auction (GDA)

GDA emits tokens continuously, each with its own Dutch auction. Used by Art Gobblers / Paradigm research:

solidity
// price = initialPrice * scaleFactor^(timeSinceStart) * decayFactor^(timeSinceLastPurchase)
// Allows price to reset after each purchase while maintaining emission schedule.

function getPrice(uint256 numTokensPurchased) public view returns (uint256) {
    uint256 timeSinceStart = block.timestamp - auctionStartTime;
    uint256 timeSinceLastPurchase = block.timestamp - lastPurchaseTime;

    // Uses VRGDA formula:
    // p = p0 * e^(k * (numSold - f(t)))
    // where f(t) is the target emission schedule
    int256 decayExponent = wadLn(1e18 - decayConstant) * int256(timeSinceLastPurchase);
    return uint256(wadMul(int256(targetPrice), wadExp(decayExponent)));
}

Batch Dutch Auction (Uniform Price)

All bidders pay the same clearing price — the price at which demand meets supply:

solidity
struct Bid {
    address bidder;
    uint256 amount;
    uint256 timestamp;
}

// During auction: collect bids with timestamps
// After auction: compute clearing price = price at which sum(bids) >= totalTokens
// All successful bidders pay the clearing price, excess refunded

function settle() external {
    require(block.timestamp >= startTime + duration, "auction active");
    // Sort bids by timestamp (earlier = higher price)
    // Find clearing point where cumulative amount >= totalTokens
    // Set clearingPrice = price at that timestamp
    // Refund excess to partial fills and losing bids
}

Fair Launch Design

Combine Dutch auction with anti-whale measures:

solidity
uint256 public constant MAX_PER_WALLET = 100e18;
mapping(address => uint256) public purchased;

function buy(uint256 amount) external payable {
    require(purchased[msg.sender] + amount <= MAX_PER_WALLET, "wallet cap");
    purchased[msg.sender] += amount;
    // ... standard auction logic
}

MEV Considerations

  • Dutch auctions are naturally resistant to front-running (price is time-based)
  • Batch auctions with uniform clearing price eliminate ordering advantage
  • Consider commit-reveal for large token sales
  • Block timestamp can be manipulated by ~12 seconds (validators)

Checklist

  • startPrice > endPrice enforced in constructor
  • Price function handles pre-start, during, and post-auction states
  • Refund excess ETH on overpayment
  • Seller can withdraw proceeds and unsold tokens after auction
  • Per-wallet caps for fair distribution
  • nonReentrant on buy function (ETH refund creates reentrancy risk)
  • Consider commit-reveal for high-value auctions
  • Test boundary conditions: first block, last block, after end
  • Gas efficiency for high-demand auctions (many concurrent buyers)

© ccashwell, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/dutch-auction-patterns of ccashwell/evm-cortex.

Open the folder on GitHubat commit f8f3301

Compare with similar skills

Dutch Auction Patterns next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Dutch Auction Patterns compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Dutch Auction Patterns this skillccashwell/evm-cortex131—~1.7kAutomated safety check: PassMIT
Technical Analysttradermonty/claude-trading-skills3k5 repos~4.6kAutomated safety check: PassMIT
Polyclawchainstacklabs/polyclaw3601 repos~2kAutomated safety check: PassApache-2.0
Longbridge Researchhelsome/folio2693 repos~2.1kAutomated safety check: PassMIT
Stock Analysis24mlight/StockClaw1012 repos~2kAutomated safety check: NotesMIT
Swapper Depositswapperfinance/swapper-toolkit852—~1.8kAutomated safety check: PassMIT

Similar skills

  • Technical Analyst

    tradermonty/claude-trading-skills

    This skill should be used when analyzing weekly price charts for stocks, stock indices, cryptocurrencies, or forex pairs.

    3k GitHub starsUsed in 5 repos~4.6k tokens
    Business, Finance & HRAuto-check passed
  • Polyclaw

    chainstacklabs/polyclaw

    Trade on Polymarket via split + CLOB execution. An agent skill from chainstacklabs/polyclaw.

    360 GitHub starsUsed in 1 repo~2k tokens
    Business, Finance & HRAuto-check passed
  • Longbridge Research

    helsome/folio

    Institution ratings, consensus price targets, EPS/revenue forecasts, finance calendar, shareholder data, fund holders, insider trades (SEC Form 4), short interest, industry rankings, peer group…

    269 GitHub starsUsed in 3 repos~2.1k tokens
    Business, Finance & HRAuto-check passed
  • Stock Analysis

    24mlight/StockClaw

    Analyze stocks and cryptocurrencies using Yahoo Finance data.

    101 GitHub starsUsed in 2 repos~2k tokens
    Business, Finance & HRAuto-check: notes
  • Swapper Deposit

    swapperfinance/swapper-toolkit

    Deposit and bridge funds into a wallet or protocol using Swapper Finance.

    852 GitHub stars~1.8k tokensUpdated 6 mo ago
    Business, Finance & HRAuto-check passed
  • Okx Cex Earn

    okx/agent-skills

    Manages OKX Simple Earn (flexible savings/lending), Flash Earn, On-chain Earn (staking/DeFi), Dual Investment (DCD/双币赢), and AutoEarn (自动赚币) via the okx CLI.

    186 GitHub starsUsed in 2 repos~3.3k tokens
    Business, Finance & HRAuto-check passed

More from ccashwell/evm-cortex

All 89 skills in this repo
  • Xray Pre Audit

    ccashwell/evm-cortex

    A skill your agent uses when preparing for a security audit, performing reconnaissance on a new codebase, or creating a protocol overview.

    131 GitHub stars~25k tokensUpdated 9 days ago
    Auto-check passed
  • Aave Integration

    ccashwell/evm-cortex

    A skill your agent uses when integrating with Aave V3 for lending, borrowing, flash loans, or building on top of Aave markets.

    131 GitHub stars~1.3k tokensUpdated 9 days ago
    Auto-check passed
  • Access Control Patterns

    ccashwell/evm-cortex

    Access control design patterns for Solidity protocols. An agent skill from ccashwell/evm-cortex.

    131 GitHub stars~1.8k tokensUpdated 9 days ago
    Auto-check passed
  • Anvil Patterns

    ccashwell/evm-cortex

    A skill your agent uses when running a local Ethereum node with Anvil.

    131 GitHub stars~1.3k tokensUpdated 9 days ago
    Auto-check passed
  • Audit Breadth Scan

    ccashwell/evm-cortex

    A skill your agent uses when performing systematic breadth-first review of all contracts during a security audit.

    131 GitHub stars~1.4k tokensUpdated 9 days ago
    Auto-check passed
  • Audit Depth Analysis

    ccashwell/evm-cortex

    A skill your agent uses when performing deep analysis of specific findings or high-risk areas during a security audit.

    131 GitHub stars~1.6k tokensUpdated 9 days ago
    Auto-check passed

Questions about Dutch Auction Patterns

What does Dutch Auction Patterns do?

A skill your agent uses when implementing Dutch auctions for token sales, NFT mints, fair launch mechanisms, or Gradual Dutch Auctions (GDAs). Dutch Auction Patterns is an agent skill from ccashwell/evm-cortex. Use when implementing Dutch auctions for token sales, NFT mints, fair launch mechanisms, or Gradual Dutch Auctions (GDAs).

When should I use Dutch Auction Patterns?

Dutch Auction Patterns fits situations like: implementing Dutch auctions for token sales; fair launch mechanisms; gradual Dutch Auctions (GDAs).

How do I install Dutch Auction Patterns in Claude Code?

Run `npx skills add ccashwell/evm-cortex --skill dutch-auction-patterns -a claude-code`. Or copy the skill folder (skills/dutch-auction-patterns in ccashwell/evm-cortex) into .claude/skills/dutch-auction-patterns in your project. Claude Code loads it when a task matches its description.

How do I install Dutch Auction Patterns in Codex?

Run `npx skills add ccashwell/evm-cortex --skill dutch-auction-patterns -a codex`. Or copy the skill folder (skills/dutch-auction-patterns in ccashwell/evm-cortex) into .agents/skills/dutch-auction-patterns in your project. Codex loads it when a task matches its description.

Can I use Dutch Auction Patterns in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ccashwell/evm-cortex --skill dutch-auction-patterns -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dutch-auction-patterns, .gemini/skills/dutch-auction-patterns, .github/skills/dutch-auction-patterns and .opencode/skills/dutch-auction-patterns in your project.

What does Dutch Auction Patterns need to run?

SKILL.md names no scripts, command-line tools or credentials: Dutch Auction Patterns is instructions for the agent only.

Does Dutch Auction Patterns access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Dutch Auction Patterns safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Dutch Auction Patterns use?

Dutch Auction Patterns is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Dutch Auction Patterns use?

About 1.7k tokens (SKILL.md is roughly 6.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Dutch Auction Patterns?

Skills that share tags, products or a category with Dutch Auction Patterns: Technical Analyst (tradermonty/claude-trading-skills, 3k stars), Polyclaw (chainstacklabs/polyclaw, 360 stars), Longbridge Research (helsome/folio, 269 stars) and Stock Analysis (24mlight/StockClaw, 101 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Dutch Auction Patterns?

ccashwell (a GitHub user) maintains it in ccashwell/evm-cortex, which has 131 GitHub stars. The repository holds 89 skills in this directory. The repository was last updated on September 30, 2026.

Source: ccashwell/evm-cortex on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.