delegation-classifier
How to Install
Claude Code:
git clone --depth 1 https://github.com/Alex1980Alex/1C-Framework.git && cp 1C-Framework/.claude/skills/delegation-classifier ~/.claude/skills/delegation-classifier -r---
name: delegation-classifier
description: >
Классификация задач для делегирования на Z.AI. Предварительный анализ ПЕРЕД генерацией:
оценка output size, выбор уровня (Soft/Medium/Hard/Never), трекинг outcomes,
обучение на опыте. Триггеры: 'классифицировать задачу', 'delegation classifier',
'что делегировать', 'оценка делегирования', 'delegation outcome', 'delegation feedback'.
НЕ для самого процесса делегирования — используй z-ai-delegation.
version: 1.1.0
updated: 2026-04-21
tags: [delegation, classification, learning, token-economy, feedback-loop]
---
# Delegation Classifier — Классификация + Обучение на опыте
## Проблема
Текущий процесс делегирования — реактивный: хуки напоминают ПОСЛЕ начала работы.
Нет предварительного анализа, нет записи outcomes, нет обучения.
Результат: Opus генерирует 200+ строк docs/templates самостоятельно, потому что:
1. `.md` файлы exempt от write guard
2. `docs/` exempt от write guard
3. Решение "Never/Hard/Medium" принимается ad hoc, без структуры
4. Нет данных о прошлых delegation outcomes для обучения
## Алгоритм: PRE-TASK Analysis (обязательный)
```
ПЕРЕД любой генерацией > 15 строк:
1. ESTIMATE — оценить объём output
- Сколько файлов?
- Сколько строк на файл? (< 30 | 30-100 | 100-300 | 300+)
- Тип контента? (code | docs | template | config | mixed)
2. CLASSIFY — определить уровень по матрице
Входы: content_type × output_size × complexity
Выход: Soft | Medium | Hard | Never
3. CHECK HISTORY — проверить outcomes для похожих задач
Grep: data/delegation-outcomes.jsonl
Вопрос: "Были ли задачи такого типа? Какой был rewrite %?"
Если rewrite > 50% на похожей задаче → повысить уровень на 1
4. DECIDE — финальное решение
- Never: делай сам (architecture, debug, < 30 lines)
- Hard: Z.AI draft → thorough Opus review
- Medium: Z.AI draft → accuracy review
- Soft: Z.AI draft → формат check
- ORCHESTRATOR: если 3+ файлов → decompose per file
5. RECORD START — записать в outcomes
{"task_id": ..., "estimated_level": ..., "estimated_lines": ..., "started_at": ...}
```
## Матрица классификации
```
│ < 30 lines │ 30-100 lines │ 100-300 lines │ 300+ lines │
────────────────────┼────────────┼──────────────┼───────────────┼─────────────┤
code (.py/.ts/.bsl) │ Never │ Hard │ Hard │ Orchestrator│
docs (.md) │ Never │ Medium │ Medium │ Orchestrator│
template/config │ Never │ Soft │ Medium │ Orchestrator│
mixed (code+docs) │ Never │ Hard │ Hard │ Orchestrator│
```
### Override rules (исключения из матрицы)
| Условие | Override | Причина |
|---------|----------|---------|
| Architecture decision | → Never | Требует полный контекст проекта |
| Security-sensitive | → Never | Z.AI может пропустить уязвимости |
| Debugging/investigation | → Never | Интерактивный процесс |
| Bulk formatting (10+ items) | → Soft | Шаблонная работа |
| History: rewrite > 50% на похожем | → +1 level (Medium→Hard→Never) | Опыт показал низкое качество Z.AI |
| History: rewrite < 10% на похожем | → -1 level (Hard→Medium→Soft) | Опыт показал высокое качество Z.AI |
## Outcome Tracking
### Формат записи: `data/delegation-outcomes.jsonl`
```jsonl
{"ts":"2026-03-20T15:30:00Z","task_id":"roadmap-analyze-1c","task_type":"docs","content_type":"md","estimated_lines":200,"actual_lines":215,"files_count":8,"level":"Never","delegated":false,"rewrite_pct":0,"reason":"classified as architecture","correct_level":"Medium","lesson":"docs/roadmap are Medium, not Never — architecture is only INDEX.md"}
{"ts":"2026-03-20T16:00:00Z","task_id":"scorer-script","task_type":"code","content_type":"py","estimated_lines":80,"actual_lines":95,"files_count":1,"level":"Hard","delegated":true,"rewrite_pct":15,"reason":"standard parsing code","correct_level":"Hard","lesson":"parsing scripts delegate well with clear spec"}
```
### Поля outcome
| Поле | Тип | Описание |
|------|-----|----------|
| `ts` | ISO timestamp | Когда выполнялась задача |
| `task_id` | string | Короткий идентификатор задачи |
| `task_type` | enum | code, docs, template, config, mixed |
| `content_type` | string | Расширение файлов (.py, .md, .ps1, ...) |
| `estimated_lines` | int | Оценка до выполнения |
| `actual_lines` | int | Фактические строки (после) |
| `files_count` | int | Количество файлов |
| `level` | enum | Soft, Medium, Hard, Never |
| `delegated` | bool | Было ли делегировано на Z.AI? |
| `rewrite_pct` | int | % переписывания Opus после Z.AI (0 если не делегировано) |
| `reason` | string | Почему выбран этот уровень |
| `correct_level` | enum | Какой уровень был бы правильным (ретроспективно) |
| `lesson` | string | Что узнали (для обновления правил) |
### Когда записывать
1. **START** — после PRE-TASK Analysis (estimated fields)
2. **END** — после завершения задачи (actual fields + rewrite_pct + lesson)
3. **REVIEW** — при периодическом анализе (correct_level, если отличается)
## Периодический анализ (Learning Loop)
### Триггер: каждые 20 записей в outcomes или по запросу `/delegation-review`
### Алгоритм
```
1. LOAD outcomes (last 50 records)
2. COMPUTE accuracy:
accuracy = count(level == correct_level) / total
3. FIND patterns:
- Группировка по task_type: avg rewrite_pct per type
- Группировка по content_type: avg rewrite_pct per extension
- Under-delegated: delegated=false AND correct_level != "Never"
- Over-delegated: delegated=true AND rewrite_pct > 50%
4. GENERATE adjustments:
- Если docs avg rewrite < 20% → можно понизить (Hard→Medium)
- Если code avg rewrite > 40% → повысить (Medium→Hard)
- Если паттерн "X всегда Medium" → добавить в fast-path
5. UPDATE:
- Обновить матрицу в SKILL.md (если стабильный паттерн из 5+ cases)
- Добавить override rule
- Обновить keywords в z-ai-delegation-enforcer.py (если miss)
- Записать adjustment в MEMORY.md
```
### Метрики здоровья делегирования
| Метрика | Target | Как считать |
|---------|--------|-------------|
| Classification accuracy | > 80% | level == correct_level |
| Delegation rate | > 60% | delegated / total (для tasks > 30 lines) |
| Avg rewrite % | < 25% | mean(rewrite_pct) where delegated=true |
| Token savings estimate | > 70% | (delegated_lines / total_lines) * (1 - rewrite_pct/100) |
| Under-delegation rate | < 15% | not delegated AND correct != Never |
## Интеграция с существующими хуками
### z-ai-write-guard.py — FIX NEEDED
**Проблема:** `.md` в `_SKIP_EXTENSIONS`, `docs/` в `_EXEMPT_PREFIXES` → все docs проходят мимо.
**Fix:** Добавить content-based check для `.md` файлов:
```python
# Не пропускать .md если > 50 строк И не в .claude/
if ext == ".md" and line_count > 50:
if not any(fp.startswith(p) for p in [".claude/", "data/"]):
# Проверить delegation, не пропускать слепо
...
```
### z-ai-delegation-enforcer.py — EXTEND SIGNALS
**Проблема:** "создай дорожную карту" не матчится.
**Fix:** Добавить сигналы:
```python
_MEDIUM_SIGNALS += [
"дорожн", "roadmap", "план реализаци",
"создай документ", "напиши документ",
"создай roadmap", "план фаз",
]
_ORCHESTRATOR_SIGNALS += [
"по фазам", "несколько фаз", "для каждой фазы",
]
```
## Антипаттерны
| Плохо | Почему | Как правильно |
|-------|--------|---------------|
| Классифицировать всё как Never | "Я лучше Z.AI" → потеря 80% токенов | Доверяй матрице, проверяй outcomes |
| Не записывать outcomes | Нет данных для обучения | ВСЕГДА записывай start + end |
| Делегировать architecture | Z.AI не знает контекст | Never для архитектуры, Medium для её документирования |
| Не делать periodic review | Правила устаревают | Каждые 20 задач: анализ + adjustment |
| Менять матрицу по 1 case | Шум, нестабильность | Минимум 5 cases с паттерном |
| docs = Never | Docs — идеальный кандидат для Medium | Override: docs 30+ lines = Medium |
## Contextual Bandit (Iter 3, v1.1)
LinUCB contextual bandit для автоматического обучения routing из outcomes.
**Модуль:** `src/shared/delegation_bandit.py`
**State:** `data/delegation-bandit.pkl` (pickle)
**CLI:** `python -m src.shared.delegation_bandit [train|stats|dashboard]`
### Warm-up стратегия
| Outcomes | Режим | Логика |
|----------|-------|--------|
| < 20 | WARM-UP | Rule-based (_rule_based_classify) |
| 20-50 | HYBRID | Bandit + rules majority vote |
| > 50 | AUTONOMOUS | Pure bandit (rules fallback at low confidence) |
### Интеграция
- `delegation-outcome-tracker.py`: online `bandit.update(context, classification, reward)` при каждой записи
- `z-ai-delegation-enforcer.py`: `bandit.predict(context)` при AUTONOMOUS режиме, fallback на keyword signals
### Features (6-dim)
| # | Feature | Encoding |
|---|---------|----------|
| 0 | content_type | ordinal (docs=0..template=4) |
| 1 | line_count | min(lines/200, 1.0) |
| 2 | has_code | bool |
| 3 | has_architecture | bool |
| 4 | domain | ordinal/7.0 |
| 5 | is_code_extension | bool (.py/.ts/.bsl/.js/.go) |
Details
| Category | Coding → debug |
| Source | Alex1980Alex/1C-Framework |
| SKILL.md | View on GitHub → |
| Repo Stars | N/A |
| Est. per Skill | N/A (shared across 100 skills from this repo) |
| Difficulty | Advanced |
| Risk Level | Safe |
Related Skills
websocket-manager
--- name: websocket-manager description: > Full-lifecycle WebSocket skill: create server+client impl
hooks-skills-mcp-triad
--- name: hooks-skills-mcp-triad description: "Используй этот скилл для понимания архитектуры Hooks
multi-level-hook-architecture
--- name: multi-level-hook-architecture description: "Трёхуровневая архитектура хуков Claude Code: U
delegation-classifier
--- name: delegation-classifier description: > Классификация задач для делегирования на Z.AI. Предва
Works Well With
Skills from the same repository — often designed to work together
edt-mcp
--- name: edt-mcp description: "EDT-MCP — 70 MCP-инструментов 1C:EDT (метаданные/BSL/отладка/тесты/ф
audit-docs
--- name: audit-docs description: "Аудит кода vs документации vs скиллов. Сканирует кодовую базу, из
deployment
--- name: deployment description: "Deployment — развёртывание PDF Framework в production. ИСПОЛЬЗУЙ