# Poisk Sekretov Bez Raskrytiya

> «Найди файлы с паролями», «почту и документы на секреты», «ключи доступа и токены», «карты с PIN, CVV», «только пути к утечкам», «очистка секретов». Path-only, revoke-first.

- Skill: `kir-kopylov/poisk-sekretov-bez-raskrytiya` (Agent Skill, multi-file: 10 files)
- Install (CLI): `npx skillmds@latest add kir-kopylov/poisk-sekretov-bez-raskrytiya`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kir-kopylov/poisk-sekretov-bez-raskrytiya/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: kir-kopylov (https://skillmd.com/u/kir-kopylov)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/kir-kopylov/poisk-sekretov-bez-raskrytiya

---


# Secret File Path Only Locator

## Запуск Навыка

При явном вызове или однозначном смысловом совпадении применяйте навык сразу. Перед первым шагом покажите ровно одну короткую контекстную строку (не более 30 слов) и продолжайте работу в том же ответе, не ожидая реакции:

Применяю **«Безопасный поиск копий секретов»**: <кратко назовите конкретную дополнительную процедуру или проверяемый результат для текущего запроса>; продолжаю без ожидания.

Не включайте в строку `author_github`, внутреннее имя папки или пересказ всего запроса. Не спрашивайте, применять ли навык.

Не завершайте первый ответ уведомлением или обещанием будущего сканирования. До чтения реальных данных самостоятельно определите доступные локальные корни, подключённые источники и безопасный path-only канал, затем верните начальную coverage-матрицу. Если scope нельзя однозначно ограничить из текущего контекста или инструментов, задайте один ближайший вопрос, который определит первый источник; не просите пользователя выполнять техническую проверку за вас.

Если одновременно подходят совместимые навыки, выберите минимальный набор и покажите одну общую строку. Если подходы ведут к несовместимым результатам и запрос не позволяет выбрать, спросите только о желаемом результате, не о разрешении применить навык.

Запуск навыка не расширяет полномочия. Выполните всю безопасную и уже разрешённую часть; запросите подтверждение только непосредственно перед ещё не разрешённым внешним или изменяющим действием. Не запрашивайте повторно уже данное разрешение и не дублируйте системное окно подтверждения.

## Обзор

Ищите места небезопасного хранения, а не собирайте секреты в новый список. Scanner может проверять содержимое только внутри уже разрешённой пользователю поверхности, но любой вывод для Codex, чата, логов и артефактов должен содержать только безопасный указатель, категорию и действие.

Слово `path` означает безопасный source pointer:

- локальный путь без совпавшей строки;
- repo alias, относительный путь и commit id без diff;
- message/thread id, ссылка и дата без body или snippet;
- file/note id, безопасное название и дата без фрагмента содержимого.

Если сам путь, title или subject содержит чувствительное значение, замените опасный сегмент на `<redacted>` и добавьте локальный номер находки.

Перед выполнением прочитайте локальный `known-exceptions.yaml` и примените подходящее `do_next_time`. Для source-specific границ прочитайте `references/domain-playbook.md`.

## Естественные Входы

- «найди все файлы с логинами и паролями, но не показывай значения»;
- «проверь мою почту, Drive и заметки на ключи доступа»;
- «найди небезопасные копии токенов и строк подключения»;
- «покажи только пути к документам с секретами»;
- «найди записи карт со сроком, PIN или CVV»;
- «подготовь безопасную зачистку информационного пространства».

## Быстрый Роутинг

- Нужен только audit -> остановитесь после coverage-матрицы и path-only отчёта.
- Нужна очистка -> сначала завершите audit, затем примените revoke-first gate и запросите подтверждение конкретного batch.
- Пользователь просит показать значения или совпавшие строки -> откажитесь от раскрытия и верните только source pointers.
- Нужен доступ к чужой почте, аккаунтам, дискам или защищённому vault -> не расширяйте полномочия и пометьте источник как недоступный.
- Есть признаки активного взлома, мошенничества или обязательного расследования -> не уничтожайте evidence; остановите cleanup и передайте задачу владельцу incident response.
- Нужно удалить следы конкретного macOS-приложения, а не секреты -> используйте `udalenie-prilozheniya-s-mac`.

## Зафиксировать Цель И Полномочия

1. Разделите режимы: `audit-only` или `audit-then-cleanup`.
2. Перечислите аккаунты, хранилища, устройства и repo, к которым пользователь уже имеет право доступа.
3. Зафиксируйте исключения: managed password manager, утверждённый secrets vault, юридический hold, incident evidence, чужие аккаунты и источники вне scope.
4. Не обещайте «найти всё», пока не построена coverage-матрица всех заявленных поверхностей.
5. Не подключайте новый аккаунт, connector, внешний scanner или upload-сервис без отдельного разрешения.

## Построить Coverage-Матрицу

Для каждой поверхности укажите:

| Поле | Значение |
| --- | --- |
| Source | Локальные файлы, mail, cloud docs, notes, git, archives, backups, versions/trash или другое |
| Authorized | `yes` / `no` / `unknown` |
| Scanner | Какой локальный или provider-native механизм доступен |
| Safe output verified | `yes` / `no` |
| Included surfaces | Например current files, attachments, sent mail, history, versions |
| Exclusions | Что намеренно не сканируется и почему |
| State | `pending` / `scanned` / `blocked` |

Любой `no`, `unknown`, `pending` или `blocked` запрещает утверждать, что информационное пространство полностью проверено. Итоговый статус должен быть `PARTIAL_COVERAGE` или `BLOCKED_UNSAFE_OUTPUT_CHANNEL`.

## Проверить Scanner До Реальных Данных

1. Используйте существующий локальный или provider-native scanner с отключённой отправкой данных наружу и режимом redacted/path-only output.
2. Проверьте его на синтетическом corpus без реальных секретов.
3. Убедитесь, что stdout, stderr, tool result, report и debug log не содержат matched value, строку, snippet, entropy sample или secret fingerprint.
4. Если scanner не умеет подавлять значения, не перенаправляйте опасный вывод в файл. Не запускайте его на реальных источниках и установите `BLOCKED_UNSAFE_OUTPUT_CHANNEL`.
5. Не используйте команды, которые печатают совпавшие строки, broad content export или полные тела писем и документов.
6. Не передавайте известный секрет как search query. Ищите по классу, контексту и безопасным metadata.

## Классы Находок

Ищите категории, не сохраняя значения:

- `account_credentials`: login + password, recovery answer, recovery code;
- `access_token`: API, cloud, OAuth, session, cookie, bearer и другие access tokens;
- `private_key_or_seed`: SSH/signing/private keys, seed-фразы и backup codes;
- `connection_secret`: DB/queue/service connection strings и auth headers;
- `payment_card_data`: номер карты, срок, CVV/CVC, PIN или их связка;
- `admin_or_shared_secret`: административные и общие командные реквизиты;
- `secret_hint_or_copy`: инструкция, screenshot/export/archive или заметка, ведущая к значению.

Не считайте отдельное короткое число PIN/CVV без контекста. Для номера карты требуйте структурную проверку, включая checksum, и контекст платёжных полей. Чем опаснее false positive или false negative, тем выше требование к provider-native detector или проверенному scanner.

## Выполнить Path-Only Scan

1. Следуйте source-specific маршрутам из `references/domain-playbook.md`.
2. Сканируйте только подтверждённый scope и не переходите по ссылкам, symlink или shared surfaces за его пределы.
3. Включайте скрытые поверхности только явно: attachments, sent/archive/trash, file versions, git history/stashes, backups, sync copies и archives.
4. Для каждой находки сохраняйте только:
   - локальный `finding_id`;
   - безопасный source pointer;
   - тип источника и дату;
   - категорию;
   - confidence и risk;
   - нейтральную причину релевантности;
   - следующее действие.
5. Не сохраняйте matched value, окружающий текст, номер строки, secret hash/fingerprint, screenshot или content excerpt.
6. Дедуплицируйте копии по source relationship и metadata, а не по hash самого секрета.

## Оценить Риск

- `critical`: действующий private key/seed, admin/shared secret, recovery codes, session access или платёжная связка с PIN/CVV;
- `high`: login + password, access token, connection secret, номер карты со сроком;
- `medium`: секретоподобная копия с неполным контекстом, требующая проверки владельцем;
- `low`: hint или устаревший trace без значения, который ведёт к более сильному источнику.

Risk — приоритет обработки, а не разрешение показывать содержимое.

## Подготовить Cleanup

1. Сначала остановите действие секрета:
   - credentials/keys/tokens -> revoke или rotate через владельца системы;
   - session/recovery material -> invalidate и перевыпустить;
   - card data с PIN/CVV или признаками компрометации -> freeze/block и reissue через эмитента;
   - legitimate secret -> перенести в approved vault через provider-native канал, не через чат.
2. Подтвердите, что replacement работает и старое значение больше не действует. Не тестируйте секрет через небезопасный канал.
3. Сформируйте batch только из source pointers: действие, последствия, rollback/retention note и поверхности, где могут остаться копии.
4. Запросите явное подтверждение этого batch. Фразы «удали всё» недостаточно для неоднозначных, shared, versioned или evidence-bearing источников.
5. Удаляйте или редактируйте только подтверждённые копии. Git history rewrite, purge versions, очистка trash и backups требуют отдельных подтверждений.
6. Не удаляйте incident evidence, legal hold или единственную рабочую копию до решения владельца.
7. Повторите тот же scan scope и подтвердите отсутствие указателей на старую находку.

## Формат Отчёта

Сначала покажите coverage-матрицу, затем findings:

| ID | Source pointer | Date | Category | Risk | Confidence | Why relevant | Action |
| --- | --- | --- | --- | --- | --- | --- | --- |

Не добавляйте колонок `Value`, `Match`, `Line`, `Snippet`, `Hash` или `Preview`.

Завершите одним статусом:

- `READY_FOR_REMEDIATION` — находки есть, revoke/rotate и cleanup-план подготовлены;
- `AWAITING_CLEANUP_CONFIRMATION` — конкретный batch ожидает решения пользователя;
- `REMEDIATION_VERIFIED` — подтверждённый batch обработан, replacement проверен, тот же scope пересканирован;
- `NO_EXPOSURES_FOUND_IN_SCANNED_SCOPE` — в явно перечисленном покрытии находок нет; это не утверждение обо всех возможных источниках;
- `PARTIAL_COVERAGE` — одна или несколько заявленных поверхностей не проверены;
- `BLOCKED_UNSAFE_OUTPUT_CHANNEL` — scanner или connector может раскрыть matched values/snippets.

## Границы

Нельзя:

- сканировать чужие аккаунты или обходить права;
- вскрывать encrypted vault или считать approved password manager утечкой;
- печатать, копировать, маскировать, хешировать или сохранять secret values;
- использовать scanner, который не прошёл synthetic path-only preflight;
- загружать corpus во внешний сервис без отдельного разрешения;
- удалять до revoke/rotate/block и явного batch confirmation;
- автоматически переписывать git history, очищать версии, trash, backups или shared documents;
- заявлять «всё чисто» при неполном coverage;
- уничтожать evidence при активном incident или legal hold.

## Definition Of Done

Skill завершён, когда:

- все заявленные поверхности присутствуют в coverage-матрице;
- scanner safety проверена до real-data scan;
- отчёт содержит только безопасные source pointers и категории;
- для каждой critical/high находки указан владелец следующего действия;
- cleanup не начат до revoke-first и подтверждения batch;
- после cleanup выполнен повторный scan того же scope;
- выбран один честный итоговый статус без обещания недоказанной полноты.

## Опрос После Использования

Опрос задаётся один раз — после выдачи path-only отчёта, статуса cleanup или явного стопа, не посреди сканирования. Если пользователь уже ответил «пропустить» в этой сессии, не переспрашивайте.

```text
Опрос по skill:
1. Что в этом использовании poisk-sekretov-bez-raskrytiya было полезно?
2. Что стоит доработать в skill или его формате?
Можно ответить коротко или написать "пропустить".
```

Если пользователь ответил, сохраните санированную карточку в `~/.codex/skill-runs/poisk-sekretov-bez-raskrytiya/usage-feedback.jsonl` — лучше через bundled script:

```bash
python3 scripts/log_usage_feedback.py --liked "..." --improve "..." --outcome "..."
```

Script перед записью редактирует приватные пути, контакты и token-like строки и сохраняет `redaction_applied` и `redaction_types`. Если запись невозможна из-за sandbox, прав или отсутствия tools, не делайте вид, что лог сохранён: скажите об этом и покажите короткую JSONL-карточку для ручного сохранения. Raw-ответы, контакты, пути и секреты не коммитить.

## Логирование Сбоев

Перед выполнением прочитайте локальный `known-exceptions.yaml` как список уже известных случаев и применяйте подходящее `do_next_time` без нового поиска.

Если пользователь поправил skill, tool/API/browser упал, нарушен режим работы, пришлось искать workaround или skill сделал ложное предположение, запишите приватную карточку в `~/.codex/skill-runs/poisk-sekretov-bez-raskrytiya/exception-log.jsonl`.

Пишите факты: что skill хотел сделать, что сделал, где сломался, какая предпосылка была ложной и что сделать в следующий раз. Если поле неизвестно, пишите `unknown`. Raw logs не коммитить.

