[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EB1FV77JCQ1372Q8FA89CM":3,"skill-same:01M6EB1FV77JCQ1372Q8FA89CM":106},{"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":28,"linkOnly":29,"markdownContent":30,"markdownBody":31,"frontMatter":32,"refName":33,"commitSha":34,"skillDirectory":35,"forksCount":36,"repositoryHtmlUrl":37,"repositoryHomepageUrl":38,"ownerHtmlUrl":39,"ownerBlogUrl":6,"ownerDescription":40,"updatedAt":41,"install":42,"resources":55},"01M6EB1FV77JCQ1372Q8FA89CM","android-persistence",null,"Standards for Room Database and DataStore. Use when implementing Room database schemas or DataStore preferences in Android. (triggers: **\u002F*Dao.kt, **\u002F*Database.kt, **\u002F*Entity.kt, @Dao, @Entity, RoomDatabase)","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\u002Fandroid-persistence\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27],"android","persistence","android persistence","database","preferences","use","standards","dao","triggers","2026-11-10 10:12:30",false,"---\nname: android-persistence\ndescription: \"Standards for Room Database and DataStore. Use when implementing Room database schemas or DataStore preferences in Android. (triggers: **\u002F*Dao.kt, **\u002F*Database.kt, **\u002F*Entity.kt, @Dao, @Entity, RoomDatabase)\"\n---\n\n# Android Persistence Standards\n\n## **Priority: P0**\n\n## Implementation Guidelines\n\n### Room\n\n- **Async**: Return `Flow\u003CList\u003CT>>` for queries, use `suspend` for Write\u002FInsert.\n- **Entities**: Keep simple `@Entity` data classes. Map to Domain models in Repository.\n- **Transactions**: Use `@Transaction` for multi-table queries (Relations).\n\n### DataStore\n\n- **Usage**: Replace `SharedPreferences` with `ProtoDataStore` (Type-safe) or `PreferencesDataStore`.\n- **Scope**: Inject singleton instance via Hilt.\n\n## Anti-Patterns\n\n- **No IO on Main Thread**: Room handles dispatchers, but verify Flow is collected off-main.\n- **No @Entity in UI Layer**: Map to Domain or UI models in Repository.\n\n## References\n\n- [DAO Templates](references\u002Fimplementation.md)\n\n","# Android Persistence Standards\n\n## **Priority: P0**\n\n## Implementation Guidelines\n\n### Room\n\n- **Async**: Return `Flow\u003CList\u003CT>>` for queries, use `suspend` for Write\u002FInsert.\n- **Entities**: Keep simple `@Entity` data classes. Map to Domain models in Repository.\n- **Transactions**: Use `@Transaction` for multi-table queries (Relations).\n\n### DataStore\n\n- **Usage**: Replace `SharedPreferences` with `ProtoDataStore` (Type-safe) or `PreferencesDataStore`.\n- **Scope**: Inject singleton instance via Hilt.\n\n## Anti-Patterns\n\n- **No IO on Main Thread**: Room handles dispatchers, but verify Flow is collected off-main.\n- **No @Entity in UI Layer**: Map to Domain or UI models in Repository.\n\n## References\n\n- [DAO Templates](references\u002Fimplementation.md)\n\n",{"name":5,"description":7},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002FHoangNguyen0403\u002Fagent-skills-standard\u002Fandroid-persistence",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":43,"prompt":53,"zipAvailable":54},[44,47,50],{"tool":45,"command":46},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill android-persistence",{"tool":48,"command":49},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill android-persistence",{"tool":51,"command":52},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill android-persistence","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FHoangNguyen0403\u002Fagent-skills-standard\u002Fandroid-persistence\u002FSKILL.md",true,[56,62,68,72,78,82,86,90,94,98,102],{"path":57,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":60,"sourceHtmlUrl":61},"forms.md","REFERENCE","参考文档",11854,"https:\u002F\u002Fgithub.com\u002Fa1627418541\u002F-\u002Fblob\u002Fmain\u002F.mux\u002Fskills\u002Fpdf\u002Fforms.md",{"path":63,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":66,"sourceHtmlUrl":67},"LICENSE.txt","LICENSE","许可证",1467,"https:\u002F\u002Fgithub.com\u002Fa1627418541\u002F-\u002Fblob\u002Fmain\u002F.mux\u002Fskills\u002Fpdf\u002FLICENSE.txt",{"path":69,"resourceType":58,"resourceTypeDesc":59,"sizeBytes":70,"sourceHtmlUrl":71},"reference.md",16692,"https:\u002F\u002Fgithub.com\u002Fa1627418541\u002F-\u002Fblob\u002Fmain\u002F.mux\u002Fskills\u002Fpdf\u002Freference.md",{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},"scripts\u002Fcheck_bounding_boxes.py","SCRIPT","脚本",2774,"https:\u002F\u002Fgithub.com\u002Fa1627418541\u002F-\u002Fblob\u002Fmain\u002F.mux\u002Fskills\u002Fpdf\u002Fscripts\u002Fcheck_bounding_boxes.py",{"path":79,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":80,"sourceHtmlUrl":81},"scripts\u002Fcheck_fillable_fields.py",268,"https:\u002F\u002Fgithub.com\u002Fa1627418541\u002F-\u002Fblob\u002Fmain\u002F.mux\u002Fskills\u002Fpdf\u002Fscripts\u002Fcheck_fillable_fields.py",{"path":83,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":84,"sourceHtmlUrl":85},"scripts\u002Fconvert_pdf_to_images.py",1008,"https:\u002F\u002Fgithub.com\u002Fa1627418541\u002F-\u002Fblob\u002Fmain\u002F.mux\u002Fskills\u002Fpdf\u002Fscripts\u002Fconvert_pdf_to_images.py",{"path":87,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":88,"sourceHtmlUrl":89},"scripts\u002Fcreate_validation_image.py",1258,"https:\u002F\u002Fgithub.com\u002Fa1627418541\u002F-\u002Fblob\u002Fmain\u002F.mux\u002Fskills\u002Fpdf\u002Fscripts\u002Fcreate_validation_image.py",{"path":91,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":92,"sourceHtmlUrl":93},"scripts\u002Fextract_form_field_info.py",4300,"https:\u002F\u002Fgithub.com\u002Fa1627418541\u002F-\u002Fblob\u002Fmain\u002F.mux\u002Fskills\u002Fpdf\u002Fscripts\u002Fextract_form_field_info.py",{"path":95,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":96,"sourceHtmlUrl":97},"scripts\u002Fextract_form_structure.py",3945,"https:\u002F\u002Fgithub.com\u002Fa1627418541\u002F-\u002Fblob\u002Fmain\u002F.mux\u002Fskills\u002Fpdf\u002Fscripts\u002Fextract_form_structure.py",{"path":99,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":100,"sourceHtmlUrl":101},"scripts\u002Ffill_fillable_fields.py",3819,"https:\u002F\u002Fgithub.com\u002Fa1627418541\u002F-\u002Fblob\u002Fmain\u002F.mux\u002Fskills\u002Fpdf\u002Fscripts\u002Ffill_fillable_fields.py",{"path":103,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":104,"sourceHtmlUrl":105},"scripts\u002Ffill_pdf_form_with_annotations.py",3235,"https:\u002F\u002Fgithub.com\u002Fa1627418541\u002F-\u002Fblob\u002Fmain\u002F.mux\u002Fskills\u002Fpdf\u002Fscripts\u002Ffill_pdf_form_with_annotations.py",[107,121,131,140,146,153],{"skillNo":108,"name":109,"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":110,"categories":111,"keywords":117,"publishedAt":28},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[112],{"categoryNo":113,"categoryName":114,"taxonomyType":115,"taxonomyTypeDesc":116},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[118,119,120],"model","model hierarchy","model hierarchy skill",{"skillNo":122,"name":123,"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":124,"categories":125,"keywords":127,"publishedAt":28},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[126],{"categoryNo":113,"categoryName":114,"taxonomyType":115,"taxonomyTypeDesc":116},[128,129,130],"MCP","zoom","zoom mcp",{"skillNo":132,"name":133,"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":134,"categories":135,"keywords":136,"publishedAt":28},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[137,138,139,129],"sdk","zoom apps sdk","apps",{"skillNo":141,"name":142,"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":143,"categories":144,"keywords":145,"publishedAt":28},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[142],{"skillNo":147,"name":148,"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":149,"categories":150,"keywords":152,"publishedAt":28},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[151],{"categoryNo":113,"categoryName":114,"taxonomyType":115,"taxonomyTypeDesc":116},[148],{"skillNo":154,"name":155,"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":156,"categories":157,"keywords":158,"publishedAt":28},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[155]]