Skill v1.0.2
currentAutomated scan100/100~1 modified
version: "1.0.2" name: skill-learning description: MUST use AFTER цикла работы с ≥2 итерациями (написал → ошибка → исправил → успех). Provides процедуру ретроспективы и формат записи приём/антиприём в references/learned-patterns.md или {project}/.context/learned-patterns.md. installable: true alwaysApply: false
Накопление знаний (Skill Learning) — процедура
Тело вынесено из правилаskill-learning-policy. Триггер «после цикла ≥2 итераций» остаётся в правиле; здесь — процедура ретроспективы, формат записи и критерий выбора уровня/файла.
Агент учится на своих итерациях: что работает (приёмы) и что ломается (антиприёмы).Знания записываются вreferences/learned-patterns.mdнавыка-владельца.
Два уровня знаний
| Уровень | Файл | Что хранит | |
|---|---|---|---|
| Универсальный | skill/references/learned-patterns.md | Приёмы, работающие в любой конфигурации 1С | |
| Проектный | {project}/.context/learned-patterns.md | Приёмы, привязанные к конкретной конфигурации / проекту |
Критерий разделения: если запись упоминает конкретный объект метаданных, имя формы, реквизит или особенность конфигурации → проектный. Если описывает общий паттерн платформы/фреймворка → универсальный.
Использование накопленных знаний
Триггер чтения («перед работой с навыком — прочитать его уроки») — в правиле skill-learning-policy (always-on). Здесь — раскладка по уровням:
references/learned-patterns.mdв каталоге навыка — универсальные приёмы;{project}/.context/learned-patterns.md— проектные приёмы.
Применяй confirmed-записи как дополнительные правила, candidate — как подсказки.
Когда запускать
После завершения цикла работы, в котором было ≥2 итерации (написал → ошибка → исправил → успех). Если задача решена с первой попытки — ретроспектива не нужна.
Процедура
- Восстановить цепочку итераций — что сделал → что упало → корневая причина → как исправил → что прошло.
- Абстрагировать до класса. Назвать КЛАСС ошибки на уровень выше инцидента, не сам инцидент:
- плохо (инстанс): «упал
биг_Модуль.Метод:142из-за пустогоИдентификаторСтроки»; - хорошо (класс): «обращение к полю набора записей без проверки заполненности перед записью».
Анти-рецепт формулируется как обобщённый запрет/проверка, переносимый на ещё не встреченные частные случаи. Конкретные file:line идут в поле источник, НЕ в тело приёма/антиприёма.
- Тест абстракции. Спросить: «к какой ещё ситуации, кроме породившей, применим этот анти-рецепт?». Нет ответа → это инстанс, не класс: переформулировать выше или отклонить запись.
- Сформулировать запись (приём и антиприём — одна запись, две стороны одного открытия):
status: candidate | confirmedкласс: <именованный класс ошибки>приём: <обобщённое правило — что делать, проверено успехом>антиприём: <обобщённый запрет — что НЕ делать, проверено падением>почему: <что происходит при нарушении>шаги: <конкретные шаги/код, если применимо>источник: <задача, итерация, file:line-пример>
- Отфильтровать — НЕ урок:
- опечатки и случайные синтаксические ошибки;
- разовые сбои окружения без воспроизводимого класса;
- инцидент, не прошедший тест абстракции (инстанс без класса).
- Определить уровень и навык-владелец:
- упоминает конкретный объект метаданных / конфигурацию → проектный →
{project}/.context/learned-patterns.md(русский, без маппинга и синхронизации); - общий паттерн платформы / фреймворка → универсальный →
references/learned-patterns.mdнавыка-владельца в RU-источнике фреймворка; - навык-владелец — тот, к которому относится класс по содержанию.
- Найти RU-каталог универсального урока (по навыку
skill-editing-from-project):
.install-session.json → component_map → skill/{имя-навыка-владельца} → ru_path → его каталог → references/learned-patterns.md. Писать в framework/ (RU), НЕ в установленный ENG-симлинк framework_eng/ — он перезапишется синхронизацией.
- Сверка-каскад (перед записью прочитать целевой файл):
- аналогичный класс уже есть → НЕ дублировать; актуализировать существующую запись (расширить границы анти-рецепта, дописать источник), исход =
refined; - есть
candidateс тем же классом → повысить доconfirmed, исход =refined; - класса нет → новая запись
candidate, исход =new.
- Дописать (append) в целевой файл; если файла нет — создать; существующие записи не перезаписывать. Для универсального урока после записи — синхронизировать ENG-зеркало через
sync_scriptиз.install-session.json(см.skill-editing-from-project).
MUST
| Требование | Описание | |
|---|---|---|
| Уровень выше инцидента | Запись про КЛАСС ошибки + анти-рецепт, не про конкретный инцидент; тест абстракции обязателен | |
| Не менять тело навыка | Записи — только в references/learned-patterns.md, не в SKILL.md | |
| Сверка-актуализация | Перед записью прочитать целевой файл; дубль не заводить, существующий класс актуализировать; исход matched/refined/new | |
| RU-источник для универсального | Универсальный урок писать в framework/ (RU) каталог навыка-владельца через skill-editing-from-project, НЕ в framework_eng/; после записи — синхронизация в ENG | |
| Первый случай = candidate | Единичный случай получает status: candidate | |
| Повторение = confirmed | При повторении аналогичной ситуации повысить до confirmed |
depends_on:
- framework/skills/framework-meta/skill-editing-from-project/SKILL.md