# Skill: Testing, CI and Release ## Когда использовать Используй этот skill при добавлении CI, release scripts, build fixes, test changes, dependency updates, packaging changes или перед финальным отчетом по крупной задаче. ## Minimal local checks Frontend: ```powershell npm ci npm run build ``` Rust: ```powershell cd src-tauri cargo fmt --all -- --check cargo clippy --all-targets --all-features -- -D warnings cargo test --all-targets ``` Tauri: ```powershell npm run tauri -- info npm run tauri -- build ``` PowerShell plan-only: ```powershell & .\scripts\install-control-app.ps1 -PlanOnly & .\scripts\install-proxyfier.ps1 -PlanOnly & .\scripts\install-singbox.ps1 -PlanOnly ``` ## Interaction smoke for UI motion Build, lint, and unit tests do not validate motion or pointer behavior. For any hover, disclosure, stagger, or hit-target change, verify: - first open and first close; - repeated and rapid toggle; - hover and click before, during, and after transition; - keyboard focus and hidden-control tab order; - loading and longest localized labels; - `prefers-reduced-motion`; - desktop and narrow window geometry. Use a controlled mock or preview state when backend status is difficult to reproduce. If no visual interaction smoke is possible, report that evidence as missing and do not claim the motion task is complete. ## CI recommendation Add GitHub Actions with at least: - frontend build on Windows and Ubuntu if practical; - Rust fmt/clippy/test; - PowerShell syntax/plan-only smoke on Windows; - Tauri build on Windows for release branches/tags; - artifact upload only for trusted release workflow. ## Dependency updates When changing dependencies: - Update lockfiles. - Check Tauri v2 compatibility. - Avoid adding large UI/runtime dependencies for tiny tasks. - Avoid adding shell/process libraries that bypass existing backend boundaries. - Note why dependency is needed. ## Release hygiene Before release: - Verify app version in `package.json` and Tauri config if applicable. - Verify icons/assets size. - Verify CSP and capabilities. - Verify no raw secrets/test URLs in repo. - Verify installer scripts with `-PlanOnly`. - Verify clean install on Windows VM. - Verify external SOCKS5 flow. - Verify local sing-box subscription flow. - Verify uninstall/safe cleanup behavior. ## Final report format ```text Changed: - ... Verified: - npm run build - cargo test Not verified: - Windows elevated install/uninstall, because ... Risks: - ... ``` Do not write “all tests pass” unless all listed relevant tests actually ran. Humanity has enough fictional dashboards. ## Как отчитываться Перед финальным ответом применить `.agent/skills/communication-reporting/SKILL.md` и `.agent/checklists/communication.md`. Минимум для нетривиальной задачи: - короткая сводка; - таблица файлов `Файл / Что изменилось / Зачем`; - важные места без пересказа каждой строки; - что проверено; - что не проверено; - конкретные риски.