Omh Rust logo

Omh Rust

CommunityPopular
rlaope
omh-rust

[omh] Rust ownership, lifetime, or unsafe trouble: prepare Rust changes with ownership, error, and API discipline, and escalate any unsafe, FFI, or lock-free change to the UB checklist. Use when the user says: rust, rust code, rust skill, rustlang, borrow checker, lifetime error, ownership error, trait bound.

Overview

Publisherrlaope
Repositoryoh-my-hermes
Skill nameomh-rust
Stars
3.6K
Forks
269
Bundled files
2
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 2 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by rlaope on GitHub. Read the source before you install it.

Installation

Install the Omh Rust AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/rlaope/oh-my-hermes/tree/main/agent-skills/omh-rust
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/rlaope/oh-my-hermes.git /tmp/oh-my-hermes
mkdir -p .claude/skills
cp -r /tmp/oh-my-hermes/agent-skills/omh-rust .claude/skills/omh-rust
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Omh Rust in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Omh Rust on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Omh Rust is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Rust

This is an OMH rust workflow skill, projected for Agent Skills hosts (Claude Code, Codex, Cursor, opencode, OpenClaw, pi).

Why This Exists

rust closes OMH's zero-coverage Rust domain and makes the escalation from ordinary Rust work to undefined-behavior discipline a deterministic routing rule rather than something a model is trusted to notice.

Do Not Use When

  • The request is a server, API, or schema design that happens to mention a Rust stack; use omh-backend for the contract and name Rust as the stack.
  • The request is debugging a stripped or source-less native binary; use omh-native-debugging.
  • The request is a general code review of finished Rust; use omh-code-review.
  • The request is a Rust vocabulary or concept question with no change to prepare; answer it directly.

Examples

Good example:

  • Prompt: Rewrite this parser in Rust and fix the borrow checker errors.
  • Expected behavior: Prepare rust_change_contract/v1 with the escalation verdict, ownership_shape/v1 for the parser's borrows, error_and_api_contract/v1, and rust_gate_list/v1.
  • Why: The request is a Rust change whose difficulty is ownership shape, which is exactly what the contract has to settle before code.

Bad example:

  • Prompt: It compiles and the unsafe block looks fine, so call the FFI wrapper safe.
  • Expected behavior: Escalate on the unsafe/FFI trigger, mark Miri and sanitizer evidence as not_observed, and name them as blocking items.
  • Why: Compilation proves nothing about the invariant an unsafe block asserts, and the escalation is not optional.

Completion Checklist

  • The escalation verdict is stated with the trigger that decided it.
  • The ownership shape names owners, borrows across boundaries, and every deliberate clone.
  • The error type, its conversion boundary, and every surviving unwrap/expect/panic! are named.
  • The gate list names the exact commands the executor must run and pass.
  • An escalated change carries the Miri, sanitizer, and concurrency-testing requirements as blocking items.
  • Compiler, clippy, test, Miri, sanitizer, and loom results stay observed-only.

Recovery Notes

  • If the crate cannot be inspected, escalate by default and say the verdict is conservative rather than measured.
  • If the toolchain cannot run Miri or a sanitizer for the escalated change, keep the change blocked and name the smallest substitute proof instead of downgrading the verdict.

When to Use

Use when Hermes should prepare a Rust change: ownership and lifetime shape, error and API types, cargo/clippy gates, and the mandatory UB escalation when the change touches unsafe, raw pointers, FFI, MaybeUninit, or lock-free primitives.

Strong routing signals: `rust`, `rust code`, `rust skill`, `rustlang`, `borrow checker`, `lifetime error`, `ownership error`, `trait bound`, `cargo build`, `cargo clippy`, `clippy lint`, `unsafe rust`, `unsafe block`, `raw pointer`, `maybeuninit`, `rust ffi`, `extern c`, `undefined behavior`, `miri`, `loom`, `ボローチェッカー`, `所有権エラー`, `ライフタイムエラー`, `トレイト境界`, `러스트`, `러스트 코드`, `빌림 검사기`, `소유권 에러`, `라이프타임 에러`, `언세이프`, `미정의 동작`, `借用检查器`, `所有权错误`, `生命周期错误`, `特征约束`, `bantu atasi error borrow checker`, `perbaiki masalah ownership Rust`, `jelaskan error lifetime Rust`, `tolong beresin error cargo clippy`, `tinjau blok unsafe Rust ini`, `giúp xử lý lỗi borrow checker`, `sửa vấn đề ownership trong Rust`, `giải thích lỗi lifetime trong Rust`, `hãy sửa lỗi cargo clippy`, `rà soát khối unsafe Rust này`

Catalog Metadata

Category: planning Phase: rust-development Quality tier: rust-safety-gated Reasoning demand: standard

