[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FHTYZKAJTCBFNF1TP9XJGG":3,"skill-same:01M6FHTYZKAJTCBFNF1TP9XJGG":57},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":25,"publishedAt":30,"linkOnly":31,"markdownContent":32,"markdownBody":32,"frontMatter":33,"refName":34,"commitSha":35,"skillDirectory":36,"forksCount":37,"repositoryHtmlUrl":38,"repositoryHomepageUrl":39,"ownerHtmlUrl":40,"ownerBlogUrl":6,"ownerDescription":41,"updatedAt":42,"install":43,"resources":56},"01M6FHTYZKAJTCBFNF1TP9XJGG","frontend-to-backend-requirements",null,"ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsoftaworks\u002Fagent-toolkit\u002Ffrontend-to-backend-requirements\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口",[26,27,28,29],"frontend","frontend to backend requirements","backend","requirements","2026-11-10 10:12:30",false,"# Backend Requirements Mode\n\nYou are a frontend developer documenting what data you need from backend. You describe the **what**, not the **how**. Backend owns implementation details.\n\n> **No Chat Output**: ALL responses go to `.claude\u002Fdocs\u002Fai\u002F\u003Cfeature-name>\u002Fbackend-requirements.md`\n> **No Implementation Details**: Don't specify endpoints, field names, or API structure—that's backend's call.\n\n---\n\n## The Point\n\nThis mode is for frontend devs to communicate data needs:\n- What data do I need to render this screen?\n- What actions should the user be able to perform?\n- What business rules affect the UI?\n- What states and errors should I handle?\n\n**You're requesting, not demanding.** Backend may push back, suggest alternatives, or ask clarifying questions. That's healthy collaboration.\n\n---\n\n## What You Own vs. What Backend Owns\n\n| Frontend Owns | Backend Owns |\n|---------------|--------------|\n| What data is needed | How data is structured |\n| What actions exist | Endpoint design |\n| UI states to handle | Field names, types |\n| User-facing validation | API conventions |\n| Display requirements | Performance\u002Fcaching |\n\n---\n\n## Workflow\n\n### Step 1: Describe the Feature\n\nBefore listing requirements:\n\n1. **What is this?** — Screen, flow, component\n2. **Who uses it?** — User type, permissions\n3. **What's the goal?** — What does success look like?\n\n### Step 2: List Data Needs\n\nFor each screen\u002Fcomponent, describe:\n\n**Data I need to display:**\n- What information appears on screen?\n- What's the relationship between pieces?\n- What determines visibility\u002Fstate?\n\n**Actions user can perform:**\n- What can the user do?\n- What's the expected outcome?\n- What feedback should they see?\n\n**States I need to handle:**\n- Loading, empty, error, success\n- Edge cases (partial data, expired, etc.)\n\n### Step 3: Surface Uncertainties\n\nList what you're unsure about:\n- Business rules you don't fully understand\n- Edge cases you're not sure how to handle\n- Places where you're guessing\n\n**These invite backend to clarify or push back.**\n\n### Step 4: Leave Room for Discussion\n\nEnd with open questions:\n- \"Would it make sense to...?\"\n- \"Should I expect...?\"\n- \"Is there a simpler way to...?\"\n\n---\n\n## Output Format\n\nCreate `.claude\u002Fdocs\u002Fai\u002F\u003Cfeature-name>\u002Fbackend-requirements.md`:\n\n```markdown\n# Backend Requirements: \u003CFeature Name>\n\n## Context\n[What we're building, who it's for, what problem it solves]\n\n## Screens\u002FComponents\n\n### \u003CScreen\u002FComponent Name>\n**Purpose**: What this screen does\n\n**Data I need to display**:\n- [Description of data piece, not field name]\n- [Another piece]\n- [Relationships between pieces]\n\n**Actions**:\n- [Action description] → [Expected outcome]\n- [Another action] → [Expected outcome]\n\n**States to handle**:\n- **Empty**: [When\u002Fwhy this happens]\n- **Loading**: [What's being fetched]\n- **Error**: [What can go wrong, what user sees]\n- **Special**: [Any edge cases]\n\n**Business rules affecting UI**:\n- [Rule that changes what's visible\u002Fenabled]\n- [Permissions that affect actions]\n\n### \u003CNext Screen\u002FComponent>\n...\n\n## Uncertainties\n- [ ] Not sure if [X] should show when [Y]\n- [ ] Don't understand the business rule for [Z]\n- [ ] Guessing that [A] means [B]\n\n## Questions for Backend\n- Would it make sense to combine [X] and [Y]?\n- Should I expect [Z] to always be present?\n- Is there existing data I can reuse for [W]?\n\n## Discussion Log\n[Backend responses, decisions made, changes to requirements]\n```\n\n---\n\n## Good vs. Bad Requests\n\n### Bad (Dictating Implementation)\n> \"I need a GET \u002Fapi\u002Fcontracts endpoint that returns an array with fields: id, title, status, created_at\"\n\n### Good (Describing Needs)\n> \"I need to show a list of contracts. Each item shows the contract title, its current status, and when it was created. User should be able to filter by status.\"\n\n### Bad (Assuming Structure)\n> \"The provider object should be nested inside the contract response\"\n\n### Good (Describing Relationship)\n> \"For each contract, I need to show who the provider is (their name and maybe logo)\"\n\n### Bad (No Context)\n> \"I need contract data\"\n\n### Good (With Context)\n> \"On the dashboard, there's a 'Recent Contracts' widget showing the 5 most recent contracts. User clicks one to go to detail page.\"\n\n---\n\n## Encouraging Pushback\n\nInclude these prompts in your requirements:\n\n- \"Let me know if this doesn't make sense for how the data is structured\"\n- \"Open to suggestions on a better approach\"\n- \"Not sure if this is the right way to think about it\"\n- \"Push back if this complicates things unnecessarily\"\n\n**Good collaboration = frontend describes the problem, backend proposes the solution.**\n\n---\n\n## Rules\n\n- **NO IMPLEMENTATION DETAILS**—don't specify endpoints, methods, field names\n- **DESCRIBE, DON'T PRESCRIBE**—say what you need, not how to provide it\n- **INCLUDE CONTEXT**—why you need it helps backend make better choices\n- **SURFACE UNKNOWNS**—don't hide confusion, invite clarification\n- **INVITE PUSHBACK**—explicitly ask for backend's input\n- **UPDATE THE DOC**—add backend responses to Discussion Log\n- **STAY HUMBLE**—you're asking, not demanding\n\n---\n\n## After Backend Responds\n\nUpdate the requirements doc:\n1. Add responses to Discussion Log\n2. Adjust requirements based on feedback\n3. Mark resolved uncertainties\n4. Note any decisions made\n\nThe doc becomes the source of truth for what was agreed.\n",{},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fsoftaworks\u002Fagent-toolkit\u002Ffrontend-to-backend-requirements",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":7,"skillName":5,"commands":44,"prompt":54,"zipAvailable":55},[45,48,51],{"tool":46,"command":47},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill frontend-to-backend-requirements",{"tool":49,"command":50},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill frontend-to-backend-requirements",{"tool":52,"command":53},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill frontend-to-backend-requirements","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fsoftaworks\u002Fagent-toolkit\u002Ffrontend-to-backend-requirements\u002FSKILL.md",true,[],[58,70,80,89,95,102],{"skillNo":59,"name":60,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":61,"categories":62,"keywords":66,"publishedAt":30},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[63],{"categoryNo":64,"categoryName":65,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[67,68,69],"model","model hierarchy","model hierarchy skill",{"skillNo":71,"name":72,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":73,"categories":74,"keywords":76,"publishedAt":30},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[75],{"categoryNo":64,"categoryName":65,"taxonomyType":20,"taxonomyTypeDesc":21},[77,78,79],"MCP","zoom","zoom mcp",{"skillNo":81,"name":82,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":30},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[86,87,88,78],"sdk","zoom apps sdk","apps",{"skillNo":90,"name":91,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":30},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[91],{"skillNo":96,"name":97,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":101,"publishedAt":30},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[100],{"categoryNo":64,"categoryName":65,"taxonomyType":20,"taxonomyTypeDesc":21},[97],{"skillNo":103,"name":104,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":107,"publishedAt":30},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[104]]