Shared LibreQoS Rust workflow for repo contributors. Use when changing Rust under src/rust, validating Rust crates, deciding between workspace commands and --manifest-path, or applying LibreQoS-specific Rust conventions and verification steps.
설치
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
Shared LibreQoS Rust workflow for repo contributors. Use when changing Rust under src/rust, validating Rust crates, deciding between workspace commands and --manifest-path, or applying LibreQoS-specific Rust conventions and verification steps.
LibreQoS Rust Workflow
Use this skill for Rust work in this repo.
Scope
Rust sources live under src/rust/.
src/rust/Cargo.toml is the source of truth for current workspace members.
Some crates exist in-tree but are not current workspace members. If a crate is outside [workspace].members, use cargo --manifest-path path/to/Cargo.toml.
Workflow
Read AGENTS.md first for current repo rules and crate descriptions.
Identify whether the touched crate is a workspace member.
Validate the touched crate with cargo check -p <crate> when possible.
Run relevant tests.
Run cargo clippy for the touched crate and fix actionable issues.
If dependencies changed, also run:
cargo machete
cargo audit
cargo tree
If the change adds, renames, moves, or newly depends on runtime files, static assets, helper scripts, service files, templates, or install-time artifacts, review and update src/build_dpkg.sh in the same change.
Preferred Rust Direction
Prefer parking_lot for new Mutex and RwLock usage.
Prefer crossbeam_channel for new MPSC/MPMC channels.
Prefer thiserror for structured errors.
Prefer let else and early returns over deeply nested if let.
Avoid introducing new pub static values with locks when helper functions or actors are better.
Avoid introducing new #[inline(always)]; prefer #[inline].
Keep RustDoc current for changed public items and note side effects for non-pure functions.
Avoid allocation in hot paths.
Notes
Existing code does not fully match all preferred conventions yet. Treat these as direction for new and touched code, not as a reason to perform unrelated cleanup.
Build/package scripts live under src/, not repo root.
src/build_dpkg.sh is a functional packaging manifest for shipped installs. Forgetting to update it is a common failure mode; treat package-content drift as a bug.
For Insight/LTS2 integrations, preserve the existing external protocol and identity values unless the task explicitly covers coordinated changes on both sides. Unilateral protocol drift is a breaking change.