bp-rust-wasm
Rust ベストプラクティス(Plecto WASM フィルタ向け、Edition 2024)。plecto:filter WIT コントラクトを実装する WASM Component Model フィルタの規約とツールチェーン。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Rust ベストプラクティス(Plecto WASM フィルタ向け、Edition 2024)。plecto:filter WIT コントラクトを実装する WASM Component Model フィルタの規約とツールチェーン。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Grilling session that challenges your plan against moka-1's documented design decisions (tenets, ADRs) and domain model, sharpens terminology, and updates documentation (CONTEXT.md, ADRs) inline as decisions crystallise. Use when the user wants to stress-test a plan against the project's language and documented decisions, or says 「設計を詰めて」「用語を固めて」「ドキュメントと突き合わせて」.
クリーンアーキテクチャの依存ルールを moka-1 のミニマリズム制約下で適用する指針。レイヤ分割・interface 設計・依存方向の判断基準と、過剰抽象化を避けるガードレールを提供する。
Web調査の方法論。一次ソース(RFC・公式仕様・公式ドキュメント・原論文・ソースコード)を最優先し、検索クエリの多角化・横断的検証(lateral reading)・独立ソースでの三角測量を経て、出典付きで報告する手順。
moka-1 スタックの Docker Compose 操作と compose.yaml の書き方。ワンキック起動・開発ループ・ヘルスチェック・開発機(iGPU/Vulkan)固有設定・トラブルシュート。
Go ベストプラクティス(moka-core 向け、Go 1.26+)。常駐エージェントループ・LLM クライアント・フィード取得を含む moka-core の実装規約。
Python ベストプラクティス(eval/ 専用、Python 3.14 + uv + Pyrefly + Ruff)。モデル A/B・プロンプト評価スクリプトの規約と再現性の作法。
moka-1 の Rust はサーバーではなく WASM Component Model フィルタ(plecto:filter@0.3.0 WIT コントラクト実装 — 契約バージョンは Plecto 本体と独立採番)。
Alt の tokio サーバー規約とは別物。ここでの失敗・不便はドッグフーディングの成果物 — 回避策で黙って進めず Plecto に issue/ADR を起票する(tenets §3.5)。
wasm32-unknown-unknown + wasm-tools component new の2段構え(Plecto docs/writing-a-filter.md の公式手順。wasip2 ではない — Tier A フィルタは zero-WASI で、wasi:* import が1つでもあるとロード拒否される)。cargo-component も使わない:
rustup target add wasm32-unknown-unknown
cargo build --target wasm32-unknown-unknown --release
wasm-tools component new target/wasm32-unknown-unknown/release/<name>.wasm -o <name>.component.wasm
wasm-tools component wit <name>.component.wasm # import が plecto:filter/* のみか確認
moka-1 では plecto/build/filters-build.sh(one-shot ジョブ)がこの手順の単一ソース。wit-bindgen(0.59系)の generate! マクロ: WIT は wkg get plecto:filter@0.3.0(ghcr.io / prefix kaikei-e/wit/)で取得し plecto/filters/wit/ に vendor(リリースノートの digest と照合してから使う):
wit_bindgen::generate!({ world: "filter", path: "wit" });
edition = "2024", crate-type = ["cdylib"], 自前 [workspace] 宣言(親 workspace に吸収させない)。リリースプロファイルはサイズ最適化:
[profile.release]
opt-level = "s"
lto = true
strip = true
continue / modified(edit) / short-circuit(synthetic-response)。暗黙のフォールスルーを書かないlet Some(key) = headers.get("x-api-key") else {
return Decision::ShortCircuit(unauthorized());
};
host-log / host-clock / host-kv / host-counter / host-ratelimit)以外を前提にしない。新 capability が必要になったら、まずそれが「per-request ポリシー」か「グローバル横断関心事」かを問う — 後者なら Plecto ネイティブ側の仕事(ADR 29 の role-driven placement)static mut・OnceLock でのリクエスト跨ぎ状態は禁止。trust-branched 実行(pooled か fresh-per-request か)は運用側の決定であり、フィルタはどちらでも正しく動く必要がある。共有状態は host-kv / host-counter へinit() で構築して resource に保持#[derive(Debug, Error)] でフィルタ内エラーを定義し、最終的に WIT の decision に写像する。anyhow は使わない(境界が WIT なので型を保つ).clone() を安易に使わない。&str > String、&[u8] > Vec<u8>。ヘッダ処理はゼロコピーを意識_ ワイルドカードより明示的なバリアント列挙。WIT 側の追加をコンパイルエラーで検出するpub(crate) デフォルト: 公開は wit-bindgen が要求するエクスポートのみhost-log capability のみ。時刻は host-clock(SystemTime::now() はサンドボックスで lend されない前提で書く)unwrap() は初期化時と不変条件の明示(コメント付き)のみ&HeaderMap -> Verdict 的シグネチャ)に切り出し、cargo test(ホスト native)で回す。host API はトレイトで抽象化してフェイクを注入e2e/hurl/edge/)。wasmtime を使った自前ハーネスは作らない(Plecto のカンフォーマンステストに寄せる)cargo fmt --check && cargo clippy --all-targets -- -D warnings && cargo clippy --target wasm32-unknown-unknown --release -- -D warnings && cargo test && cargo build --target wasm32-unknown-unknown --release.wasm をロードしない — 署名済み OCI image-layout + digest pin + [trust] 公開鍵が必須(fail-closed)。moka-1 では one-shot ジョブ2本(plecto-filters-build → plecto-manifest-render)がビルド〜署名〜manifest レンダリングを担い、反映は docker compose run --rm で両ジョブ再実行 → docker compose kill -s HUP plecto。GHCR への OCI 配布は Phase 4(tenets §3.5)docs/tenets/moka-tenets.md — 本スキルの「tenets §N」参照はこの文書の節番号