"Plutus script guidance: datums, redeemers, collateral, reference scripts. Templates only—use operator to execute."
Resources
2Install
npx skillscat add flux-point-studios/cardano-agent-skills/cardano-cli-plutus-scripts Install via the SkillsCat registry.
We need to produce a 2-3 sentence plain-text summary, objective, factual, no marketing language, no superlatives, no calls to action, natural prose, no bullet points, no headings, no markdown formatting, no quotes, at most 60 words. Must be only the summary text. We need to explain: what this skill does, what problem it solves, when an agent or developer should use it. From description: It provides Plutus script guidance: datums, redeemers, collateral, reference scripts. Templates only—use operator to execute.
cardano-cli-plutus-scripts
This is a guidance skill. Provides templates and explanations. For execution, use
cardano-cli-plutus-scripts-operator.
When to use
- Learning Plutus script transaction patterns
- Understanding datums, redeemers, collateral
- Getting templates for script interactions
Operating rules (must follow)
- Confirm network and script version (V2/V3)
- Never execute—only provide templates
- Always include collateral handling
- Use fresh protocol parameters
Docker fallback mode
If cardano-cli is not installed locally, use the wrapper script in this skill folder to run cardano-cli inside Docker (the Cardano node container images include the CLI).
chmod +x {baseDir}/scripts/cardano-cli.sh
{baseDir}/scripts/cardano-cli.sh versionNotes:
- The wrapper mounts your current directory into the container as
/workso files likepparams.json,tx.body,datum.jsonwork normally. - If you have a local node socket, set
CARDANO_NODE_SOCKET_PATHbefore running soquerycommands work. - Override the image with
CARDANO_DOCKER_IMAGE=ghcr.io/intersectmbo/cardano-node:<tag>.
Key concepts
Script versions
- V1 (Alonzo): Legacy, limited features
- V2 (Babbage): Reference scripts, inline datums
- V3 (Conway): Governance, simplified interface
Datum handling
- Inline datum: Stored on-chain with UTxO
- Datum hash: Only hash on-chain, provide full datum when spending
- No datum: For some V3 scripts
Collateral
- Required for all Plutus script transactions
- Must be ADA-only UTxO
- Forfeit if script fails unexpectedly
- Typically 1-5 ADA sufficient
Workflow templates
Lock funds at script address
# 1. Derive script address
cardano-cli conway address build \
--payment-script-file script.plutus \
--testnet-magic 1 \
--out-file script.addr
# 2. Create datum file
echo '{"constructor": 0, "fields": []}' > datum.json
# 3. Lock with inline datum
cardano-cli conway transaction build \
--testnet-magic 1 \
--tx-in <utxo>#<index> \
--tx-out "$(cat script.addr)+5000000" \
--tx-out-inline-datum-file datum.json \
--change-address <payment-addr> \
--out-file tx.unsigned
# Sign and submitSpend from script
# 1. Create redeemer
echo '{"constructor": 0, "fields": []}' > redeemer.json
# 2. Build script spend
cardano-cli conway transaction build \
--testnet-magic 1 \
--tx-in <script-utxo>#<index> \
--tx-in-script-file script.plutus \
--tx-in-inline-datum-present \
--tx-in-redeemer-file redeemer.json \
--tx-in-collateral <collateral-utxo>#<index> \
--tx-out <recipient>+<amount> \
--change-address <payment-addr> \
--out-file tx.unsigned
# Sign (with collateral key) and submitWith reference script
# Script already on-chain at reference UTxO
cardano-cli conway transaction build \
--testnet-magic 1 \
--tx-in <script-utxo>#<index> \
--spending-tx-in-reference <ref-script-utxo>#<index> \
--spending-plutus-script-v2 \
--spending-reference-tx-in-inline-datum-present \
--spending-reference-tx-in-redeemer-file redeemer.json \
--tx-in-collateral <collateral>#<index> \
--tx-out <recipient>+<amount> \
--change-address <payment-addr> \
--out-file tx.unsignedExamples
Example: Simple validator spend
User request: "Spend from my always-succeeds script"
Response:
# === Spend from Always-Succeeds Script ===
SCRIPT_ADDR=$(cat script.addr)
PAYMENT_ADDR=$(cat base.addr)
# 1. Query script UTxO
cardano-cli conway query utxo \
--address $SCRIPT_ADDR \
--testnet-magic 1
# Note the UTxO hash and index
# 2. Query payment UTxOs (for collateral)
cardano-cli conway query utxo \
--address $PAYMENT_ADDR \
--testnet-magic 1
# Select ADA-only UTxO for collateral
# 3. Create redeemer (for always-succeeds, can be unit)
echo '{"constructor": 0, "fields": []}' > redeemer.json
# 4. Build transaction
cardano-cli conway transaction build \
--testnet-magic 1 \
--tx-in <script-utxo>#0 \
--tx-in-script-file always-succeeds.plutus \
--tx-in-inline-datum-present \
--tx-in-redeemer-file redeemer.json \
--tx-in-collateral <collateral-utxo>#0 \
--tx-out "$PAYMENT_ADDR+4500000" \
--change-address $PAYMENT_ADDR \
--out-file tx.unsigned
# 5. Sign and submit (use operator skill)Debugging
Calculate execution costs
cardano-cli conway transaction build \
... \
--calculate-plutus-script-cost costs.json
cat costs.json | jq .Common failures
- ExUnitsTooBig: Script exceeds execution budget
- CollateralNotFound: Missing or invalid collateral
- DatumMismatch: Provided datum doesn't match hash
- ScriptFailure: Validator returned False
Safety / key handling
- Test scripts on preprod/preview first
- Use minimal collateral
- Datum/redeemer are public—no secrets
- Verify script hash after rebuilds
References
shared/PRINCIPLES.mdcardano-cli-plutus-scripts-operator(for execution)aiken-smart-contracts(for writing validators)