ワンクリックで
meshjs-cardano
MeshJS patterns: tx building, wallet connectors, script interactions. TypeScript/JavaScript Cardano development.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
MeshJS patterns: tx building, wallet connectors, script interactions. TypeScript/JavaScript Cardano development.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Read-only wallet state via cardano MCP: balances, addresses, and UTxOs. Requires a configured cardano MCP server.
Retrieve ADAHandle identities ($handle) for the connected wallet via cardano MCP. Read-only.
Query staking delegation status and available rewards via cardano MCP. Read-only, no delegation changes.
Sign and submit pre-built Cardano transactions via cardano MCP. High-risk: requires structured preview and explicit user confirmation.
"Aiken workflows: validators, building, blueprints, .plutus generation. Safe guidance for smart contract development."
"Diagnose cardano-cli: version, era-prefixed vs legacy syntax, network flags. Produces compatibility report."
| name | meshjs-cardano |
| description | MeshJS patterns: tx building, wallet connectors, script interactions. TypeScript/JavaScript Cardano development. |
| allowed-tools | ["Read","Write"] |
| user-invocable | true |
npm install @meshsdk/core @meshsdk/react
# or
yarn add @meshsdk/core @meshsdk/react
import { BlockfrostProvider } from '@meshsdk/core';
const provider = new BlockfrostProvider('<PROJECT_ID>');
// or for preprod:
const provider = new BlockfrostProvider('<PROJECT_ID>', 'preprod');
import { CardanoWallet, useWallet } from '@meshsdk/react';
function App() {
const { connected, wallet } = useWallet();
return (
<div>
<CardanoWallet />
{connected && <p>Connected!</p>}
</div>
);
}
import { Transaction } from '@meshsdk/core';
const tx = new Transaction({ initiator: wallet })
.sendLovelace(
'addr_test1qz...',
'5000000' // 5 ADA
);
const unsignedTx = await tx.build();
const signedTx = await wallet.signTx(unsignedTx);
const txHash = await wallet.submitTx(signedTx);
const tx = new Transaction({ initiator: wallet })
.sendAssets(
'addr_test1qz...',
[
{ unit: 'lovelace', quantity: '2000000' },
{ unit: '<policy_id><asset_name_hex>', quantity: '1' }
]
);
const tx = new Transaction({ initiator: wallet })
.sendLovelace('addr_test1qz...', '1000000')
.setMetadata(674, { msg: ['Hello from MeshJS'] });
import { Data } from '@meshsdk/core';
const datum: Data = {
alternative: 0,
fields: [wallet.getPaymentAddress()]
};
const tx = new Transaction({ initiator: wallet })
.sendLovelace(
{
address: scriptAddress,
datum: { inline: datum }
},
'5000000'
);
const tx = new Transaction({ initiator: wallet })
.redeemValue({
value: scriptUtxo,
script: plutusScript,
datum: datum,
redeemer: { data: { alternative: 0, fields: [] } }
})
.sendLovelace(recipientAddress, '4500000')
.setCollateral([collateralUtxo]);
User request: "Mint an NFT with MeshJS"
Response:
import { ForgeScript, Transaction } from '@meshsdk/core';
// Create minting script (time-locked)
const { pubKeyHash } = wallet.getPaymentAddress();
const forgingScript = ForgeScript.withOneSignature(pubKeyHash);
const assetMetadata = {
name: 'My NFT',
image: 'ipfs://...',
mediaType: 'image/png'
};
const tx = new Transaction({ initiator: wallet })
.mintAsset(
forgingScript,
{
assetName: 'MyNFT',
assetQuantity: '1',
metadata: assetMetadata,
label: '721',
recipient: wallet.getPaymentAddress()
}
);
const unsignedTx = await tx.build();
const signedTx = await wallet.signTx(unsignedTx);
const txHash = await wallet.submitTx(signedTx);
console.log('Minted:', txHash);
import { BlockfrostProvider } from '@meshsdk/core';
const provider = new BlockfrostProvider('<PROJECT_ID>');
// Get UTxOs for address
const utxos = await provider.fetchAddressUTxOs(address);
// Get UTxOs at script address
const scriptUtxos = await provider.fetchAddressUTxOs(scriptAddress);
// Filter by asset
const nftUtxos = utxos.filter(utxo =>
utxo.output.amount.some(a => a.unit.includes(policyId))
);
try {
const txHash = await wallet.submitTx(signedTx);
console.log('Success:', txHash);
} catch (error) {
if (error.message.includes('UTxO')) {
console.log('UTxO issue - refresh and retry');
} else if (error.message.includes('collateral')) {
console.log('Need ADA-only UTxO for collateral');
}
}
const { connected, connecting, disconnect, wallet, name } = useWallet();
// Check connection before operations
if (!connected) {
throw new Error('Wallet not connected');
}
// Get network
const network = await wallet.getNetworkId();
// 0 = testnet, 1 = mainnet
shared/PRINCIPLES.md