Agent Dev 101

Модуль 05 · Урок 5.3

Урок 5.3. Project Instructions

На этой странице
  1. Зачем это нужно
  2. Основная идея
  3. Ключевые термины
  4. Где живут project instructions
  5. Vendor-neutral core и adapters
  6. Agent replaceability
  7. Что должно быть в project rules
  8. Что нельзя класть в project rules
  9. Хорошие и плохие project instructions
  10. Mode-specific instructions
  11. Минимальный PROJECT.md
  12. Adapter examples
  13. Как поддерживать rules
  14. Практика: написать короткий rules-файл
  15. Типичные ошибки
  16. Критерии готовности
  17. Краткое резюме
  18. Вопросы для самопроверки
  19. Что дальше

Зачем это нужно

У каждого coding agent есть способ хранить инструкции проекта: CLAUDE.md, Cursor Rules, .roo/rules/, .cline/rules/, Kiro Steering и похожие механизмы. Эти файлы очень полезны: они позволяют не повторять базовые правила в каждом prompt.

Но есть ловушка. Когда project instructions начинают использовать как место для всего знания проекта, они превращаются в giant prompt:

  • туда кладут requirements текущих features;
  • историю решений;
  • длинные архитектурные объяснения;
  • временные TODO;
  • examples на десятки страниц;
  • правила, которые конфликтуют друг с другом.

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

Главная цель урока - научиться писать короткие, стабильные и проверяемые project instructions, а подробности хранить в source documents и подключать progressive context.

Основная идея

Project instructions - это Level 1 context: короткие постоянные правила, которые агент должен соблюдать в большинстве задач.

Главный принцип:

text
Rules должны содержать короткие стабильные ограничения,
а не всю энциклопедию проекта.

Хорошие project instructions:

  • короткие;
  • стабильные;
  • проверяемые;
  • не содержат secrets;
  • не дублируют feature specs;
  • ссылаются на source documents вместо копирования всего текста;
  • объясняют, когда агент должен остановиться.

Плохие project instructions пытаются заменить:

  • specification;
  • architecture docs;
  • ADR;
  • task plan;
  • skill procedures;
  • troubleshooting history;
  • документацию фреймворка.

Ключевые термины

Термин Значение
Project Instructions Постоянные инструкции для agent внутри конкретного репозитория.
Project Rules Короткие правила поведения агента в проекте.
Vendor-neutral Core Основной документ правил, не привязанный к одному инструменту.
Tool-specific Adapter Тонкий файл, который подключает core rules к конкретному coding agent.
Always-on Context Контекст, который агент видит постоянно или почти постоянно.
Mode-specific Rules Инструкции для конкретного режима: plan, code, debug, review.
Stable Rule Правило, которое редко меняется и применимо ко многим tasks.
Task-specific Instruction Инструкция, актуальная только для одной task.

Где живут project instructions

Разные tools используют разные файлы и механизмы.

Примеры:

Tool / Harness Пример project instructions
Claude Code CLAUDE.md
Cursor Cursor Rules
Roo Code .roo/rules/, mode-specific rules
Cline .cline/rules/
Kiro Steering / project specs
Другие coding agents Аналогичные project-level files

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

В курсе удобно держать vendor-neutral core:

text
PROJECT.md

и рядом тонкие adapters:

text
CLAUDE.md
.cursor/rules/...
.roo/rules/...
.cline/rules/...

Adapter не должен содержать новую логику. Он должен ссылаться на core или кратко повторять совместимые правила.

Vendor-neutral core и adapters

flowchart TD A[PROJECT.md: vendor-neutral rules] --> B[CLAUDE.md] A --> C[Cursor Rules] A --> D[.roo/rules] A --> E[.cline/rules] A --> F[Kiro Steering] G[docs/architecture] --> A H[specs/current-feature] --> I[Task-specific context] J[skills] --> I

Такой подход снижает lock-in:

  • базовые инженерные правила живут в одном месте;
  • разные agents получают совместимые instructions;
  • feature-specific context не попадает в always-on rules;
  • skills остаются отдельными процедурами.

Agent replaceability

Agent replaceability - это способность проекта пережить смену coding agent без потери engineering process.

Команда может начать с Claude Code, потом часть задач делать в Codex, часть в Cursor, часть в Kiro. Если весь процесс живет только в tool-specific commands, chat history и локальных настройках одного инструмента, при смене агента команда теряет:

  • правила работы;
  • структуру specs;
  • формат tasks;
  • привычные gates;
  • knowledge update loop;
  • проверочные команды;
  • критерии завершения.

