AgentStack
SKILL verified MIT Self-run

Noricum Dev

skill-juanmarchetto-agent-skills-noricum-dev · by JuanMarchetto

Development conventions for the Noricum C-to-Rust migration agent. Architecture decisions, crate structure, coding standards, and contribution guidelines. Use when: contributing to Noricum, noricum development, noricum architecture.

No reviews yet
0 installs
1 views
0.0% view→install

Install

$ agentstack add skill-juanmarchetto-agent-skills-noricum-dev

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution Used
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README — it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-juanmarchetto-agent-skills-noricum-dev)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
4mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming — see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps — measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Noricum Dev? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Noricum Development Conventions

Architecture

  • Noricum is an agent orchestrator, not a compiler
  • C2Rust is "step zero" (subprocess), not reinvented — but often skippable (P4: --skip-c2rust)
  • LLM agents are central from v0
  • Semantic Code Map (noricum-ir) tracks metadata, not compiler IR
  • rig-rs 0.31 for LLM integration (Rust-native, rustls)

Crate Dependencies (layered)

noricum-cli -> noricum-core -> noricum-agents -> noricum-tools -> noricum-ir
                            -> noricum-validation -> noricum-tools -> noricum-ir
noricum-mcp -> noricum-core

Coding Standards

  • Edition 2024, thiserror for lib errors, anyhow for CLI
  • tracing for logging, never println! in library code
  • No unwrap() in library code
  • Async with tokio
  • Tests in #[cfg(test)] mod tests within each file
  • C compiler: -std=gnu11 (not c11, needed for POSIX like strdup), -lm for math

State Machine

Pending -> Extracted -> Characterized -> C2RustDone -> Analyzed -> Refined -> Validated
                                                                    |
                                                            Repairing (max iterations)
                                                                    |
                                                            FallbackUnsafe

Model Router (Claude 4.6 era)

  • Easy: claude-haiku-4-5 (fast, cheap)
  • Medium: claude-sonnet-4-6 (also used for analysis)
  • Hard: claude-opus-4-6 (translation, complex repair)
  • Fallback: Ollama qwen2.5-coder:32b when no API key

Pipeline Improvements (P0-P5, learned from miniz + genann migrations)

  • P0: Quality floor — repair rejected if unsafe count exceeds translation baseline
  • P1: Best-version tracking — keeps highest-score version, uses it for fallback instead of c2rust
  • P2: Per-function C2Rust context — extracts only matching c2rust functions per chunk
  • P3: Incremental per-modulesplit_into_modules() groups C functions by prefix
  • P4: Skip C2Rust--skip-c2rust flag; LLM often translates better without c2rust noise
  • P5: Idiomatic improvement hints — when code compiles + diff passes but score 800 LOC (MEDIUMFILELOC)
  • Reduced repair iterations: >1000 LOC
  • Very large file handling: >2000 LOC
  • Structural summary: >800 LOC
  • Quality gate: re-translate if >5 unsafe blocks
  • Stall detection: 2 consecutive unchanged error counts → re-translate at temp 0.7
  • Chunk targets: 400 LOC (medium), 500 LOC (very large)

Pipeline Improvements (P30-P33, learned from miniz_zip.c 9 runs)

  • P30: Hybrid Repair Engine — 3-phase: rule engine (free) → surgical per-function (cheap) → legacy whole-file (expensive)
  • P31: Assembly Cleanup — fence stripping, syntax error parsing, use import merging
  • P32: Brace-Balance Validation — detect/fix truncated module outputs before assembly
  • P32b: Smart Truncate + Re-translate — truncate at last balanced brace, re-translate truncated modules
  • P33: Type Contract — types-first modular migration:
  • generate_type_contract() in type_contract.rs — single LLM call before module translation
  • ModuleSplit struct returns shared_context from split_into_modules()
  • resolve_header_types() reads #include'd .h files for complete type definitions
  • Assembly seeds P27 dedup from contract type names
  • Key learning: shared_context only has .c file content; .h headers must be resolved separately

Key Patterns

  • Functions migrate independently, ordered by dependency graph (topological sort)
  • Every migration must pass differential testing (byte-exact stdout match)
  • Translation cache: .noricum-cache/ keyed by SHA-256 of C source
  • RAG patterns: successful migrations auto-added to PatternStore for future context
  • Structural chunking: data model (structs/constructors) in chunk 0, logic functions in later chunks
  • For multi-file C projects: type definitions live in .h headers, not .c files — must resolve includes
  • Type contract prompt must enforce idiomatic Rust (no raw pointers, no C-style aliases, complete structs)

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

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.