Настройка проекта
Scanned 5/27/2026
Install via CLI
openskills install id-andyyy/LabAI---
name: lab-setup
description: Настройка проекта
---
Пользователь хочет настроить проект для выполнения лабораторной работы. Нужно проверить окружение, собрать данные о
студенте и работе, распарсить задание и сохранить всё в config.json.
## Что делать
### Шаг 1. Проверка Python
Проверь наличие Python:
1. Выполни `python3 --version` (если не найден — попробуй `python --version`).
2. Если Python найден — запомни путь (например, `python3`).
3. Если Python не найден — сообщи пользователю, что генерация DOCX/PDF не будет работать, а парсинг PDF/DOCX потребует
ручного ввода текста. Продолжай настройку.
### Шаг 2. Создание venv и установка зависимостей
Если Python найден:
1. Создай виртуальное окружение: `python3 -m venv .claude/lab/venv`
2. Установи зависимости: `.claude/lab/venv/bin/pip install -r .claude/lab/scripts/requirements.txt`
3. На Windows пути через `Scripts/` вместо `bin/`.
Если Python не найден — пропусти этот шаг.
### Шаг 3. Опрос пользователя
Если config.json уже существует (.claude/lab/config.json) — прочитай его, покажи текущие значения и спроси, хочет ли
пользователь что-то изменить. Если хочет — задай только те вопросы, которые нужно обновить.
Если config.json не существует — задай все вопросы через AskUserQuestion (разбей на блоки):
**Блок 1 — студент и учебное заведение:**
1. ФИО студента.
2. Группа студента.
3. Полное название учебного заведения.
4. Город.
**Блок 2 — предмет и работа:**
1. Название предмета/курса.
2. Тип работы: Лабораторная работа / Практическая работа / Задание (для титульного листа). По умолчанию — «Лабораторная работа».
3. Номер лабораторной работы.
4. Название лабораторной работы (или пусто — определим из задания).
5. ФИО преподавателя (рецензента) — опционально, для титульного листа.
6. ОС пользователя, на которой он будет работать (Windows / macOS / Linux — с версией, если знает).
**Блок 3 — предпочтения:**
1. Формат итогового отчёта: docx / pdf / md.
2. Имя итогового файла (без расширения). По умолчанию — `report`. Примеры: `Лабораторная_работа_3`, `ЛР3_Иванов`.
3. Стиль отчёта: первое лицо («я выполнил, я настроил») / безличное («было выполнено, было настроено»).
4. Нужно ли дополнительное исследование в отчёте? (Да / Нет)
### Шаг 4. Поиск и полный парсинг документа
1. Поищи файлы теории и задания (чаще всего это один файл), дополнительные файлы теории, файлы с примерами и
объяснениями выполнения работы в корне проекта: `*.pdf`, `*.docx`, `*.txt`, `*.md` (исключая CLAUDE.md, README.md,
report.md, instructions.md).
2. Также проверь наличие изображений теории и задания: `*.png`, `*.jpg`, `*.jpeg` (фото/скан).
3. Если файл с теорией и заданием не найден — попроси пользователя положить файл в корень проекта (возможное имя:
`theory_and_task.pdf`, `theory_and_task.docx`, `theory_and_task.txt` или `theory_and_task.md`) и повтори поиск.
**Полный парсинг документа:**
Парси все найденные документы целиком (не только задание, но и теорию, методические указания, примеры — всё, что ты
нашел). Цель — сохранить полный контекст исходных документов в удобном для агента формате: текст + ссылки на извлечённые
изображения + описание каждого изображения (чтобы агенту было проще понимать, что на нем изображено не смотря каждый раз
на него). Описание изображения должно быть максимально подробным.
- Если есть venv и файл PDF/DOCX — запусти полный парсинг для каждого файла:
```
.claude/lab/venv/bin/python .claude/lab/scripts/parse_assignment.py --full --images-dir .claude/lab/source-images <файл>
```
Скрипт извлечёт весь текст и все изображения из каждого документа. Изображения сохранятся в
`.claude/lab/source-images/`, а текст будет содержать Markdown-ссылки на них.
- Если файл TXT/MD — прочитай через Read tool (изображений в таких файлах нет).
- Если файл — изображение (PNG/JPG) — прочитай через Read tool (vision), извлеки весь текст.
Сохрани полный результат файла с теорией и заданием в `.claude/lab/source-material.md`, а все вспомогательные файлы в
`.claude/lab/reference-docs/`.
**Извлечение задания:**
Из полного текста в `source-material.md` выдели часть, которая является непосредственно заданием (без теории и
методических указаний), и сохрани в `.claude/lab/assignment.md`. Если весь документ — это задание (нет отдельной
теории), скопируй целиком.
### Шаг 5. Анализ задания + уточняющие вопросы
1. Прочитай `.claude/lab/source-material.md` (полный текст документа) и`.claude/lab/assignment.md` (выделенное задание).
2. Определи тип лабораторной работы:
- `practical` — практическая (настройка ПО, сети, выполнение действий на компьютере)
- `theoretical` — теоретическая (анализ, описание, сравнение)
- `programming` — программирование (написание кода)
- `calculation` — расчётная (вычисления, формулы)
3. Если название ЛР не было указано пользователем — извлеки из текста задания.
4. Если задание требует специфических данных (на какой ОС сидит пользователь/либо какую он будет использовать, версии
ПО, сетевые настройки, конфигурация системы и т.д.) — задай уточняющие вопросы. Например, даже если сейчас
пользователь сидит на macOS, необязательно, что он будет выполнять работу (запускать нужный софт) с нее. Полученные
данные сохрани в `config.system.additional_info`.
### Шаг 6. Шаблон-пустышка (report.docx)
**ВАЖНО:** Почти всегда пользователь предоставляет шаблон-пустышку — DOCX-файл с готовым титульным листом и заголовками
секций (Цели работы, Ход работы, Дополнительное исследование, Выводы). Обычно называется `report.docx`, `ИТОГОВЫЙ
ОТЧЕТ.docx` или `ЛР_N_ФИО.docx`.
**Поиск шаблона:**
1. Поищи DOCX-файлы в корне проекта (кроме example.docx).
2. Если нашёл один DOCX — предположи, что это шаблон, и спроси пользователя для подтверждения.
3. Если нашёл несколько или ни одного — спроси пользователя, как называется файл шаблона.
**Парсинг шаблона для извлечения данных:**
Если шаблон найден — распарсь его через `.claude/lab/venv/bin/python .claude/lab/scripts/parse_assignment.py <файл>` и
извлеки из титульного листа:
- Название учебного заведения
- Название предмета/курса
- Тип работы (Лабораторная / Практическая / Задание)
- Номер работы
- Название работы
- ФИО студента и группу
- ФИО преподавателя (если указан)
- Город
Эти данные используй как значения по умолчанию в опросе (Шаг 3). Не спрашивай то, что уже извлечено из шаблона — просто
покажи извлечённые данные и спроси, всё ли верно. Это сильно сокращает опрос.
**Резервная копия:** При запуске `/lab-report` скрипт автоматически создаёт бэкап шаблона (`.backup`), чтобы при неудачной
вставке можно было восстановить оригинал.
### Шаг 7. Пример готовой лабораторной
Пользователь может также предоставить файл `example.docx` — пример выполненной работы, чтобы понять стиль и объём отчёта.
**Анализ примера:**
1. Найди файл примера в корне проекта (`example.*`, или спроси пользователя, если имя другое).
2. Если файл DOCX/PDF — распарсь через `.claude/lab/venv/bin/python .claude/lab/scripts/parse_assignment.py <файл>`.
Если изображение — прочитай через Read tool (vision).
3. Если файл DOCX — скопируй его в `.claude/lab/templates/example.docx` (для использования как шаблона стилей при
генерации документа).
4. Проанализируй содержимое и определи:
**Уровень детализации текста** (`detail_level`):
- `"detailed"` — подробное описание каждого действия, пояснения к каждому шагу, развёрнутые формулировки. Типично:
абзац на каждый пункт задания.
- `"moderate"` — ключевые действия описаны, есть краткие пояснения, но без избыточной детализации.
- `"brief"` — лаконичный стиль: что сделано + результат, минимум объяснений.
5. Сообщи пользователю результаты анализа и спроси, всё ли верно.
- Если примера нет — используются стандартные настройки: `detail_level = "detailed"`, стили по ГОСТ.
### Шаг 8. Определение workflow
Спроси пользователя: нужна ли пошаговая инструкция (instructions.md), или сразу перейти к черновику отчёта?
Подсказка:
- Если тип работы `practical` — рекомендуй инструкцию (`/lab-instructions`).
- Если тип `theoretical`, `programming` или `calculation` — рекомендуй сразу черновик (`/lab-draft`).
### Шаг 9. Сохранение config.json
Сохрани все собранные данные в `.claude/lab/config.json` (поле can_edit в template всегда должно быть true, даже не спрашивай пользователя о нём):
```json
{
"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`.
### Шаг 10. Итог
Покажи пользователю итоговую конфигурацию в читаемом виде. Затем сообщи, что делать дальше:
- Если `needs_instructions` = true → «Следующий шаг: `/lab-instructions`»
- Если `needs_instructions` = false → «Следующий шаг: `/lab-draft`»
## Дополнительный контекст от пользователя
$ARGUMENTS
No comments yet. Be the first to comment!