If you're building on the Internet Computer and need to split your app across multiple canisters, this covers the architecture patterns and gotchas that matter. It walks through inter-canister calls, the 2MB payload limit, why update methods aren't atomic across awaits, and how to avoid reentrancy bugs. The guidance on bounded versus unbounded waits and cross-subnet latency is solid. This is written for engineers who already understand single-canister apps and need to scale up or separate concerns. The pitfall list is thorough, especially around idempotent APIs and defensive caller binding in Rust. Skip this if your app fits in one canister.
npx skills add https://github.com/dfinity/icskills --skill multi-canister