canhelp
Display a human-readable summary of a canister's interface given its mainnet canister ID or a human-readable name. Like --help but for canisters. Only for mainnet canisters — for local canisters, read the generated .did file in your project directly.
How do I install this agent skill?
npx skills add https://github.com/dfinity/icskills --skill canhelpIs this agent skill safe to install?
- Gen Agent Trust Hubwarn
The skill is functional for summarizing Internet Computer canisters but contains a dynamic code execution vulnerability in a helper script. Specifically, one script improperly interpolates user-provided input into a Python execution command, which could allow a malicious user to execute arbitrary code on the host system. It also interacts with official vendor APIs to fetch canister metadata.
- Socketwarn
1 alert: gptSecurity
- Snykwarn
Risk: MEDIUM · 1 issue
- ZeroLeakspass
Score: 93/100 · 2 sections analyzed
What does this agent skill do?
Given a canister ID or name in $ARGUMENTS, fetch and summarize its Candid interface.
Steps
-
Resolve the canister ID by running the resolve script from the skill's base directory:
./scripts/resolve-canister-id.sh "$ARGUMENTS"If
$ARGUMENTSis already a valid principal, the script echoes it back. Otherwise, it queries the IC Dashboard API and outputs matches as<canister-id> <name>(one per line).- If there is a single result, clearly display the resolved canister ID and use it directly.
- If there are multiple results, present the list to the user and ask them to pick one before continuing.
-
Fetch the Candid interface using the resolved canister ID:
./scripts/fetch-candid.sh <resolved-canister-id>The script outputs the path to the downloaded
.didfile. -
Read the file using the
Readtool. -
Present the output as a readable summary with the following structure:
Canister
<canister-id>Query methods:
method_name(arg1: type1, arg2: type2) → return_type— one-line description if inferable from the name
Update methods:
method_name(arg1: type1) → return_type
Types:
- List any custom record/variant types defined in the interface, with their fields
Guidelines
- Group methods by query vs update
- Sort methods alphabetically within each group
- For complex nested types, show the top-level structure and note nesting
- If the candid is very large (>100 methods), show a summary count and list only the most important-looking methods, offering to show the full list on request
- If the fetch succeeds, but the Candid interface is empty,explain that the canister is not exposing its Candid interface in the wasm metadata
- If the fetch fails, suggest the user verify the canister ID and that
icpis installed
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/dfinity/icskills/canhelp">View canhelp on skillZs</a>