type: standard
aspect: structure
title: "Стандарт файловой системы платформы"
status: draft
version: 0.2.0
date: 2026-04-10
owner: architect
project: platform-update
Где и как хранить файлы платформы: пространства, классы, структуры папок, правила хранения, белые и чёрные списки, хуки и аудит.
Главный принцип:
$WORKSPACE = исходники (source) — документация, код на языках
$DATASPACE = результат обработки — скомпилированное, форматированное, данные
Если файл создаётся руками или агентом как текст — он в $WORKSPACE.
Если файл является результатом компиляции, рендеринга или форматирования — он в $DATASPACE.
Платформа использует два пространства хранения с одинаковой иерархией проектов. Одна и та же сущность (например, проект pirotehnika) имеет своё представление в обоих пространствах.
export WORKSPACE=/opt/claude-workspace # ИСХОДНИКИ (git)
export DATASPACE=/mnt/beget-s3 # РЕЗУЛЬТАТ ОБРАБОТКИ + ДАННЫЕ (S3)
| Параметр | Значение |
|---|---|
| Что лежит | Исходный код, документация, конфигурация, шаблоны, стили, шрифты |
| Где | /opt/claude-workspace |
| Хранение | Git |
| Бэкап | Git remote + внешние бэкапы |
Что разрешено — только текстовые файлы:
- Код (.py, .js, .ts, .tsx, .jsx, .php, .go, .c, .cpp, .h, .sh, .bat, .ps1)
- Документация (.md, .ai.md, .txt, .rst)
- Конфигурация (.yaml, .json, .toml, .ini, .conf, .xml, .env.example)
- Web-код (.html, .css, .scss, .less)
- Шаблоны (.twig, .tpl, .j2)
- SQL-скрипты (схемы и миграции)
- Шрифты (.woff2, .ttf — код для браузера)
- Специальные (.gitignore, .gitkeep, .editorconfig, Dockerfile, Makefile, LICENSE)
Что запрещено — всё что файлы/данные:
- Вся графика (.svg, .ico, .jpg, .jpeg, .png, .gif, .webp) — в $DATASPACE
- Видео, аудио (.mp4, .mp3, .wav)
- Документы (.pdf, .docx, .doc)
- Данные (.csv, .xlsx, .xls, .ods)
- Базы данных (.db, .sqlite)
- Зависимости (venv/, node_modules/, __pycache__/)
- Секреты (.env, .key, .pem, .credentials.md)
| Параметр | Значение |
|---|---|
| Что лежит | Структурированные данные, прайсы, изображения, видео, аудио, PDF, базы, бэкапы |
| Где | /mnt/beget-s3 |
| Хранение | S3 (Beget) |
| Бэкап | S3 versioning |
Что разрешено:
- Таблицы (.xlsx, .xls, .csv, .ods)
- Базы данных (.db, .sqlite)
- JSON-данные (большие объёмы)
- Архивы данных (.zip, .tar.gz)
- Вся графика (.svg, .ico, .jpg, .jpeg, .png, .gif, .webp)
- Видео (.mp4, .avi, .mov, .webm)
- Аудио (.mp3, .wav)
- Документы (.pdf, .docx, .doc, .rtf)
- Логи приложений, бэкапы БД
Что запрещено:
- Исходный код
- Конфиги приложений
| Пространство | Что лежит | Хранение | Бэкап |
|---|---|---|---|
$WORKSPACE |
Код, документация, конфигурация | Git | Git remote |
$DATASPACE |
Данные, изображения, медиа, дампы | S3 (Beget) | S3 versioning |
Принцип: Одна иерархия — два носителя. Структура проектов в обоих пространствах совпадает.
Любой файл принадлежит одному из трёх классов:
┌─────────────────────────────────────────────────────┐
│ СЛУЖЕБНЫЕ │
│ │
│ Описывают место/сущность для обрабатывающей системы │
│ Читают: git, AI (Claude), файловая система │
│ │
│ Примеры: README.md CLAUDE.md AI.md INDEX.md │
│ .gitignore .cache .tmp __pycache__/ │
├─────────────────────────────────────────────────────┤
│ СОДЕРЖАТЕЛЬНЫЕ │
│ │
│ Несут знание и смысл — для людей и агентов │
│ Читают: люди, AI-агенты │
│ │
│ Примеры: Концепция, Стандарт, Инструкция, Практика │
│ STATUS.md TODO.md LICENSE Шаблоны │
├─────────────────────────────────────────────────────┤
│ ТЕХНИЧЕСКИЕ │
│ │
│ Являются реализацией — создаются и исполняются │
│ Читают: инструменты (docker, python, node) │
│ │
│ Примеры: Код (.py .js .php), Конфигурация (.yml) │
│ Данные (.csv .json), Тесты, Бинарные │
└─────────────────────────────────────────────────────┘
| Класс | Для кого | Без них | Типичные примеры |
|---|---|---|---|
| Служебные | Система (git, AI, ФС, IDE) | Система не ориентируется в папках, AI не понимает контекст, git коммитит лишнее | CLAUDE.md, AI.md, README.md, INDEX.md, .gitignore, .gitkeep, .editorconfig, __pycache__/, node_modules/, venv/, .env, .cache |
| Содержательные | Люди / AI-агенты | Нет знаний — нет платформы | Концепции, Стандарты, Инструкции, Практики, ADR, Тикеты, STATUS.md, TODO.md, LICENSE, Шаблоны-документы |
| Технические | Инструменты (docker, python, node, браузер) | Ничего не работает | Код (.py, .js, .php), конфигурация (.yml), данные (.csv, .json), тесты, бинарные |
Служебные файлы не несут знания о предметной области. Они описывают место или сущность для обрабатывающей системы. Их задача — дать ориентиры: что здесь лежит, как это читать, что игнорировать.
| Класс | $WORKSPACE (git) | $DATASPACE (S3) |
|---|---|---|
| Служебные | CLAUDE.md, AI.md, INDEX.md, README.md, .gitignore, .gitkeep, .editorconfig |
.cache (не бэкапить) |
| Содержательные | *.md — концепции, стандарты, инструкции, практики, ADR, тикеты, шаблоны |
— |
| Технические — код | .py, .js, .php, .ts, .sh, .go |
— |
| Технические — конфиг | .yaml, .json, .toml, .ini |
— |
| Технические — данные | .csv < 100 KB (fixtures, тесты) |
.csv > 100 KB, .xlsx, .xls, .ods |
| Технические — графика | — | .svg, .ico, .jpg, .jpeg, .png, .gif, .webp |
| Технические — шрифты | — | .woff2, .ttf, .otf, .eot |
| Технические — медиа | — | .mp4, .avi, .mov, .mp3, .wav, .pdf, .docx |
| Технические — БД | .sql (схемы, миграции) |
.db, .sqlite (данные) |
Платформа состоит из шести слоёв. Каждый отвечает на один вопрос:
arch/ ← ЧТО МЫ ЗНАЕМ? стандарты, методология
project/ ← КАК МЫ УПРАВЛЯЕМ? процессы, фазы, документы
domains/ ← ЧТО МЫ СТРОИМ? IT / производство / бизнес / данные
infra/ ← ГДЕ ЭТО РАБОТАЕТ? серверы, деплой, поддержка
system/ ← ЧЕМ МЫ РАБОТАЕМ? общие библиотеки, коннекторы, MCP
services/ ← КТО ОБСЛУЖИВАЕТ? планировщик, мониторинг
$WORKSPACE/
│
├── CLAUDE.md ← навигатор для Claude Code
├── README.md ← публичное описание
├── AI.md ← контекст для AI агентов
├── INDEX.md ← оглавление workspace
├── .gitignore
│
├── arch/ ← СЛОЙ 1: ЗНАНИЯ
│ ├── architect.ai.md ← агент архитектора
│ ├── AI.md
│ ├── CLAUDE.md
│ ├── theory/ ← теория (LOCKED)
│ ├── concept/ ← концепция платформы
│ ├── standards/ ← стандарты
│ ├── patterns/ ← паттерны
│ ├── decisions/ ← ADR
│ └── templates/ ← шаблоны документов
│
├── project/ ← СЛОЙ 2: УПРАВЛЕНИЕ
│ ├── CLAUDE.md
│ ├── @projector.module/ ← модуль проектирования
│ ├── @manager.module/ ← модуль управления
│ ├── @tester.module/ ← модуль тестирования
│ ├── org/ ← клиентские проекты
│ │ ├── it/
│ │ ├── production/ ⏸
│ │ ├── business/ ⏸
│ │ └── data/ ⏸
│ └── sys/ ← системные проекты платформы
│
├── domains/ ← СЛОЙ 3: ИСПОЛНЕНИЕ
│ ├── @it.domain/ ← домен IT ✅
│ │ ├── @drupal.coder/
│ │ ├── @react.coder/
│ │ └── @python.coder/
│ ├── @production.domain/ ⏸
│ ├── @business.domain/ ⏸
│ └── @data.domain/ ⏸
│
├── infra/ ← СЛОЙ 4: ИНФРАСТРУКТУРА
│ ├── @executor.module/ ← модуль деплоя
│ ├── @support.module/ ← модуль поддержки
│ └── servers/ ← конфиги серверов
│
├── system/ ← СЛОЙ 5: ОБЩЕЕ
│ ├── library/ ← общий код, утилиты
│ ├── data/ ← общие данные
│ ├── @mcp.service/ ← MCP серверы для Claude
│ └── connectors/
│ ├── @ozon.connector/
│ └── @telegram.connector/
│
├── services/ ← СЛОЙ 6: СЕРВИСЫ ОБСЛУЖИВАНИЯ
│ ├── @scheduler.service/ ← планировщик задач
│ └── @monitor.service/ ← мониторинг платформы
│
└── archive/ ← архив устаревшего
Модуль — автономная функциональная единица. Всегда в папке @name.type/.
Правило: @{имя}.{тип}/
| Тип | Где | Что |
|---|---|---|
.module |
project/, infra/ |
процессный модуль (управление) |
.domain |
domains/ |
диспетчер домена исполнения |
.coder |
domains/@it.domain/ |
IT стек |
.maker |
domains/@production.domain/ |
производственная специализация |
.flow |
domains/@business.domain/ |
бизнес-процессная специализация |
.data |
domains/@data.domain/ |
специализация данных |
.service |
system/, services/ |
платформенный сервис |
.connector |
system/connectors/ |
интеграция с внешней системой |
Примеры:
@projector.module/ ← процессный модуль проектирования
@it.domain/ ← диспетчер IT домена
@drupal.coder/ ← стек Drupal
@ozon.connector/ ← коннектор Ozon
@scheduler.service/ ← сервис планировщика
Агент — определение роли для Claude Code. Файл {имя}.ai.md внутри модуля или компонента.
Правило: {имя}.ai.md
arch/
architect.ai.md ← агент архитектора (уровень компонента)
project/@projector.module/
projector.ai.md ← агент проектора (уровень модуля)
domains/@it.domain/
it.ai.md ← агент домена IT
domains/@it.domain/@drupal.coder/
drupal.ai.md ← агент стека Drupal
Claude Code читает {имя}.ai.md → берёт роль → становится агентом.
| Файл | Для кого | Назначение |
|---|---|---|
CLAUDE.md |
Claude Code CLI | навигатор папки: что здесь, куда идти |
AI.md |
AI агент | служебный контекст папки для AI |
{имя}.ai.md |
— | определение агента (роль, правила, протоколы) |
Правила создания CLAUDE.md:
| Где | Создавать? |
|---|---|
| Корень workspace | ✅ обязательно |
Компоненты (arch/, project/, domains/, infra/, system/, services/) |
✅ обязательно |
Модули (@name.type/) |
✅ если есть нюансы |
Вложенные папки внутри модуля (library/, instructions/) |
❌ не создавать |
Правила создания AI.md:
| Где | Создавать? |
|---|---|
Модули (@name.type/) |
✅ обязательно |
| Компоненты с агентом | ✅ если нужен контекст |
| Обычные папки | ❌ не создавать |
В корне workspace обязательно присутствуют все четыре:
$WORKSPACE/
CLAUDE.md ← навигатор для Claude Code
AI.md ← контекст для AI агентов
README.md ← публичное описание для людей
INDEX.md ← оглавление всего workspace
$DATASPACE/
│
├── projects/ ← Данные проектов (зеркало projects/ в $WORKSPACE)
│ ├── org/ ← Клиентские проекты
│ └── sys/ ← Системные данные
│
├── media/ ← Вся графика, видео, аудио, документы
├── backup/ ← Бэкапы БД, git, критических файлов
└── archive/ ← Архив
Детальная структура — после согласования правил именования и матрицы типов документов.
Адрес проекта определяет режим Проектора автоматически:
| Путь | Режим | Заказчик | Результат |
|---|---|---|---|
project/org/* |
PRO-PRO | Оператор / клиент | остаётся в проекте |
project/sys/* |
PRO-SYS | Архитектор | → system/library/, arch/ |
PRO-SYS строит платформу и пополняет банк знаний.
PRO-PRO использует банк знаний и производит продукт клиента.
Заблокированные файлы маркируются суффиксом .fx.md:
QUESTIONS.fx.md ← нельзя изменить без явного согласования
MERKABA.fx.md
Правило именования: {name}.fx.md
Pre-commit hook блокирует изменения любого *.fx.md файла.
| Путь | Маркер | Почему |
|---|---|---|
architect/theory/*.md |
.fx.md |
Фундамент, меняется никогда |
architect/concept/PLATFORM.md |
защищён | Главный документ платформы |
architect/concept/METAMODEL.md |
защищён | Метамодель — описывает описание |
CLAUDE.md (корневой) |
защищён | AI читает первым |
architect/concept/PROJECTOR.md |
.fx.md |
Жизненный цикл проекта |
Изменение защищённых файлов — только через согласование с Архитектором и документирование в CHANGELOG.
✅ КОД
.py .js .ts .tsx .jsx .php .go .c .cpp .h .sh .bat .ps1
✅ ДОКУМЕНТАЦИЯ
.md .ai.md .txt .rst
✅ КОНФИГУРАЦИЯ
.yaml .yml .json .toml .ini .conf .xml .env.example
✅ WEB
.html .css .less .scss
✅ ШАБЛОНЫ
.twig .tpl .j2
✅ SQL
.sql
✅ СПЕЦИАЛЬНЫЕ
.gitignore .gitkeep .editorconfig Dockerfile Makefile LICENSE
✅ СПЕЦИАЛЬНЫЕ
.gitignore .gitkeep .editorconfig Dockerfile Makefile LICENSE
❌ ВСЯ ГРАФИКА
.svg .ico .jpg .jpeg .png .gif .webp
❌ ШРИФТЫ
.woff2 .ttf .otf .eot
❌ МЕДИА
.mp4 .avi .mov .mp3 .wav
❌ ДОКУМЕНТЫ
.pdf .docx .doc .rtf
❌ ДАННЫЕ
.xlsx .xls .ods .csv
❌ БАЗЫ ДАННЫХ
.db .sqlite
❌ АРХИВЫ ДАННЫХ
.zip .tar .gz (если содержат данные, не код)
❌ CREDENTIALS
.env .key .pem (приватные)
.credentials.md
❌ ВРЕМЕННЫЕ
.pyc .log .tmp .cache
❌ ЗАВИСИМОСТИ
venv/ node_modules/ __pycache__/
.so .exe .pak
Базовый шаблон для всех проектов платформы:
# Зависимости
venv/
node_modules/
__pycache__/
# Компиляция
*.pyc
*.pyo
*.so
*.exe
# Базы данных
*.db
*.sqlite
*.sqlite3
# Credentials
.env
*.key
*.pem
.credentials.md
# Временные
*.log
*.tmp
*.cache
.DS_Store
Thumbs.db
# Вся графика (файлы, не документы — всегда в $DATASPACE)
*.svg
*.ico
*.jpg
*.jpeg
*.png
*.gif
*.webp
# Данные
*.xlsx
*.xls
*.ods
# Медиа
*.mp4
*.avi
*.mov
*.mp3
*.wav
# Документы
*.pdf
*.docx
*.doc
# Архивы данных
*.zip
*.tar.gz
# IDE
.idea/
.vscode/
*.swp
*.swo
# Нет исключений для графики — вся графика в $DATASPACE
#!/bin/bash
# Блокировка изменений файлов *.fx.md
LOCKED=$(git diff --cached --name-only | grep "\.fx\.md$")
if [ -n "$LOCKED" ]; then
echo "❌ ОШИБКА: Попытка изменить защищённый файл:"
echo "$LOCKED"
echo ""
echo "Файлы *.fx.md заблокированы."
echo "Требуется согласование с Архитектором."
exit 1
fi
echo "✅ Защищённые файлы не затронуты"
exit 0
Файл: .git/hooks/pre-commit
#!/bin/bash
# Блокировка запрещённых типов файлов в git
BLACKLIST=".svg .ico .jpg .jpeg .png .gif .webp .xlsx .xls .csv .pdf .docx .mp4 .mp3 .db .sqlite"
echo "Проверка запрещённых файлов..."
for ext in $BLACKLIST; do
FILES=$(git diff --cached --name-only --diff-filter=A | grep "$ext$")
if [ -n "$FILES" ]; then
echo "❌ ОШИБКА: Попытка добавить $ext файл в git:"
echo "$FILES"
echo ""
echo "Файлы $ext запрещены в git."
echo "Используйте \$DATASPACE."
exit 1
fi
done
echo "✅ Проверка пройдена"
exit 0
Установка:
chmod +x .git/hooks/pre-commit
# Найти все запрещённые файлы в git
git ls-files | grep -E '\.(svg|ico|jpg|jpeg|png|gif|webp|xlsx|xls|csv|pdf|mp4|mp3|db|sqlite)$'
# Если вывод не пустой → нарушение стандарта
# Найти всю графику в workspace (потенциальные нарушения)
find /opt/claude-workspace \( -name "*.svg" -o -name "*.ico" -o -name "*.jpg" -o -name "*.png" -o -name "*.gif" -o -name "*.webp" \) | grep -v ".git"
# Найти venv в git (должно быть пусто)
git ls-files | grep -E '(venv|node_modules|__pycache__)/'
Статус: draft 0.2.0
Дата: 2026-04-10
Следующий шаг: Обсудить и утвердить → стать стандартом architect/standards/structure/structure-filesystem.md