AgentStack
SKILL verified MIT Self-run

Design It Twice

skill-etr-groundwork-design-it-twice · by etr

Use before committing to a non-trivial module, service boundary, or public API - generate 2-3 divergent interface designs, compare them on depth/locality/seam, and recommend one

No reviews yet
0 installs
7 views
0.0% view→install

Install

$ agentstack add skill-etr-groundwork-design-it-twice

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README — it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-etr-groundwork-design-it-twice)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
1mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming — see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps — measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Design It Twice? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Design It Twice

Overview

Your first interface is rarely your best (Design it twice, Ousterhout). Before you commit a module boundary, generate genuinely different designs and compare them — the cost of exploring on paper is trivial next to the cost of a shallow interface that Hyrum's Law then freezes into a contract.

Core principle: Aim for deep modules — a simple interface hiding substantial functionality. A design that merely forwards calls is shallow and usually a liability.

This is a build-time and architecture-time discipline. [[design-architecture]] and [[swarm-design-architecture]] invoke it for module boundaries; invoke it directly any time you're about to design a single non-trivial interface.

When to Use

  • A new module, service boundary, or public API
  • A refactor that reshapes an existing interface many callers depend on
  • Any seam where a future change is likely to land and you want it to land in one place

Skip for trivial or single-call-site code, or interfaces fully dictated by an existing contract.

Process

1. Frame the problem space

Before generating alternatives, write down the constraints, dependencies, the dominant use case, and a rough code sketch of the interface. Use the project's domain language (see [[domain-modeling]]). Vague framing yields vague designs.

2. Generate 2–3 divergent designs

Each design optimizes one distinct goal — they must genuinely differ, not be three shades of the same idea:

| Lens | Optimizes for | |------|---------------| | Minimize entry points | Fewest interfaces, maximum leverage per surface — a deep module | | Maximize flexibility | Reuse across the widest set of use cases | | Optimize the common case | Simplest path for the dominant workflow | | Isolate seams | Cross-boundary dependencies behind ports & adapters |

Orchestration: if the Agent/Task tool is available, fan out one agent per design in parallel, each with the same framing and a different lens. No agent teams or debate are needed — the designs are independent. If agents are unavailable, produce the designs sequentially yourself. Each brief returns the interface sketch plus its trade-offs.

3. Compare on three axes

  • Depth — functionality hidden behind the interface vs. surface exposed. Favor depth; mind Hyrum's Law on every exposed behavior.
  • Locality — where a likely future change concentrates (one module vs. scattered across callers).
  • Seam placement — whether boundaries fall where the system actually flexes.

4. Recommend, don't enumerate

Give an opinionated recommendation — which design solves the problem best and why — possibly a hybrid that grafts the best of two. A neutral menu pushes the judgment onto the reader and defeats the exercise.

Named principles referenced here are defined in ${CLAUDE_PLUGIN_ROOT}/references/engineering-principles.md.

Rationalizations

| Excuse | Reality | |--------|---------| | "My first design is obviously right" | That feeling is exactly when a second design most often beats it. Cost of checking is one sketch. | | "Three designs is slower" | Slower than reworking a shallow interface every caller already depends on? No. | | "They'd all come out the same" | Then your lenses aren't divergent. Force distinct optimization goals. | | "I'll just present the options and let them pick" | A menu without a recommendation is unfinished work. Take a position. |

Red Flags

  • The alternatives differ only cosmetically (same interface, renamed)
  • A "design" that forwards calls with no functionality hidden (shallow module)
  • Comparing on taste rather than depth / locality / seam
  • Ending with "any of these could work" instead of a recommendation

Verification

  • [ ] Problem space framed: constraints, dominant use case, interface sketch
  • [ ] 2–3 designs, each optimizing a genuinely distinct goal
  • [ ] Compared explicitly on depth, locality, and seam placement
  • [ ] A single opinionated recommendation (or justified hybrid), with reasoning

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.