From cardano-dev-skills
Explains Cardano Improvement Proposals (CIPs) — their status, developer impact, dependencies, and related SDK support. Useful when developers ask what a CIP covers or which standard applies to a problem.
How this skill is triggered — by the user, by Claude, or both
Slash command
/cardano-dev-skills:explain-cipThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
<!-- Documentation lookup path: ${CLAUDE_SKILL_DIR}/../../docs/sources/ -->
Help developers understand Cardano Improvement Proposals — what they standardize, how they affect development, and how to implement them.
connect-wallet (which
covers CIP-30 implementation)explain-eutxoA CIP defines a specification or convention. It does not provide a library or runtime. SDKs and tools choose to implement CIPs. When explaining a CIP, distinguish between what the standard defines and how specific tools implement it.
CIPs go through lifecycle stages: Draft, Proposed, Active, Inactive. A Draft CIP may change significantly. An Active CIP is stable and widely adopted. Always note the status when explaining a CIP, because developers should not build on unstable drafts without understanding the risk.
Developers care about: What does this CIP let me do? What do I need to implement? Which SDKs support it? What are the constraints? Lead with practical impact, not governance process.
Many CIPs reference or extend others. CIP-68 builds on CIP-25 concepts. CIP-95 extends CIP-30. When explaining a CIP, note its dependencies and related CIPs so the developer understands the full picture.
Determine the CIP number from the developer's question. If they describe a feature without naming a CIP, map it:
Search the bundled documentation for relevant content:
${CLAUDE_SKILL_DIR}/../../docs/sources/cips/ - CIP specifications and proposalsUse Grep and Glob to find relevant files. CIP content may appear in reference docs, registry entries, or skill files.
Structure your explanation with these components:
Summary: One-paragraph description of what the CIP standardizes.
Motivation: Why was this CIP created? What problem does it solve? What existed before?
Developer impact: What does this mean for a developer building on Cardano?
Implementation status: Is this CIP Active, Draft, or Proposed? Which SDKs support it? Are there known limitations or upcoming changes?
SDK support: Which Cardano SDKs and tools implement this CIP, and how?
Give the developer actionable next steps:
Status: Active
Summary: Defines a standard for attaching metadata to media tokens/NFTs using transaction metadata (label 721). Metadata is included in the minting transaction and indexed by off-chain services. (For fungible-token metadata — ticker, decimals, logo — the standard path is CIP-26, the off-chain token registry, not CIP-25.)
Developer impact:
Limitations:
Structure:
{
"721": {
"<policy_id>": {
"<asset_name>": {
"name": "Token Name",
"image": "ipfs://<hash>",
"description": "Token description",
"mediaType": "image/png",
"<additional_properties>": "..."
}
}
}
}
Status: Active
Summary: Defines a JavaScript API that wallets inject into web pages, enabling dApps to request wallet information, build transactions, and request signing. This is the primary standard for dApp-wallet interaction in browsers.
Developer impact:
window.cardano.<walletName> exposes the wallet APIenable() returns an API object with methods for address, UTxO, and signing operationsKey API methods:
getNetworkId() — returns 0 (testnet) or 1 (mainnet)getUtxos() — returns available UTxOs for transaction buildinggetBalance() — returns wallet balancegetUsedAddresses() / getUnusedAddresses() — address managementsignTx(tx, partialSign) — request transaction signingsignData(addr, payload) — sign arbitrary data (CIP-8)submitTx(tx) — submit a signed transactionCommon pitfalls:
window.cardano exists before accessing wallet propertiesenable() promptStatus: Active
Summary: Defines a JSON schema (blueprint) for Plutus validators, describing their parameters, datum, and redeemer types. Aiken generates CIP-57 blueprints automatically. SDKs use blueprints to create type-safe interfaces for validator interaction.
Developer impact:
plutus.json after compilation — this is the CIP-57 blueprintStructure highlights:
validators[] — list of validators with their hashes and compiled codedefinitions — shared type definitions (datum, redeemer schemas)datum.schema, redeemer.schema, and compiledCodeStatus: Active
Summary: Defines a pattern for storing token metadata as a datum on a reference UTxO, making metadata on-chain, updatable, and queryable via reference inputs. Replaces CIP-25 for use cases requiring mutable or on-chain metadata.
Developer impact:
(222) for NFTs, (333) for FTs, (444) for RFTsArchitecture:
<policy_id>.<label><name> — held by the owner, represents ownership<policy_id>.(100)<name> — held at a script address, carries
metadata in its datum (label 100, hex prefix 000643b0)When to use CIP-68 vs CIP-25:
| Requirement | CIP-25 | CIP-68 |
|---|---|---|
| Simple, immutable NFT | Good fit | Overkill |
| Updatable metadata | Not possible | Designed for this |
| On-chain metadata access | Not available | Via reference input |
| Implementation complexity | Low | Medium |
| Transaction cost | Lower (metadata only) | Higher (reference UTxO + datum) |
Status: Active (Conway era)
Summary: Extends CIP-30 with governance-specific wallet methods for the Conway governance era (Voltaire). Enables dApps to interact with DRep registration, voting, and governance actions.
Developer impact:
cip95 methods accessible after enable({ extensions: [{ cip: 95 }] })getPubDRepKey() — get the wallet's DRep public keygetRegisteredPubStakeKeys() — get registered stake keysgetUnregisteredPubStakeKeys() — get unregistered stake keysPrerequisite: CIP-30 wallet connection must be established first.
Status: Proposed per the draft's own header — but the CIP is an unmerged PR
(cardano-foundation/CIPs#444),
so it is not yet in the official CIPs repo or the bundled cips/ mirror — though an
adapted reference implementation is bundled under docs/sources/cip-113-programmable-tokens/.
Summary: Defines a standard for tokens with programmable validation logic — rules enforced on every transfer, mint, and burn. Tokens are held at a shared script address with ownership tracked by stake credential; an on-chain registry links each token to its transfer/issuance logic, and substandards (freeze-and-seize, KYC) plug into the shared framework.
Developer impact:
Note: The specification may still change, and the Cardano Foundation reference
implementation is not professionally audited, has only been briefly tested on the
Preview testnet, and is not production-ready. Check the PR and
docs/sources/cip-113-programmable-tokens/ for current state.
Status: Active
Summary: Defines Cardano's on-chain governance system introduced in the Conway era. Establishes the governance framework with DReps (Delegated Representatives), a Constitutional Committee, and SPO governance roles. All holders can participate in governance through delegation or direct voting.
Developer impact:
Key concepts:
When a developer describes a feature, map it to the relevant CIP:
| Developer asks about... | Relevant CIP(s) |
|---|---|
| NFT metadata | CIP-25 (immutable), CIP-68 (updatable) |
| Wallet connection | CIP-30 |
| Wallet governance | CIP-95 (extends CIP-30) |
| Message signing | CIP-8 (via CIP-30's signData) |
| Token metadata on-chain | CIP-68 |
| Validator interface / types | CIP-57 (blueprint) |
| Programmable tokens | CIP-113 |
| Governance / voting | CIP-1694 |
| Reference inputs | CIP-31 |
| Inline datums | CIP-32 |
| Reference scripts | CIP-33 |
| Collateral outputs | CIP-40 |
| Multi-asset structure | CIP-14 (asset fingerprint) |
github.com/cardano-foundation/CIPs../shared/PRINCIPLES.mdnpx claudepluginhub cardano-foundation/cardano-dev-skills --plugin cardano-dev-skillsGuides integrating Cardano browser wallets into web dApps using the CIP-30 standard. Handles wallet discovery, connection, state reading, and transaction signing.
This skill should be used when the user asks about the Compact standard library (CompactStandardLibrary), stdlib types (Maybe, Either, JubjubPoint, MerkleTreeDigest, MerkleTreePath, ContractAddress, ZswapCoinPublicKey, UserAddress), deprecated stdlib names (CurvePoint, NativePoint, CoinInfo), stdlib constructor functions (some, none, left, right), elliptic curve functions (ecAdd, ecMul, ecMulGenerator, hashToCurve, jubjubPointX, jubjubPointY, constructJubjubPoint), Merkle tree path verification (merkleTreePathRoot, merkleTreePathRootNoLeafHash), or when the user needs to verify which functions exist in the standard library, prevent hallucination of non-existent stdlib functions, or search the Midnight MCP for stdlib source code.
Tracks Ethereum protocol evolution, EIP lifecycle, fork schedules via forkcast.org and EIPs repo. Use for checking feature status, upcoming changes, or proposing EIPs.