system/config/prompt_patterns.yaml
# Паттерны промптов для автопереключения режима Claude
# Claude сам выбирает режим по ключевым словам в промпте

version: "1.0"
updated: "2025-12-24"

# ═══════════════════════════════════════════════════════════
# РЕЖИМЫ CLAUDE CODE
# ═══════════════════════════════════════════════════════════

claude_modes:
  plan:
    description: "Plan mode - проектирование без кода"
    trigger_tool: EnterPlanMode
    manual: "Shift+Tab×2"
    keywords:
      - спланируй
      - спроектируй
      - продумай архитектуру
      - подготовь план
      - разработай концепцию

  normal:
    description: "Обычный режим - исследование и код"
    trigger_tool: null
    keywords:
      - исследуй
      - найди
      - напиши
      - создай
      - исправь

  accept_edits:
    description: "Быстрое подтверждение - Shift+Tab"
    trigger_tool: null
    manual: "Shift+Tab"
    keywords:
      - быстро сделай
      - просто исправь

# ═══════════════════════════════════════════════════════════
# ПАТТЕРНЫ ПРОМПТОВ ДЛЯ ДЕЛЕГИРОВАНИЯ
# ═══════════════════════════════════════════════════════════

delegation_patterns:

  # Claude Task tool (haiku/sonnet)
  claude_task:
    description: "Делегирование через Task tool"
    usage: |
      Task(
        model="haiku",
        subagent_type="Explore",
        prompt="..."
      )
    patterns:
      explore:
        prefix: "Исследуй кодовую базу и найди"
        suffix: "Верни список файлов и краткое описание."

      search:
        prefix: "Найди в проекте"
        suffix: "Верни пути к файлам."

      analyze_code:
        prefix: "Проанализируй код и объясни"
        suffix: "Ответ в 3-5 предложений."

  # OpenRouter (дёшево/бесплатно)
  openrouter:
    description: "Делегирование через OpenRouter API"
    usage: |
      from library.connectors.api.openrouter import analyze, extract

      result = analyze(data, "Найди аномалии")
    patterns:
      analyze:
        system: "Ты аналитик данных. Отвечай кратко и по делу."
        format: "JSON или таблица"

      extract:
        system: "Извлеки только запрошенные данные. Без пояснений."
        format: "Структурированный вывод"

      format:
        system: "Преобразуй данные в указанный формат. Без комментариев."
        format: "Точное соответствие формату"

      translate:
        system: "Переводчик. Только перевод, без пояснений."
        format: "Чистый перевод"

# ═══════════════════════════════════════════════════════════
# ФОРМУЛИРОВКИ ДЛЯ АВТО-РЕЖИМА
# ═══════════════════════════════════════════════════════════

auto_mode_prompts:

  research:
    intro: "Исследуй и собери информацию о"
    style: "Факты, без предложений по изменениям"
    example: |
      Исследуй как работает авторизация в проекте.
      Найди все файлы, покажи структуру, объясни flow.
      Не предлагай изменения, только факты.

  planning:
    intro: "Спланируй реализацию"
    style: "Концепция, варианты, план действий"
    trigger: "EnterPlanMode автоматически"
    example: |
      Спланируй добавление OAuth авторизации.
      Продумай архитектуру, предложи варианты,
      составь пошаговый план.

  implement:
    intro: "Реализуй/Напиши/Создай"
    style: "Код с минимальными пояснениями"
    example: |
      Напиши функцию валидации email.
      Используй regex, добавь типизацию.

  review:
    intro: "Проверь/Сделай ревью"
    style: "Критический анализ, баги, улучшения"
    example: |
      Проверь код на баги и уязвимости.
      Найди проблемы, предложи исправления.

  delegate_cheap:
    intro: "Проанализируй данные / Извлеки / Форматируй"
    style: "Автоматически через OpenRouter"
    example: |
      # Claude понимает что это дёшевая задача
      # и использует openrouter connector

      Проанализируй логи и найди ошибки.
      → openrouter.analyze(logs, "Найди ошибки")

# ═══════════════════════════════════════════════════════════
# КАК CLAUDE ВЫБИРАЕТ РЕЖИМ
# ═══════════════════════════════════════════════════════════

mode_selection_logic: |
  1. ПАРСИНГ промпта на ключевые слова

  2. ОПРЕДЕЛЕНИЕ режима:
     - "спланируй/спроектируй" → EnterPlanMode
     - "исследуй/найди как" → Research (normal mode)
     - "напиши/создай" → Implement (normal mode)

  3. ДЕЛЕГИРОВАНИЕ ФОНОВЫХ (автоматически):
     - Поиск по коду → Task(model="haiku", subagent_type="Explore")
     - Анализ кода → Task(model="haiku")
     - Параллельные задачи → несколько Task в одном сообщении

  4. ПРЕДЛОЖЕНИЕ OpenRouter (НЕ автоматически):
     Когда обнаружена большая дешёвая задача → спросить:
     "Это можно сделать дешевле через OpenRouter. Использовать?"

# ═══════════════════════════════════════════════════════════
# КОГДА ПРЕДЛАГАТЬ OPENROUTER
# ═══════════════════════════════════════════════════════════

openrouter_suggestions:
  triggers:
    - "проанализируй большой файл"
    - "обработай все записи"
    - "переведи документ"
    - "извлеки данные из"
    - "массовая обработка"
    - "> 1000 записей"
    - "> 100KB данных"

  prompt_template: |
    Эту задачу можно выполнить дешевле через OpenRouter:
    - Модель: {model} (бесплатно)
    - Задача: {task_type}

    Использовать OpenRouter? (да/нет)

  tasks:
    analyze_logs:
      description: "Анализ логов >1MB"
      model: "gemini-flash (бесплатно)"

    batch_extract:
      description: "Извлечение из >100 записей"
      model: "llama-3.1 (бесплатно)"

    translate_doc:
      description: "Перевод документа >5KB"
      model: "gemini-flash (бесплатно)"

    format_data:
      description: "Форматирование >50 записей"
      model: "llama-3.1 (бесплатно)"