| name | porting |
| description | Guides Go→Rust porting for Pluto. Invoke when asked to port, implement parity for, or translate a Go component. |
Pre-flight
Before writing any code:
- Charon location: See
charon-guide for codebase location, version, and structure. Verify once per session if needed.
- Record the Go reference in the plan:
charon/<path>:<line> (v1.7.1)
- Do not proceed without an approved plan.
Step 1 — Read Go source
Architecture context: See charon-guide skill for workflow components, design patterns, and package structure.
For each file in scope:
- What does it do? Inputs, outputs, defaults.
- What are the failure modes and error strings? (copy exact strings)
- What are the user-visible side effects? (stdout, files written, exit codes)
- Trace the main logic flow top-to-bottom.
Do not guess. If behavior is unclear, ask.
For DKG, sync, reshare, FetchDefinition, or peer-indexed broadcast code, still use Charon v1.7.1 as the porting baseline, but load .claude/skills/pluto-review/references/trail-of-bits-charon-v2-audit.md and apply those fixes where v1.7.1 behavior is known vulnerable.
Step 2 — Identify missing dependencies
List Go imports and map each to its Rust equivalent:
| Go import | Rust crate/module | Status |
|---|
encoding/json | serde_json | available |
crypto/sha256 | sha2 | available |