Trim duplication and align headings in rust skill
Drops the quick-reference table that restated the justfile, removes
prose that duplicated SKILL.md cross-cutting principles in
scaffolding.md, points to coverage.md for grcov exclusion markers,
unpins fs-err in style.md to match the unpinned-deps policy, and
sentence-cases coverage.md headings.

Assisted-by: Claude Opus 4.7 (1M context) via Claude Code
change wytvwkozspuksywqzzpyumkkqqomvzlk
commit 61b38ca537ce27e52ae577fc847251aa9e3148a3
author Alpha Chen <alpha@kejadlen.dev>
date
parent llvrypnv
diff --git a/ai/skills/rust/coverage.md b/ai/skills/rust/coverage.md
index e1e9dba2..301b225c 100644
--- a/ai/skills/rust/coverage.md
+++ b/ai/skills/rust/coverage.md
@@ -2,7 +2,7 @@
 
 LLVM source-based coverage via `cargo-llvm-cov`, which wraps rustc's `-C instrument-coverage` flag.
 
-## How It Works
+## How it works
 
 1. **Compile** with `-C instrument-coverage` — rustc inserts counters at coverage-relevant spans.
 2. **Run** the instrumented binary — writes `.profraw` files.
@@ -18,7 +18,7 @@ rustup component add llvm-tools       # ships llvm-profdata + llvm-cov
 cargo install cargo-llvm-cov          # convenience wrapper
 ```
 
-## Quick Reference
+## Quick reference
 
 | Goal | Command |
 |------|---------|
@@ -59,7 +59,7 @@ cargo llvm-cov --workspace --exclude some-crate
 cargo llvm-cov --workspace --exclude-from-report some-crate
 ```
 
-## Reading the Text Report
+## Reading the text report
 
 ```bash
 cargo llvm-cov --text
@@ -75,7 +75,7 @@ Output shows each source line with execution count:
 
 Lines with `0` count are uncovered. Lines with no count are non-executable (declarations, imports, comments).
 
-## Show Missing Lines
+## Show missing lines
 
 ```bash
 cargo llvm-cov --show-missing-lines
@@ -188,7 +188,7 @@ grcov . --binary-path ./target/debug/ -s . -t lcov \
 | Mixed language project (Rust + C) | `grcov` — handles `.gcda` + `.profraw` together |
 | Doctests coverage | `cargo-llvm-cov` — `--doctests` flag (nightly) |
 
-## Manual Workflow (Without cargo-llvm-cov or grcov)
+## Manual workflow (without cargo-llvm-cov or grcov)
 
 For environments where neither wrapper is available:
 
@@ -221,7 +221,7 @@ llvm-cov export "$BINARY" \
 
 Use `rustfilt` as demangler for readable Rust symbol names (`cargo install rustfilt`).
 
-## Common Pitfalls
+## Common pitfalls
 
 **Multiple binaries**: `llvm-cov` needs all instrumented binaries passed via `-object`. `cargo-llvm-cov` handles this automatically. Manually, you must pass each binary:
 
diff --git a/ai/skills/rust/scaffolding.md b/ai/skills/rust/scaffolding.md
index d4885b63..44ab610f 100644
--- a/ai/skills/rust/scaffolding.md
+++ b/ai/skills/rust/scaffolding.md
@@ -63,25 +63,20 @@ tempfile = "*"
 Project-type-specific deps (`clap` for CLIs, `axum` for servers) go in
 `binary.md` / `server.md` and are added on top of this baseline.
 
-Key choices:
+Notes on this template:
 
-- `edition = "2024"` — latest stable edition.
-- Unpinned dependencies (`"*"`) — `Cargo.lock` is committed (it's a
-  binary), so builds are reproducible. Unpinned versions mean
-  `cargo update` gets the latest compatible releases without editing
-  `Cargo.toml`.
 - `miette` with the `fancy` feature — pretty diagnostic rendering for
-  binaries; the library still derives `miette::Diagnostic` even when
-  the consumer is not the binary (e.g., when running tests).
-- `thiserror` — structured errors in the library.
-- `fs-err` — `std::fs` with paths in error messages (→ `style.md`).
+  binaries; the library still derives `miette::Diagnostic` so error
+  detail survives through tests and library consumers.
 - `hegeltest` — property-based testing built on the Hypothesis engine,
   with built-in shrinking.
 
+Cross-cutting choices (edition, lock file, fs-err, tracing, tokio
+features) are explained in `SKILL.md`.
+
 ## Error pattern
 
-Library errors derive both `thiserror::Error` and `miette::Diagnostic`.
-The binary returns `miette::Result<()>`.
+Template (rationale in `SKILL.md`):
 
 ```rust
 // src/error.rs
@@ -102,10 +97,6 @@ pub enum MyError {
 }
 ```
 
-The diagnostic codes and help text live on the variant itself, so
-errors carry their own labels and source spans through tests, other
-binaries, and HTTP handlers.
-
 ## justfile
 
 ```just
@@ -180,10 +171,8 @@ Key design:
   --ignore 'src/bin/**'`. Binary code is tested via integration tests
   but not measured.
 - `covdir` output — machine-readable JSON, parsed with `jq` for a
-  clean summary.
-- Exclusion markers — `cov-excl-line`, `cov-excl-start`/
-  `cov-excl-stop` for structurally unreachable code. The
-  `unreachable!` macro is also excluded by default.
+  clean summary. Exclusion markers (`cov-excl-line`, etc.) are
+  documented in `coverage.md`.
 - `mutants` tolerates exit code 3 — `cargo mutants` returns 3 for
   timeouts (infinite loops caused by mutations). These count as
   caught because the mutant broke the program.
@@ -250,15 +239,3 @@ cargo install grcov cargo-mutants just
 
 hegeltest also requires [`uv`](https://docs.astral.sh/uv/) on `PATH`
 — it manages the Hypothesis engine automatically.
-
-## Quick reference
-
-| Task | Command |
-|------|---------|
-| Format | `just fmt` |
-| Lint | `just clippy` |
-| Coverage | `just coverage` |
-| Mutation testing | `just mutants` |
-| All checks | `just all` |
-| Install from source | `just install` |
-| Find uncovered lines | Change `-t covdir` to `-t markdown` in justfile |
diff --git a/ai/skills/rust/style.md b/ai/skills/rust/style.md
index 3207cf80..a284a4d9 100644
--- a/ai/skills/rust/style.md
+++ b/ai/skills/rust/style.md
@@ -262,11 +262,11 @@ use fs_err as fs;
 let contents = fs::read_to_string("config.toml")?;
 ```
 
-For async code, use `fs-err`'s tokio feature:
+For async code, enable the tokio feature:
 
 ```toml
 [dependencies]
-fs-err = { version = "3", features = ["tokio"] }
+fs-err = { version = "*", features = ["tokio"] }
 ```
 
 ```rust