agentsclimarketplace

Design token

Skill cardano-foundation/cardano-dev-skills/skills/design-token

Design Cardano native token, NFT, NFT collection, fungible token, CIP-25 metadata, CIP-68 reference tokens, CIP-113 programmable tokens, minting policy, token architecture.From its SKILL.md

Install
npx -y skills add cardano-foundation/cardano-dev-skills --skill design-token

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

SKILL.md

9.2 KB, as published. Nobody here has run it

<!-- Documentation lookup path: ${CLAUDE_SKILL_DIR}/../../docs/sources/ -->

Design Cardano Native Token

Guide the user through designing a Cardano native token: choosing the right CIP standard, designing the minting policy, structuring metadata, and planning for ecosystem compatibility.

When to Use

  • User wants to create an NFT or NFT collection
  • User wants to create a fungible token
  • User asks about CIP-25, CIP-68, or CIP-113 standards
  • User wants to design token metadata
  • User needs help choosing between token standards
  • User asks about updatable metadata or programmable tokens
  • User wants to understand reference tokens (label 100/222/333/444)

When NOT to Use

  • User wants to write the minting policy validator code -- use write-validator
  • User wants to build the actual minting transaction -- use build-transaction
  • User has a failing mint transaction -- use debug-transaction
  • User wants a security review of an existing minting policy -- use review-contract

Key Principles

  1. Pick the right CIP standard first. CIP-25 is simple but immutable. CIP-68 enables updatable metadata via reference tokens. CIP-113 (still a draft) makes tokens programmable via shared-custody validation. The choice affects the entire architecture.

  2. Design the minting policy before the metadata. The policy determines who can mint, when, and how many. It is the foundation of token security.

  3. Plan for ecosystem compatibility. Wallets, marketplaces, and explorers rely on CIP standards to display tokens correctly. Non-conformant metadata will appear broken in most tools.

  4. Minimize on-chain data. Store large assets (images, documents) off-chain via IPFS or Arweave. On-chain metadata should contain references (IPFS CID), not raw data.

  5. Consider the full token lifecycle. Can it be burned? Can metadata be updated? Can supply change? These decisions must be made at design time.

Workflow

Step 1: Identify the Token Type

Ask the user what they are building:

Token TypeDescriptionRecommended Standard
Simple NFTOne-off unique token, immutableCIP-25
NFT CollectionSeries of unique tokens, immutableCIP-25 or CIP-68
Updatable NFTNFT with mutable metadataCIP-68 (label 222)
Fungible TokenDivisible, tradeable tokenCIP-68 (label 333)
Rich Fungible TokenFungible with detailed on-chain metadataCIP-68 (label 444)
Programmable TokenToken with on-chain behavior rulesCIP-113

Step 2: Search Bundled Documentation

Search the bundled documentation for relevant content:

  • ${CLAUDE_SKILL_DIR}/../../docs/sources/cips/ - CIP specifications (CIP-25, CIP-68, CIP-113)
  • ${CLAUDE_SKILL_DIR}/../../docs/sources/mesh-sdk/ - Mesh SDK docs
  • ${CLAUDE_SKILL_DIR}/../../docs/sources/evolution-sdk/ - Evolution SDK docs
  • ${CLAUDE_SKILL_DIR}/../../docs/sources/aiken/ - Aiken language docs

Step 3: Choose the CIP Standard

Search ${CLAUDE_SKILL_DIR}/../../docs/sources/ for detailed CIP comparisons.

CIP-25 (Simple Metadata)

  • Metadata stored in transaction metadata (label 721)
  • Immutable after minting -- cannot update
  • Simplest to implement
  • Universally supported by wallets and marketplaces
  • Best for: simple NFTs and collections that never need updates

CIP-68 (Reference Tokens)

  • Metadata stored in a datum at a reference token UTxO
  • Updatable by spending and recreating the reference UTxO
  • Uses label pairs: 100 (reference) + 222 (NFT) / 333 (FT) / 444 (RFT)
  • More complex to implement but far more flexible
  • Best for: projects needing updatable metadata, rich fungible tokens, or dynamic NFTs

