# 貢獻新零件(WASM Component Authoring) > 這份文件寫給**貢獻者**——想開發並投稿新零件到 Arcrun 零件庫的人。 > 只想「把 MCP 裝來用」的用戶請回 **[README.md](./README.md)**。 零件是 Arcrun 的最小執行單元,以 **TinyGo** 編譯為 `.wasm`,透過 stdin/stdout JSON 通訊,可在 Cloudflare Workers(Tier 1/2)和 Wazero 邊緣環境(Tier 3)執行。提交後 Registry 會自動跑沙盒驗收(體積、syscall 掃描、Gherkin 測試)。 --- ## 步驟一:取得開發指引(必做) ``` arcrun_get_component_guide ``` 指引包含:TinyGo 白名單 import、禁止行為、`component.contract.yaml` 完整範例、本地測試指令。**開發前務必先呼叫**,白名單與禁止行為以指引回傳為準。 ## 步驟二:搜尋現有零件(別重造輪子) ``` arcrun_search_components("查詢 Google Sheets 資料") ``` 若已有符合的零件,直接使用,不需要重新開發。 ## 步驟三:開發零件(若缺件) 依指引用 TinyGo 撰寫零件,只使用白名單 import: ```go import ( "os" "io" "encoding/json" ) ``` 編譯: ```bash tinygo build -o my_component.wasm -target=wasi . ``` 本地測試: ```bash echo '{"input_field":"value"}' | wasmtime my_component.wasm ``` ## 步驟四:提交零件 ``` arcrun_publish_component( contract={...}, // component.contract.yaml 內容(合約物件) wasm_base64="..." // base64(my_component.wasm) ) ``` Registry 自動執行沙盒驗收(體積、syscall 掃描、Gherkin 測試)。驗收通過才會進零件庫。 --- ## 驗收與審查標準 `arcrun_publish_component` 的沙盒驗收會檢查: - **體積上限**:超過限制拒收。 - **syscall 掃描**:只允許白名單 import;踩到禁止行為(網路直連、檔案系統逃逸等)拒收。 - **Gherkin 測試**:合約裡的 `gherkin_tests` 必須全綠。 投稿前請自行用步驟三的本地測試把 Gherkin 情境跑過一遍,減少來回。