lab-setup — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited lab-setup (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Пользователь хочет настроить проект для выполнения лабораторной работы. Нужно проверить окружение, собрать данные о студенте и работе, распарсить задание и сохранить всё в config.json.
Проверь наличие Python:
python3 --version (если не найден — попробуй python --version).python3).ручного ввода текста. Продолжай настройку.
Если Python найден:
python3 -m venv .claude/lab/venv.claude/lab/venv/bin/pip install -r .claude/lab/scripts/requirements.txtScripts/ вместо bin/.Если Python не найден — пропусти этот шаг.
Если config.json уже существует (.claude/lab/config.json) — прочитай его, покажи текущие значения и спроси, хочет ли пользователь что-то изменить. Если хочет — задай только те вопросы, которые нужно обновить.
Если config.json не существует — задай все вопросы через AskUserQuestion (разбей на блоки):
Блок 1 — студент и учебное заведение:
Блок 2 — предмет и работа:
Блок 3 — предпочтения:
report. Примеры: Лабораторная_работа_3, ЛР3_Иванов.объяснениями выполнения работы в корне проекта: *.pdf, *.docx, *.txt, *.md (исключая CLAUDE.md, README.md, report.md, instructions.md).
*.png, *.jpg, *.jpeg (фото/скан).theory_and_task.pdf, theory_and_task.docx, theory_and_task.txt или theory_and_task.md) и повтори поиск.
Полный парсинг документа:
Парси все найденные документы целиком (не только задание, но и теорию, методические указания, примеры — всё, что ты нашел). Цель — сохранить полный контекст исходных документов в удобном для агента формате: текст + ссылки на извлечённые изображения + описание каждого изображения (чтобы агенту было проще понимать, что на нем изображено не смотря каждый раз на него). Описание изображения должно быть максимально подробным.
.claude/lab/venv/bin/python .claude/lab/scripts/parse_assignment.py --full --images-dir .claude/lab/source-images <файл>Скрипт извлечёт весь текст и все изображения из каждого документа. Изображения сохранятся в .claude/lab/source-images/, а текст будет содержать Markdown-ссылки на них.
Сохрани полный результат файла с теорией и заданием в .claude/lab/source-material.md, а все вспомогательные файлы в .claude/lab/reference-docs/.
Извлечение задания:
Из полного текста в source-material.md выдели часть, которая является непосредственно заданием (без теории и методических указаний), и сохрани в .claude/lab/assignment.md. Если весь документ — это задание (нет отдельной теории), скопируй целиком.
.claude/lab/source-material.md (полный текст документа) и.claude/lab/assignment.md (выделенное задание).practical — практическая (настройка ПО, сети, выполнение действий на компьютере)theoretical — теоретическая (анализ, описание, сравнение)programming — программирование (написание кода)calculation — расчётная (вычисления, формулы)ПО, сетевые настройки, конфигурация системы и т.д.) — задай уточняющие вопросы. Например, даже если сейчас пользователь сидит на macOS, необязательно, что он будет выполнять работу (запускать нужный софт) с нее. Полученные данные сохрани в config.system.additional_info.
ВАЖНО: Почти всегда пользователь предоставляет шаблон-пустышку — DOCX-файл с готовым титульным листом и заголовками секций (Цели работы, Ход работы, Дополнительное исследование, Выводы). Обычно называется report.docx, ИТОГОВЫЙ ОТЧЕТ.docx или ЛР_N_ФИО.docx.
Поиск шаблона:
Парсинг шаблона для извлечения данных:
Если шаблон найден — распарсь его через .claude/lab/venv/bin/python .claude/lab/scripts/parse_assignment.py <файл> и извлеки из титульного листа:
Эти данные используй как значения по умолчанию в опросе (Шаг 3). Не спрашивай то, что уже извлечено из шаблона — просто покажи извлечённые данные и спроси, всё ли верно. Это сильно сокращает опрос.
Резервная копия: При запуске /lab-report скрипт автоматически создаёт бэкап шаблона (.backup), чтобы при неудачной вставке можно было восстановить оригинал.
Пользователь может также предоставить файл example.docx — пример выполненной работы, чтобы понять стиль и объём отчёта.
Анализ примера:
example.*, или спроси пользователя, если имя другое)..claude/lab/venv/bin/python .claude/lab/scripts/parse_assignment.py <файл>.Если изображение — прочитай через Read tool (vision).
.claude/lab/templates/example.docx (для использования как шаблона стилей пригенерации документа).
Уровень детализации текста (detail_level):
"detailed" — подробное описание каждого действия, пояснения к каждому шагу, развёрнутые формулировки. Типично:абзац на каждый пункт задания.
"moderate" — ключевые действия описаны, есть краткие пояснения, но без избыточной детализации."brief" — лаконичный стиль: что сделано + результат, минимум объяснений.detail_level = "detailed", стили по ГОСТ.Спроси пользователя: нужна ли пошаговая инструкция (instructions.md), или сразу перейти к черновику отчёта?
Подсказка:
practical — рекомендуй инструкцию (/lab-instructions).theoretical, programming или calculation — рекомендуй сразу черновик (/lab-draft).Сохрани все собранные данные в .claude/lab/config.json (поле can_edit в template всегда должно быть true, даже не спрашивай пользователя о нём):
{
"student": {
"name": "ФИО студента",
"group": "Группа"
},
"institution": {
"name": "Полное название учебного заведения",
"city": "Город"
},
"course": {
"name": "Название предмета",
"lab_type": "Лабораторная работа",
"lab_number": 1,
"lab_title": "Название лабораторной работы",
"reviewer": null
},
"preferences": {
"report_format": "docx",
"output_filename": "report",
"report_style": "first_person",
"no_title_page": false,
"needs_research": false,
"needs_instructions": true
},
"system": {
"os": "ОС пользователя",
"python_path": "python3",
"venv_python": ".claude/lab/venv/bin/python",
"additional_info": {}
},
"example": {
"has_example": false,
"example_path": null,
"detail_level": "detailed",
"style_notes": ""
},
"template": {
"has_template": false,
"example_path": null,
"can_edit": true
},
"assignment": {
"original_file": "task.pdf",
"source_material_file": ".claude/lab/source-material.md",
"source_images_dir": ".claude/lab/source-images",
"parsed_file": ".claude/lab/assignment.md",
"type": "practical"
}
}Значения report_style: "first_person" (я выполнил), "impersonal" (было выполнено), "result_only" (только результаты, без описания процесса — минимальный отчёт). Значения lab_type: "Лабораторная работа", "Практическая работа", "Задание" (используется на титульном листе). reviewer: ФИО преподавателя или null (если не указан — строка преподавателя не выводится на титульном листе). no_title_page: true — не создавать титульный лист при генерации DOCX (для работ без титульника). Если Python не установлен: python_path и venv_python = null.
Покажи пользователю итоговую конфигурацию в читаемом виде. Затем сообщи, что делать дальше:
needs_instructions = true → «Следующий шаг: /lab-instructions»needs_instructions = false → «Следующий шаг: /lab-draft»$ARGUMENTS
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.