pop-cli

star 113

Use when running `pop` to develop or interact with ink! smart contracts and Polkadot SDK chains.

r0gue-io By r0gue-io schedule Updated 2/20/2026

name: pop-cli description: Use when running pop to develop or interact with ink! smart contracts and Polkadot SDK chains.

Pop CLI Skill

Use this skill for workflows that run through pop.

Run pop --help for getting an overview.

Global Rules

  • Run plain pop commands only, one command per step.
  • Never use cargo-contract under any conditions. Use pop for all contract workflows.
  • Never chain commands or use shell wrappers/operators (&&, ;, |, command substitution, scripts/functions).
  • Exception: env expansion is allowed only for signer secret on --suri (example: --suri "$PRIVATE_KEY").
  • Prefer explicit flags over prompts (--path, --url, --args, --skip-confirm where supported).
  • Never print secrets.
  • Cleanup safety: always get explicit user approval before any cleanup that stops/removes local nodes, networks, or forks.

Command Guide

pop new contract

  • Use for new ink! contract scaffolding.
  • pop new contract --list for available contracts.

pop new chain

  • Use for new Polkadot SDK chain scaffolding.
  • pop new chain --list for available chains.

pop build --path <dir>

  • Use to build contracts or chains with explicit path input.

pop test --path <dir>

  • Use to run tests for contracts or chains with explicit path input.

For the following commands:

pop up ink-node ... --detach

pop up fork ... --detach

pop up network <zombie.json> --detach

pop up paseo --detach

pop up paseo --parachain asset-hub --detach

  • You MUST use a persistent terminal session.
  • After spawned/running output, you MUST wait 10 seconds before interacting.
  • Use the endpoint returned by Pop for follow-up calls. For pop up network use ws_uri values from generated zombie.json.
  • Treat endpoint verification as a hard gate before any dependent command.
  • Do not trust success banner alone; you MUST run:
    • pop call chain --url <ws-url> --metadata
  • Continue only if the metadata call succeeds (exit code 0 and pallet list output). If it fails, do not proceed with dependent calls.

pop up <contract-dir> --constructor <name> --args <arg>... --suri "$PRIVATE_KEY" --url <ws-url> --skip-confirm

  • --skip-confirm requires all constructor args via --args.
  • pop up <path> checks only the provided path; it does not recurse into subdirectories.

pop verify --path <contract-dir> --url <ws-url> --address <contract-address> --image <image-tag>

  • For deployed contract verification, first build with pop build --path . --verifiable, then deploy using pop up ... --skip-build, and verify with the exact same --image tag.
  • Run verifiable workflows from inside the project with --path . (not absolute host paths), because Docker path mapping can break cargo metadata.

pop call chain --url <ws-url> --pallet <pallet> --function <snake_case_name> --args <arg>... --suri "$PRIVATE_KEY" --skip-confirm

  • First time calling a chain use pop call chain --metadata for which pallets, + --pallet <pallet_name> for pallet info.
  • Evaluate both exit code and output text of return.
  • Success requires exit code 0 and exact success output:
    • Call complete.
    • for extrinsics, also Extrinsic Submitted with hash:
  • --function use snake_case (example: transfer_keep_alive).
  • For calls expecting MultiAddress (example: Balances.transfer_keep_alive), pass destination as Id(0x...).

pop call contract --path <contract-dir> --contract 0x... --message <name> --args <arg>... --suri "$PRIVATE_KEY" --url <ws-url> --skip-confirm

  • Evaluate both exit code and output text.
  • Success requires exit code 0 and exact success output:
    • Call completed successfully!
    • Contract calling complete.
  • Default provide not only if user specifies otherwise --gas and --proof-size must be provided together; passing only one fails argument validation.

pop convert address <value>

  • Use for address format conversion utilities.
  • Do not assume strict round-trip string equality across families (SS58 -> EVM -> SS58 may return a different SS58 representation/prefix).

pop clean node

  • Requires explicit user approval (global cleanup safety rule).
  • Use targeted cleanup first when PIDs are known: --pid.
  • Use --all only when explicitly requested, since it can terminate unrelated local processes.

pop clean network

  • Requires explicit user approval (global cleanup safety rule).
  • Prefer targeted cleanup by base dir or zombie.json.
  • Use --all only when explicitly requested.
Install via CLI
npx skills add https://github.com/r0gue-io/pop-cli --skill pop-cli
Repository Details
star Stars 113
call_split Forks 39
navigation Branch main
article Path SKILL.md
More from Creator