[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6P714JRWFSJHMYAMJ8M2VRZ":3,"skill-same:01M6P714JRWFSJHMYAMJ8M2VRZ":75},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":28,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":14,"repositoryHtmlUrl":52,"repositoryHomepageUrl":6,"ownerHtmlUrl":53,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":54,"install":55,"resources":68},"01M6P714JRWFSJHMYAMJ8M2VRZ","design-an-interface",null,"Generate multiple radically different interface designs for a module using parallel sub-agents. Use when user wants to design an API, explore interface options, compare module shapes, or mentions \"design it twice\".","asushiroo\u002Fdotfiles","asushiroo","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F113016352?v=4","01M6P6Z9RW9SDSR9XHPMBAYVE6","asushiro","01M6P6Z9WSWDRXZNZCSB4W5JC2",0,"MIT","https:\u002F\u002Fgithub.com\u002Fasushiroo\u002Fdotfiles\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fdesign-an-interface\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"design","design an interface","interface","generate","api","explore","parallel","user","use","options","module","compare","it","design it","for","2026-11-10 10:12:30",false,"---\nname: design-an-interface\ndescription: Generate multiple radically different interface designs for a module using parallel sub-agents. Use when user wants to design an API, explore interface options, compare module shapes, or mentions \"design it twice\".\n---\n\n# Design an Interface\n\nBased on \"Design It Twice\" from \"A Philosophy of Software Design\": your first idea is unlikely to be the best. Generate multiple radically different designs, then compare.\n\n## Workflow\n\n### 1. Gather Requirements\n\nBefore designing, understand:\n\n- [ ] What problem does this module solve?\n- [ ] Who are the callers? (other modules, external users, tests)\n- [ ] What are the key operations?\n- [ ] Any constraints? (performance, compatibility, existing patterns)\n- [ ] What should be hidden inside vs exposed?\n\nAsk: \"What does this module need to do? Who will use it?\"\n\n### 2. Generate Designs (Parallel Sub-Agents)\n\nSpawn 3+ sub-agents simultaneously using Task tool. Each must produce a **radically different** approach.\n\n```\nPrompt template for each sub-agent:\n\nDesign an interface for: [module description]\n\nRequirements: [gathered requirements]\n\nConstraints for this design: [assign a different constraint to each agent]\n- Agent 1: \"Minimize method count - aim for 1-3 methods max\"\n- Agent 2: \"Maximize flexibility - support many use cases\"\n- Agent 3: \"Optimize for the most common case\"\n- Agent 4: \"Take inspiration from [specific paradigm\u002Flibrary]\"\n\nOutput format:\n1. Interface signature (types\u002Fmethods)\n2. Usage example (how caller uses it)\n3. What this design hides internally\n4. Trade-offs of this approach\n```\n\n### 3. Present Designs\n\nShow each design with:\n\n1. **Interface signature** - types, methods, params\n2. **Usage examples** - how callers actually use it in practice\n3. **What it hides** - complexity kept internal\n\nPresent designs sequentially so user can absorb each approach before comparison.\n\n### 4. Compare Designs\n\nAfter showing all designs, compare them on:\n\n- **Interface simplicity**: fewer methods, simpler params\n- **General-purpose vs specialized**: flexibility vs focus\n- **Implementation efficiency**: does shape allow efficient internals?\n- **Depth**: small interface hiding significant complexity (good) vs large interface with thin implementation (bad)\n- **Ease of correct use** vs **ease of misuse**\n\nDiscuss trade-offs in prose, not tables. Highlight where designs diverge most.\n\n### 5. Synthesize\n\nOften the best design combines insights from multiple options. Ask:\n\n- \"Which design best fits your primary use case?\"\n- \"Any elements from other designs worth incorporating?\"\n\n## Evaluation Criteria\n\nFrom \"A Philosophy of Software Design\":\n\n**Interface simplicity**: Fewer methods, simpler params = easier to learn and use correctly.\n\n**General-purpose**: Can handle future use cases without changes. But beware over-generalization.\n\n**Implementation efficiency**: Does interface shape allow efficient implementation? Or force awkward internals?\n\n**Depth**: Small interface hiding significant complexity = deep module (good). Large interface with thin implementation = shallow module (avoid).\n\n## Anti-Patterns\n\n- Don't let sub-agents produce similar designs - enforce radical difference\n- Don't skip comparison - the value is in contrast\n- Don't implement - this is purely about interface shape\n- Don't evaluate based on implementation effort\n","# Design an Interface\n\nBased on \"Design It Twice\" from \"A Philosophy of Software Design\": your first idea is unlikely to be the best. Generate multiple radically different designs, then compare.\n\n## Workflow\n\n### 1. Gather Requirements\n\nBefore designing, understand:\n\n- [ ] What problem does this module solve?\n- [ ] Who are the callers? (other modules, external users, tests)\n- [ ] What are the key operations?\n- [ ] Any constraints? (performance, compatibility, existing patterns)\n- [ ] What should be hidden inside vs exposed?\n\nAsk: \"What does this module need to do? Who will use it?\"\n\n### 2. Generate Designs (Parallel Sub-Agents)\n\nSpawn 3+ sub-agents simultaneously using Task tool. Each must produce a **radically different** approach.\n\n```\nPrompt template for each sub-agent:\n\nDesign an interface for: [module description]\n\nRequirements: [gathered requirements]\n\nConstraints for this design: [assign a different constraint to each agent]\n- Agent 1: \"Minimize method count - aim for 1-3 methods max\"\n- Agent 2: \"Maximize flexibility - support many use cases\"\n- Agent 3: \"Optimize for the most common case\"\n- Agent 4: \"Take inspiration from [specific paradigm\u002Flibrary]\"\n\nOutput format:\n1. Interface signature (types\u002Fmethods)\n2. Usage example (how caller uses it)\n3. What this design hides internally\n4. Trade-offs of this approach\n```\n\n### 3. Present Designs\n\nShow each design with:\n\n1. **Interface signature** - types, methods, params\n2. **Usage examples** - how callers actually use it in practice\n3. **What it hides** - complexity kept internal\n\nPresent designs sequentially so user can absorb each approach before comparison.\n\n### 4. Compare Designs\n\nAfter showing all designs, compare them on:\n\n- **Interface simplicity**: fewer methods, simpler params\n- **General-purpose vs specialized**: flexibility vs focus\n- **Implementation efficiency**: does shape allow efficient internals?\n- **Depth**: small interface hiding significant complexity (good) vs large interface with thin implementation (bad)\n- **Ease of correct use** vs **ease of misuse**\n\nDiscuss trade-offs in prose, not tables. Highlight where designs diverge most.\n\n### 5. Synthesize\n\nOften the best design combines insights from multiple options. Ask:\n\n- \"Which design best fits your primary use case?\"\n- \"Any elements from other designs worth incorporating?\"\n\n## Evaluation Criteria\n\nFrom \"A Philosophy of Software Design\":\n\n**Interface simplicity**: Fewer methods, simpler params = easier to learn and use correctly.\n\n**General-purpose**: Can handle future use cases without changes. But beware over-generalization.\n\n**Implementation efficiency**: Does interface shape allow efficient implementation? Or force awkward internals?\n\n**Depth**: Small interface hiding significant complexity = deep module (good). Large interface with thin implementation = shallow module (avoid).\n\n## Anti-Patterns\n\n- Don't let sub-agents produce similar designs - enforce radical difference\n- Don't skip comparison - the value is in contrast\n- Don't implement - this is purely about interface shape\n- Don't evaluate based on implementation effort\n",{"name":5,"description":7},"main","820a8ecb416e59312ffc2b60c29b66eaf5aa27a4",".codex\u002Fskills\u002Fdesign-an-interface","https:\u002F\u002Fgithub.com\u002Fasushiroo\u002Fdotfiles","https:\u002F\u002Fgithub.com\u002Fasushiroo","2026-10-02 15:40:43",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add asushiroo\u002Fdotfiles --skill design-an-interface",{"tool":61,"command":62},"bunx","bunx skills add asushiroo\u002Fdotfiles --skill design-an-interface",{"tool":64,"command":65},"pnpm","pnpm dlx skills add asushiroo\u002Fdotfiles --skill design-an-interface","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fasushiroo\u002Fdotfiles\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fdesign-an-interface\u002FSKILL.md",true,[69],{"path":70,"resourceType":71,"resourceTypeDesc":72,"sizeBytes":73,"sourceHtmlUrl":74},"agents\u002Fopenai.yaml","REFERENCE","参考文档",110,"https:\u002F\u002Fgithub.com\u002Fasushiroo\u002Fdotfiles\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fdesign-an-interface\u002Fagents\u002Fopenai.yaml",[76,96,111,123,136,159],{"skillNo":77,"name":78,"nameZh":6,"description":79,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":80,"categories":81,"keywords":88,"publishedAt":44},"01M6P7AB02738RGKB9RM8QHCA5","writing-shape","Writing, exploit — shape raw material into an article, paragraph by paragraph.","https:\u002F\u002Fgithub.com\u002Fasushiroo\u002Fdotfiles\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fwriting-shape\u002FSKILL.md",[82,85],{"categoryNo":83,"categoryName":84,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":86,"categoryName":87,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000036","内容创作者",[89,90,91,92,93,94,95],"shape","writing shape","writing","exploit","article","material","true",{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":104,"publishedAt":44},"01M6P7A81YB2M6P1V7C0BC5YP9","writing-great-skills","Reference for writing and editing skills well — the vocabulary and principles that make a skill predictable.","https:\u002F\u002Fgithub.com\u002Fasushiroo\u002Fdotfiles\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fwriting-great-skills\u002FSKILL.md",[102,103],{"categoryNo":83,"categoryName":84,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":86,"categoryName":87,"taxonomyType":26,"taxonomyTypeDesc":27},[91,105,106,107,108,109,110,95,43],"writing great skills","editing","reference","vocabulary","make","principles",{"skillNo":112,"name":113,"nameZh":6,"description":114,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":115,"categories":116,"keywords":119,"publishedAt":44},"01M6P7A57S23PPT7MY9E9E08AB","writing-fragments","Writing, explore — mine raw fragments, no structure yet.","https:\u002F\u002Fgithub.com\u002Fasushiroo\u002Fdotfiles\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fwriting-fragments\u002FSKILL.md",[117,118],{"categoryNo":83,"categoryName":84,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":86,"categoryName":87,"taxonomyType":26,"taxonomyTypeDesc":27},[120,91,121,34,122,95],"writing fragments","mine","structure",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":131,"publishedAt":44},"01M6P7A2S5VH0PPWAJTBBH6987","writing-beats","Writing, exploit — assemble raw material into a journey of beats, grounding each term before a beat leans on it.","https:\u002F\u002Fgithub.com\u002Fasushiroo\u002Fdotfiles\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fwriting-beats\u002FSKILL.md",[129,130],{"categoryNo":83,"categoryName":84,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":86,"categoryName":87,"taxonomyType":26,"taxonomyTypeDesc":27},[91,132,92,95,133,41,94,134,135],"writing beats","grounding","journey","assemble",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":142,"publishedAt":44},"01M6P79J16SAK6T4CF0RDN62W6","wizard","Generate an interactive bash wizard that walks a human through a manual procedure — third-party setup, a one-off migration, an A→B state transition — opening URLs, capturing values, confirming each step, and writing .env files and GitHub Actions secrets.","https:\u002F\u002Fgithub.com\u002Fasushiroo\u002Fdotfiles\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fwizard\u002FSKILL.md",[],[138,143,144,145,146,147,148,149,150,151,152,153,154,155,95,156,157,32,158,91],"transition","party","values","manual","github actions","env","third-party","human","files","migration","interactive","Bash","secrets","actions","state","github",{"skillNo":160,"name":161,"nameZh":6,"description":162,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":163,"categories":164,"keywords":165,"publishedAt":44},"01M6P79EMS5ZYR75Z3WJBZGG9P","wayfinder","Plan a huge chunk of work — more than one agent session can hold — as a shared map of decision tickets on your issue tracker, and resolve them one at a time until the way to the destination is clear.","https:\u002F\u002Fgithub.com\u002Fasushiroo\u002Fdotfiles\u002Fblob\u002Fmain\u002F.codex\u002Fskills\u002Fwayfinder\u002FSKILL.md",[],[161,166,167,168,169,170,171,172,173,174,95,175,176,177,178,179,180,181,182,183],"tracker","more","issue tracker","tickets","clear","as","shared","time","map","issue","session","one at a time","work","decision","plan","chunk","at","can"]