diskripper
Use when working on the DiskRipper Rust workspace.
SKILL.mdskills/diskripper/SKILL.md
GitHubDiskRipper Rust Workspace
All work in C:\Projects\DiskRipper — the native optical-media (CD/DVD/Blu-ray)
backup application, MIT-licensed, distributed at github.com/LoopyLuci/DiskRipper.
When to Use
- Any edit, build, test, or debug work inside the DiskRipper workspace
- UI work on the native egui app (
diskripper-app) - Filesystem parsing / detection changes in
diskripper-core - Release, CI, or documentation updates for the DiskRipper repo
Architecture (settled — do not re-propose)
diskripper-core— pure Rust backend: rip engine, drive scanner, filesystem parsers (ISO 9660/UDF), ML pipeline, settings, job manager.diskripper-app— 100% native egui/eframe GUI. UI commands/events travel overstd::sync::mpscchannels to worker threads; see therust-egui-native-desktopskill for the egui patterns and pitfalls.- No Tauri, no React, no webview. The user rejected browser-engine UIs ("that is not a native app") — do not re-add web tech to fill UI gaps.
Always-on rules
- Repo name is exactly
DiskRipper. No suffixes, numbers, or version markers. When reporting state, write "commit <hash>" — appending@<hash>to the repo name reads as a version number and gets challenged. - Every UI control must call a real core API. A button whose handler only
sets a status string ("Loading...") is unfinished work and will be sent back.
Wire controls to
RipEngine/AudioCdReader/MlPipeline/SettingsManagerand surface real results (track lists, checksums, confidence scores, saved settings). - Verify before claiming done, then commit AND push:
cargo test --release --workspace(expect 50 passing) →cargo build --release -p diskripper-app→ launch the exe and confirm viatasklist→git add -A && git commit && git push. GitHub is the distribution channel; the user expects work on origin/main, not just local.
Procedure
- Inspect current state before changing anything:
git status --short, build, tests. - Edit
diskripper-coreand/ordiskripper-app. cargo test --release --workspacecargo build --release -p diskripper-app- Kill any running instance (
taskkill //F //IM diskripper-app.exe), launch withcmd.exe /c "start C:\Projects\DiskRipper\target\release\diskripper-app.exe", confirm withtasklist | grep diskripper. - Commit and push.
Pitfalls
- Joliet detection offsets — see
references/filesystem-parsing.md. - CI builds the native app directly.
.github/workflows/ci.ymlrunscargo build --release --target <triple> -p diskripper-appon ubuntu/windows/macos runners. No Node, no Tauri steps. - Settings live outside the workspace.
SettingsManagerreads/writessettings.jsonunder%APPDATA%\DiskRipper; the app crate has nodirs/directoriesdependency, so resolve the dir withstd::env::var("APPDATA").