# Skill: Repository Orientation

## Когда использовать

Используй этот skill в начале любой нетривиальной задачи по ProxyWarden: аудит, рефакторинг, bugfix, изменение UI, изменение Windows service flow, изменение subscription/routing.

## Цель

Быстро понять, где находится нужная логика, какие инварианты нельзя нарушать и какие проверки нужны перед финальным ответом.

## Карта проекта

```text
src/api/tauriCommands.ts        typed frontend API boundary
src/domain/types.ts             TypeScript DTO/domain mirror
src/app/App.tsx                 current UI orchestration, large file
src/app/readiness.ts            apply readiness/gating
src/app/viewModel.ts            view helpers
src/ui/*                        reusable UI components
src/styles/app.css              global/component CSS

src-tauri/src/models.rs         Rust domain models
src-tauri/src/validation.rs     input normalization/validation
src-tauri/src/storage.rs        JSON config/state storage
src-tauri/src/activity.rs       activity log
src-tauri/src/subscription.rs   subscription fetch/parse
src-tauri/src/component_detection.rs component status detection
src-tauri/src/adapters/*        ProxiFyre/sing-box/proxy router adapters
src-tauri/src/commands.rs       Tauri command layer, currently too large
src-tauri/tests/*               Rust tests
scripts/*.ps1                   Windows install/control scripts
```

## Source of truth

- Persistent app config/state: `C:\ProgramData\ProxyWarden\config` and `state`.
- Generated artifacts: `C:\ProgramData\ProxyWarden\generated`.
- Frontend state is not source of truth. It should represent backend state and pending UI edits.
- Component detection/runtime status should come from backend, not guessed in UI.

## First-pass procedure

1. Identify whether the task is backend, UI, security, Windows service, subscription/routing, or testing/release.
2. Read the matching skill file.
3. Inspect the relevant source files listed above.
4. Determine whether the change crosses the Tauri boundary. If yes, update both Rust DTO/command and TypeScript wrapper/types.
5. Determine whether the change touches secrets, service control, generated configs, process execution, filesystem deletion, or network fetch. If yes, apply security checklist.
6. Prefer small, isolated changes over broad rewrites.

## Do not

- Do not treat `App.tsx` or `commands.rs` as the correct permanent architecture just because they currently contain lots of logic.
- Do not introduce a second storage system.
- Do not move service/install logic into frontend.
- Do not claim Windows service/elevation behavior is verified unless it was actually tested on Windows.

## Output expectations

For code changes, final report should include:

- Changed files.
- User-visible behavior changes.
- Internal behavior changes.
- Tests/checks run.
- Known unverified areas.

## Как отчитываться

Перед финальным ответом применить `.agent/skills/communication-reporting/SKILL.md` и `.agent/checklists/communication.md`.

Минимум для нетривиальной задачи:

- короткая сводка;
- таблица файлов `Файл / Что изменилось / Зачем`;
- важные места без пересказа каждой строки;
- что проверено;
- что не проверено;
- конкретные риски.
