feat(icp-cli): use mops generate candid; Rust recipe v3.3.0 (optional package)#245
Merged
Merged
Conversation
… package) Closes #214. - Pitfall 16 (Motoko binding path): recommend `mops generate candid` (single step, no WASM build) instead of `mops build` + `cp`; cross-ref the mops-cli skill. "Nothing to do" path unchanged. - Bump @dfinity/rust@v3.2.0 -> v3.3.0 throughout. - Recipe table: package moved from required -> optional (defaults to canister name); add previously-missing `metadata` optional config. - New Pitfall 21: package is optional when the canister name matches the Cargo [package] name; required only when they differ (workspaces). - Evals: update case 15 to expect `mops generate candid` and re-scope it to avoid the 120s runner timeout; add cases for mops generate candid and the Rust package convention.
Skill Validation ReportValidating skill: /home/runner/work/icskills/icskills/skills/icp-cliStructure
Frontmatter
Tokens
Markdown
Tokens
Content Analysis
References Content Analysis
Contamination Analysis
References Contamination Analysis
Result: 1 warning Project Checks |
raymondk
approved these changes
Jul 13, 2026
lwshang
approved these changes
Jul 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #214.
Improves the
icp-cliskill on two fronts: adoptingmops generate candidfor Motoko Candid generation, and updating the Rust recipe to v3.3.0 (wherepackageis now optional).Changes to
skills/icp-cli/SKILL.mdIssue #214 —
mops generate candidmops generate candid backend— a single step that extracts the Candid interface directly from Motoko source without compiling WASM — replacing the oldmops build backend+cp .mops/.build/backend.did …two-step. Cross-references themops-cliskill, where the command is already fully documented. The "nothing to do" path (no binding generation needed) is unchanged, as the issue requested.Rust recipe v3.3.0 —
packagenow optional@dfinity/rust@v3.2.0→v3.3.0references (pitfalls 3, 4, 14; Rust config example; recipe table).packagemoved from required → optional (defaults to the canister name), and added the previously-missingmetadataoptional config.packageis optional when the canisternamematches the Cargo[package] name; set it only when they differ (e.g. a workspace crate). Pitfall 4 and the Rust config section cross-reference it.Evals (
evaluations/icp-cli.json)Added two cases and re-scoped one. All changed/added cases were run with baseline.
Eval results
Case 24 — Candid generation for Motoko binding (
mops generate candid) (new) — WITH 5/6 | WITHOUT 2/6The one WITH miss is a completeness nuance (the "overwrites the existing
[canisters.backend].candidpath if set" branch); the prompt described a fresh setup so the model covered the other branch. Both branches are documented in the skill body.Case 25 — Adversarial: Rust recipe package parameter (minimal vs workspace) (new) — WITH 4/4 | WITHOUT 4/4
No with/without delta: Opus 4.8 already knows the v3.3.0
packageconvention and reasons it out. Kept as a regression guard that pins the exact version behavior (and would catch a future WITH-skill regression / weaker models).Case 15 — Full-stack Motoko config artifacts (reworked) — WITH 6/6 | WITHOUT 4/6
The previous version of this case asked for an entire full-stack project in one prompt (icp.yaml + mops.toml + Motoko source + bindings + Vite dev-server + React component + walkthrough). That response exceeded the eval runner's hard 120s subprocess timeout, so
claudewas killed withETIMEDOUTand every behavior failed for both WITH and WITHOUT. Re-scoped the prompt to just the config artifacts + the candid command (excluding React component code and prose), and dropped the dev-server/outDir/local-network behaviors that are already covered by cases 19 and 6. It now completes reliably and shows themops generate candiddelta.🤖 Generated with Claude Code