From 58c93073e15cf1b9e299c8e16496cee59abe1226 Mon Sep 17 00:00:00 2001 From: Marco Walz Date: Fri, 24 Apr 2026 14:00:30 +0200 Subject: [PATCH 01/18] docs: expand tools overview with JS SDK, PocketIC, and ic-wasm cleanup - Remove standalone ic-wasm section (duplicate install commands); fold description into the icp-cli install block as an inline note - Add Client libraries section covering the @icp-sdk JS/TS packages (agent, candid, principal, identity, auth, bindgen) with link to js.icp.build for full docs - Add Testing tools section covering PocketIC with install table for Rust (pocket-ic), JS/TS (@dfinity/pic), and Python client libraries - Apply pending fixes from #140: move full-docs link to first icp-cli mention, replace local migrating-from-dfx link with external URL - Update description and intro paragraph to reflect new sections --- docs/guides/tools/overview.md | 57 ++++++++++++++++++++++++++--------- 1 file changed, 42 insertions(+), 15 deletions(-) diff --git a/docs/guides/tools/overview.md b/docs/guides/tools/overview.md index 125b3932..c11feb92 100644 --- a/docs/guides/tools/overview.md +++ b/docs/guides/tools/overview.md @@ -1,11 +1,11 @@ --- title: "Developer Tools" -description: "Overview of the ICP developer toolchain: icp-cli, CDKs, icp.ninja, and more" +description: "Overview of the ICP developer toolchain: icp-cli, CDKs, JS SDK, PocketIC, and more" sidebar: order: 1 --- -Developer tools are used to create, manage, and interact with canisters. ICP provides tooling across several categories: command-line tools, canister development kits (CDKs), browser-based IDEs, Wasm optimization utilities, and Candid tooling. +Developer tools are used to create, manage, and interact with canisters. ICP provides tooling across several categories: command-line tools, canister development kits (CDKs), client libraries, testing tools, browser-based IDEs, and Candid tooling. ## Command-line tools @@ -31,6 +31,8 @@ brew install icp-cli brew install ic-wasm ``` +Both install `ic-wasm` alongside `icp-cli`. `ic-wasm` optimizes and annotates Wasm modules: it shrinks binary size, embeds Candid metadata, and strips unused sections. The official Rust and Motoko recipes run it automatically — you only need to invoke it directly when writing custom build steps. + Verify: ```bash @@ -55,18 +57,6 @@ icp settings telemetry false Or set `DO_NOT_TRACK=1` in your environment. Telemetry is automatically disabled in CI when the `CI` environment variable is set. -### ic-wasm - -`ic-wasm` is a utility for optimizing and annotating WebAssembly modules for the Internet Computer. It shrinks Wasm binary size, embeds Candid metadata, and strips unused sections. The official Rust and Motoko recipes use `ic-wasm` automatically: you only need to call it directly when using custom build steps. - -Install: - -```bash -npm install -g @icp-sdk/ic-wasm -# or -brew install ic-wasm -``` - ### Quill Quill is a minimalistic, offline-first CLI for signing and sending governance messages (NNS and SNS proposals, neuron management) from air-gapped machines. Unlike `icp-cli`, Quill is designed for cold wallet workflows: you generate signed messages on an offline device, then submit them from a networked machine. @@ -112,6 +102,43 @@ Several community-maintained CDKs extend ICP to other languages: Community CDKs are maintained independently of DFINITY. Check each project's documentation for current support status. +## Client libraries + +The ICP JavaScript SDK (`@icp-sdk`) provides TypeScript and JavaScript libraries for building frontends and scripts that interact with canisters. Full documentation is at [js.icp.build](https://js.icp.build). + +| Package | Purpose | +|---------|---------| +| `@icp-sdk/core/agent` | Send update and query calls to canisters; manage actors | +| `@icp-sdk/core/candid` | Encode and decode Candid values | +| `@icp-sdk/core/principal` | Work with canister and user principal identifiers | +| `@icp-sdk/core/identity` | Manage signing identities | +| `@icp-sdk/auth` | Authentication client for Internet Identity | +| `@icp-sdk/bindgen` | Generate TypeScript bindings from a Candid interface file | + +Install: + +```bash +npm install @icp-sdk/core +``` + +`@icp-sdk/bindgen` is also available as a Vite plugin and a standalone CLI tool. The official project templates wire it up automatically: generated bindings appear in `src/declarations/` after each build. + +## Testing tools + +### PocketIC + +[PocketIC](../testing/pocket-ic.md) is a lightweight, deterministic testing library for canister integration tests. It runs an in-process IC replica: no daemon, no ports, no Docker required. Tests execute synchronously, making them fast and fully reproducible. The `icp-cli` local development network uses PocketIC under the hood. + +Client libraries: + +| Language | Package | Install | +|----------|---------|---------| +| Rust | [`pocket-ic`](https://crates.io/crates/pocket-ic) | Add to `[dev-dependencies]` in `Cargo.toml` | +| JavaScript / TypeScript | [`@dfinity/pic`](https://www.npmjs.com/package/@dfinity/pic) | `npm install --save-dev @dfinity/pic` | +| Python | [`pocket-ic`](https://pypi.org/project/pocket-ic/) | `pip install pocket-ic` | + +For usage patterns and examples, see the [PocketIC guide](../testing/pocket-ic.md). + ## Browser-based IDE ### ICP Ninja @@ -150,4 +177,4 @@ Resources: - **Rust development:** [Rust language guide](../../languages/rust/index.md) - **Motoko development:** [Motoko language guide](../../languages/motoko/index.md) - + From d80624499150a6b803ace6432796d3eeea1b29df Mon Sep 17 00:00:00 2001 From: Marco Walz Date: Fri, 24 Apr 2026 14:03:13 +0200 Subject: [PATCH 02/18] fix(validate): remove deleted migrating-from-dfx.md from SYNCED list, fix stale link in ai-coding-agents --- docs/guides/tools/ai-coding-agents.md | 2 +- scripts/validate.js | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/guides/tools/ai-coding-agents.md b/docs/guides/tools/ai-coding-agents.md index e92926a2..9f3dbed6 100644 --- a/docs/guides/tools/ai-coding-agents.md +++ b/docs/guides/tools/ai-coding-agents.md @@ -101,6 +101,6 @@ ICP skills are available without authentication: - [skills.internetcomputer.org](https://skills.internetcomputer.org): browse all available ICP skills - [Developer tools overview](overview.md): icp-cli, CDKs, and other tools in the ICP toolchain - [Quickstart](../../getting-started/quickstart.md): deploy your first canister with icp-cli -- [Migrating from dfx](migrating-from-dfx.md): upgrade an existing project from the legacy dfx tool +- [Migrating from dfx](https://cli.internetcomputer.org/0.2/migration/from-dfx): upgrade an existing project from the legacy dfx tool diff --git a/scripts/validate.js b/scripts/validate.js index 95d88edb..aa896770 100644 --- a/scripts/validate.js +++ b/scripts/validate.js @@ -11,7 +11,6 @@ const DOCS_ROOT = path.join(ROOT, 'docs'); const SYNCED = [ path.join(DOCS_ROOT, 'languages', 'motoko'), - path.join(DOCS_ROOT, 'guides', 'tools', 'migrating-from-dfx.md'), ]; function isSynced(file) { From c9bb3402e589ee28038402ea93e8faff926a7b49 Mon Sep 17 00:00:00 2001 From: Marco Walz Date: Fri, 24 Apr 2026 14:03:58 +0200 Subject: [PATCH 03/18] docs: remove migrating-from-dfx link from ai-coding-agents next steps --- docs/guides/tools/ai-coding-agents.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/tools/ai-coding-agents.md b/docs/guides/tools/ai-coding-agents.md index 9f3dbed6..1620cf23 100644 --- a/docs/guides/tools/ai-coding-agents.md +++ b/docs/guides/tools/ai-coding-agents.md @@ -101,6 +101,6 @@ ICP skills are available without authentication: - [skills.internetcomputer.org](https://skills.internetcomputer.org): browse all available ICP skills - [Developer tools overview](overview.md): icp-cli, CDKs, and other tools in the ICP toolchain - [Quickstart](../../getting-started/quickstart.md): deploy your first canister with icp-cli -- [Migrating from dfx](https://cli.internetcomputer.org/0.2/migration/from-dfx): upgrade an existing project from the legacy dfx tool + From 3b595d5d3f0ece40106c4e16cbca974f363ebc1a Mon Sep 17 00:00:00 2001 From: Marco Walz Date: Fri, 24 Apr 2026 14:14:55 +0200 Subject: [PATCH 04/18] infra: move tools overview to reference, promote AI coding agents to top of guides MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Developer Tools overview is catalog/reference content, not a how-to guide. AI Coding Agents is a genuine guide (task-oriented). Split accordingly: - docs/guides/tools/overview.md → docs/reference/developer-tools.md (sidebar order: 0 — first entry under Reference) - docs/guides/tools/ai-coding-agents.md → docs/guides/ai-coding-agents.md (flat, first item in Guides sidebar — no sub-nav) - Remove docs/guides/tools/ directory - Update sidebar.mjs: add flat AI Coding Agents entry, remove Tools group - Update guides/index.md, reference/index.md, and all cross-links --- docs/getting-started/choose-your-path.md | 2 +- docs/getting-started/quickstart.md | 2 +- docs/guides/{tools => }/ai-coding-agents.md | 8 ++++---- docs/guides/index.md | 6 ++---- docs/index.mdx | 2 +- .../developer-tools.md} | 18 +++++++++--------- docs/reference/index.md | 4 ++++ sidebar.mjs | 6 +----- 8 files changed, 23 insertions(+), 25 deletions(-) rename docs/guides/{tools => }/ai-coding-agents.md (93%) rename docs/{guides/tools/overview.md => reference/developer-tools.md} (89%) diff --git a/docs/getting-started/choose-your-path.md b/docs/getting-started/choose-your-path.md index 59492018..061218aa 100644 --- a/docs/getting-started/choose-your-path.md +++ b/docs/getting-started/choose-your-path.md @@ -43,7 +43,7 @@ The biggest shift: on Ethereum, smart contracts are minimal programs that rely o ICP has a set of [ICP skills](https://skills.internetcomputer.org): structured knowledge files that AI agents can load to write canister code, debug deployments, and navigate the platform. If you work with tools like Claude Code, Cursor, or Copilot, ICP skills give them the context they need. -**Learn more:** [AI coding agents](../guides/tools/ai-coding-agents.md) +**Learn more:** [AI coding agents](../guides/ai-coding-agents.md) ## Backend development diff --git a/docs/getting-started/quickstart.md b/docs/getting-started/quickstart.md index be9bef5a..6c9f3ecd 100644 --- a/docs/getting-started/quickstart.md +++ b/docs/getting-started/quickstart.md @@ -129,7 +129,7 @@ Each canister name maps to a directory containing its own `canister.yaml` with b - [Project structure](project-structure.md): understand how icp-cli projects are organized - [Choose your path](choose-your-path.md): pick a development path based on what you want to build - [Concepts: Canisters](../concepts/canisters.md): learn what canisters are and how they work -- [AI coding agents](../guides/tools/ai-coding-agents.md): use ICP skills to build on the Internet Computer with AI +- [AI coding agents](../guides/ai-coding-agents.md): use ICP skills to build on the Internet Computer with AI - [icp-cli documentation](https://cli.internetcomputer.org/): full CLI reference and guides diff --git a/docs/guides/tools/ai-coding-agents.md b/docs/guides/ai-coding-agents.md similarity index 93% rename from docs/guides/tools/ai-coding-agents.md rename to docs/guides/ai-coding-agents.md index 1620cf23..11e5b296 100644 --- a/docs/guides/tools/ai-coding-agents.md +++ b/docs/guides/ai-coding-agents.md @@ -2,7 +2,7 @@ title: "AI Coding Agents" description: "ICP skills are agent-readable instruction files that teach AI coding agents how to build correctly on the Internet Computer." sidebar: - order: 3 + order: 1 --- AI coding agents frequently hallucinate canister IDs, use deprecated APIs, and miss ICP-specific constraints. ICP skills solve this: structured markdown files containing accurate canister IDs, tested code patterns, and documented pitfalls: so your agent writes correct ICP code on the first attempt. @@ -79,7 +79,7 @@ This docs site implements the [Agent-Friendly Documentation Spec](https://agentd **[`/llms.txt`](/llms.txt)**: a discovery index listing every page with links to its clean markdown endpoint, plus the ICP skills registry URL. -**`/.md`**: every page is available as clean markdown. HTML, navigation, and site chrome are stripped, leaving only the content. For example, this page is available at [`/guides/tools/ai-coding-agents.md`](/guides/tools/ai-coding-agents.md). +**`/.md`**: every page is available as clean markdown. HTML, navigation, and site chrome are stripped, leaving only the content. For example, this page is available at [`/guides/ai-coding-agents.md`](/guides/ai-coding-agents.md). A discovery link in every page's `` points to `/llms.txt`, so agents that crawl docs pages find the index automatically. @@ -99,8 +99,8 @@ ICP skills are available without authentication: ## Next steps - [skills.internetcomputer.org](https://skills.internetcomputer.org): browse all available ICP skills -- [Developer tools overview](overview.md): icp-cli, CDKs, and other tools in the ICP toolchain -- [Quickstart](../../getting-started/quickstart.md): deploy your first canister with icp-cli +- [Developer tools](../reference/developer-tools.md): icp-cli, CDKs, and other tools in the ICP toolchain +- [Quickstart](../getting-started/quickstart.md): deploy your first canister with icp-cli diff --git a/docs/guides/index.md b/docs/guides/index.md index 7a73f33d..53ad2c54 100644 --- a/docs/guides/index.md +++ b/docs/guides/index.md @@ -7,6 +7,8 @@ sidebar: Practical how-to guides organized by development stage. Each guide solves a specific task with working code. +- **[AI Coding Agents](ai-coding-agents.md)**: Use ICP skills to give AI coding agents accurate canister IDs, tested code patterns, and ICP-specific context. + ## Build - **[Backends](backends/data-persistence.md)**: Data persistence, HTTPS outcalls, timers, randomness, and other backend patterns. @@ -25,7 +27,3 @@ Practical how-to guides organized by development stage. Each guide solves a spec - **[Chain Fusion](chain-fusion/bitcoin.md)**: Native Bitcoin, Ethereum, Solana, and Dogecoin integration. - **[DeFi](defi/token-ledgers.md)**: Token ledgers, chain-key tokens, and the Rosetta API. - **[Governance](governance/launching.md)**: Launch and manage an SNS DAO for your app. - -## Developer tools - -- **[Tools](tools/overview.md)**: Developer toolchain overview, icp-cli, CDKs, and AI coding agents with ICP skills. diff --git a/docs/index.mdx b/docs/index.mdx index ff4e9b26..f41f84aa 100644 --- a/docs/index.mdx +++ b/docs/index.mdx @@ -36,7 +36,7 @@ Teach your AI agent canister patterns, API integrations, CLI commands, and deplo
-Learn more +Learn more
diff --git a/docs/guides/tools/overview.md b/docs/reference/developer-tools.md similarity index 89% rename from docs/guides/tools/overview.md rename to docs/reference/developer-tools.md index c11feb92..bf62210e 100644 --- a/docs/guides/tools/overview.md +++ b/docs/reference/developer-tools.md @@ -2,7 +2,7 @@ title: "Developer Tools" description: "Overview of the ICP developer toolchain: icp-cli, CDKs, JS SDK, PocketIC, and more" sidebar: - order: 1 + order: 0 --- Developer tools are used to create, manage, and interact with canisters. ICP provides tooling across several categories: command-line tools, canister development kits (CDKs), client libraries, testing tools, browser-based IDEs, and Candid tooling. @@ -76,7 +76,7 @@ A canister development kit (CDK) provides a programming language with the librar Motoko is ICP's native programming language, designed around the actor model, orthogonal persistence, and asynchronous message passing. It compiles directly to WebAssembly and includes a standard library (`mo:core`) with modules for common data structures, cryptography, and system interaction. -For language documentation, see [languages/motoko](../../languages/motoko/index.md). +For language documentation, see [languages/motoko](../languages/motoko/index.md). ### Rust CDK (`ic-cdk`) @@ -87,7 +87,7 @@ The Rust CDK (`ic-cdk`) is the official DFINITY-maintained library for building API reference: [docs.rs/ic-cdk](https://docs.rs/ic-cdk/latest/ic_cdk/) -For Rust-specific guides, see [languages/rust](../../languages/rust/index.md). +For Rust-specific guides, see [languages/rust](../languages/rust/index.md). ### Community CDKs @@ -127,7 +127,7 @@ npm install @icp-sdk/core ### PocketIC -[PocketIC](../testing/pocket-ic.md) is a lightweight, deterministic testing library for canister integration tests. It runs an in-process IC replica: no daemon, no ports, no Docker required. Tests execute synchronously, making them fast and fully reproducible. The `icp-cli` local development network uses PocketIC under the hood. +[PocketIC](../guides/testing/pocket-ic.md) is a lightweight, deterministic testing library for canister integration tests. It runs an in-process IC replica: no daemon, no ports, no Docker required. Tests execute synchronously, making them fast and fully reproducible. The `icp-cli` local development network uses PocketIC under the hood. Client libraries: @@ -137,7 +137,7 @@ Client libraries: | JavaScript / TypeScript | [`@dfinity/pic`](https://www.npmjs.com/package/@dfinity/pic) | `npm install --save-dev @dfinity/pic` | | Python | [`pocket-ic`](https://pypi.org/project/pocket-ic/) | `pip install pocket-ic` | -For usage patterns and examples, see the [PocketIC guide](../testing/pocket-ic.md). +For usage patterns and examples, see the [PocketIC guide](../guides/testing/pocket-ic.md). ## Browser-based IDE @@ -169,12 +169,12 @@ Install: download a prebuilt binary from the [releases page](https://github.com/ Resources: - [Candid GitHub repo](https://github.com/dfinity/candid) -- Candid specification: [reference/candid-spec.md](../../reference/candid-spec.md) +- Candid specification: [candid-spec.md](candid-spec.md) ## Next steps -- **Start building:** [Quickstart](../../getting-started/quickstart.md): deploy your first canister with icp-cli -- **Rust development:** [Rust language guide](../../languages/rust/index.md) -- **Motoko development:** [Motoko language guide](../../languages/motoko/index.md) +- **Start building:** [Quickstart](../getting-started/quickstart.md): deploy your first canister with icp-cli +- **Rust development:** [Rust language guide](../languages/rust/index.md) +- **Motoko development:** [Motoko language guide](../languages/motoko/index.md) diff --git a/docs/reference/index.md b/docs/reference/index.md index e5a09936..a05ac4a4 100644 --- a/docs/reference/index.md +++ b/docs/reference/index.md @@ -7,6 +7,10 @@ sidebar: Technical reference material for ICP development. These pages cover exact specifications, canister IDs, costs, and error codes. +## Tools + +- **[Developer Tools](developer-tools.md)**: icp-cli, CDKs, JS SDK, PocketIC, ICP Ninja, and other toolchain components. + ## Canisters - **[Management Canister](management-canister.md)**: API reference for the IC management canister (`aaaaa-aa`): canister lifecycle, signing, randomness, and more. diff --git a/sidebar.mjs b/sidebar.mjs index 9432ad85..f979a331 100644 --- a/sidebar.mjs +++ b/sidebar.mjs @@ -17,6 +17,7 @@ export const sidebar = [ { label: "Guides", items: [ + { slug: "guides/ai-coding-agents", label: "AI Coding Agents" }, // Build: core development { label: "Backends", @@ -70,11 +71,6 @@ export const sidebar = [ collapsed: true, autogenerate: { directory: "guides/governance" }, }, - { - label: "Tools", - collapsed: true, - autogenerate: { directory: "guides/tools" }, - }, ], }, { From 38f7df48dc05f34edc284cadf185a41f41968e84 Mon Sep 17 00:00:00 2001 From: Marco Walz Date: Fri, 24 Apr 2026 14:16:26 +0200 Subject: [PATCH 05/18] infra: promote developer tools to top-level sidebar item between languages and reference --- docs/reference/developer-tools.md | 2 +- sidebar.mjs | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/reference/developer-tools.md b/docs/reference/developer-tools.md index bf62210e..fe7d37a7 100644 --- a/docs/reference/developer-tools.md +++ b/docs/reference/developer-tools.md @@ -2,7 +2,7 @@ title: "Developer Tools" description: "Overview of the ICP developer toolchain: icp-cli, CDKs, JS SDK, PocketIC, and more" sidebar: - order: 0 + hidden: true --- Developer tools are used to create, manage, and interact with canisters. ICP provides tooling across several categories: command-line tools, canister development kits (CDKs), client libraries, testing tools, browser-based IDEs, and Candid tooling. diff --git a/sidebar.mjs b/sidebar.mjs index f979a331..d8c15a96 100644 --- a/sidebar.mjs +++ b/sidebar.mjs @@ -114,6 +114,7 @@ export const sidebar = [ }, ], }, + { slug: "reference/developer-tools", label: "Developer Tools" }, { label: "Reference", collapsed: true, From 389c59c4a03077e3e65261e58f873e29da77217e Mon Sep 17 00:00:00 2001 From: Marco Walz Date: Fri, 24 Apr 2026 14:19:28 +0200 Subject: [PATCH 06/18] infra: move developer tools to between concepts and languages in sidebar, record decision --- .docs-plan/decisions.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.docs-plan/decisions.md b/.docs-plan/decisions.md index e1a59443..3dcef315 100644 --- a/.docs-plan/decisions.md +++ b/.docs-plan/decisions.md @@ -4,6 +4,15 @@ Record decisions that constrain future work — things an agent needs to know th --- +## 2026-04-24: Developer Tools is a top-level sidebar item, not a section + +**Context:** The tools overview page (`reference/developer-tools.md`) is a toolchain catalog — not a how-to guide, concept explanation, or specification. It doesn't fit cleanly in any Diataxis quadrant. It was previously under `guides/tools/` and then considered for Reference. +**Decision:** Expose it as a single flat top-level sidebar link between Concepts and Languages. The sidebar order is: Getting Started → Guides → Concepts → Developer Tools → Languages → Reference. The file lives at `docs/reference/developer-tools.md` with `sidebar: hidden: true` to suppress it from the Reference autogenerate; `sidebar.mjs` references it explicitly via `{ slug: "reference/developer-tools", label: "Developer Tools" }`. +**Rationale:** A catalog page warrants top-level visibility. Placing it between Concepts and Languages follows the natural developer flow: understand the platform, know the tools, then go deep on your language. Single flat link (no collapsible) is correct while it remains one page. +**When to revisit:** If the tools section grows to multiple pages (dedicated icp-cli reference, JS SDK getting-started, PocketIC advanced guide), convert to a collapsible group with `autogenerate` from a new `docs/tools/` directory and update this decision. + +--- + ## 2026-04-23: icp-brand-guidelines skill lives directly in the repo **Context:** The `icp-brand-guidelines` skill was added to support design/brand work on the docs (CSS tokens, typography, voice). No upstream repo exists for it yet. From 1f162392d967017c0cf3d5ba516a53855a8840b2 Mon Sep 17 00:00:00 2001 From: Marco Walz Date: Fri, 24 Apr 2026 14:21:17 +0200 Subject: [PATCH 07/18] fix: move developer tools sidebar entry to between concepts and languages --- sidebar.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sidebar.mjs b/sidebar.mjs index d8c15a96..92a41383 100644 --- a/sidebar.mjs +++ b/sidebar.mjs @@ -78,6 +78,7 @@ export const sidebar = [ collapsed: true, autogenerate: { directory: "concepts" }, }, + { slug: "reference/developer-tools", label: "Developer Tools" }, { label: "Languages", items: [ @@ -114,7 +115,6 @@ export const sidebar = [ }, ], }, - { slug: "reference/developer-tools", label: "Developer Tools" }, { label: "Reference", collapsed: true, From 52a75607aafc0e61efc5f1e94a219a38dfae65b2 Mon Sep 17 00:00:00 2001 From: Marco Walz Date: Fri, 24 Apr 2026 14:24:22 +0200 Subject: [PATCH 08/18] docs: expand client libraries section with ic-agent, community agents, remove install command --- docs/reference/developer-tools.md | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/docs/reference/developer-tools.md b/docs/reference/developer-tools.md index fe7d37a7..ead11f5b 100644 --- a/docs/reference/developer-tools.md +++ b/docs/reference/developer-tools.md @@ -104,7 +104,11 @@ Community CDKs are maintained independently of DFINITY. Check each project's doc ## Client libraries -The ICP JavaScript SDK (`@icp-sdk`) provides TypeScript and JavaScript libraries for building frontends and scripts that interact with canisters. Full documentation is at [js.icp.build](https://js.icp.build). +Agent libraries handle the protocol details of calling canisters from outside the network: constructing and signing ingress messages, encoding and decoding Candid, and verifying responses. + +### Official agents + +**JavaScript / TypeScript: `@icp-sdk/core`** — the primary agent for browser and Node.js applications. Full documentation at [js.icp.build](https://js.icp.build). | Package | Purpose | |---------|---------| @@ -115,13 +119,24 @@ The ICP JavaScript SDK (`@icp-sdk`) provides TypeScript and JavaScript libraries | `@icp-sdk/auth` | Authentication client for Internet Identity | | `@icp-sdk/bindgen` | Generate TypeScript bindings from a Candid interface file | -Install: +`@icp-sdk/bindgen` is also available as a Vite plugin and a standalone CLI tool. The official project templates wire it up automatically: generated bindings appear in `src/declarations/` after each build. -```bash -npm install @icp-sdk/core -``` +**Rust: `ic-agent`** — a low-level Rust library for building applications that interact with ICP. API reference at [docs.rs/ic-agent](https://docs.rs/ic-agent/latest/ic_agent/). -`@icp-sdk/bindgen` is also available as a Vite plugin and a standalone CLI tool. The official project templates wire it up automatically: generated bindings appear in `src/declarations/` after each build. +For setup and usage patterns for both agents, see [Offchain calls](../guides/canister-calls/offchain-calls.md). + +### Community agents + +| Language | Package | +|----------|---------| +| Go | [`agent-go` by Aviate Labs](https://github.com/aviate-labs/agent-go) | +| Java / Android | [`ic4j-agent` by IC4J](https://github.com/ic4j/ic4j-agent) | +| Dart / Flutter | [`agent_dart` by AstroX](https://github.com/AstroxNetwork/agent_dart) | +| .NET | [`ICP.NET` by Gekctek](https://github.com/Gekctek/ICP.NET) | +| Elixir | [`icp_agent`](https://github.com/diodechain/icp_agent) | +| C | [`agent-c` by Zondax](https://github.com/Zondax/icp-client-cpp) | + +Community agents are maintained independently of DFINITY. Check each repository for current status and security review history before using in production. ## Testing tools From 4ea25d5f7208c06bf5195b2af08e6ebda99273cb Mon Sep 17 00:00:00 2001 From: Marco Walz Date: Fri, 24 Apr 2026 14:25:53 +0200 Subject: [PATCH 09/18] docs: replace community agents table in offchain-calls with link to developer tools --- docs/guides/canister-calls/offchain-calls.md | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/docs/guides/canister-calls/offchain-calls.md b/docs/guides/canister-calls/offchain-calls.md index 43d11421..2ec73c6e 100644 --- a/docs/guides/canister-calls/offchain-calls.md +++ b/docs/guides/canister-calls/offchain-calls.md @@ -61,16 +61,7 @@ Crate documentation: [docs.rs/ic-agent](https://docs.rs/ic-agent/latest/ic_agent ### Community agents -The following agents are community-maintained. Check their repositories for current status and security review history before using in production: - -| Language | Package | -|----------|---------| -| Go | [`agent-go` by Aviate Labs](https://github.com/aviate-labs/agent-go) | -| Java / Android | [`ic4j-agent` by IC4J](https://github.com/ic4j/ic4j-agent) | -| Dart / Flutter | [`agent_dart` by AstroX](https://github.com/AstroxNetwork/agent_dart) | -| .NET | [`ICP.NET` by Gekctek](https://github.com/Gekctek/ICP.NET) | -| Elixir | [`icp_agent`](https://github.com/diodechain/icp_agent) | -| C | [`agent-c` by Zondax](https://github.com/Zondax/icp-client-cpp) | +Community-maintained agents are available for Go, Java/Android, Dart/Flutter, .NET, Elixir, and C. See [Developer Tools](../../reference/developer-tools.md#community-agents) for the full list. ## JavaScript / TypeScript: using the agent From 2c5fafa58f06d33c55841fa25ee8d67a0fa165ec Mon Sep 17 00:00:00 2001 From: Marco Walz Date: Fri, 24 Apr 2026 14:28:06 +0200 Subject: [PATCH 10/18] docs: split client libraries into agents, JS/TS SDK, and community agents sections --- docs/reference/developer-tools.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/docs/reference/developer-tools.md b/docs/reference/developer-tools.md index ead11f5b..f3b557a8 100644 --- a/docs/reference/developer-tools.md +++ b/docs/reference/developer-tools.md @@ -104,15 +104,21 @@ Community CDKs are maintained independently of DFINITY. Check each project's doc ## Client libraries -Agent libraries handle the protocol details of calling canisters from outside the network: constructing and signing ingress messages, encoding and decoding Candid, and verifying responses. +### Agents -### Official agents +Agents handle the protocol details of calling canisters from outside the network: constructing and signing ingress messages, encoding Candid, and verifying responses. Two official agents are available: -**JavaScript / TypeScript: `@icp-sdk/core`** — the primary agent for browser and Node.js applications. Full documentation at [js.icp.build](https://js.icp.build). +- **`@icp-sdk/core/agent`** (JavaScript / TypeScript) — for browser and Node.js applications. Full documentation at [js.icp.build](https://js.icp.build). +- **`ic-agent`** (Rust) — a low-level library for scripts and backend services. API reference at [docs.rs/ic-agent](https://docs.rs/ic-agent/latest/ic_agent/). + +For setup and usage patterns, see [Offchain calls](../guides/canister-calls/offchain-calls.md). + +### JavaScript / TypeScript SDK + +The `@icp-sdk` package provides companion libraries for working with ICP from JavaScript and TypeScript: | Package | Purpose | |---------|---------| -| `@icp-sdk/core/agent` | Send update and query calls to canisters; manage actors | | `@icp-sdk/core/candid` | Encode and decode Candid values | | `@icp-sdk/core/principal` | Work with canister and user principal identifiers | | `@icp-sdk/core/identity` | Manage signing identities | @@ -121,10 +127,6 @@ Agent libraries handle the protocol details of calling canisters from outside th `@icp-sdk/bindgen` is also available as a Vite plugin and a standalone CLI tool. The official project templates wire it up automatically: generated bindings appear in `src/declarations/` after each build. -**Rust: `ic-agent`** — a low-level Rust library for building applications that interact with ICP. API reference at [docs.rs/ic-agent](https://docs.rs/ic-agent/latest/ic_agent/). - -For setup and usage patterns for both agents, see [Offchain calls](../guides/canister-calls/offchain-calls.md). - ### Community agents | Language | Package | From 15187544e76e8dcfc9e235ae3ab79fd8382a2b9d Mon Sep 17 00:00:00 2001 From: Marco Walz Date: Fri, 24 Apr 2026 14:29:57 +0200 Subject: [PATCH 11/18] docs: restructure client libraries by language (JS/TS, Rust, other) to match CDK section pattern --- docs/reference/developer-tools.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/reference/developer-tools.md b/docs/reference/developer-tools.md index f3b557a8..58771c40 100644 --- a/docs/reference/developer-tools.md +++ b/docs/reference/developer-tools.md @@ -104,21 +104,15 @@ Community CDKs are maintained independently of DFINITY. Check each project's doc ## Client libraries -### Agents +Client libraries handle the protocol details of calling canisters from outside the network: constructing and signing ingress messages, encoding Candid, and verifying responses. For setup and usage patterns, see [Offchain calls](../guides/canister-calls/offchain-calls.md). -Agents handle the protocol details of calling canisters from outside the network: constructing and signing ingress messages, encoding Candid, and verifying responses. Two official agents are available: +### JavaScript / TypeScript -- **`@icp-sdk/core/agent`** (JavaScript / TypeScript) — for browser and Node.js applications. Full documentation at [js.icp.build](https://js.icp.build). -- **`ic-agent`** (Rust) — a low-level library for scripts and backend services. API reference at [docs.rs/ic-agent](https://docs.rs/ic-agent/latest/ic_agent/). - -For setup and usage patterns, see [Offchain calls](../guides/canister-calls/offchain-calls.md). - -### JavaScript / TypeScript SDK - -The `@icp-sdk` package provides companion libraries for working with ICP from JavaScript and TypeScript: +The `@icp-sdk` package provides the agent and companion libraries for browser and Node.js applications. Full documentation at [js.icp.build](https://js.icp.build). | Package | Purpose | |---------|---------| +| `@icp-sdk/core/agent` | Send update and query calls to canisters; manage actors | | `@icp-sdk/core/candid` | Encode and decode Candid values | | `@icp-sdk/core/principal` | Work with canister and user principal identifiers | | `@icp-sdk/core/identity` | Manage signing identities | @@ -127,7 +121,13 @@ The `@icp-sdk` package provides companion libraries for working with ICP from Ja `@icp-sdk/bindgen` is also available as a Vite plugin and a standalone CLI tool. The official project templates wire it up automatically: generated bindings appear in `src/declarations/` after each build. -### Community agents +### Rust + +[`ic-agent`](https://docs.rs/ic-agent/latest/ic_agent/) is the official Rust library for building applications and scripts that interact with ICP. + +### Other languages + +Community-maintained client libraries are available for additional languages: | Language | Package | |----------|---------| @@ -138,7 +138,7 @@ The `@icp-sdk` package provides companion libraries for working with ICP from Ja | Elixir | [`icp_agent`](https://github.com/diodechain/icp_agent) | | C | [`agent-c` by Zondax](https://github.com/Zondax/icp-client-cpp) | -Community agents are maintained independently of DFINITY. Check each repository for current status and security review history before using in production. +Community libraries are maintained independently of DFINITY. Check each repository for current status and security review history before using in production. ## Testing tools From fef2c05d257c42889379daec140123397f69fe6d Mon Sep 17 00:00:00 2001 From: Marco Walz Date: Fri, 24 Apr 2026 14:32:39 +0200 Subject: [PATCH 12/18] docs: trim icp-cli section to catalog format, remove install blocks and telemetry sub-heading --- docs/reference/developer-tools.md | 41 +++---------------------------- 1 file changed, 4 insertions(+), 37 deletions(-) diff --git a/docs/reference/developer-tools.md b/docs/reference/developer-tools.md index 58771c40..933db496 100644 --- a/docs/reference/developer-tools.md +++ b/docs/reference/developer-tools.md @@ -11,51 +11,18 @@ Developer tools are used to create, manage, and interact with canisters. ICP pro ### icp-cli -`icp-cli` is the primary tool for building and deploying applications on the Internet Computer ([full documentation](https://cli.internetcomputer.org/)). It manages the full development lifecycle: creating projects, building canisters, deploying to local or mainnet environments, managing identities, and handling cycles and ICP tokens. +`icp-cli` is the primary tool for building and deploying applications on the Internet Computer. It manages the full development lifecycle: creating projects, building canisters, deploying to local or mainnet environments, managing identities, and handling cycles and ICP tokens. It also installs `ic-wasm`, a Wasm optimizer that the official Rust and Motoko recipes run automatically. Key features: - **Recipes**: reusable, versioned build templates for Rust, Motoko, and asset canisters - **Environments**: named deployment targets that combine a network, canister set, and settings (e.g., local, staging, production) - **Project scaffolding**: `icp new` bootstraps new projects from official templates -Install via npm (requires Node.js LTS): +For installation, see the [Quickstart](../getting-started/quickstart.md) or the [full CLI documentation](https://cli.internetcomputer.org/). -```bash -npm install -g @icp-sdk/icp-cli @icp-sdk/ic-wasm -``` +For advanced users: [creating recipes](https://cli.internetcomputer.org/guides/creating-recipes) and [creating templates](https://cli.internetcomputer.org/guides/creating-templates) are documented on the CLI docs site. icp-cli collects anonymous usage telemetry; opt out with `icp settings telemetry false` or `DO_NOT_TRACK=1`. -Or via Homebrew: - -```bash -brew install icp-cli -brew install ic-wasm -``` - -Both install `ic-wasm` alongside `icp-cli`. `ic-wasm` optimizes and annotates Wasm modules: it shrinks binary size, embeds Candid metadata, and strips unused sections. The official Rust and Motoko recipes run it automatically — you only need to invoke it directly when writing custom build steps. - -Verify: - -```bash -icp --version -``` - -For advanced users, icp-cli supports authoring custom recipes and project templates: -- [Creating recipes](https://cli.internetcomputer.org/guides/creating-recipes): encode build conventions as reusable Handlebars templates -- [Creating templates](https://cli.internetcomputer.org/guides/creating-templates): scaffold new projects with `icp new` - -Coming from dfx? See the [migration guide](https://cli.internetcomputer.org/0.2/migration/from-dfx) on the CLI docs. - -#### Telemetry opt-out - -`icp` collects anonymous usage data (command names, platform, version, success/failure) to help prioritize features. No personally identifiable information, project names, file paths, or canister IDs are collected. - -To opt out: - -```bash -icp settings telemetry false -``` - -Or set `DO_NOT_TRACK=1` in your environment. Telemetry is automatically disabled in CI when the `CI` environment variable is set. +Coming from dfx? See the [migration guide](https://cli.internetcomputer.org/0.2/migration/from-dfx). ### Quill From d8e00829956482c09925126de7133e8d9e10575e Mon Sep 17 00:00:00 2001 From: Marco Walz Date: Fri, 24 Apr 2026 14:34:59 +0200 Subject: [PATCH 13/18] =?UTF-8?q?fix:=20correct=20ic-wasm=20description=20?= =?UTF-8?q?=E2=80=94=20it=20is=20a=20separate=20package,=20not=20bundled?= =?UTF-8?q?=20with=20icp-cli?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/reference/developer-tools.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/developer-tools.md b/docs/reference/developer-tools.md index 933db496..238368bf 100644 --- a/docs/reference/developer-tools.md +++ b/docs/reference/developer-tools.md @@ -11,7 +11,7 @@ Developer tools are used to create, manage, and interact with canisters. ICP pro ### icp-cli -`icp-cli` is the primary tool for building and deploying applications on the Internet Computer. It manages the full development lifecycle: creating projects, building canisters, deploying to local or mainnet environments, managing identities, and handling cycles and ICP tokens. It also installs `ic-wasm`, a Wasm optimizer that the official Rust and Motoko recipes run automatically. +`icp-cli` is the primary tool for building and deploying applications on the Internet Computer. It manages the full development lifecycle: creating projects, building canisters, deploying to local or mainnet environments, managing identities, and handling cycles and ICP tokens. The official Rust and Motoko recipes require `ic-wasm` (a separate package) to optimize and annotate Wasm modules. Key features: - **Recipes**: reusable, versioned build templates for Rust, Motoko, and asset canisters From a7b9cf3a23dd5131d536f83724a24e9a88802470 Mon Sep 17 00:00:00 2001 From: Marco Walz Date: Fri, 24 Apr 2026 14:36:43 +0200 Subject: [PATCH 14/18] docs: restore ic-wasm as a brief catalog entry under command-line tools --- docs/reference/developer-tools.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/reference/developer-tools.md b/docs/reference/developer-tools.md index 238368bf..ece4cb97 100644 --- a/docs/reference/developer-tools.md +++ b/docs/reference/developer-tools.md @@ -24,6 +24,13 @@ For advanced users: [creating recipes](https://cli.internetcomputer.org/guides/c Coming from dfx? See the [migration guide](https://cli.internetcomputer.org/0.2/migration/from-dfx). +### ic-wasm + +`ic-wasm` is a Wasm post-processing tool required by the official Rust and Motoko recipes. It shrinks binary size, embeds Candid metadata, and strips unused sections. Install it alongside icp-cli — see the [Quickstart](../getting-started/quickstart.md) for setup. You only need to invoke it directly when writing custom build steps. + +Resources: +- [ic-wasm GitHub repo](https://github.com/dfinity/ic-wasm) + ### Quill Quill is a minimalistic, offline-first CLI for signing and sending governance messages (NNS and SNS proposals, neuron management) from air-gapped machines. Unlike `icp-cli`, Quill is designed for cold wallet workflows: you generate signed messages on an offline device, then submit them from a networked machine. From 80ef2ffb0366514417746cad8c48922917073763 Mon Sep 17 00:00:00 2001 From: Marco Walz Date: Fri, 24 Apr 2026 14:37:25 +0200 Subject: [PATCH 15/18] fix: replace em-dash with period in ic-wasm description --- docs/reference/developer-tools.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/developer-tools.md b/docs/reference/developer-tools.md index ece4cb97..f58432b0 100644 --- a/docs/reference/developer-tools.md +++ b/docs/reference/developer-tools.md @@ -26,7 +26,7 @@ Coming from dfx? See the [migration guide](https://cli.internetcomputer.org/0.2/ ### ic-wasm -`ic-wasm` is a Wasm post-processing tool required by the official Rust and Motoko recipes. It shrinks binary size, embeds Candid metadata, and strips unused sections. Install it alongside icp-cli — see the [Quickstart](../getting-started/quickstart.md) for setup. You only need to invoke it directly when writing custom build steps. +`ic-wasm` is a Wasm post-processing tool required by the official Rust and Motoko recipes. It shrinks binary size, embeds Candid metadata, and strips unused sections. Install it alongside icp-cli. See the [Quickstart](../getting-started/quickstart.md) for setup. You only need to invoke it directly when writing custom build steps. Resources: - [ic-wasm GitHub repo](https://github.com/dfinity/ic-wasm) From 6725dc2d7ad91cd0b028211a4c959372c96dbb61 Mon Sep 17 00:00:00 2001 From: Marco Walz Date: Fri, 24 Apr 2026 14:42:40 +0200 Subject: [PATCH 16/18] =?UTF-8?q?fix:=20technical=20review=20pass=20?= =?UTF-8?q?=E2=80=94=20clean=20up=20icp-cli=20para,=20remove=20PocketIC=20?= =?UTF-8?q?label,=20fix=20AI=20agents=20frontmatter=20and=20Anthropic=20at?= =?UTF-8?q?tribution?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/guides/ai-coding-agents.md | 6 +----- docs/reference/developer-tools.md | 8 ++++---- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/docs/guides/ai-coding-agents.md b/docs/guides/ai-coding-agents.md index 11e5b296..c4646f06 100644 --- a/docs/guides/ai-coding-agents.md +++ b/docs/guides/ai-coding-agents.md @@ -1,8 +1,6 @@ --- title: "AI Coding Agents" description: "ICP skills are agent-readable instruction files that teach AI coding agents how to build correctly on the Internet Computer." -sidebar: - order: 1 --- AI coding agents frequently hallucinate canister IDs, use deprecated APIs, and miss ICP-specific constraints. ICP skills solve this: structured markdown files containing accurate canister IDs, tested code patterns, and documented pitfalls: so your agent writes correct ICP code on the first attempt. @@ -47,7 +45,7 @@ Each ICP skill covers one capability area and includes: Skills are maintained by DFINITY and updated frequently. The full list is at [skills.internetcomputer.org](https://skills.internetcomputer.org). -ICP skills follow the [Agent Skills](https://agentskills.io/specification) open standard: [published by Anthropic](https://www.anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills) in December 2025 to define a portable SKILL.md format that works across coding agents. The registry uses the [Agent Skills Discovery RFC](https://github.com/cloudflare/agent-skills-discovery-rfc) so agents can auto-discover and load skills without manual configuration. +ICP skills follow the [Agent Skills open standard](https://agentskills.io/specification). Anthropic [published the SKILL.md format](https://www.anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills) in December 2025 to define a portable format that works across coding agents. The registry uses the [Agent Skills Discovery RFC](https://github.com/cloudflare/agent-skills-discovery-rfc) so agents can auto-discover and load skills without manual configuration. ## How discovery works @@ -95,12 +93,10 @@ ICP skills are available without authentication: | Skill zip bundle | `https://skills.internetcomputer.org/.well-known/skills/{name}/SKILL.zip` | | Skills discovery index | `https://skills.internetcomputer.org/llms.txt` | - ## Next steps - [skills.internetcomputer.org](https://skills.internetcomputer.org): browse all available ICP skills - [Developer tools](../reference/developer-tools.md): icp-cli, CDKs, and other tools in the ICP toolchain - [Quickstart](../getting-started/quickstart.md): deploy your first canister with icp-cli - diff --git a/docs/reference/developer-tools.md b/docs/reference/developer-tools.md index f58432b0..424c2896 100644 --- a/docs/reference/developer-tools.md +++ b/docs/reference/developer-tools.md @@ -11,7 +11,7 @@ Developer tools are used to create, manage, and interact with canisters. ICP pro ### icp-cli -`icp-cli` is the primary tool for building and deploying applications on the Internet Computer. It manages the full development lifecycle: creating projects, building canisters, deploying to local or mainnet environments, managing identities, and handling cycles and ICP tokens. The official Rust and Motoko recipes require `ic-wasm` (a separate package) to optimize and annotate Wasm modules. +`icp-cli` is the primary tool for building and deploying applications on the Internet Computer. It manages the full development lifecycle: creating projects, building canisters, deploying to local or mainnet environments, managing identities, and handling cycles and ICP tokens. Key features: - **Recipes**: reusable, versioned build templates for Rust, Motoko, and asset canisters @@ -20,7 +20,9 @@ Key features: For installation, see the [Quickstart](../getting-started/quickstart.md) or the [full CLI documentation](https://cli.internetcomputer.org/). -For advanced users: [creating recipes](https://cli.internetcomputer.org/guides/creating-recipes) and [creating templates](https://cli.internetcomputer.org/guides/creating-templates) are documented on the CLI docs site. icp-cli collects anonymous usage telemetry; opt out with `icp settings telemetry false` or `DO_NOT_TRACK=1`. +Advanced: [creating recipes](https://cli.internetcomputer.org/guides/creating-recipes) and [creating templates](https://cli.internetcomputer.org/guides/creating-templates) are documented on the CLI docs site. + +icp-cli collects anonymous usage telemetry. Opt out with `icp settings telemetry false` or `DO_NOT_TRACK=1`. Coming from dfx? See the [migration guide](https://cli.internetcomputer.org/0.2/migration/from-dfx). @@ -120,8 +122,6 @@ Community libraries are maintained independently of DFINITY. Check each reposito [PocketIC](../guides/testing/pocket-ic.md) is a lightweight, deterministic testing library for canister integration tests. It runs an in-process IC replica: no daemon, no ports, no Docker required. Tests execute synchronously, making them fast and fully reproducible. The `icp-cli` local development network uses PocketIC under the hood. -Client libraries: - | Language | Package | Install | |----------|---------|---------| | Rust | [`pocket-ic`](https://crates.io/crates/pocket-ic) | Add to `[dev-dependencies]` in `Cargo.toml` | From 78fb9f82973d85658e8614d1ef82558b2e4a3fa0 Mon Sep 17 00:00:00 2001 From: Marco Walz Date: Fri, 24 Apr 2026 14:44:39 +0200 Subject: [PATCH 17/18] docs: mention Mops package manager and mops.one registry in Motoko CDK section --- docs/reference/developer-tools.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/reference/developer-tools.md b/docs/reference/developer-tools.md index 424c2896..14ff2bfe 100644 --- a/docs/reference/developer-tools.md +++ b/docs/reference/developer-tools.md @@ -52,6 +52,8 @@ A canister development kit (CDK) provides a programming language with the librar Motoko is ICP's native programming language, designed around the actor model, orthogonal persistence, and asynchronous message passing. It compiles directly to WebAssembly and includes a standard library (`mo:core`) with modules for common data structures, cryptography, and system interaction. +Third-party Motoko libraries are distributed through [Mops](https://mops.one), the Motoko package manager. Use `mops add ` to add a dependency. The full package registry is at [mops.one](https://mops.one). + For language documentation, see [languages/motoko](../languages/motoko/index.md). ### Rust CDK (`ic-cdk`) From d939e74cabe5acae5b77093aaef6152394f55745 Mon Sep 17 00:00:00 2001 From: Marco Walz Date: Fri, 24 Apr 2026 14:46:05 +0200 Subject: [PATCH 18/18] fix: remove duplicate mops.one link --- docs/reference/developer-tools.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/reference/developer-tools.md b/docs/reference/developer-tools.md index 14ff2bfe..5c8ec866 100644 --- a/docs/reference/developer-tools.md +++ b/docs/reference/developer-tools.md @@ -52,7 +52,7 @@ A canister development kit (CDK) provides a programming language with the librar Motoko is ICP's native programming language, designed around the actor model, orthogonal persistence, and asynchronous message passing. It compiles directly to WebAssembly and includes a standard library (`mo:core`) with modules for common data structures, cryptography, and system interaction. -Third-party Motoko libraries are distributed through [Mops](https://mops.one), the Motoko package manager. Use `mops add ` to add a dependency. The full package registry is at [mops.one](https://mops.one). +Third-party Motoko libraries are distributed through [Mops](https://mops.one), the Motoko package manager. Use `mops add ` to add a dependency to your project. For language documentation, see [languages/motoko](../languages/motoko/index.md).