design-an-interface

Generate and compare three divergent interface designs for a module before implementation.

14|1|Updated Jun 14, 2026
One-click install
npx skills add https://github.com/allemaar/open-skills --skill design-an-interface-allemaar
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: design-an-interface
Source: https://github.com/allemaar/open-skills/tree/main/skills/design-an-interface
Command: npx skills add https://github.com/allemaar/open-skills --skill design-an-interface-allemaar

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? First interface ideas are rarely the best, yet teams often commit to them without exploring alternatives. This Skill forces structured divergence: it produces multiple radically different interface designs for a module, compares them on concrete dimensions, and synthesizes a recommendation before any implementation begins. ## Core Features & Use Cases - Requirements Intake: Asks targeted questions about callers, failure modes, hidden complexity, and the most common case before designing anything. - Divergent Design Generation: Produces three designs with different information-hiding boundaries using lenses like minimal surface, caller-empowering primitives, and common-case-first ergonomics. - Structured Comparison and Synthesis: Fills a comparison table, applies evaluation criteria from A Philosophy of Software Design (depth, simplicity, ease of correct use), and delivers a concrete recommended interface with signatures. - Use Case: Before implementing a new caching module, run this Skill to get three candidate APIs with real call-site examples, an honest trade-off analysis, and a synthesized final interface. ## Quick Start Ask the agent to design an interface for your module, for example: "Design an interface for a retry-able job queue module — give me options before I implement it."

Frequently Asked Questions about design-an-interface

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I design a good module interface before writing code?

Gather concrete requirements first: callers, failure modes, and the most common case. Then generate multiple radically different designs with different information-hiding boundaries, compare them on operation count and caller knowledge required, and synthesize a final recommendation.

What is the design it twice approach for APIs?

Design it twice, from John Ousterhout's A Philosophy of Software Design, means producing multiple genuinely different interface candidates instead of committing to your first idea. The value comes from the contrast between designs, which reveals trade-offs a single design hides.

How do I compare different API design options objectively?

Use a comparison table covering number of operations, caller knowledge required, error handling location, composability, and fit for the common case. Then apply criteria like interface simplicity, module depth, and ease of correct use to explain why differences matter.

When should I not use divergent interface exploration?

Skip it when the interface is already locked in, when the module is trivial with an obvious shape, or when you need an implementation plan rather than design options. For turning a chosen design into execution steps, use a planning skill instead.

What makes two interface designs radically different?

Radically different designs have different information-hiding boundaries, not just different method names or parameter orders. For example, a minimal two-method surface versus exposed composable primitives versus a one-line common-case API represent real divergence.