design-an-interface
Skill15 starsChanged 14 days agoApache-2.0View on GitHub
Generate multiple radically different interface designs for a module, then compare and synthesize. Use when the user wants to design an API, explore interface options, compare module shapes, or says "design it twice" / "give me options" / "what should this interface look like". Also trigger proactively when a user is about to implement something non-trivial and hasn't locked in an interface yet. Not /insight-explore (brainstorms approaches as prose) or /plan-create (turns a chosen design into a phased plan) — this produces concrete, comparable interface designs.
59 other projects use a version of this.
Adopted by
Most recently taken up by
- chrislacey89/skillstheir own version, first seen Nov 4, 2026
- Boom-Vitt/skills-thaitheir own version, first seen Nov 1, 2026
- kishan-ict/skillstheir own version, first seen Nov 1, 2026
- aveproject/avetheir own version, first seen Oct 31, 2026
- hmjBill/skillstheir own version, first seen Oct 29, 2026
- piotr-oles/skillstheir own version, first seen Oct 25, 2026
Used with
Projects with it also use ubiquitous-language, decision-mapping and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
kennethkeimSkillubiquitous-language
Extract a DDD-style ubiquitous language glossary from the current conversation, flagging ambiguities and proposing canonical terms. Saves to UBIQUITOUS_LANGUAGE.md. Use when user wants to define domain terms, build a glossary, harden terminology, create a ubiquitous language, or mentions "domain model" or "DDD".
Also in 39 projects that use this
FabienDehopreSkilldecision-mapping
Turn a loose idea into a sequenced map of investigation tickets, then drive them to resolution one at a time.
Also in 5 projects that use this
boyingliu01Skillbatch-grill-me
A relentless interview that asks every frontier question at once, round by round. Thin alias of `grilling` (#540) — upstream mattpocock/skills absorbed this protocol into grilling; XP-Gate keeps this name as the sprint-flow Phase 2 entry point so orchestration docs stay stable.
Also in 5 projects that use this
LesaniSkillwriting-beats
Shape an article as a journey of beats, choose-your-own-adventure style. The user picks a starting beat from the raw material, you write only that beat, then offer options for where to pivot next, beat by beat, until the article reaches a natural end. Use when the user has raw material and wants to assemble it as a narrative rather than an argument.
Also in 22 projects that use this
LesaniSkillwriting-shape
Take a markdown file of raw material and shape it into an article through a conversational session — drafting candidate openings, growing the piece paragraph by paragraph, arguing about format (lists, tables, callouts, quotes) at each step. Use when the user has a pile of notes, fragments, or a rough draft and wants help turning it into something publishable.
Also in 22 projects that use this
HK-hubSkillprd-to-plan
Turn a PRD into a multi-phase implementation plan using tracer-bullet vertical slices, saved as a local Markdown file in ./plans/. Use when user wants to break down a PRD, create an implementation plan, plan phases from a PRD, or mentions "tracer bullets".
Also in 6 projects that use this
- +1 more from Lesani
Other versions59 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 59
- wannabespace/conar★ 1.5ksame name
- amazingloft999-droid/mattpocock-skills★ 422same name
- Tiberriver256/mcp-server-azure-devops★ 399same name
- InditexTech/weavejs★ 266same name
- loulanyue/skills★ 231same name
- jagrat7/linux-wallpaper-engine★ 227same name
- aurorasoft2/Matt_Pocock_Skills★ 133same name
- VisualxIntelligence/mattpocok-skills★ 55same name
- aveproject/ave★ 24same name
- metrogg/AgentHub★ 19same name
49 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository95 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- llms.txtllms.txt
- agent-mailboxSkill
- agent-outputSkill
- ask-gateSkill
- ask-meSkill
- audit-coupled-constantSkill
- budget-checkSkill
- build-prototypeSkill
- caller-optionsSkill
- cold-reviewSkill
- debug-taskSkill
- define-termsSkill
- defuddleSkill
- diff-recapSkill
- directives-auditSkill
- domain-checkSkill
- double-checkSkill
- extract-signalSkill
- freshness-contractSkill
- github-syncSkill
- handoff-executeSkill
- handoffSkill
- headless-claudeSkill
- headless-codexSkill
- headless-geminiSkill
- headless-grokSkill
- headless-modelsSkill
- headless-update-modelsSkill
- headless-usageSkill
- human-drawSkill
- human-mergeSkill
- human-outputSkill
- human-rewriteSkill
- implement-taskSkill
- improve-codebase-architectureSkill
- insight-adversarialSkill
- insight-anglesSkill
- insight-assessSkill
- insight-critiqueSkill
- insight-cross-examineSkill
- insight-exploreSkill
- insight-premortemSkill
- insight-reference-classSkill
- insight-retroSkill
- insight-root-causeSkill
- insight-skill-gapSkill
- insight-test-assumptionSkill
- insight-value-of-informationSkill
- investigateSkill
- json-canvasSkill
- map-checkSkill
- map-initSkill
- map-maintainSkill
- map-rulesSkill
- map-thisSkill
- monorepo-depsSkill
- multi-agent-modeSkill
- next-skillsSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
6 rules. 0 are common, 6 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 55 edited versions we read keep these.
6
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 39
Don't proceed until you have real answers.
- Distinctive: line 43
If the runtime provides fresh isolated worker contexts: spawn the three designs within its supported bounded controls.
- Distinctive: line 49
Use these lenses to force divergence:
- Distinctive: line 57
Add a 4th for domain-specific shapes (event-driven, streaming, builder, type-state) when relevant.
- Distinctive: line 88
Write the synthesized design — concrete signatures, not description.
- Distinctive: line 97
Use these during Step 3. Don't apply them during generation.
“Common” is measured: kept by at least 6 in 10 of the 55 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
/design-an-interface
From "Design It Twice" (Ousterhout): your first idea is rarely the best. The value is in contrast — not in any single design.
Step 1 — Gather Requirements
Shallow intake produces shallow designs. Ask these specifically — not just "what does it do?":
- What is the one-sentence job of this module?
- Who are the callers? (other modules, end users, tests, CLI, external systems)
- Walk me through the happy path in code — what does the call site actually look like?
- What are the failure modes? What can go wrong, and who handles it?
- What must the interface hide? What should callers never need to know about?
- Any hard constraints? (performance, compatibility with existing patterns, language idioms)
- Is there a "most common case" that should be especially ergonomic?
Don't proceed until you have real answers. One vague sentence is not enough.
Step 2 — Generate Designs
If the runtime provides fresh isolated worker contexts: spawn the three designs within its supported bounded controls. Each agent gets the requirements plus its assigned lens and must produce a design that would surprise the others. Brief them to actively resist the obvious answer.
Without fresh contexts, produce the contrasting designs sequentially and complete each before the next. Label this a useful correlated same-context fallback; prior visible designs prevent a claim of independent generation.
Produce 3 radically different designs. Radically different means different information hiding boundaries — not just different method names or parameter orders. Three designs that all accept a config struct and return a result are not radically different, even if the method names differ.
Use these lenses to force divergence:
| Design | Constraint | Core question |
| Minimal | 1–3 operations max | What is the smallest surface that covers all cases? |
| Caller-empowering | Expose primitives; let caller compose | What if we trust the caller with more control? |
| Common-case-first | Optimize the happy path to one line | What if the 95% case has zero friction, even if edge cases are awkward? |
Add a 4th for domain-specific shapes (event-driven, streaming, builder, type-state) when relevant.
For each design, produce:
- Interface — concrete method signatures, types, function signatures. Not schematic.
- Usage example — real call-site code for: happy path, error case, one awkward case.
- What this hides — complexity that lives inside, invisible to callers.
- What this exposes — decisions or knowledge pushed onto the caller.
- Where it shines / breaks down — 1–3 honest sentences.
Step 3 — Compare
Fill this table, then write prose.
| Dimension | Design 1 | Design 2 | Design 3 |
| # of operations | |||
| Caller knowledge required | low/med/high | ||
| Error handling location | inside / outside | ||
| Composability | y/n | ||
| Fits most common case |
The table shows what. The prose explains why it matters. Go deep on where the designs diverge most — depth, misuse resistance, evolution over time, and the awkward case each design can't handle cleanly. Don't soften it. Say which designs have real problems.
Apply the Evaluation Criteria from the Reference section below.
Step 4 — Synthesize
This is the highest-value output. Produce something concrete:
- State your recommendation and why, referencing the comparison.
- Write the synthesized design — concrete signatures, not description. If one design wins outright, restate it as a clean spec. If the answer is "take X's shape, borrow Y's error handling, add Z's escape hatch," write that out.
- Name the one thing to get right — the decision that, if wrong, causes the most pain later.
Close by asking: "Does this fit your primary use case? Anything from the other designs worth keeping?"
Reference
Use these during Step 3. Don't apply them during generation.
Evaluation Criteria (APOSD)
- Interface simplicity — fewer methods, simpler params → easier to learn, harder to misuse.
- Depth — small interface hiding large complexity = deep module (good). Large interface over thin implementation = shallow module (avoid).
- General-purpose vs. specialized — can it handle adjacent use cases without changes? Beware over-generalization, but also beware interfaces that lock in today's assumptions.
- Implementation efficiency — does the interface allow an efficient implementation, or force awkward internals?
- Ease of correct use — the best interfaces make the right thing the natural thing.
Anti-Patterns
- Convergent designs — if all three designs are the same module with different names, you've failed. Start over with harder constraints.
- Skipping comparison — generating without comparing is just brainstorming. The value is in the contrast.
- Implementing — this skill is about interface shape. Don't write internals.
- Premature synthesis — don't merge designs during generation. Let them stay fully different until Step 4.
- Vague trade-offs — "more flexible" means nothing. More flexible how, for whom, at what cost?
Human output. This skill's handler-facing output obeys the human-output contract (
human-output/SKILL.md).
Next skills. On completion, run the Next Skills protocol (
next-skills/SKILL.md): surface thenext-skillsrecommendations from front-matter for the caller to pick. Offer only — never auto-invoke.
Self-improvement. On completion, run the Self-Improvement Protocol (
self-improve/SKILL.md): apply its signal taxonomy and threshold to this run; surface any surviving proposal for handler approval. Conservative — silent otherwise. Never auto-apply.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

