Skip to content
Skills Library
Programming · Building & coding

webassembly-component-development

/webassembly-component-development

Build, compose, run, test and debug WebAssembly components targeting WASI 0.3 (wasip3) with native async. Use this skill whenever the user is building or troubleshooting a component or `.wasm` file, targeting `wasm32-wasip3` (or falling back to wasip2/wasip1), choosing an async approach, composing components with wac or wasm-tools, resolving WIT dependencies (wkg, wit-bindgen, `wash wit update`), hitting "unknown import" or version-mismatch errors, picking a runtime (wasmtime, jco, wasmCloud), or working across languages (Rust, JS/TS, Go, Python, C/C++). Also use it when the user mentions WASI

Repository
skills ↗
Licence
Apache-2.0
Last repository change
12.10.2026

Assessment and security

90/ 100Class: good
Format25 / 25
Frontmatter with name and description, valid name, description up to 1,024 characters, name matching the folder.
Discoverability25 / 25
Description explains when to use the skill, has a reasonable length and uses third person.
Content25 / 35
At least 150 words and at most 500 lines, headings, step lists, examples or code.
Hygiene15 / 15
No placeholders such as TODO, no Windows paths, with a licence.
Riskno signals detected in the scan
Files in this package
8
Scripts
0
HTML comments
0
URLs in SKILL.md
1
Deprecation

No signals detected. Repository changed on 12.10.2026, without references to retired models or APIs.

Licence

Apache-2.0, otwarta: można używać i zmieniać, z zachowaniem licencji i informacji o zmianach.

What it does and when to use it

Build, compose, run, test and debug WebAssembly components targeting WASI 0.3 (wasip3) with native async. Use this skill whenever the user is building or troubleshooting a component or `.wasm` file, targeting `wasm32-wasip3` (or falling back to wasip2/wasip1), choosing an async approach, composing components with wac or wasm-tools, resolving WIT dependencies (wkg, wit-bindgen, `wash wit update`), hitting "unknown import" or version-mismatch errors, picking a runtime (wasmtime, jco, wasmCloud), or working across languages (Rust, JS/TS, Go, Python, C/C++). Also use it when the user mentions WASI

Triggers from the description

unknown import
Original author description

Build, compose, run, test and debug WebAssembly components targeting WASI 0.3 (wasip3) with native async. Use this skill whenever the user is building or troubleshooting a component or `.wasm` file, targeting `wasm32-wasip3` (or falling back to wasip2/wasip1), choosing an async approach, composing components with wac or wasm-tools, resolving WIT dependencies (wkg, wit-bindgen, `wash wit update`), hitting "unknown import" or version-mismatch errors, picking a runtime (wasmtime, jco, wasmCloud), or working across languages (Rust, JS/TS, Go, Python, C/C++). Also use it when the user mentions WASI

How it works

  1. Key Defaults
  2. Reference Files
  3. Related skills
Original SKILL.md headings · 36 lines, 361 words
SKILL.md preview
---
name: webassembly-component-development
description: Build, compose, run, test and debug WebAssembly components targeting WASI 0.3 (wasip3) with native async. Use this skill whenever the user is building or troubleshooting a component or `.wasm` file, targeting `wasm32-wasip3` (or falling back to wasip2/wasip1), choosing an async approach, composing components with wac or wasm-tools, resolving WIT dependencies (wkg, wit-bindgen, `wash wit update`), hitting "unknown import" or version-mismatch errors, picking a runtime (wasmtime, jco, wasmCloud), or working across languages (Rust, JS/TS, Go, Python, C/C++). Also use it when the user mentions WASI, the component model, wasip3, or component composition. For designing or reviewing the WIT interfaces themselves (naming, capability scoping, errors, versioning), use wit-interface-design.
license: Apache-2.0
---

# WebAssembly Component Development

Build components against **WASI 0.3 (wasip3)**. It adds native async, `stream<T>` and `future<T>` to the component model, so most of the old workarounds (poll loops, `tokio_unstable`, third-party async runtimes) are no longer needed for new code. Fall back to wasip2 only when a runtime or dependency requires it.

## Key Defaults

