type: standard
title: "Форматы контента"
status: active
version: 1.0.0
date: 2026-04-10
knowledge_level: У1
Объединённый стандарт: типы файлов, форматирование кода и данных, документация проектов, глоссарий, уведомления, вопросы.
export WORKSPACE=/opt/claude-workspace # КОД (git)
export DATASPACE=/mnt/beget-s3 # ДАННЫЕ (S3)
export MEDIASPACE=$DATASPACE/media # МЕДИА (S3)
| Зона | Что | Git |
|---|---|---|
| WORKSPACE | Код, документация, конфиги | Да |
| DATASPACE | Таблицы, БД, JSON >1MB, бэкапы | Нет |
| MEDIASPACE | Изображения, видео, аудио, PDF | Нет |
| Класс | Типы | Где | Git |
|---|---|---|---|
| CODE | .py .js .ts .php .go .sh | WORKSPACE | Да |
| DOCUMENTATION | .md .ai.md .txt .rst | WORKSPACE | Да |
| CONFIGURATION | .yaml .json .toml .ini | WORKSPACE | Да |
| DATA | .csv <100KB | WORKSPACE | Да |
| DATA | .csv >100KB, .xlsx, .xls | DATASPACE | Нет |
| IMAGES | .svg (любой), .png <50KB, .ico <20KB | WORKSPACE | Да |
| IMAGES | .jpg, .png >50KB, .gif, .webp | MEDIASPACE | Нет |
| VIDEO | .mp4 .avi .mov .webm | MEDIASPACE | Нет |
| AUDIO | .mp3 .wav | MEDIASPACE | Нет |
| DOCUMENTS | .pdf .docx .doc .rtf | MEDIASPACE | Нет |
| WEB | .html .css .less .scss .woff2 .ttf | WORKSPACE | Да |
| TEMPLATES | .twig .tpl .j2 | WORKSPACE | Да |
| DATABASES | .sql (схемы) | WORKSPACE | Да |
| DATABASES | .db .sqlite | DATASPACE | Нет |
.jpg → ТОЛЬКО $MEDIASPACE (NO EXCEPTIONS)
.png → $WORKSPACE если < 50KB, иначе $MEDIASPACE
.svg → ТОЛЬКО $WORKSPACE (векторная графика)
| Размер | Где |
|---|---|
| < 50 KB | WORKSPACE (git) |
| 50 KB - 1 MB | Только если критично важно |
| > 1 MB | DATASPACE или MEDIASPACE. Запрещено в git |
| Суффикс | Где | Назначение |
|---|---|---|
.module |
project/, infra/ | процессный модуль управления |
.domain |
domains/ | диспетчер домена исполнения |
.coder |
domains/@it.domain/ | IT-стек с базой знаний |
.maker |
domains/@production.domain/ | производственная специализация |
.flow |
domains/@business.domain/ | бизнес-процессная специализация |
.service |
services/, system/ | платформенный сервис |
.connector |
system/connectors/ | интеграция с внешней системой |
Правило: модуль @{имя}.{тип}/ содержит хотя бы AI.md.
| Файл | Для кого | Назначение |
|---|---|---|
CLAUDE.md |
Claude Code CLI | Навигатор папки |
AI.md |
Любой AI-агент | Служебный контекст для AI |
README.md |
Люди / GitHub | Публичное описание |
INDEX.md |
AI + люди | Оглавление с аннотациями |
{имя}.ai.md |
Claude Code | Определение агента |
{имя}.fx.md |
pre-commit | Защищённый документ |
CODE: .py .js .ts .tsx .jsx .php .go .c .cpp .h .sh .bat .ps1
DOCS: .md .ai.md .txt .rst
CONFIG: .yaml .yml .json .toml .ini .conf .xml .env.example
WEB: .html .css .less .scss .svg .woff2 .ttf
TPL: .twig .tpl .j2
SQL: .sql
IMAGES: .svg (любой), .png (<50KB), .ico (<20KB)
MISC: .gitignore .gitkeep .editorconfig Dockerfile Makefile LICENSE
IMAGES: .jpg .jpeg .gif .webp .png (>50KB)
MEDIA: .mp4 .avi .mov .mp3 .wav
DOCS: .pdf .docx .doc .rtf
DATA: .xlsx .xls .ods .csv (>100KB)
DB: .db .sqlite
CREDS: .env .key .pem (приватные)
TEMP: .pyc .log .tmp .cache
DEPS: venv/ node_modules/ __pycache__/ .so .exe
# Зависимости
venv/
node_modules/
__pycache__/
# Компиляция
*.pyc
*.pyo
*.so
*.exe
# Базы данных
*.db
*.sqlite
*.sqlite3
# Credentials
.env
*.key
*.pem
.credentials.md
# Временные
*.log
*.tmp
*.cache
.DS_Store
# Изображения (массовые)
*.jpg
*.jpeg
*.gif
*.webp
# Данные
*.xlsx
*.xls
*.ods
# Медиа
*.mp4
*.avi
*.mov
*.mp3
*.wav
# Документы
*.pdf
*.docx
*.doc
# Архивы данных
*.zip
*.tar.gz
# IDE
.idea/
.vscode/
*.swp
# Исключения
!*.svg
!favicon.png
!logo.png
# Найти запрещенные файлы
git ls-files | grep -E '\.(jpg|jpeg|xlsx|mp4|db)$'
# Найти файлы > 1MB
git ls-files | while read file; do
size=$(git cat-file -s $(git ls-tree HEAD "$file" | awk '{print $3}') 2>/dev/null)
if [ $size -gt 1048576 ]; then
echo "$file: $size bytes"
fi
done
| Категория | Формат | Примеры |
|---|---|---|
| Документы | UPPERCASE | README.md, CLAUDE.md, PROJECT.md |
| Агенты | {name}.ai.md | architect.ai.md, pim.ai.md |
| Credentials | скрытые | .credentials.md, .env |
| Конфиги | lowercase | schedule.yaml, config.json |
| Код | snake_case | backup.sh, sessions.py |
Базовые правила:
- Отступы: 4 пробела
- Длина строки: 88 символов (Black)
- Кавычки: двойные "
- 2 пустые строки между функциями/классами
Именование:
| Элемент | Стиль | Пример |
|---|---|---|
| Переменные, функции | snake_case | user_name, get_user_by_id() |
| Классы | PascalCase | UserManager, OrderProcessor |
| Константы | UPPER_SNAKE_CASE | MAX_RETRIES, API_TIMEOUT |
| Приватные | префикс _ |
self._password, _hash_password() |
Импорты (порядок):
# 1. Стандартная библиотека
import os
import sys
# 2. Сторонние библиотеки
import requests
from flask import Flask
# 3. Локальные модули
from library.connectors.api.ozon import OzonClient
Типизация (обязательно для всех функций):
from typing import List, Dict, Optional
def get_users(limit: int = 10) -> List[Dict[str, str]]:
"""Получить список пользователей."""
return []
Docstrings (Google Style):
def sync_orders(api_key: str, date_from: str, limit: int = 100) -> Dict[str, int]:
"""
Синхронизировать заказы из OZON API.
Args:
api_key: API ключ OZON
date_from: Дата начала в формате YYYY-MM-DD
limit: Максимальное количество заказов
Returns:
Словарь со статистикой синхронизации
Raises:
OrderSyncError: При ошибке синхронизации
"""
Инструменты:
| Инструмент | Назначение | Команда |
|---|---|---|
| black | Форматирование | black . |
| ruff | Линтер + автофикс | ruff check --fix . |
| mypy | Проверка типов | mypy . |
| isort | Сортировка импортов | isort . |
Базовые правила:
- Отступы: 2 пробела
- Длина строки: 100 символов
- Точка с запятой: обязательна
- Кавычки: одинарные '
Именование:
| Элемент | Стиль |
|---|---|
| Переменные, функции | camelCase |
| Классы | PascalCase |
| Константы | UPPER_SNAKE_CASE |
| Приватные поля | префикс # |
Современный синтаксис (использовать):
- const/let (не var)
- Arrow functions
- Template strings
- Destructuring
- Optional chaining ?.
- Nullish coalescing ??
TypeScript — обязательно для всех функций:
function getUsers(limit: number = 10): User[] {
return [];
}
// Интерфейсы вместо типов (где возможно)
interface User {
id: number;
name: string;
}
// type — только для union/intersection
type Status = 'pending' | 'active' | 'completed';
Инструменты:
| Инструмент | Назначение | Команда |
|---|---|---|
| prettier | Форматирование | prettier --write . |
| eslint | Линтер | eslint --fix . |
| tsc | Проверка типов | tsc --noEmit |
Базовые правила:
- Отступы: 2 пробела
- Длина строки: 80 символов
- Shebang: #!/bin/bash
Именование:
- Переменные: snake_case
- Константы: readonly UPPER_SNAKE_CASE
- Функции: snake_case
Обязательные практики:
set -euo pipefail # остановиться при ошибке, неопред. переменной, pipefail
# Всегда кавычки для переменных
echo "User: $user_name"
cp "$source_file" "$dest_file"
# [[ ]] вместо [ ]
if [[ -f "$file" ]]; then
echo "File exists"
fi
# local в функциях
function backup_database() {
local db_name=$1
local backup_dir=$2
# ...
}
Заголовок скрипта:
#!/bin/bash
#
# backup.sh -- резервное копирование базы данных
#
# Использование:
# ./backup.sh DATABASE_NAME BACKUP_DIR
Инструменты:
| Инструмент | Назначение | Команда |
|---|---|---|
| shellcheck | Линтер | shellcheck script.sh |
| shfmt | Форматирование | shfmt -w script.sh |
#!/bin/bash
set -e
echo "Running code checks..."
black --check .
ruff check .
prettier --check .
eslint .
find . -name "*.sh" -exec shellcheck {} \;
echo "All checks passed"
| Формат | Когда использовать | Когда НЕ использовать |
|---|---|---|
| YAML | Конфиги, метаданные, <100 записей | Большие данные (>10K) |
| JSON | API, логи, 100-10K записей | Конфиги (читабельность) |
| CSV | Табличные данные, 1K-100K записей | Вложенные структуры |
| Excel | Обмен с бизнесом, отчёты | Автоматизация, версионирование |
| SQLite | >10K записей, реляционные данные | Конфиги, метаданные |
Правила:
- Отступы: 2 пробела
- Ключи: snake_case
- Строки без кавычек если нет спецсимволов
- Двойные кавычки "text" если есть :, #, -, @
defaults: &defaults
timeout: 30
retries: 3
production:
<<: *defaults
host: prod.example.com
Валидация:
python3 -c "import yaml; yaml.safe_load(open('file.yaml'))"
Правила:
- Отступы: 2 пробела
- Кавычки: только двойные "
- Trailing comma: ЗАПРЕЩЕНА
- Ключи: snake_case (внутри платформы), camelCase (внешние API)
Валидация:
jq empty file.json
python3 -m json.tool file.json
Правила:
- Первая строка: обязательно заголовки (snake_case)
- Разделитель: запятая ,
- Кодировка: UTF-8 (UTF-8 with BOM для Excel)
- Кавычки: двойные " если значение содержит запятую или перенос
import csv
with open('data.csv', 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
for row in reader:
print(row['name'], row['price'])
Использовать для обмена с бизнесом. НЕ для хранения данных и версионирования.
import pandas as pd
df = pd.read_excel('data.xlsx', sheet_name=0)
df.to_csv('output.csv', index=False, encoding='utf-8')
Формат: ISO 8601: YYYY-MM-DDTHH:MM:SSZ
created_at: 2026-02-19T10:30:00Z # UTC
updated_at: 2026-02-19T13:30:00+03:00 # Moscow time
НЕ использовать: 19.02.2026, 19/02/26, Unix timestamp
# YAML -> JSON
python3 -c "import yaml,json; json.dump(yaml.safe_load(open('f.yaml')),open('f.json','w'),indent=2,ensure_ascii=False)"
# CSV -> JSON
python3 -c "import csv,json; json.dump(list(csv.DictReader(open('f.csv'))),open('f.json','w'),indent=2,ensure_ascii=False)"
# Excel -> CSV
python3 -c "import pandas as pd; pd.read_excel('f.xlsx').to_csv('f.csv', index=False)"
project-name/
├── INDEX.md ← Оглавление
├── CONCEPT.md ← 1. Концепция и идея
├── ANALYSIS.md ← 2. Анализ рынка
├── BUSINESS_MODEL.md ← 3. Бизнес-модель
├── IMPLEMENTATION.md ← 4. План реализации
├── PROJECT.md ← Полное описание (сводка)
└── CLAUDE.md ← Контекст для Claude
| Принцип | Описание |
|---|---|
| Изоляция | Проект видит только свои документы |
| Навигация | Двусторонняя INDEX <-> документ |
| Относительные ссылки | Внутри проекта только относительные пути |
| Единая структура | Все проекты следуют одному шаблону |
project-name/
├── INDEX.md ← Оглавление проекта (обязательно)
├── PROJECT.md ← Полное описание
├── CLAUDE.md ← Контекст для Claude
└── README.md ← Для пользователей (опционально)
# Project Name -- Оглавление
**Тип:** {business|saas|infrastructure}
**Статус:** {design|development|production}
[<- Назад к Parent Project](../INDEX.md)
## ОСНОВНЫЕ ДОКУМЕНТЫ
| Документ | Описание |
|----------|----------|
| [PROJECT.md](PROJECT.md) | Полное описание |
## О ПРОЕКТЕ
{1-2 абзаца}
## СВЯЗИ
- **Родительский:** [Parent](../INDEX.md)
[<- Назад к Parent Project](../INDEX.md)
| Уровень | Формат |
|---|---|
| Внутри проекта | [doc](file.md) |
| Родительский | [Parent](../INDEX.md) |
| Соседний проект | [Proj](../proj/INDEX.md) |
| Внешний ресурс | [Docs](http://...) |
Проект НЕ ДОЛЖЕН ссылаться напрямую на документы других проектов своего уровня -- только на их INDEX.md. Исключение: родительские проекты могут ссылаться на любые документы дочерних.
http://docs.0kt.ru/projects/{parent}/{sub}/INDEX.md
test -f INDEX.md && echo "INDEX.md OK" || echo "INDEX.md missing"
test -f PROJECT.md && echo "PROJECT.md OK" || echo "PROJECT.md missing"
test -f CLAUDE.md && echo "CLAUDE.md OK" || echo "CLAUDE.md missing"
grep -q "Назад" INDEX.md && echo "Navigation OK" || echo "No navigation"
Каждый проект имеет GLOSSARY_STANDARD.md -- единый справочник терминов, кодов и синонимов.
| Ситуация | Действие |
|---|---|
| Создание проекта | Изучить тему -> предложить термины -> подтвердить -> записать |
| Новый термин в диалоге | Предложить определение -> после "ок" -> добавить |
| Уточнение существующего | Обновить запись |
| Платформенный термин | Добавить в глоссарий платформы |
1. Предложить: "Предлагаю добавить в глоссарий: [термин] -- [определение]. Ок?"
2. После подтверждения -- добавить в GLOSSARY_STANDARD.md
3. Если платформенный -- также обновить глоссарий платформы
### [Термин]
**Canonical:** единственное эталонное название
**Code:** машинный код в файлах/системах
**Synonyms:** варианты, SEO-формы, разговорные названия
**Docs:** ссылки на документы
**Note:** уточнение, контекст, примеры
**Глоссарий:** [GLOSSARY_STANDARD.md](GLOSSARY_STANDARD.md)
| Термин | Определение |
|---|---|
| Bootstrap | Процедура создания нового проекта с нуля по чеклисту |
| Санация | Оздоровление существующего проекта (rebootstrap) |
| Canonical | Эталонный, основной вариант из множества синонимов |
[ТИП]: [краткое описание]
[детали если нужны]
[действие если нужно]
| Тип | Кому | Когда |
|---|---|---|
NEW_PROJECT |
PM | Завершён INTAKE |
NEW_TASK |
Исполнитель | Назначена задача |
TASK_DONE |
PM | Задача выполнена |
QUESTION |
PM | Вопрос от исполнителя |
CLIENT_MESSAGE |
AM | Клиент написал |
NEED_HUMAN |
AM | Клиент просит человека |
CLARIFY_RESPONSE |
PM | Клиент ответил на вопрос |
REVIEW_RESPONSE |
PM | Клиент дал обратную связь |
NEW_PROJECT: Интернет-магазин пиротехники
Клиент: Иван Петров
Бюджет: 150 000 руб
Срок: 2 месяца
/accept -- принять
TASK_DONE: PROJ-005 Сверстать главную
Исполнитель: @designer
Результат: [ссылка]
/review -- проверить
ВСЕ вопросы в системе задаются ТОЛЬКО с номерованными вариантами.
<Вопрос>?
1) <Вариант 1>
2) <Вариант 2>
3) <Вариант 3>
0) Отмена / Выход
Выбор [номер]:
| Элемент | Требование |
|---|---|
| Вопрос | Короткий, понятный, со знаком ? |
| Варианты | Минимум 2, максимум 9 |
| Нумерация | 1, 2, 3... (НЕ a, b, c) |
| Отмена | Всегда есть 0) |
| Промпт | Выбор [номер]: или Выбор: |
read -p "Продолжить? (y/n): "a) b) c)echo "Что восстановить?"
echo ""
echo " 1) Полное восстановление"
echo " 2) Только workspace"
echo " 3) Только критические данные"
echo " 0) Отмена"
echo ""
read -p "Выбор: " choice
case $choice in
1) restore_full ;;
2) restore_workspace ;;
3) restore_critical ;;
0) exit 0 ;;
*) echo "Неверный выбор" ;;
esac
case с *)read -p "Выбор [1]: " choice; choice=${choice:-1}НЕ применяется к: параметрам командной строки (--flag), API, конфигам, логам.
# Найти все y/n вопросы
grep -r "read -p.*y/n" --include="*.sh"
# Найти все read без case
grep -A5 "read -p" *.sh | grep -v "case"
0) Отмена/ВыходcaseОбъединены из:
- format-file-types.md -- типы файлов и размещения (11 классов)
- format-code.md -- стандарт стиля кода (Python, JS/TS, Bash)
- format-data.md -- форматы данных (YAML, JSON, CSV, Excel)
- format-business-projects.md -- документация бизнес-проектов
- format-project-documentation.md -- стандарт документации проектов
- format-glossary-standard.md -- стандарт глоссария
- format-notifications.md -- стандарт уведомлений
- format-questions.md -- стандарт вопросов