Các quy ước mang tính định hướng rõ ràng để xây dựng ứng dụng máy tính để bàn (desktop) đa nền tảng an toàn bằng Tauri và Rust.
# Ứng dụng Desktop Tauri taste của một lập trình viên desktop đa nền tảng - Chọn Tauri thay vì Electron cho các ứng dụng desktop mới khi kích thước gói cài đặt (bundle size) và mức sử dụng bộ nhớ là yếu tố quan trọng. Confidence: 0.80 - Xây dựng phần frontend bằng Vite và TypeScript ở chế độ nghiêm ngặt (strict mode), đồng thời giữ cho nó độc lập với framework nhìn từ phía Rust. Confidence: 0.85 - Giữ logic nghiệp vụ có tương tác với hệ thống tệp, mạng hoặc hệ điều hành ở trong các lệnh Rust (Rust commands), và giữ cho tầng web chỉ tập trung vào giao diện người dùng (UI). Confidence: 0.85 - Chỉ bật các năng lực (capabilities) và quyền hạn (permissions) mà từng cửa sổ thực sự cần, và tuyệt đối không phát hành danh sách cho phép dùng ký tự đại diện (wildcard allowlist). Confidence: 0.95 - Thiết lập Chính sách Bảo mật Nội dung (Content Security Policy - CSP) nghiêm ngặt và không bao giờ tải nội dung từ xa vào một cửa sổ có quyền gọi lệnh hệ thống. Confidence: 0.95 - Tạo các liên kết kiểu (bindings) TypeScript cho các lệnh bằng tauri-specta hoặc ts-rs để các kiểu dữ liệu giữa frontend và Rust không thể bị lệch nhau. Confidence: 0.80 - Trả về các lỗi có cấu trúc từ các lệnh bằng thiserror và serde thay vì trả về chuỗi văn bản thuần túy. Confidence: 0.85 - Chạy các tác vụ nặng hoặc chậm trong các lệnh bất đồng bộ (async commands) hoặc tác vụ nền và báo cáo tiến độ thông qua các sự kiện (events), tuyệt đối không làm chặn luồng chính (main thread). Confidence: 0.90 - Lưu trữ cài đặt của người dùng bằng plugin store chính thức và lưu các thông tin bí mật (secrets) trong trình quản lý khóa của hệ điều hành (OS keychain), không lưu trong các tệp JSON thuần túy. Confidence: 0.90 - Sử dụng SQLite thông qua sqlx hoặc plugin SQL cho dữ liệu cục bộ, với các tệp di trú cơ sở dữ liệu (migrations) được lưu trữ trong kho mã nguồn (repo). Confidence: 0.80 - Phân giải đường dẫn bằng path API cho các thư mục dữ liệu ứng dụng và cấu hình thay vì gán cứng (hardcode) vị trí. Confidence: 0.90 - Phát hành tính năng cập nhật tự động bằng plugin updater và các gói phát hành (release artifacts) đã được ký số. Confidence: 0.85 - Ký số (sign) và chứng thực (notarize) các bản dựng macOS cũng như ký số các trình cài đặt Windows ngay từ hệ thống CI, tuyệt đối không thực hiện từ máy tính cá nhân của lập trình viên. Confidence: 0.90 - Xây dựng bản cài đặt cho mọi nền tảng trong GitHub Actions bằng ma trận tauri-action trên mỗi thẻ phát hành (release tag). Confidence: 0.80 - Kiểm thử giao diện người dùng (UI) trên cả WebKit, WebView2 và WebKitGTK, vì cơ chế hiển thị và các API có sự khác biệt giữa chúng. Confidence: 0.85 - Tôn trọng các quy ước của từng nền tảng đối với thanh menu, phím tắt và nút điều khiển cửa sổ thay vì dùng chung một thanh tiêu đề tùy chỉnh ở mọi nơi. Confidence: 0.75 - Viết kiểm thử đơn vị (unit test) trực tiếp cho các lệnh Rust và bao phủ các luồng chính bằng kiểm thử đầu-cuối (end-to-end) thông qua WebDriver. Confidence: 0.70 - Giữ cây phụ thuộc (dependency tree) nhỏ gọn và chạy cargo audit cùng npm audit trong hệ thống CI. Confidence: 0.80 - Ghi nhật ký (log) vào tệp xoay vòng (rotating file) trong thư mục nhật ký của ứng dụng và cung cấp cho người dùng cách xuất nhật ký chỉ bằng một cú nhấp chuột để gửi báo cáo lỗi. Confidence: 0.75
Đánh giá Dockerfile về bảo mật, dung lượng image, bộ nhớ đệm bản dựng (build cache) và độ tin cậy khi chạy (runtime): bí mật (secrets) bị gắn cứng vào các lớp (layers), chạy dưới quyền root, base image chưa ghim phiên bản, lệnh curl truyền thẳng qua pipe vào shell, sử dụng sai lệnh ADD, bộ nhớ đệm apt và pip còn sót lại, cài đặt gói phụ thuộc làm hỏng cache, lệnh CMD dạng shell, và thiếu bản dựng đa giai đoạn (multi-stage builds) hoặc kiểm tra sức khỏe (health checks), sau đó viết lại một Dockerfile đã sửa lỗi và tệp .dockerignore. Sử dụng khi người dùng chia sẻ một Dockerfile và hỏi "hãy đánh giá Dockerfile của tôi", "tại sao image của tôi lại nặng như vậy?", hoặc "container này có an toàn không?".
Rà soát các kịch bản (script) bash và POSIX sh trước khi chúng chạy trong CI, cron hoặc môi trường production. Phát hiện và gắn cờ việc thiếu chế độ nghiêm ngặt (strict mode), lệnh rm -rf trên các biến có thể bị rỗng, truyền kết quả curl qua pipe vào shell, lệnh eval, mở rộng biến không đặt trong dấu ngoặc kép, lệnh cd không kiểm tra lỗi, phân tích cú pháp kết quả lệnh ls, chmod 777, bí mật (secret) gắn cứng trong mã, tệp /tmp có tên dễ đoán trước, lệnh ssh nuốt mất dữ liệu của vòng lặp read, mã thoát (exit code) bị che khuất và các cú pháp riêng của bash (bashism) chạy dưới /bin/sh, sau đó trả về bản script đã được sửa lỗi. Bao gồm một bộ kiểm tra mã nguồn (linter) bằng thư viện chuẩn Python có hỗ trợ --self-test.
Kiểm tra (lint) các tệp .env và .env.example để phát hiện bí mật (secrets) vô tình bị commit, tên biến yếu, khóa trùng lặp, tiền tố export, khoảng trắng quanh dấu bằng, giá trị bắt buộc bị bỏ trống và nội suy không an toàn, sau đó đề xuất một tệp ví dụ đã được làm sạch. Sử dụng khi người dùng hỏi "tệp .env này có an toàn để commit không?", "tại sao dotenv không tải được?", hoặc "so sánh tệp .env.example của tôi". Bao gồm trình kiểm tra bằng thư viện chuẩn Python đã được kiểm thử.
Bảo vệ các endpoint trò chuyện (chat) và sinh văn bản (completion) AI khỏi hành vi lạm dụng — phát hiện các cuộc tấn công tiêm câu lệnh (prompt injection) và vượt rào (jailbreak), chặn rò rỉ thông tin định danh cá nhân (PII) và dữ liệu nhạy cảm trong phản hồi, đồng thời thực thi giới hạn tốc độ theo ngân sách token (token budget rate limits) để kiểm soát chi phí. Sử dụng kỹ năng này khi người dùng đang xây dựng hoặc bảo mật bất kỳ endpoint nào xử lý prompt của người dùng bằng LLM, ngay cả khi họ mô tả yêu cầu là "ngăn chặn jailbreak", "chặn tấn công prompt", "chặn dữ liệu nhạy cảm", hoặc "kiểm soát chi phí API AI" thay vì gọi tên cụ thể các cơ chế bảo vệ.