Поэтому важно разделять durable process и adapter syntax.

Что должно быть переносимым Что может быть tool-specific
PROJECT.md с core rules CLAUDE.md, Cursor Rules, Kiro Steering
spec.md, design.md, tasks.md Slash commands конкретного агента
ADR и architecture docs UI-настройки конкретной IDE
Test commands и verification policy Local permission prompts
Skills как Markdown-процедуры Способ автоподключения skills
Review checklist Формат финального ответа агента

Хороший тест:

text
Сможем ли мы отдать эту же task другому coding agent,
если он прочитает PROJECT.md, spec/design/tasks и нужные skills?

Если ответ "нет", значит слишком большая часть процесса спрятана в одном tool.

Практический minimum для agent replaceability:

  • хранить product behavior в specs, а не в chat;
  • хранить architecture decisions в ADR;
  • хранить stable rules в vendor-neutral PROJECT.md;
  • делать adapters короткими;
  • не привязывать task format к одному agent;
  • указывать verification commands явно;
  • фиксировать completion evidence в commit/PR/agent run log.

Это не означает, что tool-specific features нельзя использовать. Можно и нужно использовать сильные стороны конкретного агента: plan mode, slash commands, hooks, MCP, custom skills, review agents. Но core process должен оставаться читаемым из репозитория.

Что должно быть в project rules

Примеры хороших rules:

text
## Scope and changes

- Do not modify files outside the allowed scope of the current task.
- If a required change is outside scope, stop and explain why.

## Verification

- Do not claim completion without running specified verification commands.
- Report commands, exit codes and result summary.

## Architecture

- Controllers call services; controllers must not import database client directly.
- Follow ADRs referenced by the current task.

## Dependencies

- Do not add new runtime dependencies without explicit approval.

## Safety

- Never write secrets to repository files.
- Ask for approval before destructive actions.

Это короткие правила, которые применяются почти всегда.

Что нельзя класть в project rules

Feature-specific requirements

Плохо:

text
Password reset token действует 15 минут.

Это должно жить в:

text
specs/password-reset/spec.md

Project rules могут сказать:

text
Read relevant feature spec before implementation.

Длинные процедуры

Плохо:

text
Как добавить endpoint:
1. ...
2. ...
30. ...

Это лучше вынести в skill:

text
skills/create-api-endpoint/SKILL.md

Project rules могут сказать:

text
Use relevant skill when available.

Историю обсуждений

Плохо:

text
В прошлом месяце мы спорили о token storage...

Итоговое решение должно быть в ADR.

Secrets

Никогда не кладите в rules:

  • API keys;
  • tokens;
  • passwords;
  • private URLs with credentials;
  • production secrets;
  • customer data.

Нестабильные TODO

Временные заметки должны жить в task files, issue tracker или plan, а не в always-on rules.

Хорошие и плохие project instructions

Плохо Почему плохо Лучше
"Всегда делай качественно" Непроверяемо "Run specified verification before completion"
"Следуй нашей архитектуре" Слишком абстрактно "Controllers must call services, not database"
"Вот весь spec password reset..." Feature-specific context "Read current task spec sections"
"Если что-то непонятно, придумай разумный default" Агент принимает product decisions "Stop on ambiguous product/security behavior"
"Добавляй тесты когда нужно" Размыто "Tasks with behavior change must add/update tests or explain why not"

Rules должны быть такими, чтобы reviewer мог сказать: выполнено или нарушено.

Mode-specific instructions

Некоторые tools поддерживают режимы: Architect, Code, Debug, Ask, Review, Orchestrator, Plan/Act.

Mode-specific rules полезны, потому что разные режимы должны иметь разные permissions.

Пример:

text
Plan mode:
- Read files and produce plan.
- Do not edit production code.
- Identify open questions and risks.

Code mode:
- Edit only allowed scope.
- Follow current task.
- Run verification.

Review mode:
- Review diff against spec, architecture constraints and tests.
- Do not rewrite implementation unless explicitly asked.

Если tool не поддерживает режимы явно, их можно имитировать task prompt'ами и permissions.

Минимальный PROJECT.md

Пример:

markdown
# Project Instructions

## Source of truth

- Product behavior lives in `specs/**/spec.md`.
- Architecture decisions live in `docs/architecture/adr/`.
- Task scope lives in `specs/**/tasks.md`.

## Scope

- Modify only files allowed by the current task.
- Stop if implementation requires changes outside allowed scope.

## Architecture

- Controllers call services.
- Services contain application logic.
- Repositories own persistence access.
- Do not import database client from controllers.

