Версия: 1.0
Дата: 2025-11-10
Режим для работы с кодом: разработка, правки, добавление функций.
ПЕРЕД любой генерацией кода:
1. Декомпозировать задачу
2. Читать реестр
3. Искать готовые решения
4. Использовать найденное
5. Генерировать ТОЛЬКО недостающее
# Главный индекс
cat /opt/claude-workspace/registry/INDEX.yaml
# Поиск по функциональности
cat /opt/claude-workspace/registry/index/by-function.yaml
Примеры:
- "Добавить авторизацию" → authentication
- "Показать таблицу" → table_display
- "Вызвать API" → api_calls
- "Хэшировать пароль" → password_hashing
ПРИОРИТЕТ ИСТОЧНИКОВ:
1️⃣ EXTERNAL LIBRARY (внешняя библиотека)
✅ Если есть - использовать её!
✅ Экономия: 95-99% токенов (только import)
Примеры:
- Авторизация → streamlit-authenticator
- Таблицы → streamlit-aggrid
- API вызовы → requests
- Парсинг дат → dateutil
2️⃣ INTERNAL COMPONENT (наш компонент)
✅ Если создан - копировать
✅ Экономия: 70-90% токенов
Примеры:
- components/atoms/functions/auth/hash_password.py
- components/molecules/pages/table_page.py
- components/organisms/auth_system/
3️⃣ PROJECT CODE (код из проектов)
✅ Извлечь и адаптировать
✅ Экономия: 50-70% токенов
Примеры:
- projects/marketplace/core/auth.py
- projects/marketplace/modules/api/ozon.py
4️⃣ ARCHIVE CODE (из архива)
⚠️ Может быть устаревшим
✅ Экономия: 30-50% токенов
Примеры:
- archive/2025-11-09-old-structure/
5️⃣ GENERATE NEW (генерация с нуля)
❌ ПОСЛЕДНИЙ ВАРИАНТ!
💸 Дорого: 0% экономии
ЗАДАЧА: "Добавить авторизацию в проект analytics"
ШАГ 1: Декомпозиция
- Login форма
- Хэширование паролей
- Сессии
- Права доступа
ШАГ 2: Поиск в реестре
cat registry/index/by-function.yaml | grep -A 20 "authentication:"
ШАГ 3: Найдено
✅ EXTERNAL: streamlit-authenticator (готовое решение, 5 мин)
✅ PROJECT CODE: marketplace/core/auth.py (работает, можно копировать)
ШАГ 4: Рекомендация
Для быстрого MVP: pip install streamlit-authenticator
Для гибкости: копировать из marketplace
ШАГ 5: Использование
# Вариант A: External library
pip install streamlit-authenticator
# Копировать пример из документации
# Вариант B: Код из проекта
cp projects/marketplace/core/auth.py projects/analytics/core/
ЭКОНОМИЯ: 4500 tokens (генерация с нуля) → 200 tokens (адаптация)
ЗАДАЧА: "Добавить страницу Products с таблицей и фильтрами"
ШАГ 1: Декомпозиция
- Таблица с данными
- Фильтры (поиск, категория)
- Экспорт в Excel
- Пагинация
ШАГ 2: Поиск
cat registry/index/by-function.yaml | grep -A 15 "table_display:"
ШАГ 3: Найдено
✅ EXTERNAL: st.dataframe (простая таблица)
✅ EXTERNAL: streamlit-aggrid (сложная с фильтрами)
✅ PROJECT CODE: marketplace/pages/03_Orders.py (таблица + фильтры + экспорт)
ШАГ 4: Решение
Копировать marketplace/pages/03_Orders.py как основу:
cp projects/marketplace/solution/mvp/code/pages/03_Orders.py \
projects/analytics/pages/01_Products.py
Заменить:
- orders → products
- get_orders() → get_products()
- Адаптировать фильтры
ЭКОНОМИЯ: 3500 tokens → 800 tokens
ЗАДАЧА: "Интеграция с API поставщика"
ШАГ 1: Поиск
grep -A 10 "api_calls:" registry/index/by-function.yaml
ШАГ 2: Найдено
✅ EXTERNAL: requests (стандарт)
✅ PROJECT CODE: marketplace/modules/api/ozon.py (пример интеграции)
ШАГ 3: Решение
Использовать requests + паттерн из ozon.py:
import requests
class SupplierAPI:
def __init__(self, api_key):
self.session = requests.Session()
self.session.headers.update({"Authorization": f"Bearer {api_key}"})
def get_products(self):
response = self.session.get("https://api.supplier.com/products")
return response.json()
ЭКОНОМИЯ: 2000 tokens → 500 tokens
❌ Генерировать авторизацию с нуля
✅ Использовать streamlit-authenticator ИЛИ копировать из marketplace
❌ Генерировать API клиент с нуля
✅ Использовать requests ИЛИ копировать паттерн из проекта
❌ Генерировать таблицу с фильтрами с нуля
✅ Использовать streamlit-aggrid ИЛИ копировать из marketplace
❌ Генерировать CRUD операции с нуля
✅ Использовать SQLAlchemy session
❌ Игнорировать реестр
✅ ВСЕГДА читать registry/ перед генерацией
✅ Декомпозировать задачу на части
✅ Читать registry/INDEX.yaml
✅ Искать по функциональности в registry/index/by-function.yaml
✅ Проверять external libraries
✅ Проверять код в проектах
✅ Комбинировать готовые части
✅ Генерировать ТОЛЬКО недостающее
Если создал что-то переиспользуемое:
# Если это функция (atom)
mv new_function.py /opt/claude-workspace/components/atoms/functions/
# Если это модуль (molecule)
mv new_module.py /opt/claude-workspace/components/molecules/
# Если это система (organism)
mv new_system/ /opt/claude-workspace/components/organisms/
# components/catalog.yaml
atoms:
- id: func-xxx-001
name: "Название функции"
file: atoms/functions/category/function.py
description: "Что делает"
usage_example: |
from components.atoms.functions.category import function
result = function(args)
# registry/INDEX.yaml
internal_components:
total: 88 # было 87, стало 88
Отслеживать экономию токенов:
Задача: Добавить авторизацию
БЕЗ реестра:
- Генерация с нуля: 5000 tokens
- Время: 2 минуты генерации
С реестром:
- Использование streamlit-authenticator: 200 tokens
- Время: 30 секунд
ЭКОНОМИЯ: 4800 tokens (96%)
1. ЗАДАЧА получена
↓
2. ДЕКОМПОЗИЦИЯ (на части)
↓
3. ПОИСК в registry/
↓
4. НАЙДЕНО? → использовать
НЕ НАЙДЕНО? → генерировать
↓
5. СОХРАНИТЬ переиспользуемое
↓
6. ОБНОВИТЬ catalog.yaml
/opt/claude-workspace/registry/INDEX.yaml/opt/claude-workspace/registry/index/by-function.yaml/opt/claude-workspace/registry/GLOSSARY.yaml/opt/claude-workspace/components/catalog.yaml (TODO)/opt/claude-workspace/tests/catalog.yaml (TODO)Версия: 1.0
Дата: 2025-11-10
Статус: Активен