Выбирайте 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.
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 и увидеть рекомендуемую поверхность помогает лаборатория.
Выберите поверхность
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 независимо от агента?