## Verification

- Run specified verification commands before completion.
- Report commands, exit codes and result summary.

## Safety

- Do not add dependencies without approval.
- Do not write secrets to repository.
- Ask before destructive or irreversible actions.

## Completion

Return:
- summary;
- changed files;
- verification evidence;
- acceptance criteria status;
- unresolved issues.

Это не полный стандарт для всех проектов, но хорошая стартовая форма.

Adapter examples

CLAUDE.md

markdown
# Claude Code Project Instructions

Follow `PROJECT.md`.

For every coding task:
- read the current task file;
- read referenced spec/design/ADR sections;
- respect allowed scope;
- run verification;
- report evidence.

Cursor Rules

markdown
Use `PROJECT.md` as the source for stable project rules.
Do not duplicate feature-specific requirements here.

When implementing a task, prefer the local patterns in the target module.

Roo/Cline style

markdown
# Code mode rules

- Use current Agent Task as scope boundary.
- Do not perform architecture redesign in Code mode.
- Stop when product behavior is ambiguous.

Adapters должны быть тонкими. Если нужно менять правило, лучше менять core и обновлять adapters только при необходимости.

Как поддерживать rules

Project instructions должны эволюционировать, но медленно.

После task спросите:

text
Появилось ли новое стабильное правило?
    ↓ YES
Project rules

Появилась повторяемая процедура?
    ↓ YES
Skill

Появилось architecture decision?
    ↓ YES
ADR

Изменилось product behavior?
    ↓ YES
Spec

Не каждое наблюдение становится rule. Если добавить все, rules станут шумом.

Практика: написать короткий rules-файл

Создайте:

text
PROJECT.md

или, если не хотите пока добавлять root-level файл:

text
labs/05-context/PROJECT.md

Заполните разделы:

text
# Project Instructions

## Source of truth

## Scope

## Architecture

## Verification

## Safety

## Completion format

Ограничения:

  • не больше 25 rules всего;
  • не включать feature-specific requirements;
  • не включать secrets;
  • минимум 5 rules должны быть проверяемыми;
  • минимум 3 rules должны говорить, когда agent должен остановиться;
  • добавить ссылки на specs/, docs/architecture/adr/, tasks.md.

Затем создайте один adapter:

text
labs/05-context/CLAUDE.md

или аналог для вашего coding agent.

Типичные ошибки

Ошибка 1. Делать rules слишком длинными

Если project instructions длиннее большинства specs, они начинают вредить context quality.

Ошибка 2. Дублировать feature specs

Product behavior должен жить в spec.md. Rules должны говорить, что spec нужно читать.

Ошибка 3. Класть procedures в rules

Повторяемые процедуры должны стать skills. Это тема следующего модуля.

Ошибка 4. Не проверять rules на исполнимость

Если rule нельзя проверить, agent и reviewer будут трактовать ее по-разному.

Ошибка 5. Делать adapters независимыми копиями

Если CLAUDE.md, Cursor Rules и .roo/rules/ расходятся, разные agents будут соблюдать разные правила.

Критерии готовности

После урока студент должен уметь:

  • объяснить назначение project instructions;
  • отличить stable rule от feature-specific requirement;
  • написать короткий vendor-neutral PROJECT.md;
  • создать tool-specific adapter;
  • объяснить, что нельзя класть в rules;
  • понять, когда knowledge должно стать spec, ADR, skill или rule.

Краткое резюме

Project instructions - это Level 1 context для coding agent. Они должны задавать стабильные правила поведения: scope, architecture, verification, safety и completion format.

Они не должны заменять specification, ADR, tasks или skills. Чем короче и проверяемее rules, тем лучше они работают в agent workflow.

Оптимальная структура:

text
PROJECT.md
    ↓
thin adapters for specific agents
    ↓
task-specific context
    ↓
skills when procedure is needed

Вопросы для самопроверки

  1. Почему project rules не должны содержать feature-specific requirements?
  2. Что лучше положить в skill, а не в project instructions?
  3. Чем vendor-neutral core полезнее нескольких независимых adapters?
  4. Какие rules должны заставлять агента остановиться?
  5. Как понять, что новое знание должно стать ADR, spec, skill или rule?

Что дальше

Модуль V завершает тему контекста: мы научились собирать context package, раскрывать context progressive layers и писать короткие project instructions.

В следующем модуле мы перейдем к Skills. Skills позволяют вынести повторяемые процедуры из always-on rules и подключать их только тогда, когда агенту действительно нужен конкретный workflow.

Обновлено 03.10.2026