{"id":51765425,"url":"https://github.com/drizzletime/skiff","last_synced_at":"2026-07-19T18:03:57.562Z","repository":{"id":363078502,"uuid":"1261690244","full_name":"DrizzleTime/Skiff","owner":"DrizzleTime","description":"Skiff is a local cross-platform disk cleanup tool for inspecting caches, applications, duplicate files, and large files before removal.","archived":false,"fork":false,"pushed_at":"2026-06-27T09:20:35.000Z","size":904,"stargazers_count":154,"open_issues_count":1,"forks_count":8,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-06-27T11:12:50.888Z","etag":null,"topics":["cleanup","linux","rust","tauri","typescript"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DrizzleTime.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-07T03:01:20.000Z","updated_at":"2026-06-27T09:20:39.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/DrizzleTime/Skiff","commit_stats":null,"previous_names":["drizzletime/skiff"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/DrizzleTime/Skiff","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DrizzleTime%2FSkiff","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DrizzleTime%2FSkiff/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DrizzleTime%2FSkiff/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DrizzleTime%2FSkiff/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DrizzleTime","download_url":"https://codeload.github.com/DrizzleTime/Skiff/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DrizzleTime%2FSkiff/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35661229,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-19T02:00:06.923Z","response_time":112,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cleanup","linux","rust","tauri","typescript"],"created_at":"2026-07-19T18:03:56.662Z","updated_at":"2026-07-19T18:03:57.548Z","avatar_url":"https://github.com/DrizzleTime.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"right\"\u003e\n  \u003ca href=\"./README.zh-CN.md\"\u003e简体中文\u003c/a\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"src-tauri/icons/tray.png\" alt=\"Skiff\" width=\"64\" height=\"64\" /\u003e\n\n  \u003cp\u003e\n    Skiff is a local cross-platform disk cleanup tool for inspecting caches,\n    applications, duplicate files, and large files before removal.\n  \u003c/p\u003e\n\n  \u003cp\u003e\n    \u003cimg alt=\"Tauri\" src=\"https://img.shields.io/badge/Tauri-2-24C8DB?logo=tauri\u0026logoColor=white\" /\u003e\n    \u003cimg alt=\"React\" src=\"https://img.shields.io/badge/React-19-61DAFB?logo=react\u0026logoColor=111111\" /\u003e\n    \u003cimg alt=\"Rust\" src=\"https://img.shields.io/badge/Rust-2021-000000?logo=rust\u0026logoColor=white\" /\u003e\n    \u003cimg alt=\"Linux\" src=\"https://img.shields.io/badge/Linux-supported-FCC624?logo=linux\u0026logoColor=111111\" /\u003e\n    \u003cimg alt=\"macOS\" src=\"https://img.shields.io/badge/macOS-supported-000000?logo=apple\u0026logoColor=white\" /\u003e\n    \u003cimg alt=\"Windows\" src=\"https://img.shields.io/badge/Windows-supported-0078D4?logo=windows\u0026logoColor=white\" /\u003e\n    \u003cimg alt=\"Bun\" src=\"https://img.shields.io/badge/Bun-runtime-000000?logo=bun\u0026logoColor=white\" /\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n## Interface Preview\n\nSkiff provides two main workflows: a classic cleanup interface for direct inspection and an AI-assisted analysis interface for understanding space usage.\n\n### Classic Cleanup Tool\n\nCheck disk usage, cache cleanup targets, large files, duplicate files, and application cleanup items.\n\n\u003ca href=\"https://shiyu.dev/uploads/2026/06/b7762be8-c277-48a9-b951-b02e10345c92.png\"\u003e\n  \u003cimg src=\"https://shiyu.dev/uploads/2026/06/b7762be8-c277-48a9-b951-b02e10345c92.png\" alt=\"Skiff classic cleanup tool interface\" width=\"100%\" /\u003e\n\u003c/a\u003e\n\n### AI Smart Space Analysis\n\nUnderstand disk usage from local scan results and get readable cleanup suggestions.\n\n\u003ca href=\"https://shiyu.dev/uploads/2026/06/12af9c6c-8672-46ee-92e1-0d7cf8c9de6c.png\"\u003e\n  \u003cimg src=\"https://shiyu.dev/uploads/2026/06/12af9c6c-8672-46ee-92e1-0d7cf8c9de6c.png\" alt=\"Skiff AI smart space analysis interface\" width=\"100%\" /\u003e\n\u003c/a\u003e\n\n## Features\n\n- **Disk overview**: reads total, used, available space, usage ratio, and disk location for the current user's home directory.\n- **Junk cleanup**: scans and cleans platform-specific cache locations, including system caches, browser caches, developer tool caches, Flatpak and Arch package caches on Linux, and Homebrew cache on macOS.\n- **Large file scan**: scans common user directories for large files and moves selected files to the system Trash after confirmation.\n- **Duplicate file scan**: finds duplicate files by size, content hash, and byte-by-byte comparison, then moves selected files to the system Trash.\n- **Application cleanup**: reads Linux packages, macOS applications and Homebrew packages, or Windows uninstall registry entries, with filtering, search, selection, and confirmed uninstall.\n- **Cleanup history**: shows recent cleanup, Trash, uninstall, and Agent cleanup results. The main UI keeps the latest 50 records.\n- **Settings**: adjusts file scan paths, large-file scan thresholds, duplicate-file scan thresholds, and whether advanced feature entries are shown. Custom paths must stay inside the current user's HOME directory.\n- **Tray behavior**: closing the main window hides it to the system tray instead of exiting the app.\n\n## Safety Boundaries\n\nSkiff performs real file deletion and package uninstall operations. The current implementation has these boundaries:\n\n- Linux, macOS, and Windows are supported by the local app and CLI. Each platform has its own cleanup target list.\n- Junk cleanup removes contents from predefined cache directories. Some package-manager cleanup targets call system commands.\n- Large-file and duplicate-file handling only allows regular files inside the current user's HOME directory. Files are moved to the system Trash by default instead of being permanently deleted. They become unrecoverable only after the Trash is emptied.\n- Large-file and duplicate-file scans default to common user directories such as Desktop, Documents, Downloads, media folders, code/project folders, and common cloud-drive folders. Application data directories such as `.config`, `AppData`, and macOS `Library` must be added manually in Settings.\n- Duplicate-file detection first groups files by size, then computes a content hash, and finally confirms equality with a byte-by-byte comparison.\n- Application uninstall uses the platform's registered uninstall mechanism:\n  - APT: `apt-get remove -y`\n  - RPM: prefers `dnf remove -y`, then `yum remove -y`, `zypper --non-interactive remove`, and finally `rpm -e`\n  - Pacman: `pacman -R --noconfirm -- \u003cpackage\u003e`\n  - Flatpak: `flatpak uninstall -y --app`\n  - macOS `.app`: moves the app bundle to Trash\n  - Homebrew: `brew uninstall --formula` or `brew uninstall --cask`\n  - Windows: reads `UninstallString` / `QuietUninstallString` from the registry and runs that command\n- Linux commands that require administrator privileges use `pkexec` when available. macOS and Windows may show their native authorization prompts.\n- Flatpak application data cleanup is high risk because it removes app configuration, login state, local databases, and other local app data.\n- CLI deletion, cleanup, and uninstall commands require an explicit `--yes`.\n- CLI `files delete` uses the same behavior as the desktop file actions and moves files to the system Trash.\n- The macOS and Windows local builds in this repository are not configured for code signing, Apple notarization, or Windows signing.\n\n## User Install\n\nDownload the package for your operating system from [GitHub Releases](https://github.com/DrizzleTime/Skiff/releases). Current release artifacts target Linux, macOS ARM64, and Windows.\n\nmacOS and Windows installers are not signed at the moment. The operating system may show a security warning. That is a distribution trust issue and does not mean the app has passed platform signing or notarization.\n\n## Tech Stack\n\n- Desktop framework: Tauri 2\n- Backend: Rust 2021\n- Frontend: React 19, TypeScript, Vite\n- Styling and UI: Tailwind CSS 4, lucide-react, custom CSS\n- Package manager: Bun\n- Local settings: `~/.config/skiff/settings.json` on Unix-like systems, or the equivalent user config path on Windows.\n\n## Development\n\n### Requirements\n\n- Linux, macOS, or Windows desktop environment\n- Rust stable\n- Bun\n- Platform dependencies required by Tauri 2. Linux needs WebKitGTK and related desktop libraries.\n\n### Install dependencies\n\n```bash\nbun install\n```\n\n### Start the frontend dev server\n\n```bash\nbun run dev\n```\n\nThe frontend dev server is provided by Vite.\n\n### Start the desktop app in development mode\n\n```bash\nbun run tauri dev\n```\n\nThe Tauri config expects this frontend dev URL:\n\n```text\nhttp://localhost:1420\n```\n\n## Build\n\n### Build the frontend\n\n```bash\nbun run build\n```\n\nThis command runs TypeScript checks and then writes the Vite build output to `dist/`.\n\n### Build desktop packages\n\n```bash\nbun run tauri build\n```\n\nLocal platform-specific package commands:\n\n```bash\nbun run tauri:build:linux\nbun run tauri:build:mac\nbun run tauri:build:windows\n```\n\nTauri uses `src-tauri/tauri.conf.json` to generate the desktop app and installer packages for the current operating system. The Windows command builds an NSIS `.exe` installer. macOS and Windows release-grade distribution still requires signing configuration outside this repository.\n\n## CLI\n\nRunning `skiff` without arguments starts the desktop app. Passing a subcommand runs CLI mode.\n\n```bash\nskiff info\nskiff disk\nskiff cleanup scan\nskiff cleanup run --ids thumbnail-cache,go-cache --yes\nskiff files large --min-size 500M --limit 80\nskiff files duplicates --min-size 10M --group-limit 40\nskiff files delete --path /home/user/Downloads/example.iso --yes\nskiff agents scan\nskiff agents clean --ids \u003cid\u003e --yes\nskiff packages scan --include-system\nskiff packages uninstall --ids pacman:example --yes\n```\n\nEvery CLI command supports `--json` for scripts, cron, or systemd jobs:\n\n```bash\nskiff --json cleanup scan\n```\n\nCLI commands use the current process `HOME` by default. On servers, pass `--home` to target a specific user directory:\n\n```bash\nskiff --home /home/deploy --json files large --min-size 1G\n```\n\nCommands that change disk state require `--yes`:\n\n- `cleanup run`\n- `files delete`\n- `agents clean`\n- `packages uninstall`\n\n## Friendly Links\n\n- [Linux.do](https://linux.do)\n\n## License\n\nMIT. See [LICENSE](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrizzletime%2Fskiff","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdrizzletime%2Fskiff","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdrizzletime%2Fskiff/lists"}