vendor-submodules
SkillAI & modelsLocate and sync the vendored reference specs and runtimes under vendor/ (Wasm, WASI P3, and Component Model specs; wasm-tools, wasmtime sources). Use when you need to read a Wasm/WASI/CM spec or wasmtime/wasm-tools source, or when vendor/ submodules are missing and need initializing.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the vendor-submodules skill
What this skill tells your AI
The instructions your AI receives, as published by wado-lang/wado in .claude/skills/vendor-submodules/SKILL.md and read by ahel’s review.
What is under vendor/
vendor/wasm/- WebAssembly/specvendor/wasi/- WebAssembly/WASIvendor/component-model/- WebAssembly/component-model (CM spec)- Canonical built-ins:
vendor/component-model/design/mvp/CanonicalABI.md - Concurrency (async, streams, futures):
vendor/component-model/design/mvp/Concurrency.md - Explainer:
vendor/component-model/design/mvp/Explainer.md
- Canonical built-ins:
vendor/wasmtime/- a Wasm runtime with WASI P3 supportvendor/wasm-tools/- the Wasm toolchain the Wado compiler builds on
git submodule update --init --recommend-shallow fetches them.
Syncing
mise run sync-vendor
vendor/wasmtime goes to the exact version in Cargo.lock, which WASI P3
compatibility requires. The other submodules go to their remote HEAD.
Building against a patched wasmtime
To test a change to wasmtime itself, edit vendor/wasmtime in place and add to
the workspace Cargo.toml:
[patch.crates-io]
wasmtime = { path = "vendor/wasmtime/crates/wasmtime" }
wasmtime-wasi = { path = "vendor/wasmtime/crates/wasi" }
wasmtime-wasi-http = { path = "vendor/wasmtime/crates/wasi-http" }
wasmtime-wasi-tls = { path = "vendor/wasmtime/crates/wasi-tls" }
Those four names redirect 31 crates. The cranelift-*, pulley-*,
wasmtime-internal-* and wiggle* crates follow through the dependency graph.
sync-vendor already holds the submodule at the Cargo.lock version, so the
sources match what the workspace expects and nothing needs porting.
Keep the stanza on a throwaway branch. CI checks out without submodules
(submodules: false, also actions/checkout's default), so on main every job
dies while parsing the manifest. Landing it means turning submodule checkout on
across every workflow.
reference/ holds patches written this way, each with its measurement:
current_thread_split.patch— splits the cold deferred-frame replay out ofStoreOpaque::current_threadso the fast path inlines. Removes ~1 point of CPU; throughput flat.trace_fiber_roots.patch— tracks fiber-owning reps instead of scanning the whole componentResourceTableper GC. Not measurable.
Signals
- GitHub stars
- 113
- Forks
- 2
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
vendor-submodules- Source
- github.com/wado-lang/wado