rust-migration

rust-migration is a skill for Claude Code from JuanMarchetto/agent-skills. It costs 60 tokens per session (2,044 once invoked), scanned A, original, MIT.

A set of patterns and checks for converting C or C++ code into idiomatic Rust, including memory handling, pointers, strings, structs, and errors.

In plain words
What is it for?
It helps rewrite C or C++ modules in Rust, translate common memory and data patterns, and validate the migrated code.
Why use it?
It provides a structured way to plan the migration, check the resulting code, and repair compilation or quality problems.

Skill for Claude Code

Written for Claude Code: shipped in a Claude Code plugin.

Part of the rust-migration plugin — 1 skill shipped together

Good fit It helps rewrite C or C++ modules in Rust, translate common memory and data patterns, and validate the migrated code.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/juanmarchetto/agent-skills/rust-migration
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add JuanMarchetto/agent-skills --skill rust-migration
Clone the repo
git clone --depth 1 https://github.com/JuanMarchetto/agent-skills

Made for: Claude Code.

Or install rust-migration, the plugin that ships this one along with the rest of its 1 skill.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for rust-migration

README.md
[![agentmods](https://agentmods.dev/badge/skills/juanmarchetto/agent-skills/rust-migration.svg)](https://agentmods.dev/skills/juanmarchetto/agent-skills/rust-migration)
Your own site
<a href="https://agentmods.dev/skills/juanmarchetto/agent-skills/rust-migration"><img src="https://agentmods.dev/badge/skills/juanmarchetto/agent-skills/rust-migration.svg" alt="Measured on agentmods" height="20"></a>
Per session 60 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,044 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00060 $0.02044
Opus 5 $0.00030 $0.01022
Sonnet 5 $0.00012 $0.00409
Haiku 4.5 $0.00006 $0.00204

Measured 5d ago against content hash 41fd0f93b64c, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-08, from the pricing page.

Security

Grade A, and why

rust-migration scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/rust-migration/SKILL.md · 205 lines

How it starts

The opening of the file, as written. The whole thing — 205 lines — stays where its author put it; the contents beside it link to each section on GitHub.

C to Rust Migration Patterns

Pipeline Process

  1. Analysis — classify difficulty, detect patterns, plan strategy
  2. Translation — C → safe Rust (LLM, optionally with C2Rust context)
  3. Quality gate — re-translate if >5 unsafe blocks (temp 0.5)
  4. Validation — compile + diff test + idiomatic score
  5. Repair loop — fix errors preserving quality floor (P0)
  6. Best-version fallback — keep highest-quality version even if doesn't compile (P1)

Memory Management

// malloc/free -> Vec (arrays)
let arr: Vec<i32> = vec![0; n];

// Single heap alloc -> Box
let val = Box::new(42);

// Linked list with malloc -> Vec (flatten)
// DO NOT use Box<Node> chains — use Vec<T> for cache friendliness
let items: Vec<Item> = Vec::new();

// realloc -> Vec::resize or push
v.resize(new_size, 0);

Data Model Migration (learned from cJSON)

// C type tags + unions -> Rust enum with variants
// typedef struct { int type; union { double num; char *str; } } Value;
enum JsonValue {
    Null,
    Bool(bool),
    Number(f64),
    Str(String),
    Array(Vec<JsonValue>),
    Object(Vec<(String, JsonValue)>),
}
// Key: linked list (next/prev pointers) -> Vec
// Key: type tags (cJSON_Number, cJSON_String) -> enum variants
// Key: malloc/free -> RAII (automatic Drop)
// Key: IsReference flag (shared ownership) -> Clone

Error Handling

// C error codes -> Result<T, E>
#[derive(Debug, thiserror::Error)]
enum ParseError {
    #[error("unexpected token at position {0}")]
    UnexpectedToken(usize),
    #[error("unterminated string")]
    UnterminatedString,
}

// C NULL returns -> Option<T> or Result
fn find(key: &str) -> Option<&JsonValue> { ... }

String Handling

// const char* -> &str (borrowed, zero-copy)
fn process(s: &str) -> usize { s.len() }

// char* that gets modified -> String
fn build() -> String { format!("hello {}", "world") }

// String escaping (learned from cJSON):
// Must handle \", \\, \n, \t, \r, \b, \f, and \uXXXX (UTF-16 surrogate pairs)
fn escape_string(s: &str) -> String { ... }

Read the full file on GitHub · 205 lines

Files

What ships with it

3 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 5d ago First seen · 205 lines · 60 tokens per session scan A 41fd0f93b64c

Subscribe to this mod's changes

rust-migration is a skill published in the GitHub repository JuanMarchetto/agent-skills (5 stars, last pushed 5mo ago), licensed MIT. It adds 60 tokens to every session and 2,044 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.