# Mbt Wasip1 Tools

> Build small MoonBit WASIp1 CLI tools using the peter-jerry-ye/wasi library, focused on simple read/write tasks (echo, cat, wc, simple file ops). Use when creating or updating CLI examples, scripts, or skills for this repo.

- Skill: `majiayu000/mbt-wasip1-tools` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/mbt-wasip1-tools`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/mbt-wasip1-tools/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/mbt-wasip1-tools

---


# MoonBit WASIp1 Tools

## Use the examples

- Copy a project from `assets/` and modify it.
- Each example is a complete MoonBit project with a README.
- Build with `moon build -C <example-dir>` and run with `wasmtime run --dir host::guest <wasm>`.

## Path resolution (WASIp1)

- There is no cwd. All paths resolve against preopened directories.
- Resolution uses longest-prefix matching on preopen names.
- Relative paths must match a preopen prefix (for example, `foo/bar` requires a preopen named `foo`).
- Absolute paths only work when a preopen name starts with `/` (for example, `--dir /host::/`).
- If no prefix matches, fail immediately. Do not fall back to trial-and-error.

## Unified stdio

- `@wasi/stdio.stdin` implements `@sync_io.Reader` and `@io.Reader`.
- `@wasi/stdio.stdout` and `@wasi/stdio.stderr` implement `@sync_io.Writer` and `@io.Writer`.

## References

- `references/api.md` summarizes the core I/O and fs APIs.

