About canhelp
canhelp is a skill for developers who need to inspect an Internet Computer canister interface. It resolves a canister name or ID, fetches its Candid file, and guides a structured summary of methods and types.
Key features
- 01Resolve canister names or IDs
- 02Fetch Candid interfaces
- 03Group query and update methods
- 04Summarize custom types
- 05Handle multiple matches and fetch errors
Use cases
- 01Inspecting a canister before integration
- 02Reviewing available methods and types
- 03Checking why interface retrieval failed
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ dfinity/ icskills --skill canhelpAfter installing, type/canhelpin Claude Code to confirm it loaded.
Bundled filesscripts/fetch-candid.shscripts/resolve-canister-id.sh
Details
From the project READMEGiven 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