- **Target:** `wasm32-wasip3` (Tier 2 in Rust, stable since 1.100.0). Use the `wasip3` crate for WASI bindings (`wasip2` crate for the fallback). Gate code with `#[cfg(all(target_os = "wasi", target_env = "p3"))]`.
- **Build:** use `wash build` when the project has `.wash/config.yaml`. For plugins use `wash build --skip-fetch` (the `wasmcloud:wash` interface isn't published). Otherwise `cargo build --target wasm32-wasip3 --release`.
- **Async:** use the component model's native async: `async fn` in exported handlers, `wit_stream` / `wit_future` for streams and futures, `wit_bindgen::spawn_local` for background tasks. Don't pull in `tokio` or `wstd` for new p3 code (see [async.md](async.md)).
- **Threading:** not available yet. `std::thread::spawn` returns an error on wasip3, and cooperative threading is still in development. Design single-threaded and avoid `rayon`.
- **Strings:** UTF-8. Avoid `as_encoded_bytes()`.
- **Version matching:** the runtime must implement the exact WASI 0.3.x versions your component imports. Check with `wasm-tools component wit component.wasm`.
- **wasmCloud docs:** use https://wasmcloud.com/docs/, never `/docs/v1/`.

## Reference Files

Load the relevant file when working on the matching topic:

| Topic | File |
|-------|------|
| Component Model, wasip3 vs wasip2, targets and worlds | [core-concepts.md](core-concepts.md) |
| Composition patterns, building with `wash` / `cargo`, `wac`, `.wash/config.yaml` | [composition-and-building.md](composition-and-building.md) |
| Languages and toolchains (Rust, JS/TS, Go, Python, C/C++) | [language-interop.md](language-interop.md) |
| Native async on wasip3: handlers, streams, futures, spawning; the wasip2 fallback (`tokio`, `wstd`) | [async.md](async.md) |
| Gotchas (threading, strings, networking), unknown-import errors, runtimes (wasmtime, jco, wasmCloud), version alignment | [gotchas-and-runtime.md](gotchas-and-runtime.md) |
| Testing with mock components, debugging workflow, error patterns, performance | [testing-debugging-performance.md](testing-debugging-performance.md) |
| Development practices, CI/CD, architecture patterns | [patterns-and-best-practices.md](patterns-and-best-practices.md) |
| Designing or reviewing WIT interfaces (naming, capability grants, errors, versioning) | the `wit-interface-design` skill |

## Related skills

- `wit-interface-design`: how to design the WIT contract.
- `wash`: the `wash build` / `wash dev` toolchain.
- `cosmonic-go`: Go components with `componentize-go` on async wasip3.
Files in this package (8)
  • SKILL.md 4 KB
  • async.md 3 KB
  • composition-and-building.md 3 KB
  • core-concepts.md 2 KB
  • gotchas-and-runtime.md 4 KB
  • language-interop.md 2 KB
  • patterns-and-best-practices.md 3 KB
  • testing-debugging-performance.md 4 KB

Versions

The database has no other skills named webassembly-component-development.

Database snapshot: 13.11.2026 · package version d0a207e681a1 (SHA-256 digest of the entire package)

Downloads in the last 30 days: 0 · ranking

Report a problem with this skill: harmful content, incorrect descriptions or an author’s removal request.

Similar skills

  • 100wash
    Expert in wasmCloud Shell (wash) CLI tool for building, running, and managing WebAssembly components and wasmCloud applications. Use this skill when working with wasmCloud, WebAssembly components, WIT (WebAssembly Interface Types) definitions, or wash commands.
  • 95wasm
    WebAssembly (WASM) integration, WASI, component model, Rust/Go to WASM compilation. Use when implementing WASM modules, browser/edge compute, or polyglot runtime.
  • 100wasmtime
    Guide for WebAssembly development with Wasmtime runtime. Use when compiling Rust or Zig to wasm, embedding Wasmtime in Rust or Elixir hosts, working with WASI, or using the Component Model.
  • 100wasm-rust-expert
    Use when Rust/WebAssembly boundary design, wasm-bindgen or web-sys integration, WASI targeting, browser Canvas, parity, or Wasm performance is central.
  • 90agent-wasm-specialist
    Specialist subagent: WebAssembly, WASI, wasm-bindgen, Emscripten, and cross-language compilation specialist. Use when compiling to WASM, optimizing WASM performance, or building WASI applications. Trigger phrases: WebAssembly, WASM, WASI, wasm-bindgen, Emscripten, wasm-pack,…
  • 100webassembly-expert
    Create production-ready WebAssembly modules for web and server environments with optimal performance and seamless JavaScript integration. Use when the user mentions WebAssembly or Wasm, WASI, compiling Rust/C/C++ to the browser, Emscripten, wasmtime, or JavaScript-to-Wasm…

Feedback and reports

Your message goes to Bartosz Sokoliński. An email address is needed only for a reply. See the privacy policy.