Исходник: ~/.claude/skills/museum-source-access/SKILL.md
name: museum-source-access description: Получение российских музейных и архивных материалов при прямом доступе, сетевых отказах и недоступности российского моста. Использовать при поиске карточки, скана или источника для любого музея Русской цивилизации; не заменяет предметный навык и проверку прав.
Использовать существующий общий загрузчик проекта; не создавать личный прокси, параллельный реестр или отдельный загрузчик для каждого агента.
Порядок и команды: /home/agent/projects/russian-civilization/docs/registries/autonomous-access.md (полный путь: из worktree превью-сайта папки docs/registries нет). Базы по музеям: /home/agent/projects/russian-civilization/docs/registries/README.md.
socks5h://rf-proxy:1080, Python /home/agent/.venvs/agent311/bin/python (requests + pysocks), proxies={'https': 'socks5h://rf-proxy:1080'}, заголовок User-Agent браузера (15.10.2026, culture.ru и prlib.ru — 200). «Не подтвердил» пишется только после попытки через выход.query.py выбирает фонд, а не ищет произведение внутри него.access.py --url ... --contains ... --require-exact. Общая страница фонда и HTTP 200 сами по себе не подтверждают получение предмета.access.py --source ... --query ... --discover подготавливает запросы site:, но не выполняет поиск. Если веб-инструмента нет, использовать доступный каталог или профильные фонды; не обещать наличие инструмента другого агента.bridge_snapshot — историческая копия с проверенным SHA. Ни то ни другое не означает живой доступ к исходному сайту. Материал из другого фонда обозначать отдельно.report.json и файл с SHA. Не повышать file_confirmed для всего фонда после одной карточки. Не объявлять доступ из РФ без проверенного узла РФ.Проверенная карточка для проверки установки и порядок переноса в другой контейнер даны в общем маршруте. Успешная проверка одного агента не доказывает установку у других.
Исходник: ~/projects/russian-civilization/docs/registries/autonomous-access.md
Один runtime — access.py, одна база — sources.json, один навык — docs/skills/museum-source-access/SKILL.md. Работает из любого текущего каталога, Python 3 со стандартной библиотекой; дополнительные сертификаты берутся из certificates/ с проверкой SHA. Браузер/поиск подключаются средствами конкретного агента и не являются обязательной зависимостью прямой загрузки.
query.py --museum <профиль>. Это поиск фондов, не предметов. Если точный URL известен, сразу загружать его.RC_PROJECT_ROOT="${RC_PROJECT_ROOT:-$HOME/projects/russian-civilization}"
/usr/bin/python3 "$RC_PROJECT_ROOT/docs/registries/access.py" \
--url https://ar.culture.ru/ru/subject/burlaki-na-volge-1 \
--contains 'Бурлаки на Волге' --require-exact --out-dir /tmp/source-access-sample
/usr/bin/python3 "$RC_PROJECT_ROOT/docs/registries/access.py" \
--source goskatalog --query 'название предмета инвентарный номер' \
--discover --out-dir /tmp/source-discovery
Второй вызов только составляет план: status=discovery_only, artifacts=[]. Агент сам исполняет предложенные запросы своим доступным поисковым инструментом, открывает найденную точную карточку и повторяет первый вызов с её URL. Нет поискового инструмента — использовать прямые каталоги и известные фонды, зафиксировав not_searched; не имитировать поиск из памяти.
--require-exact требует непустой --contains; код 0 означает полученное тело исходного URL с ожидаемым фрагментом. Перенаправление на другой URL, другая коллекция или исторический снимок дают код 2 в этом режиме. Каноническое перенаправление можно открыть, проверить и запросить его конечный адрес явно. Это машинная проверка адреса и текста, не экспертная атрибуция или разрешение публиковать изображение. HTML-карточка, полный текст, скан и оригинал изображения проверяются раздельно. Без --require-exact сохранено прежнее поведение: код 0 может означать альтернативный материал; читать relation в отчёте.
23.09.2026 напрямую скачана указанная карточка «Артефакта» с ожидаемым текстом. Это одна проверенная карточка, не проверка всего каталога или российского IP. Поиск показал метаданные карточек ГИМ и НЭБ; их прямая загрузка не подтверждена. Действующий российский мост не прислал heartbeat. Развёртывание облака не выполнено. Не записывать сайты целиком как недоступные по одному адресу; не записывать их целиком как доступные по одной удачной карточке. Повторять адресную проверку при использовании материала в другой задаче.
Проверенный общий runtime и навык должны находиться в клоне проекта. Не копировать один access.py: нужны реестры, transport.py, сертификаты и связанные описания. После получения версии проекта выполнить в каждом контейнере от его пользователя:
/usr/bin/python3 "$RC_PROJECT_ROOT/docs/registries/install-source-skill.py" \ --apply --report /tmp/source-skill-install.json /usr/bin/python3 "$RC_PROJECT_ROOT/docs/registries/install-source-skill.py" \ --check --report /tmp/source-skill-check.json
Установщик добавляет общий навык в .codex/skills и .claude/skills текущего пользователя, а существующим музейным навыкам добавляет небольшой блок маршрута. Для другого загрузчика указать его каталог через --skills-dir. Остальной текст навыков сохраняется. Он не меняет модели, секреты, конфигурацию ботов, PAUSED или чужие домашние каталоги. Повторный запуск не дублирует блоки. Сначала допустим --check: отсутствующая установка возвращает код 2 и список различий.
Затем выполнить живую загрузку карточки из первого примера. Сохранить оба отчёта отдельно для каждого контейнера. Установка подтверждается SHA runtime и навыка, сеть — конкретным report.json. До получения этих квитанций статус других контейнеров — «не проверено», даже если проект доступен всем агентам.
Подготовленные варианты российского узла: continuous-access.md continuous-access.md. Они нужны для оставшихся уникальных оригиналов, а не для начала всякой работы.
Сайты .ru/.su/.рф, закрытые для зарубежного адреса (Госкаталог, Культура.РФ, НЭБ, Росархив, Минобороны), transport.py ведёт через SSH-туннель на российский сервер [вырезано] (ru_tunnel.py, настройки — ru-route.json). Туннель поднимается сам при первом запросе, через час простоя выходит. TLS сквозной, на узле ничего не установлено. Узел недоступен — запрос идёт напрямую, как без маршрута. Работает там, где читается ключ ~/.ssh/id_ed25519_target (контейнер Джарвиса); у исполнителей маршрут спит. Выключить: "enabled": false или RC_RU_ROUTE=0. «Память народа» отвечает 401 и с российского адреса — это вход на сайт, не география.
Прямое подключение к [вырезано] из контейнера закрыто (timeout) — помощники из-за этого получали «не найден». ru-route.json → "node": "rf-proxy" (тот же вход, что у tools/rf-ssh.py). Старый процесс ru_tunnel.py serve на [вырезано] с прежним адресом надо убить (kill по /proc/*/cmdline), иначе запросы идут в него. Проверено 12.10: Госкаталог, РЭМ, Русский музей, АОНБ — 200. aonb.ru не отдаёт промежуточный сертификат → certificates/globalsign-alphassl-2025.pem. Госкаталог без заголовка User-Agent браузера отвечает 403. Поиск: POST https://goskatalog.ru/muzfo-rest/rest/exhibits/ext?statusIds=6&publicationLimit=false&limit=N&offset=0&q=<запрос>&calcCountsType=1, тело [], ответ objects[]. artefact.culture.ru рвёт соединение — не решено.