[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6P4J1J5467YAMDTC0YRGC3F":3,"skill-same:01M6P4J1J5467YAMDTC0YRGC3F":50},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":14,"categories":15,"keywords":16,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":21,"frontMatter":22,"refName":23,"commitSha":24,"skillDirectory":25,"forksCount":12,"repositoryHtmlUrl":26,"repositoryHomepageUrl":6,"ownerHtmlUrl":27,"ownerBlogUrl":28,"ownerDescription":6,"updatedAt":29,"install":30,"resources":43},"01M6P4J1J5467YAMDTC0YRGC3F","route-handlers",null,"dexter-cnx\u002Fagent-engineering-toolkit","dexter-cnx","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F73522389?v=4","01M6K09WYAAXJXMR26H00WJ2AT","01M6P370Z0XCZ7NC67MJ2MRW94",0,"MIT","https:\u002F\u002Fgithub.com\u002Fdexter-cnx\u002Fagent-engineering-toolkit\u002Fblob\u002Fmain\u002Foverlays\u002Fweb-frontend-nextjs\u002Fskills\u002Froute-handlers\u002Fskill.md",[],[17,18],"route","route handlers","2026-11-10 10:12:30",false,"# Route Handlers\n\nFollow `..\u002F_shared\u002Fskill-contract.md`.\n\n## Purpose\nCreate thin HTTP route handlers for Next.js route endpoints.\n\n## Use when\n- you need an HTTP endpoint in the frontend app\n\n## Do not use when\n- the task is page composition\n- the task is backend API architecture\n\n## Inputs required\n- request shape\n- response shape\n- validation rules\n\n## Outputs expected\n- handler file\n- mapping notes\n- error response behavior\n\n## Workflow\n1. Define request and response shapes.\n2. Keep handler logic thin.\n3. Move reusable work to services or helpers.\n4. Add validation and error handling.\n5. Verify the route contract.\n\n## Validation checklist\n- [ ] Handler is thin\n- [ ] Validation is explicit\n- [ ] Error responses are consistent\n\n## References\n- `..\u002F..\u002Fprompts\u002Fgenerate_nextjs_feature.md`\n\n",{},"main","3035171e2986d5fdb445e694b9013fbdf58b3ff6","overlays\u002Fweb-frontend-nextjs\u002Fskills\u002Froute-handlers","https:\u002F\u002Fgithub.com\u002Fdexter-cnx\u002Fagent-engineering-toolkit","https:\u002F\u002Fgithub.com\u002Fdexter-cnx","https:\u002F\u002Fdexter-cnx.github.io\u002Fportfolio\u002F","2026-05-26 14:24:27",{"source":7,"skillName":5,"commands":31,"prompt":41,"zipAvailable":42},[32,35,38],{"tool":33,"command":34},"npx","npx skills add dexter-cnx\u002Fagent-engineering-toolkit --skill route-handlers",{"tool":36,"command":37},"bunx","bunx skills add dexter-cnx\u002Fagent-engineering-toolkit --skill route-handlers",{"tool":39,"command":40},"pnpm","pnpm dlx skills add dexter-cnx\u002Fagent-engineering-toolkit --skill route-handlers","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdexter-cnx\u002Fagent-engineering-toolkit\u002Fblob\u002Fmain\u002Foverlays\u002Fweb-frontend-nextjs\u002Fskills\u002Froute-handlers\u002Fskill.md",true,[44],{"path":45,"resourceType":46,"resourceTypeDesc":47,"sizeBytes":48,"sourceHtmlUrl":49},"README.md","REFERENCE","参考文档",86,"https:\u002F\u002Fgithub.com\u002Fdexter-cnx\u002Fagent-engineering-toolkit\u002Fblob\u002Fmain\u002Foverlays\u002Fweb-frontend-nextjs\u002Fskills\u002Froute-handlers\u002FREADME.md",[51,78,98,107,119,131],{"skillNo":52,"name":53,"nameZh":6,"description":54,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":55,"categories":56,"keywords":57,"publishedAt":19},"01M6P4P9S9017DTSFMRKGA7XW2","toolkit-i18n-operator","Use the toolkit-i18n CLI for repeated Flutter localization workflows with compact outputs, CSV validation, key coverage reporting, generated JSON exports, and safe non-mutating behavior.","https:\u002F\u002Fgithub.com\u002Fdexter-cnx\u002Fagent-engineering-toolkit\u002Fblob\u002Fmain\u002Ftools\u002Ftoolkit-i18n\u002Fskills\u002Ftoolkit-i18n-operator\u002FSKILL.md",[],[58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77],"toolkit i18n operator","i18n","operator","toolkit","flutter localization","cli","safe","workflows","for","validation","with","csv","compact","reporting","json","flutter","behavior","coverage","generated","use",{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":94,"publishedAt":19},"01M6P4NREKE3P0XYV3RBBWC987","toolkit-design-operator","Use the toolkit-design CLI for repeated repository workflows.","https:\u002F\u002Fgithub.com\u002Fdexter-cnx\u002Fagent-engineering-toolkit\u002Fblob\u002Fmain\u002Ftools\u002Ftoolkit-design\u002Fskills\u002Ftoolkit-design-operator\u002FSKILL.md",[84,89],{"categoryNo":85,"categoryName":86,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000015","视觉设计","SCENARIO","使用场景",{"categoryNo":90,"categoryName":91,"taxonomyType":92,"taxonomyTypeDesc":93},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[95,60,61,96,66,63,65,97,77],"toolkit design operator","design","repository",{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":104,"publishedAt":19},"01M6P4NNSQ09QFPYG2PMPWEA94","toolkit-ci-operator","Use the toolkit-ci CLI for repeated repository workflows.","https:\u002F\u002Fgithub.com\u002Fdexter-cnx\u002Fagent-engineering-toolkit\u002Fblob\u002Fmain\u002Ftools\u002Ftoolkit-ci\u002Fskills\u002Ftoolkit-ci-operator\u002FSKILL.md",[],[105,106,60,61,97,63,65,77,66],"toolkit ci operator","ci",{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":113,"publishedAt":19},"01M6P4NK636991P6WWQ6X8HDYX","toolkit-arch-operator","Use the toolkit-arch CLI for repeated repository workflows, including Flutter i18n usage scans, layer checks, and localization coverage.","https:\u002F\u002Fgithub.com\u002Fdexter-cnx\u002Fagent-engineering-toolkit\u002Fblob\u002Fmain\u002Ftools\u002Ftoolkit-arch\u002Fskills\u002Ftoolkit-arch-operator\u002FSKILL.md",[],[114,115,61,60,59,116,117,66,77,75,73,118,97,65,63],"toolkit arch operator","arch","usage","layer","localization",{"skillNo":120,"name":121,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":127,"publishedAt":19},"01M6P4NF18XGVSG2NR01E1DX0R","web-testing","https:\u002F\u002Fgithub.com\u002Fdexter-cnx\u002Fagent-engineering-toolkit\u002Fblob\u002Fmain\u002Foverlays\u002Fweb-frontend\u002Fskills\u002Fweb-testing\u002Fskill.md",[124],{"categoryNo":125,"categoryName":126,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000008","测试与质量",[128,129,130],"web testing","web","testing",{"skillNo":132,"name":133,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":6,"repositoryNo":11,"starsCount":12,"licenseSpdxId":13,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":136,"publishedAt":19},"01M6P4MVK07EJ75FQTFN54AGPM","web-state","https:\u002F\u002Fgithub.com\u002Fdexter-cnx\u002Fagent-engineering-toolkit\u002Fblob\u002Fmain\u002Foverlays\u002Fweb-frontend\u002Fskills\u002Fweb-state\u002Fskill.md",[],[129,137,138],"state","web state"]