# Thalarch Rust

> Project-aware Rust engineering for libraries, services, CLIs, async applications, and systems code. Use for Rust source, Cargo workspaces/features, ownership/lifetimes, unsafe code, concurrency, tests, performance, or Rust-specific refactoring.

- Skill: `luc4n3x/thalarch-rust` (Agent Skill)
- Install (CLI): `npx skillmds@latest add luc4n3x/thalarch-rust`
- Raw SKILL.md: https://api.skillmd.com/api/skills/luc4n3x/thalarch-rust/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: LUC4N3X (https://skillmd.com/u/luc4n3x)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/luc4n3x/thalarch-rust

---


# Thalarch Rust

Use the repository's toolchain/MSRV, Cargo features, async runtime, lint policy, and architecture.
Do not require the newest edition or rewrite working code merely to use newer syntax.

## Preflight

Inspect:

- `Cargo.toml` workspace/package structure;
- `rust-toolchain*` and MSRV policy;
- feature flags/default features;
- async runtime and ecosystem dependencies;
- `clippy`/format/test/CI configuration;
- generated/FFI/unsafe boundaries.

## Ownership and API design

Prefer ownership/borrowing that makes lifetime and mutation intent obvious.

- Avoid cloning solely to appease the borrow checker without understanding ownership.
- Avoid complex lifetime machinery when a simpler owned boundary is clearer and acceptable.
- Preserve public error and feature contracts.
- Use enums/newtypes where they eliminate invalid states or ambiguous primitives.
- Keep trait abstractions tied to real polymorphism/generic requirements rather than speculative flexibility.

## Errors

- Use `Result`/`?` for recoverable failure propagation.
- Add context at boundaries where it helps operators/callers.
- Do not `unwrap`/`expect` on production paths unless the invariant is truly impossible to violate and the reason is evident.
- Preserve error source chains where the project ecosystem supports them.

## Unsafe and FFI

Treat `unsafe` as a separate proof obligation.

For every new/changed unsafe block:

- state the invariant that makes it sound;
- identify pointer/aliasing/lifetime/thread-safety assumptions;
- keep the unsafe surface minimal;
- prefer a small safe wrapper around it;
- run targeted tests/sanitizer/Miri-style tools if the repository already supports them or the risk warrants setup.

Do not expand unsafe code as a performance guess.

## Async/concurrency

Preserve the existing runtime (Tokio/async-std/smol/etc.) unless the task explicitly changes it.
Review task ownership, cancellation, blocking calls on async executors, channel backpressure,
shared-state locking, `Send`/`Sync` assumptions, and task leaks.

## Testing

Use unit/integration/doc tests according to the contract. Add property/fuzz tests for parsers,
protocols, codecs, state machines, or invariant-heavy code when tooling is available/justified.

Run repository-native `cargo test`; use `cargo fmt --check`, `cargo clippy`, feature-matrix tests,
or target checks when configured and relevant.

## Performance

Profile/benchmark before optimizing. Examine allocations/copies, algorithmic complexity, lock
contention, async scheduling, I/O, serialization, and cache behavior. Use the project's benchmark
stack when present.

## Verification

Report the toolchain/feature/target combination actually tested. A default-feature host build
does not prove optional features or cross-target behavior.

