juanmarchetto/agent-skills/migration-validator

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Safety verification checklist for C-to-Rust migrations. Validates compilation, unsafe block minimization, memory safety, API compatibility, and idiomatic Rust patterns. Use when: validate migration, check Rust safety, verify converted code, migration QA.

Install

npx vskill@latest install juanmarchetto/agent-skills/migration-validator

SKILL.md

Migration Validation Checklist

Compilation Check

  • [ ] Rust code compiles with rustc --edition 2024
  • [ ] No errors, only warnings acceptable if minor
  • [ ] Clippy passes with 0 warnings (cargo clippy)

Safety Check

  • [ ] Count unsafe blocks (target: 0 for easy/medium, minimize for hard)
  • [ ] Every unsafe block has a // SAFETY: comment
  • [ ] No raw pointer dereferences without bounds checking
  • [ ] No transmute unless absolutely necessary
  • [ ] No unwrap() on user-controlled data

Semantic Equivalence

  • [ ] Same function signature (equivalent types)
  • [ ] Same behavior for all valid inputs
  • [ ] Same error conditions / edge cases
  • [ ] Overflow behavior matches (wrapping vs. checked)
  • [ ] Printf format matches exactly (especially %g → custom format_g())
  • [ ] Bool/int distinction preserved (C int 0/1 ≠ Rust bool)

Differential Testing

  • [ ] Compile C with cc -std=gnu11 -lm
  • [ ] Compile Rust with rustc --edition 2024
  • [ ] Run both with identical test inputs
  • [ ] Compare outputs byte-by-byte (not just "looks similar")
  • [ ] Test edge cases: empty input, max values, null/None, negative numbers
  • [ ] Float tolerance: exact match preferred, tolerance only for known precision differences

Idiomatic Score

Enhanced formula with positive AND negative signals:

  • Base: 100
  • Negative: - (unsafe_blocks * 10) - (clippy_warnings * 2) - (unwrap_count * 3) - (as_casts * 1)
  • Positive: + min(10, result_count * 2) + min(5, option_count) + min(5, iter_usage)
  • Ranges: 90-100 Excellent, 70-89 Good, 60-69 Acceptable, <60 Needs repair

Quality Floor (P0)

  • Track baseline unsafe count from initial translation
  • NEVER allow repair to increase unsafe above baseline
  • If repair adds unsafe → reject that iteration, try again
  • This prevents the "oscillation" problem where repair trades quality for compilation

Best-Version Tracking (P1)

  • Keep the version with highest score throughout repair loop
  • If nothing passes validation, use best version as fallback (not raw c2rust)
  • Prefer: compiling version > high-score non-compiling > c2rust fallback

Repair Loop Rules

  • Effective iterations scale with file size:
  • <1000 LOC: full configured max (default 5)
  • 1000-2000 LOC: min(configured, 3)
  • >2000 LOC: min(configured, 2)
  • Chunked translations: max(configured, 8) — chunks are small, repair is affordable
  • Stall detection: 2 unchanged error counts → re-translate at temp 0.7
  • Temperature ramp: base 0.2 + 0.1 per iteration (capped at 1.0)
  • Quality gate: if initial translation has >5 unsafe → re-translate at temp 0.5
  • P5: Idiomatic hints — when compiles + diff passes but score < threshold, repair agent gets refactoring hints instead of empty feedback (prevents wasted iterations)

Validated Production Migrations

These fixtures are regression-tested and represent known-good migrations:

FileLOC C→RustScoreUnsafeNotes
add, power, gcd, etc.<501000Simple arithmetic
hash_table.c204→~200810malloc/free → Box/Vec
cjson_combined.c520→3191000JSON parser, recursive data
expr_eval.c1686→1446100074 functions, recursive descent
cjson_full_combined.c1696→1439100*0Full cJSON library (49/78 fns)
picohttpparser.c1102→15511000HTTP parser, state machine
genann_combined.c642→6221000Neural network, fn ptrs→enum, autonomous pipeline
olive_combined.c1443→117610002D graphics, pixel buffers, checksum diff test
http_parser_combined.c3680→1492N/A0HTTP parser, goto state machine→line parsing, manual completion
miniz_core_standalone.c4429N/AN/AFallbackUnsafe (ceiling case)

Powered by Noricum — autonomous C/C++ to Rust migration agent

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
0

Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/juanmarchetto/agent-skills/migration-validator/badge)](https://verified-skill.com/skills/juanmarchetto/agent-skills/migration-validator)

Something wrong with this skill or its page? Tell us.