CIP-113 (Programmable Tokens — draft, unmerged PR #444)

  • Tokens are held at a shared script address; ownership is tracked by stake credential, and validation logic runs on every transfer, mint, and burn
  • An on-chain registry links each token to its transfer/issuance logic; substandards (freeze-and-seize, KYC) plug into the shared framework
  • Most complex; reference implementation is unaudited and not production-ready
  • Best for: regulated tokens, stablecoins, and compliance-bound assets

See references/cip-token-standards.md for a detailed comparison.

Step 4: Design the Minting Policy

The minting policy is a Cardano script that authorizes token creation.

Native Script Policies (no Plutus needed):

  • Time-locked: Minting allowed only before a specific slot. After the deadline, no more tokens can ever be minted. Good for fixed-supply collections.

    {
      "type": "all",
      "scripts": [
        { "type": "sig", "keyHash": "<policy_key_hash>" },
        { "type": "before", "slot": 98765432 }
      ]
    }
    
  • Multi-sig: Require multiple signatures to mint.

Plutus Script Policies (for complex logic):

  • One-shot (NFT guarantee): Consume a specific UTxO to ensure the policy ID is unique and can only mint once.
  • Collection minting: Allow minting multiple tokens under the same policy with rules (e.g., max supply, whitelist).
  • CIP-68 minting: Must mint the reference token (label 100) alongside the user token (label 222/333/444) in the same transaction.

Step 5: Design the Metadata Structure

CIP-25 Metadata

Attached to the minting transaction under label 721:

{
  "721": {
    "<policy_id>": {
      "<asset_name>": {
        "name": "My NFT #1",
        "image": "ipfs://QmXyz...",
        "mediaType": "image/png",
        "description": "Description of the NFT",
        "attributes": {
          "trait1": "value1",
          "trait2": "value2"
        }
      }
    }
  }
}

Required fields: name, image Optional but recommended: mediaType, description

CIP-68 Datum Metadata

Stored as a datum on the reference token UTxO:

Constr(0, [
  // metadata map
  Map([
    (Bytes("name"), Bytes("My NFT #1")),
    (Bytes("image"), Bytes("ipfs://QmXyz...")),
    (Bytes("mediaType"), Bytes("image/png")),
    (Bytes("description"), Bytes("Description")),
  ]),
  // version
  Int(1),
  // extra (application-specific)
  Constr(0, [])
])

The datum structure is: Constr 0 [metadata_map, version, extra]

  • metadata_map: key-value pairs where keys are byte strings
  • version: integer version number
  • extra: application-specific data (use Constr 0 [] for none)

Step 6: Plan the Asset Name Encoding

Token asset names are byte strings (max 32 bytes). Conventions:

  • CIP-25 NFTs: Use human-readable names, hex-encoded (e.g., "MyNFT001" becomes 4d794e4654303031)
  • CIP-68 tokens: Prefix with the label in hex:
    • Reference token: 000643b0 + name bytes (label 100)
    • NFT user token: 000de140 + name bytes (label 222)
    • FT user token: 0014df10 + name bytes (label 333)
    • RFT user token: 001bc280 + name bytes (label 444)

Step 7: Architecture Decisions

Guide the user through these design choices:

  • Supply model: Fixed supply (time-lock policy) vs. ongoing minting (Plutus policy with admin key)
  • Burnability: Should tokens be burnable? Most policies allow it by default. Time-locked policies make burning impossible after the deadline.
  • Metadata storage: IPFS (decentralized, persistent) vs. HTTP URLs (centralized, mutable). Prefer IPFS with CID pinning.
  • Royalties: CIP-27 defines on-chain royalty info. Marketplaces may or may not enforce it. CIP-113 can enforce royalties at the protocol level.
  • Collection grouping: All tokens under one policy ID form a "collection." Use one policy per logical collection.

Step 8: Ecosystem Compatibility Checklist

Verify the design works with:

  • Wallets: display name, image, and metadata correctly
  • Marketplaces: JPG Store, CNFT.io recognize the token standard
  • Explorers: CardanoScan, Cexplorer show metadata
  • Token registries: Cardano Token Registry for fungible tokens
  • IPFS: images and files are pinned and accessible
  • Metadata standard: conforms to chosen CIP exactly

Common Mistakes

  • Wrong label for CIP-68: Using 721 (CIP-25) metadata label with CIP-68 tokens. CIP-68 uses datums, not transaction metadata.
  • Exceeding 32-byte asset name limit: Including the CIP-68 prefix in the 32-byte calculation. The prefix IS part of the 32 bytes.
  • Not minting the reference token: CIP-68 requires both the reference token (100) and user token (222/333/444) to be minted together.
  • Forgetting mediaType: Without mediaType, wallets may not render the asset correctly.
  • Using HTTP URLs instead of IPFS: HTTP URLs are mutable and can break. Always prefer ipfs:// URIs for permanence.

References

Keep looking

Skills are one crate of 628,853. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.