[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DY3N3BWCNYMMHTK1FFMT49":3,"skill-same:01M6DY3N3BWCNYMMHTK1FFMT49":94},{"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":16,"sourceHtmlUrl":17,"categories":18,"keywords":32,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":54,"ownerHtmlUrl":55,"ownerBlogUrl":54,"ownerDescription":56,"updatedAt":57,"install":58,"resources":71},"01M6DY3N3BWCNYMMHTK1FFMT49","codebase-design",null,"This skill should be used when designing a module interface, reducing coupling, choosing dependency seams, improving testability, or comparing architecture alternatives.","OyadotAI\u002Foya-browser","OyadotAI","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F236266305?v=4","01M6DY3AA3S9J5ZRTV037PHZ9P","Oya AI","01M6DY3AEYV4GDJ8J1QCMPVJ7P",349,"MIT","https:\u002F\u002Fgithub.com\u002FOyadotAI\u002Foya-browser\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fcodebase-design\u002FLICENSE","https:\u002F\u002Fgithub.com\u002FOyadotAI\u002Foya-browser\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fcodebase-design\u002FSKILL.md",[19,24,27],{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},"01JBSEEDCAT000000000000015","视觉设计","SCENARIO","使用场景",{"categoryNo":25,"categoryName":26,"taxonomyType":22,"taxonomyTypeDesc":23},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":28,"categoryName":29,"taxonomyType":30,"taxonomyTypeDesc":31},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[33,34,35,36,37,38,39,40,41,42,43],"design","codebase design","codebase","architecture","dependency","module","testability","coupling","interface","alternatives","when","2026-11-10 10:12:30",false,"---\nname: codebase-design\ndescription: \"This skill should be used when designing a module interface, reducing coupling, choosing dependency seams, improving testability, or comparing architecture alternatives.\"\n---\n\n# Codebase design\n\nDesign substantial behavior behind a small, understandable interface. Follow the project's\ninstructions, glossary, and existing primitives. Preserve the assignment's scope and authority:\na design assignment produces a proposal; implementation requires an implementation assignment.\n\n## Trace the actual design\n\nRead the relevant callers, implementation, tests, and architectural decisions. Identify what\neach caller must know: types, invariants, ordering, errors, required configuration, resource\nownership, and performance guarantees. Treat all of these as part of the interface. A simple\nsignature that hides undocumented ordering requirements still has a complex interface.\n\nDescribe a concrete caller journey and where knowledge is repeated. Finish this step with\nsource locations and an inventory of the facts callers currently carry.\n\n## Find useful depth\n\nEvaluate capability per fact a caller must learn, rather than implementation line counts.\nConcentrate decisions and failure handling where a fix can apply to all callers. Use the\ndeletion thought experiment: if removing an abstraction spreads complexity across callers,\nit earns its place; if the complexity disappears, investigate whether it is only forwarding.\nRetain forwarding required for compatibility, policy, or ownership when those purposes are real.\n\nDistinguish the public interface from internal composition. Keep internal helpers private when\ncallers have no reason to know them. Use the project's terms; introduce new vocabulary only\nwhen it makes a concrete distinction clearer.\n\n## Place dependencies deliberately\n\nA seam is a place to change behavior without changing its caller; an adapter supplies behavior\nthere. Justify a seam with actual variation, such as production I\u002FO and a realistic test adapter.\nKeep pure calculations separate from effects where useful. Accept dependencies at an ownership\nboundary instead of constructing hidden global resources, without adding interfaces to every\nfunction mechanically.\n\nFor consolidation or dependencies across storage and network layers, read\n[references\u002Fdeepening.md](references\u002Fdeepening.md). For a consequential design choice with\ncredible alternatives, read [references\u002Falternatives.md](references\u002Falternatives.md).\n\n## Return a bounded design\n\nProvide the proposed interface, one representative caller, hidden behavior, dependency owners,\nfailure paths, compatibility impact, and migration order. Explain which existing primitives\nare reused. Account for cancellation, cleanup, concurrency, and rollback where relevant.\n\nDescribe verification through the interface that callers actually use. Preserve distinct\nbehavioral coverage during a refactor; identify any adapter or integration behavior a fake\ncannot prove. Run or write tests only within the user's authorization. Distinguish code-based\nreasoning from executed evidence, and state what remains uncertain.\n\nComplete when the recommendation explains how callers become simpler, where maintenance\nconcentrates, and how the proposed contract can be checked. Use the team technical-plan asset\nwhen assigned as principal. Keep the proposal proportional to the change.\n\nAdapted from Matt Pocock's engineering skills; see [SOURCE.md](SOURCE.md) and [LICENSE](LICENSE).\n","# Codebase design\n\nDesign substantial behavior behind a small, understandable interface. Follow the project's\ninstructions, glossary, and existing primitives. Preserve the assignment's scope and authority:\na design assignment produces a proposal; implementation requires an implementation assignment.\n\n## Trace the actual design\n\nRead the relevant callers, implementation, tests, and architectural decisions. Identify what\neach caller must know: types, invariants, ordering, errors, required configuration, resource\nownership, and performance guarantees. Treat all of these as part of the interface. A simple\nsignature that hides undocumented ordering requirements still has a complex interface.\n\nDescribe a concrete caller journey and where knowledge is repeated. Finish this step with\nsource locations and an inventory of the facts callers currently carry.\n\n## Find useful depth\n\nEvaluate capability per fact a caller must learn, rather than implementation line counts.\nConcentrate decisions and failure handling where a fix can apply to all callers. Use the\ndeletion thought experiment: if removing an abstraction spreads complexity across callers,\nit earns its place; if the complexity disappears, investigate whether it is only forwarding.\nRetain forwarding required for compatibility, policy, or ownership when those purposes are real.\n\nDistinguish the public interface from internal composition. Keep internal helpers private when\ncallers have no reason to know them. Use the project's terms; introduce new vocabulary only\nwhen it makes a concrete distinction clearer.\n\n## Place dependencies deliberately\n\nA seam is a place to change behavior without changing its caller; an adapter supplies behavior\nthere. Justify a seam with actual variation, such as production I\u002FO and a realistic test adapter.\nKeep pure calculations separate from effects where useful. Accept dependencies at an ownership\nboundary instead of constructing hidden global resources, without adding interfaces to every\nfunction mechanically.\n\nFor consolidation or dependencies across storage and network layers, read\n[references\u002Fdeepening.md](references\u002Fdeepening.md). For a consequential design choice with\ncredible alternatives, read [references\u002Falternatives.md](references\u002Falternatives.md).\n\n## Return a bounded design\n\nProvide the proposed interface, one representative caller, hidden behavior, dependency owners,\nfailure paths, compatibility impact, and migration order. Explain which existing primitives\nare reused. Account for cancellation, cleanup, concurrency, and rollback where relevant.\n\nDescribe verification through the interface that callers actually use. Preserve distinct\nbehavioral coverage during a refactor; identify any adapter or integration behavior a fake\ncannot prove. Run or write tests only within the user's authorization. Distinguish code-based\nreasoning from executed evidence, and state what remains uncertain.\n\nComplete when the recommendation explains how callers become simpler, where maintenance\nconcentrates, and how the proposed contract can be checked. Use the team technical-plan asset\nwhen assigned as principal. Keep the proposal proportional to the change.\n\nAdapted from Matt Pocock's engineering skills; see [SOURCE.md](SOURCE.md) and [LICENSE](LICENSE).\n",{"name":5,"description":7},"main","8f05c557ae3d6a2d7ece88c6762a78eca078c740",".agents\u002Fskills\u002Fcodebase-design",274,"https:\u002F\u002Fgithub.com\u002FOyadotAI\u002Foya-browser","https:\u002F\u002Foyabrowser.com","https:\u002F\u002Fgithub.com\u002FOyadotAI","The browser built for AI agents. Sign in once, do the task once, and Oya replays it forever with no model in the loop.","2026-11-14 01:05:11",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add OyadotAI\u002Foya-browser --skill codebase-design",{"tool":64,"command":65},"bunx","bunx skills add OyadotAI\u002Foya-browser --skill codebase-design",{"tool":67,"command":68},"pnpm","pnpm dlx skills add OyadotAI\u002Foya-browser --skill codebase-design","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FOyadotAI\u002Foya-browser\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fcodebase-design\u002FSKILL.md",true,[72,78,82,86,90],{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},"index.json","REFERENCE","参考文档",602,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Foffensive-exploit-dev-course\u002Findex.json",{"path":79,"resourceType":79,"resourceTypeDesc":80,"sizeBytes":81,"sourceHtmlUrl":16},"LICENSE","许可证",1068,{"path":83,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002Falternatives.md",1025,"https:\u002F\u002Fgithub.com\u002FOyadotAI\u002Foya-browser\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fcodebase-design\u002Freferences\u002Falternatives.md",{"path":87,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":88,"sourceHtmlUrl":89},"references\u002Fdeepening.md",1439,"https:\u002F\u002Fgithub.com\u002FOyadotAI\u002Foya-browser\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fcodebase-design\u002Freferences\u002Fdeepening.md",{"path":91,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":92,"sourceHtmlUrl":93},"SOURCE.md",883,"https:\u002F\u002Fgithub.com\u002FOyadotAI\u002Foya-browser\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fcodebase-design\u002FSOURCE.md",[95,116,136,154,171,180],{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":99,"sourceHtmlUrl":100,"categories":101,"keywords":109,"publishedAt":44},"01M6DY5FBHMSSWG32SRRBBHSCY","writing-for-agents","This skill should be used when creating or editing skills, agent definitions, AGENTS.md, CLAUDE.md, or reference documents intended for agents.","https:\u002F\u002Fgithub.com\u002FOyadotAI\u002Foya-browser\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwriting-for-agents\u002FLICENSE","https:\u002F\u002Fgithub.com\u002FOyadotAI\u002Foya-browser\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwriting-for-agents\u002FSKILL.md",[102,105,106],{"categoryNo":103,"categoryName":104,"taxonomyType":22,"taxonomyTypeDesc":23},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":25,"categoryName":26,"taxonomyType":22,"taxonomyTypeDesc":23},{"categoryNo":107,"categoryName":108,"taxonomyType":30,"taxonomyTypeDesc":31},"01JBSEEDCAT000000000000036","内容创作者",[110,111,112,113,43,114,115],"writing","for","writing for agents","reference","editing","documents",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":120,"sourceHtmlUrl":121,"categories":122,"keywords":127,"publishedAt":44},"01M6DY55GWS0XA55ZCXTP13J7D","research","This skill should be used when researching a technical question, checking current API facts, comparing documented capabilities, or gathering primary-source evidence for a decision.","https:\u002F\u002Fgithub.com\u002FOyadotAI\u002Foya-browser\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fresearch\u002FLICENSE","https:\u002F\u002Fgithub.com\u002FOyadotAI\u002Foya-browser\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fresearch\u002FSKILL.md",[123,126],{"categoryNo":124,"categoryName":125,"taxonomyType":22,"taxonomyTypeDesc":23},"01JBSEEDCAT000000000000021","资料检索与研究",{"categoryNo":25,"categoryName":26,"taxonomyType":22,"taxonomyTypeDesc":23},[118,128,129,130,131,132,133,134,111,135,43],"capabilities","api","decision","technical","question","evidence","facts","source",{"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":140,"sourceHtmlUrl":141,"categories":142,"keywords":144,"publishedAt":44},"01M6DY4ZKCTSBBHRBYJ32B1K3Q","handoff","Summarize the current work so another session can continue it.","https:\u002F\u002Fgithub.com\u002FOyadotAI\u002Foya-browser\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fhandoff\u002FLICENSE","https:\u002F\u002Fgithub.com\u002FOyadotAI\u002Foya-browser\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fhandoff\u002FSKILL.md",[143],{"categoryNo":25,"categoryName":26,"taxonomyType":22,"taxonomyTypeDesc":23},[138,145,146,147,148,149,150,151,152,153],"summarize","continue","work","session","next","focus","it","true","can",{"skillNo":155,"name":156,"nameZh":6,"description":157,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":158,"sourceHtmlUrl":159,"categories":160,"keywords":162,"publishedAt":44},"01M6DY4RMF43ZK6E4EC1PM0A8N","diagnosing-bugs","This skill should be used when diagnosing a reported bug, intermittent failure, stuck operation, or performance regression and isolating its cause with reproducible evidence.","https:\u002F\u002Fgithub.com\u002FOyadotAI\u002Foya-browser\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fdiagnosing-bugs\u002FLICENSE","https:\u002F\u002Fgithub.com\u002FOyadotAI\u002Foya-browser\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fdiagnosing-bugs\u002FSKILL.md",[161],{"categoryNo":25,"categoryName":26,"taxonomyType":22,"taxonomyTypeDesc":23},[163,164,43,165,166,167,133,168,169,170],"bugs","diagnosing bugs","performance","Reproducible","regression","bug","operation","with",{"skillNo":172,"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":173,"sourceHtmlUrl":174,"categories":175,"keywords":179,"publishedAt":44},"01M6DY4NAXPP2ZQ4GH1Z339RQH","https:\u002F\u002Fgithub.com\u002FOyadotAI\u002Foya-browser\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fcodebase-design\u002FLICENSE","https:\u002F\u002Fgithub.com\u002FOyadotAI\u002Foya-browser\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fcodebase-design\u002FSKILL.md",[176,177,178],{"categoryNo":20,"categoryName":21,"taxonomyType":22,"taxonomyTypeDesc":23},{"categoryNo":25,"categoryName":26,"taxonomyType":22,"taxonomyTypeDesc":23},{"categoryNo":28,"categoryName":29,"taxonomyType":30,"taxonomyTypeDesc":31},[35,34,33,37,36,38,39,40,41,42,43],{"skillNo":181,"name":182,"nameZh":6,"description":183,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":184,"sourceHtmlUrl":185,"categories":186,"keywords":194,"publishedAt":44},"01M6DY4JJYJBGA4VMNRQ7636BF","code-review","This skill should be used when reviewing a branch, pull request, working tree, or changes since a commit for repository standards and the user's requested behavior.","https:\u002F\u002Fgithub.com\u002FOyadotAI\u002Foya-browser\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fcode-review\u002FLICENSE","https:\u002F\u002Fgithub.com\u002FOyadotAI\u002Foya-browser\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fcode-review\u002FSKILL.md",[187,190,191],{"categoryNo":188,"categoryName":189,"taxonomyType":22,"taxonomyTypeDesc":23},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":25,"categoryName":26,"taxonomyType":22,"taxonomyTypeDesc":23},{"categoryNo":192,"categoryName":193,"taxonomyType":30,"taxonomyTypeDesc":31},"01JBSEEDCAT000000000000030","开发工程师",[195,196,197,198,199,200,201,202,203,204,205,206,111,207,208,43],"review","code review","code","commit","pull request","pull","repository","branch","behavior","user","standards","tree","changes","request"]