Dọn rác ổ đĩa
Nói tiếng Việt, ngắn gọn. K = ~/.claude/skills/don-rac-o-dia. Windows, python (3.9+).
Luật cứng
- Chỉ đọc: chỉ chạy các script trong
K/scripts. Không mở nội dung file, không xóa, không chạy script dọn. - Bỏ qua OneDrive / WPS Cloud / Dropbox / Pictures (thư viện ảnh), ổ ngoài, junction/symlink, thư mục bị từ chối quyền.
- Chạy script dọn chỉ khi người dùng bảo rõ ("chạy đi"). Mục "Cần xem lại" phải hỏi lại từng mục trước khi chạy.
- Trang artifact chứa đường dẫn máy (tên user, tên dự án): giữ riêng tư, không tự chia sẻ.
Quy trình
- Quét (1–3 phút; timeout 600000):
Nếu thư mục làm việc hiện tại nằm ngoài home (vdpython "K/scripts/scan_disk_usage.py" --html-out "<scratchpad>/disk-map.html" [--root <thư mục dự án ngoài home>]C:\codehoặcD:\Projects), thêm--rootvới thư mục cấp cao nhất của nó. Script tự đọc~/disk-report/sizes.csvcũ (chép sangsizes-previous.csv), so sánh, ghi file mới và in tóm tắt kèm id từng mục. - Publish artifact file
<scratchpad>/disk-map.html(trang tự sinh từ template trongK/assets, dữ liệu từ lần quét):- Có
~/disk-report/artifact-url.txt→Artifact readURL đó rồi publish vớiurlđể giữ link cũ. - Chưa có → publish mới (
icon: "storage"), ghi URL vào~/disk-report/artifact-url.txt.
- Có
- Báo người dùng (≤ 8 dòng): còn trống bao nhiêu; tổng "an toàn" + 3 mục lớn nhất; tổng "cần xem lại"; mục tăng so với lần trước (nếu có); link artifact. Nhắc: tick trên trang → Copy script → dán vào PowerShell, hoặc nói tên mục để mình tạo file.
- Khi người dùng chọn mục trong chat:
python "K/scripts/make_cleanup_script.py" <id> <id> ...→ đưa đường dẫn~/disk-report/cleanup-*.ps1và tóm tắt từng khối lệnh. Không chạy. - Sau khi người dùng dọn xong: gọi lại skill để quét lại; trang sẽ hiện mức thay đổi.
File
| File | Vai trò |
|---|---|
scripts/cleanup_rules.py | Danh mục vị trí rác đã biết + mẫu thư mục dự án (node_modules, .next, venv…), lệnh dọn, lời giải thích. Thêm quy tắc mới ở đây. |
scripts/scan_disk_usage.py | Quét chỉ đọc, so sánh sizes.csv, ghi scan.json, gọi dựng HTML |
scripts/build_disk_map_html.py | Ghép assets/ + dữ liệu thành trang. Chạy riêng để dựng lại từ scan.json sau khi sửa giao diện |
scripts/make_cleanup_script.py | Tạo file .ps1 (UTF-8 BOM) cho các id đã chọn |
assets/disk-map-*.{html,css,js} | Giao diện: treemap, đề xuất có checkbox, thanh Copy script |
Đầu ra ở ~/disk-report/: scan.json, sizes.csv, sizes-previous.csv, disk-map.html, cleanup-*.ps1, artifact-url.txt.
Thêm quy tắc
Một dict trong RULES (cleanup_rules.py): id, label, kind (cache | build | agent | docker | ai | files), cat
(SAFE = công cụ tự tải/build lại; REVIEW = mất lịch sử, model, dữ liệu), paths (glob), why (xóa thì mất gì), và một
trong: tool + cmd (lệnh clean chính thức), cmd có {p} (chạy theo từng đường dẫn), manual (chỉ in hướng dẫn),
hoặc bỏ trống (làm trống thư mục). Ưu tiên lệnh chính thức của công cụ hơn xóa tay.