Наверное, через это уже прошёл каждый из нас :)

Где-то после полугода очень достаточно работы с агентами я стал принимать диффы быстрее, чем успеваю реально в них вникнуть, в итоге в один из я оказался в ситуации, что словил баг, а на поиски проблемы потратил чуть больше часа, а найдя ее, я понял, на сколько она была тривиальной

Короче говоря, то что мы используем агентов - конечно суперсила, но в итоге, мы все начинаем идти по “Accepted driven development” , а это уже начинает сильно отупливать влиять на наши с вами когнитивные возможности :) ну и на наши умения в разработке в целом

Спойлер: это все решается, но нет, не тем что мы перестаем читать в целом код

Меня зовут Эдгар Сипки, я founder easyp & sipki tech и отбираю доклады на Golang Conf в программном комитете. А в своём тг-канале делюсь прикладными AI-инструментами и подходами для разработки - подписывайтесь, дальше будет больше :)

Так вот, обратно к теме. В этой статье я дам промпт-генератор, который соберёт learning skills под ваш проект - чтобы агенты и дальше ускоряли вас, а понимание собственного кода оставалось вашим, а не делегировалось модели :) Но сначала про сама проблему: снаружи-то это кажется все на увеличение нашего KPI, вроде ты и быстрее двигаешься, меньше застреваешь, да и в целом не тратишь часы на написания кода, но вот позже уже начинаются проблемы

Когда надо объяснить, что именно ты только что принял. Какие инварианты поменялись? Почему решение такое? Какие edge cases теперь важны? Что сломается через месяц, если кто-то тронет соседний кусок кода? (а это будет не редко)

И вот тут выясняется, что ты всё ещё инженер - сидишь в IDE, ревьюишь изменения. А по факту всё чаще работаешь инженером рычагом до кнопки enter :)

LLM нас не поработит, но на интелекте нашем точно скажется

И на самом деле - это одна из самых недооцененных проблем LLM кодинга, ведь LLM агенты уронили стоимость кодинга до нуля, а вот стоимость понимания, нажимания на enter, проектирования и анализа никуда не делась

Просто чем лучше агент справляется, тем меньше ты хочешь и чувствуешь что необходимо вникать :)

И это, на самом деле, гораздо опаснее, чем очередная галлюцинация модели, ведь галлюцинацию можно поймать. А потерю собственного контекста можно не заметить

Anthropic понимает эту проблему лучше всех

Недавно я наткнулся на промпт от Anthropic, решающий ровно эту же проблему.

Суть вот в чём, ребята из Anthropic показали промпт, после которого модель не просто говорит "готово", а дальше буквально гоняет тебя по коду и заставляет понять, что в нём вообще происходит, доделала модель задачу - и на минуту превращается в препода

Даешь ему промпт объяснить решение своими словами, задаёт вопросы по коду и не отстаёт, пока не убедится, что ты реально понял проблему, решение и контекст

Идея занудная отличная, потому что разница между "я понимаю свой проект" и "ИИ написал, я нажал ok" - это разница между инженером, который использует ИИ как усилитель, и человеком, который постепенно превращается в прокладку между агентом и git (считай агент агента)

Почему универсальный промпт - норм и стрем одновременно

Сразу уточню важный момент - я не говорю, что ребята из Anthropic сделали плохой промпт, наоборот, всё хорошо, но, будем объективны, они решали свою проблему, проблему продуктов их масштаба, с их инженерам и с их задачами и контекстом

А у меня в реальной работе слишком много разношерстных задач, и самое важное - я легко могу забыть внести этот промпт, но самое важное то другое:

  1. Проекты разные

  2. Задачи разные

  3. СПОСОБЫ ПОНИМАНИЯ тоже разные

Невозможно сделать одну универсальную систему самообучения, которая подойдёт всем, и еще в итоге у универсального промпта несколько типичных болячек:

  • Он одинаково душнит и на переименовании переменной, и на сложном рефакторинге

  • Один формат, одна интенсивность., когда хочешь "объясни как интерну" - не переключишь

  • Его надо вставлять руками каждый раз, а значит - забываешь, а значит - не используешь :)

И вот здесь, кажется, и видна самая важная ценность, она не в конкретном тексте промпта. Ценность в принципе - рефлексия плюс проверка понимания, а вот форму этому принципу надо давать под свой проект и под свою голову.

Поэтому я не дам вам ещё один промпт-учитель

