[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EB95A4TJANJCDVWTTZXWXR":3,"skill-same:01M6EB95A4TJANJCDVWTTZXWXR":69},{"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":18,"publishedAt":31,"linkOnly":32,"markdownContent":33,"markdownBody":34,"frontMatter":35,"refName":36,"commitSha":37,"skillDirectory":38,"forksCount":39,"repositoryHtmlUrl":40,"repositoryHomepageUrl":41,"ownerHtmlUrl":42,"ownerBlogUrl":6,"ownerDescription":43,"updatedAt":44,"install":45,"resources":58},"01M6EB95A4TJANJCDVWTTZXWXR","flutter-bloc-state-management",null,"BLoC\u002FCubit state management standards. ALWAYS consult when writing, modifying, reviewing, or testing any BLoC, Cubit, state, or event Dart file — even for small changes. (triggers: **_bloc.dart, **_cubit.dart, **_state.dart, **_event.dart, BlocProvider, BlocBuilder, BlocListener, Cubit, Emitter)","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\u002FHoangNguyen0403\u002Fagent-skills-standard\u002Fflutter-bloc-state-management\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30],"state management","state","flutter","management","flutter bloc state management","testing","writing","file","consult","dart","standards","triggers","2026-11-10 10:12:30",false,"---\nname: flutter-bloc-state-management\ndescription: 'BLoC\u002FCubit state management standards. ALWAYS consult when writing, modifying, reviewing, or testing any BLoC, Cubit, state, or event Dart file — even for small changes. (triggers: **_bloc.dart, **_cubit.dart, **_state.dart, **_event.dart, BlocProvider, BlocBuilder, BlocListener, Cubit, Emitter)'\n---\n\n# BLoC State Management\n\n## **Priority: P0 (CRITICAL)**\n\n**You are a Flutter State Management Expert.** Design predictable, testable state flows.\n\n## State Design Workflow\n\n1.  **Define Events**: What happens? (UserTap, ApiSuccess). Use `@freezed`.\n2.  **Define States**: What needs to show? (Initial, Loading, Data, Error).\n3.  **Implement BLoC**: Map Events to States using `on\u003CEvent>`.\n4.  **Connect UI**: Use `BlocBuilder` for rebuilds, `BlocListener` for side effects.\n\n## Implementation Guidelines\n\n- **States & Events**: Use **@freezed** for union types (e.g., `Initial`, `Loading`, `Success`, `Failure` states).\n- **Error Handling**: Emit `Failure` states with a specific error message; never throw exceptions in `on\u003CEvent>`.\n- **Async Data**: Use **emit.forEach** for streams or **await** with `emit` call.\n- **Concurrency**: Use **transformer: restartable()** from `bloc_concurrency` for search\u002Ftypeahead to debounce and cancel previous requests.\n- **UI Connectivity**: Use **BlocBuilder** for UI rebuilds (e.g., loading spinner, data list, error message) and **BlocListener** for side effects (navigation, snackbars).\n- **Testing**: Use **blocTest** for ALL states and verify the sequence of emitted states.\n\n## Verification Checklist (Mandatory)\n\n- [ ] **Initial State**: Defined and tested?\n- [ ] **Test Coverage**: `blocTest` used for ALL states?\n- [ ] **UI Logic**: No complex calculation in `BlocBuilder`?\n- [ ] **Side Effects**: Navigation\u002FSnackbars in `BlocListener` (NOT Builder)?\n\n## Anti-Patterns\n\n- **No .then()**: Use `await` or `emit.forEach()` to emit.\n- **No BLoC-to-BLoC**: Use `StreamSubscription` or `BlocListener`, not direct refs.\n- **No Logic in Builder**: Move valid logic to BLoC.\n\n## References\n\n- [Templates](references\u002Fbloc_templates.md)\n\n","# BLoC State Management\n\n## **Priority: P0 (CRITICAL)**\n\n**You are a Flutter State Management Expert.** Design predictable, testable state flows.\n\n## State Design Workflow\n\n1.  **Define Events**: What happens? (UserTap, ApiSuccess). Use `@freezed`.\n2.  **Define States**: What needs to show? (Initial, Loading, Data, Error).\n3.  **Implement BLoC**: Map Events to States using `on\u003CEvent>`.\n4.  **Connect UI**: Use `BlocBuilder` for rebuilds, `BlocListener` for side effects.\n\n## Implementation Guidelines\n\n- **States & Events**: Use **@freezed** for union types (e.g., `Initial`, `Loading`, `Success`, `Failure` states).\n- **Error Handling**: Emit `Failure` states with a specific error message; never throw exceptions in `on\u003CEvent>`.\n- **Async Data**: Use **emit.forEach** for streams or **await** with `emit` call.\n- **Concurrency**: Use **transformer: restartable()** from `bloc_concurrency` for search\u002Ftypeahead to debounce and cancel previous requests.\n- **UI Connectivity**: Use **BlocBuilder** for UI rebuilds (e.g., loading spinner, data list, error message) and **BlocListener** for side effects (navigation, snackbars).\n- **Testing**: Use **blocTest** for ALL states and verify the sequence of emitted states.\n\n## Verification Checklist (Mandatory)\n\n- [ ] **Initial State**: Defined and tested?\n- [ ] **Test Coverage**: `blocTest` used for ALL states?\n- [ ] **UI Logic**: No complex calculation in `BlocBuilder`?\n- [ ] **Side Effects**: Navigation\u002FSnackbars in `BlocListener` (NOT Builder)?\n\n## Anti-Patterns\n\n- **No .then()**: Use `await` or `emit.forEach()` to emit.\n- **No BLoC-to-BLoC**: Use `StreamSubscription` or `BlocListener`, not direct refs.\n- **No Logic in Builder**: Move valid logic to BLoC.\n\n## References\n\n- [Templates](references\u002Fbloc_templates.md)\n\n",{"name":5,"description":7},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002FHoangNguyen0403\u002Fagent-skills-standard\u002Fflutter-bloc-state-management",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":8,"skillName":5,"commands":46,"prompt":56,"zipAvailable":57},[47,50,53],{"tool":48,"command":49},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill flutter-bloc-state-management",{"tool":51,"command":52},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill flutter-bloc-state-management",{"tool":54,"command":55},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill flutter-bloc-state-management","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FHoangNguyen0403\u002Fagent-skills-standard\u002Fflutter-bloc-state-management\u002FSKILL.md",true,[59,65],{"path":60,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":63,"sourceHtmlUrl":64},"checklist.md","REFERENCE","参考文档",891,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.iflow\u002Fskills\u002Fbmad-qa-generate-e2e-tests\u002Fchecklist.md",{"path":66,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":67,"sourceHtmlUrl":68},"workflow.md",3424,"https:\u002F\u002Fgithub.com\u002FdevelopAgent\u002Fbmad-start\u002Fblob\u002Fmain\u002F.iflow\u002Fskills\u002Fbmad-qa-generate-e2e-tests\u002Fworkflow.md",[70,84,94,103,109,116],{"skillNo":71,"name":72,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":73,"categories":74,"keywords":80,"publishedAt":31},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[75],{"categoryNo":76,"categoryName":77,"taxonomyType":78,"taxonomyTypeDesc":79},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[81,82,83],"model","model hierarchy","model hierarchy skill",{"skillNo":85,"name":86,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":87,"categories":88,"keywords":90,"publishedAt":31},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[89],{"categoryNo":76,"categoryName":77,"taxonomyType":78,"taxonomyTypeDesc":79},[91,92,93],"MCP","zoom","zoom mcp",{"skillNo":95,"name":96,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":99,"publishedAt":31},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[100,101,102,92],"sdk","zoom apps sdk","apps",{"skillNo":104,"name":105,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"publishedAt":31},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[105],{"skillNo":110,"name":111,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":115,"publishedAt":31},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[114],{"categoryNo":76,"categoryName":77,"taxonomyType":78,"taxonomyTypeDesc":79},[111],{"skillNo":117,"name":118,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":121,"publishedAt":31},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[118]]