Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use this skill whenever the user or task involves the Juno blockchain — Juno is an experimental Cosmos chain and **mainnet `juno-1` is the canonical operating environment**, not a graduation step. The skill covers querying state, signing and broadcasting transactions, deploying and interacting with CosmWasm contracts, and driving DAO DAO governance (proposals, votes, treasury moves, sub-DAOs, VetoConfig timelocks, cw-filter mandates) — all on mainnet by default. Trigger on mentions of `junod`, `
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 69% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 362% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 87% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 112% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 198% | 0% |
You have Juno at your fingertips — a CosmWasm-enabled Cosmos chain that launched October 2021, ships block times around 5–6 seconds, and carries the bulk of DAO DAO. Mainnet juno-1 (native token ujuno, 1 JUNO = 1,000,000 ujuno) is the canonical operating environment. Testnet uni-7 (ujunox) exists but is a sandbox, not a staging environment — the real chain is the experiment.
This skill makes you operational on Juno: read state, sign transactions, deploy and call CosmWasm contracts, drive DAO DAO governance — including the agent-mandate stack (sub-DAOs, VetoConfig timelocks, cw-filter message-policy). Examples lead with mainnet; switch to testnet only when explicitly asked or when the operation is genuinely throwaway.
Juno is an experimental chain. The thesis isn't "deploy to testnet, prove it works, then promote to mainnet" — it's "operate on mainnet, accept that things break in production, learn faster than chains that staged everything." Concretely:
juno-1. Code IDs, RPC endpoints, gas prices, examples — all mainnet. If a code path or example only makes sense on testnet, call that out explicitly.| Setting | Default | Source of truth | |---|---|---| | Network | juno-1 (mainnet) | The only network these examples assume. Testnet path is in references/chain.md §Testnet. | | CLI | junod | If missing → references/install.md | | RPC | https://juno-rpc.publicnode.com:443 | references/chain.md — multiple providers | | Gas | --gas auto --gas-adjustment 1.4 --gas-prices 0.075ujuno | Verify with feemarket params before large txs | | Keyring backend | test for hot/low-stakes (sub-DAO bounds blast radius); os / file / external signer for real treasury | references/keys.md phase guidance | | junod version | v29.x (current juno-1 recommended) | references/install.md. v27.0.0 only when explicitly working on uni-7. |
Trigger when:
junod, juno-1, JUNO token, or anything CosmWasm/DAO DAO without naming a different chainuni-7 (testnet) — covered, but assume mainnet emphasis applies unless the task is intrinsically testnet-onlyDo not use this skill when the user is working on a different Cosmos chain (Osmosis, Neutron, Hub, Stargaze, etc.) unless they explicitly ask about IBC between that chain and Juno. The general Cosmos-SDK patterns transfer, but defaults (gas prices, RPCs, code IDs) do not.
Identify the request shape, then go to the matching reference:
Is it read-only?
└── Yes → references/queries.md (no key needed, safe)
└── No → does it sign?
├── Bank send / staking / gov vote → references/transactions.md (+ keys.md if no key yet)
├── CosmWasm store / instantiate / execute → references/cosmwasm.md
└── DAO DAO operation
├── Interact with existing DAO (propose/vote/execute) → references/dao-dao.md §Interact
├── Create a new DAO from scratch → references/dao-dao.md §Create
└── Operate as a DAO member, agent-mandates → references/dao-dao.md §MemberIf the request is ambiguous, default to read-only first — query the chain to confirm what's there before signing anything.
bash# 1. junod present and a current version (v29.x for juno-1) junod version # 2. RPC alive + chain-id is juno-1 RPC=https://juno-rpc.publicnode.com:443 curl -sS "$RPC/status" | jq -r '.result.node_info.network' # expect: "juno-1" # 3. (signing only) a key exists in the keyring you intend to use junod keys list --keyring-backend test --keyring-dir <dir>
If junod is missing → references/install.md. If a key is missing → references/keys.md walks generate + fund. If the RPC is unreachable → fall back to an alternate provider from references/chain.md. If you're explicitly working on uni-7 instead, swap RPC + chain-id per references/chain.md §Testnet.
This skill teaches safe patterns; you are the operator and choose when to apply them. The operating principles:
--dry-run returns a gas estimate without broadcasting; --generate-only produces an unsigned tx JSON you can inspect, sign, and broadcast in separate steps.onchain-log.md (timestamp, chain, txhash, recipient, amount, purpose). The chain is canonical for state; the log captures intent.test is unencrypted — only acceptable for testnet or for hot wallets whose blast radius is bounded by architecture (sub-DAO + VetoConfig). For real treasuries: signer service / HSM, never a file on disk./dev/null; if a mnemonic appears anywhere readable by an LLM or logged, treat it as already-leaked and rotate.The chain doesn't unwind. Once a tx is signed and included, it is history.
Send JUNO (mainnet):
bashjunod tx bank send <from-addr> <to-addr> <amount>ujuno \ --from <key-name> --chain-id juno-1 \ --node https://juno-rpc.publicnode.com:443 \ --gas auto --gas-adjustment 1.4 --gas-prices 0.075ujuno \ --keyring-backend test --keyring-dir <dir> --yes
Query a balance (no key needed):
bashjunod query bank balances <addr> \ --node https://juno-rpc.publicnode.com:443
Vote on a DAO proposal:
bashjunod tx wasm execute <proposal-module-addr> \ '{"vote": {"proposal_id": 42, "vote": "yes"}}' \ --from <key-name> --chain-id juno-1 --node <RPC> \ --gas auto --gas-adjustment 1.4 --gas-prices 0.075ujuno \ --keyring-backend test --keyring-dir <dir> --yes
Query a DAO's open proposals:
bashjunod query wasm contract-state smart <proposal-module-addr> \ '{"list_proposals": {"limit": 10}}' --node <RPC> -o json | jq
Upload a CosmWasm contract:
bashjunod tx wasm store <path-to.wasm> \ --from <key-name> --chain-id juno-1 --node <RPC> \ --gas auto --gas-adjustment 1.5 --gas-prices 0.075ujuno \ --keyring-backend test --keyring-dir <dir> --yes # Capture code_id from the tx events.
Long-form workflows live in the references/ files.
| File | Read when | |---|---| | references/chain.md | You need endpoints, chain-ids, gas defaults, denoms, or IBC channels | | references/install.md | junod is missing or you need a specific version | | references/keys.md | Creating, importing, or thinking about key custody | | references/transactions.md | Anything that signs and broadcasts | | references/queries.md | Read-only chain state (bank, staking, gov, wasm, ibc) | | references/cosmwasm.md | Store, instantiate, execute, or query a CosmWasm contract | | references/dao-dao.md | Interacting with, creating, or operating a DAO DAO DAO — including the end-to-end sub-DAO runbook in §Member |
For repeated operations, the skill ships executable wrappers in scripts/. They are not magic — each is a parameterized version of a recipe documented in the references. Use them when you'd otherwise be assembling the same nested JSON for the tenth time. Each accepts --dry-run to print the assembled msg without broadcasting.
| Script | Wraps | |---|---| | scripts/instantiate-subdao.sh | The three-contract sub-DAO instantiate (DaoDaoCore + dao-voting-cw4 + dao-proposal-single with VetoConfig). Enforces the timelock/voting-period unit-match constraint. | | scripts/propose-bank-send.sh | A bank.send proposal against a dao-proposal-single module. Produces the propose-msg + executes the tx. | | scripts/verify-tx.sh | Poll for tx inclusion; extract contract addresses, proposal_id, transfer events, code IDs. Useful after every signed tx that produces follow-up data. |
When an agent task maps to one of these — instantiating a sub-DAO, submitting a routine proposal, checking what an instantiate produced — prefer the script over re-assembling the JSON. When the task diverges (different voting module, cw20-deposit pre-propose, etc.) fall back to the reference recipes and assemble by hand.
Read SKILL.md (you're here). Then by need — do not preload everything; let progressive disclosure work:
queries.mdkeys.md then transactions.mdcosmwasm.mddao-dao.mdchain.md is reference-only — grep it for the value you need.
Juno is a sovereign chain in the Cosmos SDK ecosystem, with first-class CosmWasm and IBC. Three things to keep present while operating:
juno1 prefix that happens to have code attached. wasm execute is a normal tx from your key TO the contract address; wasm query is a free read against the contract's exposed query messages.dao-dao-core plus one voting module plus one or more proposal modules plus optionally a pre-propose module. Each is its own contract; you address them individually. The core holds the treasury; proposal modules receive votes; the voting module computes voting power. Read references/dao-dao.md before touching anything DAO DAO — the composition is the load-bearing concept.When in doubt: query, then sign. Cosmos transactions are cheap (fractions of a cent) but irreversible.
Other measured skills in the registry, with their headline benchmark lift.