Точнее дам, но не такой :)

Но и готовый skill я вам давать не буду, мой skill заточен под мой проект, мои слабые места и мои риск-зоны. И самое важное, вам он будет почти так же бесполезен, как мне - универсальный промпт Anthropic, ведь это снова чужая форма под чужую голову :)

Поэтому я дам промпт, который создаст learning skills под ВАШ проект

Но сначала покажу, что именно он генерит, чтобы было понятно, к чему мы идём.

Как выглядит сгенерированный skill

Идея раскладывается не в один монолитный "преподаватель на все случаи жизни", а в несколько узких навыков под конкретные ситуации: разбор после задачи, квиз по коду, объяснение как интерну, ревью архитектурных решений.

Вот пример скилла, что можно получить (только будет получше по качеству собранный)

---
name: post-task-debrief
description: Запускать ПОСЛЕ нетривиальной задачи (новая фича, рефакторинг, багфикс в бизнес-логике или конкурентности). Проводит короткий сократический разбор, чтобы я понял дифф, а не просто нажал Accept. НЕ триггерить на мелочах: переименования, формат, опечатки, сгенерированный код.
---

# Post-task debrief (Go-бэкенд)

Цель: держать моё понимание в тонусе. После существенной задачи стань
кратким ревьюером-преподом на ~5 минут. Инкрементально, не стеной в конце.

## Когда запускать
- Да: новый хендлер/эндпоинт, изменения в concurrency (goroutines, context,
  channels), gRPC/proto-контракты, retry/timeout-логика, Temporal-воркфлоу,
  миграции, нетривиальный рефакторинг.
- Нет: переименования, форматирование, комментарии, сгенерированный код.

## Как вести разбор
1. Сначала попроси меня своими словами пересказать: что изменилось и зачем.
2. Возьми один реальный кусок диффа и спроси "почему так, а не иначе".
3. Задай 2-3 вопроса по граничным случаям моего стека:
   - распространение context cancellation / deadline;
   - обработка и оборачивание ошибок (errors.Is/As, sentinel vs typed);
   - конкурентный доступ и гонки (mutex, atomic, happens-before);
   - идемпотентность и retry-семантика (Temporal, gRPC).
4. Не двигайся дальше, пока я не закрою текущий пункт.

## Глубина
- "elii" -> объясни как интерну, на пальцах.
- Уверенно отвечаю -> копай следующий уровень why.

## Готово, когда
Я объяснил проблему, решение, ключевое дизайн-решение и хотя бы один edge case.

Суть не в том, что именно этот skill идеален, суть в механике - он знает, когда молчать, когда вмешиваться и какие вопросы задавать именно в моём стеке/проекте/продукте

Сам генератор

Этот промпт не пытается создать один огромный "учительский" промпт. Сначала он изучает проект: сканит репозиторий, задаёт пачку вопросов про стек и слабые места, а потом предлагает 1-2 узких навыка под самые опасные зоны (и это можно отрегулировать вам под ваш проект)

# Skill Forge v3 - builds my self-triggering continuous-learning skills

You are Skill Forge. Study ONE project, understand its essence, then generate narrow, self-triggering "learning skills" that keep my understanding sharp while I work with AI agents. The enemy is "Accept-driven development" - approving diffs I do not actually understand. You fight it with reflection + verification-of-understanding bound to RELIABLE triggers, never a command I must remember to call.

## Core principles
- Reliability over cleverness. A learning skill is worthless if it does not fire. Prefer deterministic platform triggers (hooks, globs) over semantic description-matching.
- Dosage over coverage. Fire only on significant changes, judged by mechanical criteria - never on renames, formatting, comments, or generated code.
- Evidence over self-report. Derive my weak spots from the repo, not only from what I claim.
- No conflict of interest. The debrief must not spoil its own answers.
- One concern per skill. Narrow, short, retireable.

## Phase 0 - Auto-scan the repo
Before asking anything, inspect and infer:
- Stack, frameworks, infra, build/test tooling (manifests, lockfiles, CI configs).
- Architecture: services/modules, entry points, critical paths.
- Risk paths: concurrency, migrations, auth, API/proto contracts, retry/timeout logic.
- Evidence of blind spots: large diffs paired with thin commit messages, files with repeated bugfixes, churn hot-spots.
- Existing setup: read learning-skills/INDEX.md and any installed learning skills.
Summarize findings so I can correct them.

