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. 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 82% rename from docs/guides/tools/ai-coding-agents.md rename to docs/guides/ai-coding-agents.md index e92926a2..c4646f06 100644 --- a/docs/guides/tools/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: 3 --- 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 @@ -79,7 +77,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. @@ -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 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 +- [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/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 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/guides/tools/overview.md b/docs/guides/tools/overview.md deleted file mode 100644 index 125b3932..00000000 --- a/docs/guides/tools/overview.md +++ /dev/null @@ -1,153 +0,0 @@ ---- -title: "Developer Tools" -description: "Overview of the ICP developer toolchain: icp-cli, CDKs, icp.ninja, 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. - -## Command-line tools - -### 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. - -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): - -```bash -npm install -g @icp-sdk/icp-cli @icp-sdk/ic-wasm -``` - -Or via Homebrew: - -```bash -brew install icp-cli -brew install ic-wasm -``` - -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. - -### 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. - -Quill is suited for: -- Submitting NNS governance proposals -- Managing SNS neurons from a hardware wallet or cold key - -Resources: -- [Quill GitHub repo](https://github.com/dfinity/quill) - -## Canister development kits (CDKs) - -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. - -### Motoko - -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). - -### Rust CDK (`ic-cdk`) - -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: -- `ic_cdk::api`: system calls (time, caller, stable memory, management canister) -- `ic_cdk_timers`: periodic timers and one-shot timers -- `ic_cdk_macros`: `#[update]`, `#[query]`, `#[init]`, and other attribute macros - -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). - -### Community CDKs - -Several community-maintained CDKs extend ICP to other languages: - -| Language | CDK | Resources | -|----------|-----|-----------| -| TypeScript / JavaScript | [Azle](https://github.com/demergent-labs/azle) | [Documentation](https://demergent-labs.github.io/azle/azle.html) | -| Python | [Kybra](https://github.com/demergent-labs/kybra) | [Documentation](https://demergent-labs.github.io/kybra) | -| C++ | [icpp-pro](https://github.com/icppWorld/icpp-pro) | [Documentation](https://docs.icpp.world) | -| MoonBit | [moonbit-ic-cdk](https://github.com/eliezhao/moonbit-ic-cdk) | GitHub repo | - -Community CDKs are maintained independently of DFINITY. Check each project's documentation for current support status. - -## Browser-based IDE - -### ICP Ninja - -[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. - -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. - -Limitations: -- Projects are limited to 5 MB and 2 canisters -- ICP Ninja is not a replacement for icp-cli for production workflows - -## Editor tooling - -### Motoko VS Code extension - -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. - -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. - -## Candid tools - -### didc - -`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. - -Install: download a prebuilt binary from the [releases page](https://github.com/dfinity/candid/releases). - -Resources: -- [Candid GitHub repo](https://github.com/dfinity/candid) -- Candid specification: [reference/candid-spec.md](../../reference/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) - - 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/reference/developer-tools.md b/docs/reference/developer-tools.md new file mode 100644 index 00000000..5c8ec866 --- /dev/null +++ b/docs/reference/developer-tools.md @@ -0,0 +1,173 @@ +--- +title: "Developer Tools" +description: "Overview of the ICP developer toolchain: icp-cli, CDKs, JS SDK, PocketIC, and more" +sidebar: + 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. + +## Command-line tools + +### 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. + +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 + +For installation, see the [Quickstart](../getting-started/quickstart.md) or the [full CLI documentation](https://cli.internetcomputer.org/). + +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). + +### 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. + +Quill is suited for: +- Submitting NNS governance proposals +- Managing SNS neurons from a hardware wallet or cold key + +Resources: +- [Quill GitHub repo](https://github.com/dfinity/quill) + +## Canister development kits (CDKs) + +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. + +### Motoko + +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 to your project. + +For language documentation, see [languages/motoko](../languages/motoko/index.md). + +### Rust CDK (`ic-cdk`) + +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: +- `ic_cdk::api`: system calls (time, caller, stable memory, management canister) +- `ic_cdk_timers`: periodic timers and one-shot timers +- `ic_cdk_macros`: `#[update]`, `#[query]`, `#[init]`, and other attribute macros + +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). + +### Community CDKs + +Several community-maintained CDKs extend ICP to other languages: + +| Language | CDK | Resources | +|----------|-----|-----------| +| TypeScript / JavaScript | [Azle](https://github.com/demergent-labs/azle) | [Documentation](https://demergent-labs.github.io/azle/azle.html) | +| Python | [Kybra](https://github.com/demergent-labs/kybra) | [Documentation](https://demergent-labs.github.io/kybra) | +| C++ | [icpp-pro](https://github.com/icppWorld/icpp-pro) | [Documentation](https://docs.icpp.world) | +| MoonBit | [moonbit-ic-cdk](https://github.com/eliezhao/moonbit-ic-cdk) | GitHub repo | + +Community CDKs are maintained independently of DFINITY. Check each project's documentation for current support status. + +## Client libraries + +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). + +### JavaScript / 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 | +| `@icp-sdk/auth` | Authentication client for Internet Identity | +| `@icp-sdk/bindgen` | Generate TypeScript bindings from a Candid interface file | + +`@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`](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 | +|----------|---------| +| 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 libraries are maintained independently of DFINITY. Check each repository for current status and security review history before using in production. + +## Testing tools + +### PocketIC + +[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. + +| 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](../guides/testing/pocket-ic.md). + +## Browser-based IDE + +### ICP Ninja + +[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. + +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. + +Limitations: +- Projects are limited to 5 MB and 2 canisters +- ICP Ninja is not a replacement for icp-cli for production workflows + +## Editor tooling + +### Motoko VS Code extension + +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. + +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. + +## Candid tools + +### didc + +`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. + +Install: download a prebuilt binary from the [releases page](https://github.com/dfinity/candid/releases). + +Resources: +- [Candid GitHub repo](https://github.com/dfinity/candid) +- 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) + + 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/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) { diff --git a/sidebar.mjs b/sidebar.mjs index 9432ad85..92a41383 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" }, - }, ], }, { @@ -82,6 +78,7 @@ export const sidebar = [ collapsed: true, autogenerate: { directory: "concepts" }, }, + { slug: "reference/developer-tools", label: "Developer Tools" }, { label: "Languages", items: [