---
title: "Скрипты"
id: "484"
type: "page"
slug: "scripts"
published_at: "2026-05-30T11:07:16+00:00"
modified_at: "2026-06-13T00:52:52+00:00"
url: "https://pastukhov.com/code/docs/scripts"
markdown_url: "https://pastukhov.com/code/docs/scripts.md"
excerpt: "Скрипты — это исполняемые файлы в вашем репозитории, которые можно запустить по требованию из Pastukhov…"
---

# Скрипты

[https://pastukhov.com/code/docs/scripts.md](https://pastukhov.com/code/docs/scripts.md)

Скрипты — это исполняемые файлы в вашем репозитории, которые можно запустить по требованию из Pastukhov Code. Оболочечные скрипты (`.sh`) показывают кнопку **run** в редакторе файлов при открытии. При выполнении вывод потоками в реальном времени передаётся в диалог вывода скриптов, где вы можете мониторить прогресс, копировать результаты или останавливать выполняющийся скрипт.

 ![Run button appears in the file editor when a shell script is opened](https://pastukhov.com/wp-content/uploads/2026/06/script-execution-button.png) Скрипты можно запускать из двух мест — **диалог файлов** (файлы проекта) и **диалог навыков** (файлы навыков). Оба используют один и тот же редактор файлов и процесс выполнения. Скрипты отличаются от [сборок и развёртываний](/code/docs/build-deploy)
 — сборки автоматизируются наблюдателями файлов и настраиваются в `build.yml`, а скрипты запускаются вручную и могут быть любым исполняемым файлом в вашем репозитории.

## Диалог вывода скриптов

При выполнении скрипта диалог вывода скриптов открывается автоматически, показывая:

 ![Script Output dialog showing real-time streamed output](https://pastukhov.com/wp-content/uploads/2026/06/script-output-dialog.png) - **Панель заголовка** — отображает путь к скрипту, имя и бейдж репозитория (project или skills)
- **Таймер выполнения** — показывает прошедшее время while the script runs, and final duration on completion
- **Индикатор состояния** — вращающийся значок во время выполнения (кликабельный для остановки), зелёная галочка при успехе или состояние ошибки при неудаче
- **Область вывода** — прокручиваемый предварительно форматированный текст, показывающий вывод скрипта в реальном времени
- **Кнопка копирования** — копирует полный вывод в буфер обмена (отключена во время выполнения скрипта)

Область вывода подсвечивает строки цветовым кодированием:

- **Красный** — строки ошибок (сопоставлены по правилам в `.pastukhov/output.parser` или встроенным шаблонам)
- **Оранжевый** — строки предупреждений
- **По умолчанию** — нормальный вывод

## Как выполняются скрипты

Скрипты проходят через этот процесс:

1. Путь к скрипту разрешается в полный путь к файлу в репозитории (project или skills)
2. Файл делается исполняемым (`chmod +x` в Unix-системах)
3. Запускается процесс bash с `/bin/bash scriptPath`
4. Вывод (stdout и stderr) захватывается асинхронно и буферизуется для предотвращения перегрузки
5. Буферизованный вывод передаётся в браузер через SignalR каждые 100мс
6. Когда процесс завершается, отправляется сообщение о завершении и таймер останавливается

Рабочий каталог для выполнения скриптов — корень проекта. Переменные окружения `PYTHONIOENCODING=utf-8` и `LANG=en_US.UTF-8` устанавливаются автоматически.

## Остановка скрипта

Чтобы остановить выполняющийся скрипт, нажмите на вращающийся значок остановки в заголовке диалога. Сервер убивает всё дерево процессов (включая дочерние процессы), сбрасывает любой буферизованный вывод и отправляет сообщение “Скрипт остановлен пользователем”.

 ![Stop button in the Script Output dialog header to terminate a running script](https://pastukhov.com/wp-content/uploads/2026/06/script-output-stop-button.png) Закрытие диалога также автоматически останавливает скрипт — это предотвращает продолжение выполнения скриптов в фоновом режиме, если вы случайно уходите или закрываете окно вывода.

## Парсинг вывода

Вывод скриптов автоматически парсится для подсветки ошибок и предупреждений. Правила парсинга определены в `.pastukhov/output.parser` — нет необходимости редактировать этот файл вручную. Простейший способ исправить шаблоны парсера: выберите необработанный текст в выводе и нажмите плавающую кнопку **Fix parser** для отправки его ИИ. См. `.pastukhov/README.md` для справки по формату файла парсера.

```
[ERROR]
Error:\s+(.*)
[/ERROR]

[WARNING]
Warning:\s+(.*)
[/WARNING]
```

Встроенные шаблоны обнаружения охватывают распространённые форматы ошибок без какой-либо конфигурации:

- Ошибки оболочки: “command not found”, “Permission denied”, “Segmentation fault”
- Python: Tracebacks, SyntaxError, ModuleNotFoundError, ImportError
- Node.js: Error:, TypeError, npm ERR!
- .NET: Build errors, exceptions
- HTTP: Status codes 4xx/5xx, connection refused, timeouts

## Поддерживаемые репозитории

Скрипты могут быть выполнены из двух репозиториев:

- **Project** — основной репозиторий рабочего пространства проекта
- **Skills** — каталог навыков Claude (`.claude/skills`)

Репозиторий отображается как бейдж в заголовке диалога, поэтому вы всегда знаете, в каком контексте выполняется скрипт.

## Скрипты против сборок

Скрипты и сборки служат разным целям в Pastukhov Code:

- **Скрипты** — запускаются по требованию, любой исполняемый файл, вывод в реальном времени через SignalR, интерактивная возможность остановки. Файл конфигурации не требуется.
- **Сборки** — запускаются автоматически при изменении файлов, настроены в `.pastukhov/build.yml`, вывод кэшируется в файлы, могут запускать развёртывания при завершении. См. [Build & Deploy](/code/docs/build-deploy) для подробностей.

Используйте скрипты для специальных задач, таких как запуск тестов, миграция данных или разовые операции. Используйте сборки для непрерывной компиляции и автоматизированных рабочих процессов.

**[← Хуки](/code/docs/hooks)**

**[Использование контекста →](/code/docs/context-utilization)**