## Phase 1 - Discovery (ask ALL open questions at once, then wait)
Pre-fill from Phase 0; ask ONLY what you could not infer. Single numbered list. Generate nothing until I answer.
1. Confirm/correct inferred stack and architecture.
2. My role and seniority here.
3. Where do I most often accept without understanding? (Cross-check against the evidence you found.)
4. Recurring risk areas or past bugs that hurt.
5. Learning goals over time.
6. Preferred depth + an escape-hatch keyword meaning "explain like I'm an intern".
7. Hard no-trigger list.
8. Debrief time budget (e.g. ~5 min, incremental).
9. Flow preference: debrief immediately, or defer to a queue and run at session end?
10. Primary host: Claude Code, Cursor, or git-hook-based - so I wire a deterministic trigger. (Confirm once; I will record the choice.)

## Phase 2 - Synthesis
- Reflect back a project model: stack, domains, top 3 risk areas, evidence-backed weak spots.
- Cross-check learning-skills/INDEX.md: what is already covered vs uncovered.
- Propose a MINIMAL set of NEW skills - the 1-2 highest-leverage uncovered gaps. For each: purpose, exact trigger, exact no-trigger, which risk area it covers.
- Confirm before writing files. Never duplicate existing skills or over-generate.

## Phase 3 - Generate skill(s) with DETERMINISTIC triggers
Write skill content in English. Wire the trigger to the confirmed host:
- Claude Code -> a Stop or PostToolUse hook that invokes the skill after a qualifying change. Skill ships as SKILL.md (YAML frontmatter: name, description) + the hook config.
- Cursor -> .mdc rule with concrete globs matching risk paths, alwaysApply only if justified.
- Git-based -> a post-commit (or pre-push) hook script that launches the debrief.
Semantic description matching is a FALLBACK, never the only trigger.

Mechanical significance gate (skill runs only if ANY holds):
- Touched a declared risk path (concurrency / migrations / auth / contracts / retry-timeout).
- Net changed lines above a set threshold (default 30; tune per project).
- Added/changed a public function, endpoint, or schema/contract.
Explicitly skip: renames, formatting, comments, generated/boilerplate, lockfiles, docs.

Anti-cheat debrief protocol (each skill body):
1. Ask me to restate in my own words what changed and why - I answer first, you do NOT reveal anything.
2. Take ONE real diff hunk; ask "why this way, not another".
3. Ask 2-3 edge-case questions from my stack/risk areas.
4. Never accept "yes I get it". Require a concrete artifact: a one-sentence explanation + one named edge case. Do not reveal the answer until I attempt.
5. Run with minimal prior reasoning in context (fresh-context / sub-agent if the host allows) so you are not grading your own work.
Depth control: honor the intern escape-hatch; deepen the "why" when I answer confidently.
Done when: I explained the problem, the solution, the key design decision, and at least one edge case.
Keep each skill under ~40 lines.

## Phase 4 - Deferral + feedback log (not skills)
- If I chose deferred mode, skills enqueue a debrief entry instead of interrupting; a session-end runner drains the queue.
- After each debrief, append a short log line to learning-skills/LOG.md: date, skill, topic, where I struggled. This log feeds future weak-spot detection (Phase 0) - the system learns from me.

## Phase 5 - Registry + lifecycle (lightweight, not a skill)
- Maintain learning-skills/INDEX.md: name, path, trigger, risk area covered, created date, status.
- Lifecycle: on each run, review the LOG. If I have passed a skill's topic repeatedly, propose GRADUATING it (status: archived) so it stops firing. Prune duplicates and stale skills.
- The registry/log never auto-trigger or nag - they are consulted on the next run or on request.

## Guardrails
- Never a single monolith that quizzes everything.
- Prefer fewer, sharper skills; add more only for uncovered gaps after I have used the first ones.
- Use the project's real stack in examples - no generic filler.
- If a deterministic trigger is impossible on the host, say so plainly and fall back to description-matching with a warning that reliability drops.

Главный параметр - не умность, а дозировка

Тут очень легко перегнуть палку, если агент устраивает экзамен после каждого чиха, вы возненавидите эту систему быстрее, чем она вас хоть чему-то научит :)

Поэтому самый важный параметр learning skill - не насколько умные вопросы он задаёт, а когда он не запускается, молчать - на опечатках, форматировании, переименованиях, generated code и прочих механических правках

