Skip to content
Back to skills

Lab Setup

ASecurity

Настройка проекта

  • 3 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added May 27, 2026
data-aipython

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned May 27, 2026

npx -y skills add id-andyyy/LabAI --skill lab-setup --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Lab Setup?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Lab Setup
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/id-andyyy-lab-setup/badge)](https://www.skillsdirectory.com/skills/id-andyyy-lab-setup)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.