Глава 10

Выбирайте prompt, instruction, skill, hook или CI по гарантии

Prompt, instruction, skill, hook и CI - это не пять стилей одного текста. Они включаются в разное время и дают разный уровень гарантии. Правильный выбор уменьшает контекст и не создаёт ложного ощущения контроля.

Поверхность · Подходит · Гарантия

  • Prompt - Одноразовая цель и локальный контекст; Решение модели в текущем task
  • Project instruction - Короткие постоянные правила репозитория; Постоянный контекст, но не enforcement
  • Skill - Повторяемый многошаговый workflow; Переиспользуемая процедура, исполняемая агентом
  • Hook - Детерминированное действие на событии agent loop; Выполнение script по правилам конкретного host
  • CI - Объективный merge или release gate; Серверная проверка независимо от агента

Разница принципиальная. Prompt влияет только на текущую задачу. Project instruction даёт постоянный контекст, но не enforcement. Skill - переиспользуемая процедура, которую исполняет агент. Hook - детерминированное действие на событии loop. CI - серверная проверка независимо от агента. В companion-проекте этот выбор оформлен как обычный детерминированный router.

TypeScript
export type GuidanceSurface = "prompt" | "project-instructions" | "skill" | "hook" | "ci";

export interface GuidanceQuestion {
  readonly repeats: boolean;
  readonly isWorkflow: boolean;
  readonly mustBeDeterministic: boolean;
  readonly isObjectiveMergeGate: boolean;
}

export function chooseGuidanceSurface(question: GuidanceQuestion): GuidanceSurface {
  if (question.isObjectiveMergeGate) {
    return "ci";
  }
  if (question.mustBeDeterministic) {
    return "hook";
  }
  if (question.isWorkflow) {
    return "skill";
  }
  if (question.repeats) {
    return "project-instructions";
  }
  return "prompt";
}

Прогнать свою ситуацию через router и увидеть рекомендуемую поверхность помогает лаборатория.

Интерактивная лаборатория 3

Выберите поверхность

Prompt: одноразовая цель, context, scope и Done when.

На примерах маршрутизация становится очевидной: "исправь именно этот дефект" идёт в prompt; "всегда запускай npm run check" можно описать в instruction, но реальную обязательность даёт CI; "проведи release review по семи шагам" становится skill; "блокируй изменение migrations" требует permission или hook, а не усиленного прилагательного; "не сливать код при красном тесте" принадлежит branch protection.

Гарантия - это не громкость формулировки. Перенос требования на более сильную поверхность (из prompt в hook, из instruction в CI) меняет не тон, а механизм: с "модель, наверное, учтёт" на "система не пропустит".

Самая тонкая из пяти поверхностей - hook. Его легко превратить во второй непрозрачный агент, поэтому у него отдельная глава.

Проверка знаний

Какая поверхность даёт объективную гарантию merge независимо от агента?

Ссылки