principle-boundary-discipline — скилл для Claude Code
Скилл-правило для ИИ-агента: проверки и обработка ошибок держатся на границах системы, внутри — доверие типам и чистые функции.
npx skills add backnotprop/pstack --skill principle-boundary-discipline -a claude-codeЧто делает principle-boundary-discipline
Скилл задаёт одно правило: проверки, сужение типов и обработку ошибок держат на границах. Это аргументы CLI, конфиг, сеть, внешние API. Внутри системы код доверяет типам и не перепроверяет то, что уже проверили на входе. Бизнес-логика уезжает в чистые функции, а оболочка вокруг фреймворка остаётся тонкой и механической.
Поставляется он одним файлом SKILL.md с текстом принципа. Внутри список применений и два вопроса-теста. Первый: пересекает ли данные границу прямо сейчас? Если нет, валидация лишняя. Второй: можно ли вынести это в чистую функцию, которую оболочка просто вызывает? Там же названы типичные протечки: повторный экспорт wire- и storage-типов через публичный интерфейс, nil-проверки в глубине цепочек вызовов, проверка конфига уже после старта.
В frontmatter стоит disable-model-invocation: true. Значит, агент не подхватит скилл сам, вызывать его нужно вручную, когда вы уже пишете валидатор или адаптер к фреймворку. Если логика у вас размазана по обработчикам, правило потянет за собой переделку: придётся вынимать парсеры и чистые функции, а не латать пару мест.
Какие задачи решает
- свести проверки конфига в одну точку при разборе
- вынести бизнес-логику из обработчиков фреймворка в чистые функции
- убрать повторные nil-проверки в глубине цепочек вызовов
- не тащить wire-типы в публичный интерфейс модуля
- решить, где нужен guard, а где хватает типов
Примеры запросов агенту
- Примени скилл principle-boundary-discipline: посмотри, где в
src/config.tsвалидация разъехалась по бизнес-логике. - Возьми principle-boundary-discipline и вынеси разбор ответа API в чистую функцию-парсер.
- Проверь новый адаптер по principle-boundary-discipline: что здесь граница, а что лишняя проверка внутри?
Как установить principle-boundary-discipline
1Через Skills CLI (Vercel)
npx skills add backnotprop/pstack --skill principle-boundary-discipline -a claude-code2Вручную: положить файлы
~/.claude/skills/principle-boundary-discipline/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/principle-boundary-discipline/
1Через Skills CLI (Vercel)
npx skills add backnotprop/pstack --skill principle-boundary-discipline -a codex2Вручную: положить файлы
.agents/skills/principle-boundary-discipline/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add backnotprop/pstack --skill principle-boundary-discipline -a cursor2Вручную: положить файлы
.cursor/skills/principle-boundary-discipline/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install backnotprop/pstack principle-boundary-discipline2Вручную: положить файлы
.github/skills/principle-boundary-discipline/SKILL.md1Через Skills CLI (Vercel)
npx skills add backnotprop/pstack --skill principle-boundary-discipline -a gemini-cli2Командой платформы
gemini skills install https://github.com/backnotprop/pstack --path skills/principle-boundary-disciplineВручную: положить файлы
.devin/skills/principle-boundary-discipline/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add backnotprop/pstack --skill principle-boundary-discipline -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Из того же набора44
Похожие
Рядом в теме «Код-ревью и рефакторинг»
Всё по теме «Код-ревью и рефакторинг» →Вопросы о principle-boundary-discipline
Как установить principle-boundary-discipline в Claude Code?
Одной командой: npx skills add backnotprop/pstack --skill principle-boundary-discipline -a claude-code. Файл окажется по пути ~/.claude/skills/principle-boundary-discipline/SKILL.md.
Что делает principle-boundary-discipline?
Задаёт агенту правило: валидация, сужение типов и обработка ошибок стоят на границах системы, а внутренний код доверяет типам. Бизнес-логику он уводит в чистые функции, которые тестируются без фреймворка.
На каких платформах работает скилл?
Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI и OpenCode. Для Copilot команда другая: gh skill install backnotprop/pstack principle-boundary-discipline.
Исходный текст
SKILL.md · MIT
--- name: principle-boundary-discipline description: "Apply when wiring validation, error handling, or framework adapters. Concentrate guards at system boundaries (CLI, config, network, external APIs); trust internal types and keep business logic in pure functions." disable-model-invocation: true --- # Boundary Discipline Place validation, type narrowing, and error handling at system boundaries. Trust internal code unconditionally. Business logic lives in pure functions. The shell is thin and mechanical. **Why:** Scattered validation is noisy, redundant, and gives a false sense of safety. Keep logic out of framework wiring so it can be tested without the framework. **The pattern:** - **At boundaries** (CLI args, config files, external APIs, network protocols): validate, return errors, handle defensively. - **Inside the system:** typed data, error propagation, no re-validation. Trust the types. - **Across the boundary.** Expose domain concepts, not the boundary's private representation. Keep general-purpose mechanism inside and special-purpose policy at the edge. **Applications:** Validation and error handling: - Validate config at parse time (the boundary), not inside business logic - Parse raw data into domain types at the boundary - Do not re-export transport, storage, framework, or wire types through the public surface - No redundant nil checks deep in call chains if the boundary already validated Code organization: - Business logic in pure functions with no framework dependencies - Parse functions: pure transforms from raw bytes to typed state - Prompt construction: structured state in, string out - Scoring and assessment: pure transforms from state to results **The tests:** - "Is this data crossing a system boundary right now?" If not, validation is redundant. - "Can this be a pure function that the shell just calls?" If yes, extract it.
© backnotprop · MIT · backnotprop/pstack