Включаться - там, где реально можно потерять понимание: бизнес-логика, сложный рефакторинг, контракты и миграции, конкурентный код, auth, retry/timeout-семантика.

К чему это я

У меня всё сильнее ощущение, что главный риск AI-кодинга не в том, что ИИ однажды напишет плохой код, плохой код люди прекрасно писали и без ИИ, чего уж там :)

Главный риск в том, что ИИ делает плохую привычку слишком удобной: не читать внимательно, не вникать до конца, не держать архитектуру в голове и не задавать себе вопрос "а почему именно так?".

Именно поэтому мне нравится идея Anthropic, но не нравится её форма как универсального промпта, промпт можно забыть, а skill легко можно встроить.

Весь фокус в том, чтобы остаться ?, а не ⚡, чтобы понимать свой код вдумчиво, а не штамповать accept'ы на скорость

Звучит знакомо? Если тоже ловили себя на Accept-driven development - расскажите в комментах. Очень интересно, как вы с этим боретесь: промптами, rules, skills, code review, привычками или просто внутренним страхом сломать прод :D

P.S. Если тема зашла - в тг-канале разобрал еще, а нужно ли делать свои скиллы или же воспринимать нужно скиллы как библиотеки в приложении? Там же - практика по AI: что работает в проде, а что нет.

Комментарии (7)


  1. nikon_y
    10.06.2026 10:09

    Очень точное наблюдение. ИИ действительно снизил стоимость написания кода, но стоимость понимания архитектуры и принятых решений никуда не делась. Самый опасный баг здесь не галлюцинации модели, а иллюзия собственного понимания. Поэтому идея learning skills выглядит намного полезнее очередного универсального промпта, она помогает оставаться инженером, а не просто человеком, который нажимает Accept.


    1. ZergsLaw Автор
      10.06.2026 10:09

      Да, и самое важное - многие говорят "порог входа увеличился" для джунов, хотя в реальности они получают ментора, 24/7 свободного для него и способного объяснить все что в коде написано, позволяя учиться не отвлекая старших ребят


  1. fkrasnov2
    10.06.2026 10:09

    короче, я не уверен, по-моему проблема надуманная - со всем уважением к автору, которого регулярно читаю :)
    эту панику мы уже проходили. двадцать лет назад ныли, что копипаст со StackOverflow “отупляет”, до этого - что IDE с автокомплитом убивает память на API. каждый раз индустрия хоронила “настоящее понимание”, и каждый раз оно просто переезжало на уровень выше.

    по факту код - средство, а не цель. если задача решена и тесты зеленые, то “вдумчивое понимание каждого диффа” - дорогая форма перфекционизма, за которую бизнес почему-то должен платить. а сократические квизы от агента - мило, но в реальной работе это еще один ритуал, который отключат через неделю, как pre-commit хуки, “временно” закомменченные в 2021-м :)
    или я что-то упускаю?


    1. ZergsLaw Автор
      10.06.2026 10:09

      Это работает только в короткой дистанции, уже вышло не одно исследование, где объяснялось, что LLM прекрасно пишт код, но ужасно его поддерживает

      Так чт я бы сказал, что сейчас это становится супер необходимым навыком без которого просто проект не будет развиваться

      Одно дело time to market стартапа, другое дело отпустить на самотек большой и работающий продукт


    1. xadd
      10.06.2026 10:09

      эту панику мы уже проходили. двадцать лет назад ныли, что копипаст со StackOverflow “отупляет”, до этого - что IDE с автокомплитом убивает память на API. каждый раз индустрия хоронила “настоящее понимание”, и каждый раз оно просто переезжало на уровень выше.

      не фантазируй, тебя 20 лет назад даже не было


  1. Zifix
    10.06.2026 10:09

    Когда надо объяснить, что именно ты только что принял. Какие инварианты поменялись? Почему решение такое? Какие edge cases теперь важны? Что сломается через месяц, если кто-то тронет соседний кусок кода? (а это будет не редко)

    К решению этой проблемы можно подойти с другой стороны, и отойти от вайб кодинга к Spec-Driven Development, заранее прописывая все edge cases и т.д.

    https://habr.com/ru/articles/1021474/


    1. ZergsLaw Автор
      10.06.2026 10:09

      Вот да, у меня об этом как раз и будет следующий материал, чтобы раскрыть и показать, как можно уменьшить вариативность, и самое важное, уменьшить потенциальные проблемы от галлюцинаций