Skip to content

Commit 5ea9abb

Browse files
authored
docs: developer tools overview (#78)
## Summary - Covers icp-cli: installation (npm and Homebrew), key features (recipes, environments, scaffolding), telemetry opt-out - ic-wasm for Wasm optimization; Quill for cold wallet / air-gapped NNS and SNS governance signing - CDK table: Motoko, Rust CDK (`ic-cdk`, `ic-cdk-macros`, `ic-cdk-timers`, `ic-stable-structures`), and community CDKs (Azle, Kybra, icpp-pro, MoonBit) - ICP Ninja browser-based IDE with limitations noted - didc Candid CLI tool - All CLI syntax verified against dfinity/icp-cli reference ## Sync recommendation informed by dfinity/portal — dev-tools-overview.mdx, cdks/index.mdx, icp-ninja.mdx; dfinity/icp-cli — docs/guides/installation.md, docs/reference/cli.md
1 parent d44d580 commit 5ea9abb

1 file changed

Lines changed: 143 additions & 15 deletions

File tree

docs/guides/tools/overview.md

Lines changed: 143 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,150 @@ sidebar:
55
order: 2
66
---
77

8-
TODO: Write content for this page.
8+
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.
99

10-
<!-- Content Brief -->
11-
Overview of the ICP developer toolchain. Cover icp-cli (project management, deployment, identity), CDKs (Rust CDK via ic-cdk, Motoko compiler), icp.ninja playground for browser-based development, VS Code extensions, ic-wasm for Wasm optimization, and didc for Candid tools. Each tool gets a brief description and link to its documentation. Do not duplicate tool docs -- link out.
10+
## Command-line tools
1211

13-
<!-- Source Material -->
14-
- Portal: building-apps/developer-tools/dev-tools-overview.mdx, cdks/index.mdx, icp-ninja.mdx
15-
- icskills: icp-cli
16-
- icp-cli docs: https://cli.internetcomputer.org/
17-
- Rust CDK: https://docs.rs/ic-cdk/latest/ic_cdk/
12+
### icp-cli
1813

19-
<!-- Writing Note -->
20-
Also mention: Quill (cold wallet signing, NNS governance), icp-cli telemetry opt-out, and link to icp-cli's creating-recipes.md and creating-templates.md for advanced users.
14+
`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.
2115

22-
<!-- Cross-Links -->
23-
- getting-started/quickstart -- icp-cli in action
24-
- guides/tools/migrating-from-dfx -- migration guide
25-
- languages/rust/index -- Rust CDK details
26-
- languages/motoko/index -- Motoko tooling
16+
Key features:
17+
- **Recipes** — reusable, versioned build templates for Rust, Motoko, and asset canisters
18+
- **Environments** — named deployment targets that combine a network, canister set, and settings (e.g., local, staging, production)
19+
- **Project scaffolding**`icp new` bootstraps new projects from official templates
20+
21+
Install via npm (requires Node.js LTS):
22+
23+
```bash
24+
npm install -g @icp-sdk/icp-cli @icp-sdk/ic-wasm
25+
```
26+
27+
Or via Homebrew:
28+
29+
```bash
30+
brew install icp-cli
31+
brew install ic-wasm
32+
```
33+
34+
Verify:
35+
36+
```bash
37+
icp --version
38+
```
39+
40+
Full documentation: [cli.internetcomputer.org](https://cli.internetcomputer.org/)
41+
42+
For advanced users, icp-cli supports authoring custom recipes and project templates:
43+
- [Creating recipes](https://cli.internetcomputer.org/guides/creating-recipes) — encode build conventions as reusable Handlebars templates
44+
- [Creating templates](https://cli.internetcomputer.org/guides/creating-templates) — scaffold new projects with `icp new`
45+
46+
#### Telemetry opt-out
47+
48+
`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.
49+
50+
To opt out:
51+
52+
```bash
53+
icp settings telemetry false
54+
```
55+
56+
Or set `DO_NOT_TRACK=1` in your environment. Telemetry is automatically disabled in CI when the `CI` environment variable is set.
57+
58+
### ic-wasm
59+
60+
`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.
61+
62+
Install:
63+
64+
```bash
65+
npm install -g @icp-sdk/ic-wasm
66+
# or
67+
brew install ic-wasm
68+
```
69+
70+
### Quill
71+
72+
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.
73+
74+
Quill is suited for:
75+
- Submitting NNS governance proposals
76+
- Managing SNS neurons from a hardware wallet or cold key
77+
78+
Resources:
79+
- [Quill GitHub repo](https://github.com/dfinity/quill)
80+
81+
## Canister development kits (CDKs)
82+
83+
A canister development kit (CDK) provides a programming language with the libraries and toolchain support needed to compile code to WebAssembly and interact with the ICP system API.
84+
85+
### Motoko
86+
87+
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.
88+
89+
For language documentation, see [languages/motoko](../../languages/motoko/index.md).
90+
91+
### Rust CDK (`ic-cdk`)
92+
93+
The Rust CDK (`ic-cdk`) is the official DFINITY-maintained library for building canisters in Rust. It exposes the ICP system API as safe Rust abstractions, including:
94+
- `ic_cdk::api` — system calls (time, caller, stable memory, management canister)
95+
- `ic_cdk_timers` — periodic timers and one-shot timers
96+
- `ic_cdk_macros``#[update]`, `#[query]`, `#[init]`, and other attribute macros
97+
98+
API reference: [docs.rs/ic-cdk](https://docs.rs/ic-cdk/latest/ic_cdk/)
99+
100+
For Rust-specific guides, see [languages/rust](../../languages/rust/index.md).
101+
102+
### Community CDKs
103+
104+
Several community-maintained CDKs extend ICP to other languages:
105+
106+
| Language | CDK | Resources |
107+
|----------|-----|-----------|
108+
| TypeScript / JavaScript | [Azle](https://github.com/demergent-labs/azle) | [Documentation](https://demergent-labs.github.io/azle/azle.html) |
109+
| Python | [Kybra](https://github.com/demergent-labs/kybra) | [Documentation](https://demergent-labs.github.io/kybra) |
110+
| C++ | [icpp-pro](https://github.com/icppWorld/icpp-pro) | [Documentation](https://docs.icpp.world) |
111+
| MoonBit | [moonbit-ic-cdk](https://github.com/eliezhao/moonbit-ic-cdk) | GitHub repo |
112+
113+
Community CDKs are maintained independently of DFINITY. Check each project's documentation for current support status.
114+
115+
## Browser-based IDE
116+
117+
### ICP Ninja
118+
119+
[ICP Ninja](https://icp.ninja) is a web-based IDE for writing and deploying ICP canisters directly from a browser — no local toolchain required. It provides a gallery of example projects (Motoko and Rust backends, React frontends) that you can browse, edit, and deploy to the mainnet in one click.
120+
121+
Deployed canisters remain live for 20 minutes. You can redeploy to reset the timer, or download the project files to continue development locally with icp-cli.
122+
123+
Limitations:
124+
- Projects are limited to 5 MB and 2 canisters
125+
- ICP Ninja is not a replacement for icp-cli for production workflows
126+
127+
## Editor tooling
128+
129+
### Motoko VS Code extension
130+
131+
The [Motoko extension for VS Code](https://github.com/dfinity/vscode-motoko) (`dfinity/vscode-motoko`) adds Motoko language support to VS Code: syntax highlighting, type checking, auto-completion, and inline diagnostics.
132+
133+
Install by searching for "Motoko" in the VS Code extensions panel, or visit the [vscode-motoko repository](https://github.com/dfinity/vscode-motoko) for details.
134+
135+
## Candid tools
136+
137+
### didc
138+
139+
`didc` is the Candid command-line tool for working with Candid interfaces: encoding and decoding values, checking `.did` files, generating bindings, and testing Candid compatibility.
140+
141+
Install: download a prebuilt binary from the [releases page](https://github.com/dfinity/candid/releases).
142+
143+
Resources:
144+
- [Candid GitHub repo](https://github.com/dfinity/candid)
145+
- Candid specification: [reference/candid-spec.md](../../reference/candid-spec.md)
146+
147+
## Next steps
148+
149+
- **Start building:** [Quickstart](../../getting-started/quickstart.md) — deploy your first canister with icp-cli
150+
- **Migrating from the legacy CLI?** [Migration guide](migrating-from-dfx.md) — command mapping and configuration changes
151+
- **Rust development:** [Rust language guide](../../languages/rust/index.md)
152+
- **Motoko development:** [Motoko language guide](../../languages/motoko/index.md)
153+
154+
<!-- Upstream: informed by dfinity/portal — docs/building-apps/developer-tools/dev-tools-overview.mdx, docs/building-apps/developer-tools/icp-ninja.mdx, docs/building-apps/developer-tools/cdks/index.mdx, docs/tutorials/developer-liftoff/level-1/1.2-dev-env.mdx; dfinity/icp-cli — docs/telemetry.md, docs/guides/installation.md, docs/guides/creating-recipes.md, docs/guides/creating-templates.md; dfinity/candid — README.md -->

0 commit comments

Comments
 (0)