Draw the line where it costs least. Use for build-vs-buy calls, "where does this module/team/service boundary belong?", APIs and abstractions forcing users into implementation vocabulary, tools that should augment rather than automate, hardcoded decisions that belong at runtime, or information nobody can find.
Scanned 8/31/2026
Install to Claude Code
npx -y skills add cdeust/zetetic-team-subagents --skill boundary-design --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Boundary Design?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/cdeust-boundary-design)More formats (shields.io, HTML) on the badges page.
---
name: boundary-design
shapes: [boundary-design]
description: >
Draw the line where it costs least. Use for build-vs-buy calls, "where does this
module/team/service boundary belong?", APIs and abstractions forcing users into
implementation vocabulary, tools that should augment rather than automate,
hardcoded decisions that belong at runtime, or information nobody can find.
---
# Boundary Design
**Problem shape:** something must be split, wrapped, or interfaced — a system
into modules, a workflow between human and tool, a product between build and
buy — and the current boundary leaks implementation detail, transaction cost,
or cognitive load across it.
## Relevant geniuses
| Agent | Use when |
|---|---|
| [coase](../../agents/genius/coase.md) | build vs buy; team/service boundary placement — compare transaction costs across the boundary, not ideology |
| [hopper](../../agents/genius/hopper.md) | users forced to think in implementation vocabulary — build the translator; debugging under-invested; a tool defended out of familiarity |
| [engelbart](../../agents/genius/engelbart.md) | "automate this" proposed where augmenting the person is the real win; the team doesn't use its own tool; design for expert ceiling, not just novice floor |
| [kay](../../agents/genius/kay.md) | decisions hardcoded that could bind late; tight coupling via direct calls; users need to modify the system at runtime |
| [alexander](../../agents/genius/alexander.md) | decompose by misfit; the design needs a generative sequence of patterns rather than a top-down blueprint |
| [simon](../../agents/genius/simon.md) | the system should be nearly decomposable — strong interactions inside modules, weak between; hierarchy as the default shape |
| [liskov](../../agents/genius/liskov.md) | the boundary is an interface — write the behavioral contract so implementations are substitutable |
| [ranganathan](../../agents/genius/ranganathan.md) | information exists but nobody can find it — faceted classification and findability laws |
## Invocation
1. Pick the best-fit agent above. If two or more fit, run
`tools/genius-invoker.sh route "<problem>"` and take the top ranked match.
2. Load it: `tools/genius-invoker.sh invoke <agent> "<problem>"`, then read
`agents/genius/<agent>.md` in full.
3. Apply the agent's `<workflow>` step by step and answer in its
`<output-format>`. Every proposed boundary states what crosses it, what it
hides, and what it costs (Clean Architecture layer rules apply, §2.2).
4. Typical chain: coase places the boundary → simon shapes the decomposition →
liskov contracts the interface. Run via
`tools/genius-invoker.sh compose coase liskov -- "<problem>"`.
5. If no shape above matches, use a standard team agent instead.
## Refuse when
- The boundary is being drawn to match an org chart against the dependency
evidence — surface the conflict instead of ratifying it.
- Fewer than three concrete uses exist for a proposed abstraction
(coding-standards §3.3: premature abstraction is worse than duplication).
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!