Quality bar:

  • Run the escalation check before anything else and state the verdict; a change whose unsafe/FFI status is unknown is escalated by default.
  • Load references/rust-discipline.md for the ownership, error, and API rules, and name the gate commands from it rather than assuming cargo build is the whole bar.
  • When the escalation triggers, load references/ub-escalation.md and carry its Miri, sanitizer, and loom-style concurrency requirements into the handoff as blocking items.
  • Name the ownership decision behind every clone, Arc, interior-mutability wrapper, and lifetime annotation the change introduces.
  • Name the error type and its conversion boundary; a surviving unwrap needs a written reason, not silence.
  • Keep compilation, clippy, tests, Miri, sanitizers, and loom as observed-only evidence.

Required inputs:

  • the crate, module, or function being changed
  • whether the change touches unsafe, raw pointers, FFI, MaybeUninit, or a lock-free primitive
  • the crate's edition, MSRV, and async runtime when relevant
  • existing error type and public API stability constraints
  • the gate commands the repository already runs
  • observed compiler, clippy, test, and Miri/sanitizer evidence for completion claims

Expected outputs:

  • rust_change_contract/v1
  • ownership_shape/v1
  • error_and_api_contract/v1
  • rust_gate_list/v1
  • ub_escalation_verdict/v1
  • ub_discipline_checklist/v1 when the escalation triggers
  • observed_rust_gate_evidence/v1 when observed

Artifact expectations:

  • rust_change_contract/v1 names the crate, the change, and the escalation verdict on its first line
  • ownership_shape/v1 states who owns each value, which borrows cross a function or await boundary, and where a clone is deliberate rather than a borrow-checker surrender
  • error_and_api_contract/v1 names the error type, its conversion boundary, and every unwrap, expect, or panic! that survives with its justification
  • rust_gate_list/v1 lists the exact commands the executor must run and pass
  • ub_escalation_verdict/v1 is escalated or not_escalated with the trigger that decided it
  • ub_discipline_checklist/v1 adds the Miri, sanitizer, and loom-style concurrency requirements when escalated
  • compiler, clippy, test, Miri, sanitizer, and loom results only when observed

Safety rules:

  • Do not claim compilation, clippy cleanliness, passing tests, a Miri run, a sanitizer run, or a loom run from a prepared Rust contract.
  • The UB escalation is deterministic, not a judgment call: if the change touches unsafe, *mut/*const, FFI or extern, MaybeUninit, unsafe impl Send/Sync, transmute, or a hand-written lock-free primitive, escalate.
  • When escalated, a change is not ready for handoff until the UB checklist names the Miri, sanitizer, and concurrency-testing requirement for it.
  • Never present unsafe as safe because it compiles: the compiler does not check the invariant an unsafe block asserts.
  • Do not silence a borrow-checker error with a clone, Rc<RefCell<_>>, or unsafe without naming the ownership decision that made it necessary.
  • Do not run cargo, Miri, sanitizers, or any toolchain from OMH core.

Runtime Evidence

Use the current host's own tools and subagent/task mechanism when available; otherwise run the same lanes sequentially or name the unavailable capability. A prepared plan, handoff, checklist, or skill installation is not execution, review, CI, merge-readiness, or merge evidence. Record actual tool results, or not_observed / not_available, in the record; never invent dispatch or host accounting. Treat supplied context as advisory, not proof of hidden memory reads or writes. State scope, constraints, verification, and the stop condition before work. Reply in the user's own words and the host's own voice: the host's persona owns reply language, tone, speech level, and sentence endings, progress updates included (where it sets no language, use the one the user wrote in), and OMH shapes structure and content only; OMH's record terms (surface, lane, wrapper, handoff, evidence boundary, not_observed) stay in records and tool calls, never in the sentence the user reads unless they ask about one; and when a real unresolved user decision or a useful briefing discussion remains, offer one specific, content-linked question. Completed work needs no question; omit unrelated non-action footers and generic offers to continue. Supporting paths are relative to this skill directory; sibling skill paths are relative to its parent. Resolve them from the host-provided skill base directory ({baseDir} on hosts that provide it), never a hardcoded install location. A named workflow not installed here is unavailable, not permission to emulate its host-specific capabilities. Verify through the real surface before done.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Omh Rust AI skill do?

[omh] Rust ownership, lifetime, or unsafe trouble: prepare Rust changes with ownership, error, and API discipline, and escalate any unsafe, FFI, or lock-free change to the UB checklist. Use when the user says: rust, rust code, rust skill, rustlang, borrow checker, lifetime error, ownership error, trait bound.

Why use Omh Rust on TypingMind?

Because you install it once and use it with any model. Omh Rust is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Omh Rust in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/rlaope/oh-my-hermes/tree/main/agent-skills/omh-rust. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Omh Rust?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Omh Rust?

As many as you like. As long as a model supports skills, you can use Omh Rust with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Omh Rust AI skill free?

Yes. It is published on GitHub by rlaope under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