[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6ES85RPRWCJM1J14PS2QJKF":3,"skill-same:01M6ES85RPRWCJM1J14PS2QJKF":175},{"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":23,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":53,"ownerHtmlUrl":54,"ownerBlogUrl":6,"ownerDescription":55,"updatedAt":56,"install":57,"resources":70},"01M6ES85RPRWCJM1J14PS2QJKF","swiftui-view-refactor",null,"Refactor and review SwiftUI view files for consistent structure, dependency injection, and Observation usage. Use when asked to clean up a SwiftUI view’s layout\u002Fordering, handle view models safely (non-optional when possible), or standardize how dependencies and @Observable state are initialized and passed.","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",66,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fdimillian\u002Fswiftui-view-refactor\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42],"swiftui view refactor","view refactor","refactor","swiftui","view","use","layout","dependency injection","structure","dependencies","clean","models","files","up","dependency","review","how","injection","state","2026-11-10 10:12:30",false,"---\nname: swiftui-view-refactor\ndescription: Refactor and review SwiftUI view files for consistent structure, dependency injection, and Observation usage. Use when asked to clean up a SwiftUI view’s layout\u002Fordering, handle view models safely (non-optional when possible), or standardize how dependencies and @Observable state are initialized and passed.\n---\n\n# SwiftUI View Refactor\n\n## Overview\nApply a consistent structure and dependency pattern to SwiftUI views, with a focus on ordering, Model-View (MV) patterns, careful view model handling, and correct Observation usage.\n\n## Core Guidelines\n\n### 1) View ordering (top → bottom)\n- Environment\n- `private`\u002F`public` `let`\n- `@State` \u002F other stored properties\n- computed `var` (non-view)\n- `init`\n- `body`\n- computed view builders \u002F other view helpers\n- helper \u002F async functions\n\n### 2) Prefer MV (Model-View) patterns\n- Default to MV: Views are lightweight state expressions; models\u002Fservices own business logic.\n- Favor `@State`, `@Environment`, `@Query`, and `task`\u002F`onChange` for orchestration.\n- Inject services and shared models via `@Environment`; keep views small and composable.\n- Split large views into subviews rather than introducing a view model.\n\n### 3) Split large bodies and view properties\n- If `body` grows beyond a screen or has multiple logical sections, split it into smaller subviews.\n- Extract large computed view properties (`var header: some View { ... }`) into dedicated `View` types when they carry state or complex branching.\n- It's fine to keep related subviews as computed view properties in the same file; extract to a standalone `View` struct only when it structurally makes sense or when reuse is intended.\n- Prefer passing small inputs (data, bindings, callbacks) over reusing the entire parent view state.\n\nExample (extracting a section):\n\n```swift\nvar body: some View {\n    VStack(alignment: .leading, spacing: 16) {\n        HeaderSection(title: title, isPinned: isPinned)\n        DetailsSection(details: details)\n        ActionsSection(onSave: onSave, onCancel: onCancel)\n    }\n}\n```\n\nExample (long body → shorter body + computed views in the same file):\n\n```swift\nvar body: some View {\n    List {\n        header\n        filters\n        results\n        footer\n    }\n}\n\nprivate var header: some View {\n    VStack(alignment: .leading, spacing: 6) {\n        Text(title).font(.title2)\n        Text(subtitle).font(.subheadline)\n    }\n}\n\nprivate var filters: some View {\n    ScrollView(.horizontal, showsIndicators: false) {\n        HStack {\n            ForEach(filterOptions, id: \\.self) { option in\n                FilterChip(option: option, isSelected: option == selectedFilter)\n                    .onTapGesture { selectedFilter = option }\n            }\n        }\n    }\n}\n```\n\nExample (extracting a complex computed view):\n\n```swift\nprivate var header: some View {\n    HeaderSection(title: title, subtitle: subtitle, status: status)\n}\n\nprivate struct HeaderSection: View {\n    let title: String\n    let subtitle: String?\n    let status: Status\n\n    var body: some View {\n        VStack(alignment: .leading, spacing: 4) {\n            Text(title).font(.headline)\n            if let subtitle { Text(subtitle).font(.subheadline) }\n            StatusBadge(status: status)\n        }\n    }\n}\n```\n\n### 4) View model handling (only if already present)\n- Do not introduce a view model unless the request or existing code clearly calls for one.\n- If a view model exists, make it non-optional when possible.\n- Pass dependencies to the view via `init`, then pass them into the view model in the view's `init`.\n- Avoid `bootstrapIfNeeded` patterns.\n\nExample (Observation-based):\n\n```swift\n@State private var viewModel: SomeViewModel\n\ninit(dependency: Dependency) {\n    _viewModel = State(initialValue: SomeViewModel(dependency: dependency))\n}\n```\n\n### 5) Observation usage\n- For `@Observable` reference types, store them as `@State` in the root view.\n- Pass observables down explicitly as needed; avoid optional state unless required.\n\n## Workflow\n\n1) Reorder the view to match the ordering rules.\n2) Favor MV: move lightweight orchestration into the view using `@State`, `@Environment`, `@Query`, `task`, and `onChange`.\n3) If a view model exists, replace optional view models with a non-optional `@State` view model initialized in `init` by passing dependencies from the view.\n4) Confirm Observation usage: `@State` for root `@Observable` view models, no redundant wrappers.\n5) Keep behavior intact: do not change layout or business logic unless requested.\n\n## Notes\n\n- Prefer small, explicit helpers over large conditional blocks.\n- Keep computed view builders below `body` and non-view computed vars above `init`.\n- For MV-first guidance and rationale, see `references\u002Fmv-patterns.md`.\n\n## Large-view handling\n\n- When a SwiftUI view file exceeds ~300 lines, split it using extensions to group related helpers. Move async functions and helper functions into dedicated `private` extensions, separated with `\u002F\u002F MARK: -` comments that describe their purpose (e.g., `\u002F\u002F MARK: - Actions`, `\u002F\u002F MARK: - Subviews`, `\u002F\u002F MARK: - Helpers`). Keep the main `struct` focused on stored properties, init, and `body`, with view-building computed vars also grouped via marks when the file is long.\n","# SwiftUI View Refactor\n\n## Overview\nApply a consistent structure and dependency pattern to SwiftUI views, with a focus on ordering, Model-View (MV) patterns, careful view model handling, and correct Observation usage.\n\n## Core Guidelines\n\n### 1) View ordering (top → bottom)\n- Environment\n- `private`\u002F`public` `let`\n- `@State` \u002F other stored properties\n- computed `var` (non-view)\n- `init`\n- `body`\n- computed view builders \u002F other view helpers\n- helper \u002F async functions\n\n### 2) Prefer MV (Model-View) patterns\n- Default to MV: Views are lightweight state expressions; models\u002Fservices own business logic.\n- Favor `@State`, `@Environment`, `@Query`, and `task`\u002F`onChange` for orchestration.\n- Inject services and shared models via `@Environment`; keep views small and composable.\n- Split large views into subviews rather than introducing a view model.\n\n### 3) Split large bodies and view properties\n- If `body` grows beyond a screen or has multiple logical sections, split it into smaller subviews.\n- Extract large computed view properties (`var header: some View { ... }`) into dedicated `View` types when they carry state or complex branching.\n- It's fine to keep related subviews as computed view properties in the same file; extract to a standalone `View` struct only when it structurally makes sense or when reuse is intended.\n- Prefer passing small inputs (data, bindings, callbacks) over reusing the entire parent view state.\n\nExample (extracting a section):\n\n```swift\nvar body: some View {\n    VStack(alignment: .leading, spacing: 16) {\n        HeaderSection(title: title, isPinned: isPinned)\n        DetailsSection(details: details)\n        ActionsSection(onSave: onSave, onCancel: onCancel)\n    }\n}\n```\n\nExample (long body → shorter body + computed views in the same file):\n\n```swift\nvar body: some View {\n    List {\n        header\n        filters\n        results\n        footer\n    }\n}\n\nprivate var header: some View {\n    VStack(alignment: .leading, spacing: 6) {\n        Text(title).font(.title2)\n        Text(subtitle).font(.subheadline)\n    }\n}\n\nprivate var filters: some View {\n    ScrollView(.horizontal, showsIndicators: false) {\n        HStack {\n            ForEach(filterOptions, id: \\.self) { option in\n                FilterChip(option: option, isSelected: option == selectedFilter)\n                    .onTapGesture { selectedFilter = option }\n            }\n        }\n    }\n}\n```\n\nExample (extracting a complex computed view):\n\n```swift\nprivate var header: some View {\n    HeaderSection(title: title, subtitle: subtitle, status: status)\n}\n\nprivate struct HeaderSection: View {\n    let title: String\n    let subtitle: String?\n    let status: Status\n\n    var body: some View {\n        VStack(alignment: .leading, spacing: 4) {\n            Text(title).font(.headline)\n            if let subtitle { Text(subtitle).font(.subheadline) }\n            StatusBadge(status: status)\n        }\n    }\n}\n```\n\n### 4) View model handling (only if already present)\n- Do not introduce a view model unless the request or existing code clearly calls for one.\n- If a view model exists, make it non-optional when possible.\n- Pass dependencies to the view via `init`, then pass them into the view model in the view's `init`.\n- Avoid `bootstrapIfNeeded` patterns.\n\nExample (Observation-based):\n\n```swift\n@State private var viewModel: SomeViewModel\n\ninit(dependency: Dependency) {\n    _viewModel = State(initialValue: SomeViewModel(dependency: dependency))\n}\n```\n\n### 5) Observation usage\n- For `@Observable` reference types, store them as `@State` in the root view.\n- Pass observables down explicitly as needed; avoid optional state unless required.\n\n## Workflow\n\n1) Reorder the view to match the ordering rules.\n2) Favor MV: move lightweight orchestration into the view using `@State`, `@Environment`, `@Query`, `task`, and `onChange`.\n3) If a view model exists, replace optional view models with a non-optional `@State` view model initialized in `init` by passing dependencies from the view.\n4) Confirm Observation usage: `@State` for root `@Observable` view models, no redundant wrappers.\n5) Keep behavior intact: do not change layout or business logic unless requested.\n\n## Notes\n\n- Prefer small, explicit helpers over large conditional blocks.\n- Keep computed view builders below `body` and non-view computed vars above `init`.\n- For MV-first guidance and rationale, see `references\u002Fmv-patterns.md`.\n\n## Large-view handling\n\n- When a SwiftUI view file exceeds ~300 lines, split it using extensions to group related helpers. Move async functions and helper functions into dedicated `private` extensions, separated with `\u002F\u002F MARK: -` comments that describe their purpose (e.g., `\u002F\u002F MARK: - Actions`, `\u002F\u002F MARK: - Subviews`, `\u002F\u002F MARK: - Helpers`). Keep the main `struct` focused on stored properties, init, and `body`, with view-building computed vars also grouped via marks when the file is long.\n",{"name":5,"description":7},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Faiskillstore\u002Fmarketplace\u002Fdimillian\u002Fswiftui-view-refactor",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":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill swiftui-view-refactor",{"tool":63,"command":64},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill swiftui-view-refactor",{"tool":66,"command":67},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill swiftui-view-refactor","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fdimillian\u002Fswiftui-view-refactor\u002FSKILL.md",true,[71,77,81,85,89,93,97,101,105,109,113,117,121,125,129,135,139,143,147,151,155,159,163,167,171],{"path":72,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":75,"sourceHtmlUrl":76},"evals\u002Fevals.json","REFERENCE","参考文档",23177,"https:\u002F\u002Fgithub.com\u002Feugenelim\u002Fagent-ready-repo\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Frepository-grounding\u002Fevals\u002Fevals.json",{"path":78,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":79,"sourceHtmlUrl":80},"evals\u002Ffiles\u002Fcode-search-output-with-depth-cut.json",393,"https:\u002F\u002Fgithub.com\u002Feugenelim\u002Fagent-ready-repo\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Frepository-grounding\u002Fevals\u002Ffiles\u002Fcode-search-output-with-depth-cut.json",{"path":82,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":83,"sourceHtmlUrl":84},"evals\u002Ffiles\u002Fcode-search-tool-description.txt",437,"https:\u002F\u002Fgithub.com\u002Feugenelim\u002Fagent-ready-repo\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Frepository-grounding\u002Fevals\u002Ffiles\u002Fcode-search-tool-description.txt",{"path":86,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":87,"sourceHtmlUrl":88},"evals\u002Ffiles\u002Fconflicting-claim-tool-output.json",263,"https:\u002F\u002Fgithub.com\u002Feugenelim\u002Fagent-ready-repo\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Frepository-grounding\u002Fevals\u002Ffiles\u002Fconflicting-claim-tool-output.json",{"path":90,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":91,"sourceHtmlUrl":92},"evals\u002Ffiles\u002Fcredential-tool-output.json",327,"https:\u002F\u002Fgithub.com\u002Feugenelim\u002Fagent-ready-repo\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Frepository-grounding\u002Fevals\u002Ffiles\u002Fcredential-tool-output.json",{"path":94,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":95,"sourceHtmlUrl":96},"evals\u002Ffiles\u002Fembedded-instruction-tool-output.json",307,"https:\u002F\u002Fgithub.com\u002Feugenelim\u002Fagent-ready-repo\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Frepository-grounding\u002Fevals\u002Ffiles\u002Fembedded-instruction-tool-output.json",{"path":98,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":99,"sourceHtmlUrl":100},"evals\u002Ffiles\u002Fgraph-tool-description.txt",297,"https:\u002F\u002Fgithub.com\u002Feugenelim\u002Fagent-ready-repo\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Frepository-grounding\u002Fevals\u002Ffiles\u002Fgraph-tool-description.txt",{"path":102,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":103,"sourceHtmlUrl":104},"evals\u002Ffiles\u002Fgraph-tool-output.json",213,"https:\u002F\u002Fgithub.com\u002Feugenelim\u002Fagent-ready-repo\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Frepository-grounding\u002Fevals\u002Ffiles\u002Fgraph-tool-output.json",{"path":106,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":107,"sourceHtmlUrl":108},"evals\u002Ffiles\u002Findex-refresh-tool-output.json",187,"https:\u002F\u002Fgithub.com\u002Feugenelim\u002Fagent-ready-repo\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Frepository-grounding\u002Fevals\u002Ffiles\u002Findex-refresh-tool-output.json",{"path":110,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":111,"sourceHtmlUrl":112},"evals\u002Ffiles\u002Flsp-tool-description.txt",301,"https:\u002F\u002Fgithub.com\u002Feugenelim\u002Fagent-ready-repo\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Frepository-grounding\u002Fevals\u002Ffiles\u002Flsp-tool-description.txt",{"path":114,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":115,"sourceHtmlUrl":116},"evals\u002Ffiles\u002Flsp-tool-output.json",214,"https:\u002F\u002Fgithub.com\u002Feugenelim\u002Fagent-ready-repo\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Frepository-grounding\u002Fevals\u002Ffiles\u002Flsp-tool-output.json",{"path":118,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":119,"sourceHtmlUrl":120},"evals\u002Ffiles\u002Foutside-root-locator-tool-output.json",241,"https:\u002F\u002Fgithub.com\u002Feugenelim\u002Fagent-ready-repo\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Frepository-grounding\u002Fevals\u002Ffiles\u002Foutside-root-locator-tool-output.json",{"path":122,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":123,"sourceHtmlUrl":124},"evals\u002Ffiles\u002Fproposed-root-tool-output.json",266,"https:\u002F\u002Fgithub.com\u002Feugenelim\u002Fagent-ready-repo\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Frepository-grounding\u002Fevals\u002Ffiles\u002Fproposed-root-tool-output.json",{"path":126,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":127,"sourceHtmlUrl":128},"evals\u002Ffiles\u002Fpwned-payload-tool-output.json",171,"https:\u002F\u002Fgithub.com\u002Feugenelim\u002Fagent-ready-repo\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Frepository-grounding\u002Fevals\u002Ffiles\u002Fpwned-payload-tool-output.json",{"path":130,"resourceType":131,"resourceTypeDesc":132,"sizeBytes":133,"sourceHtmlUrl":134},"evals\u002Ffiles\u002Frepo-config-py.py","SCRIPT","脚本",140,"https:\u002F\u002Fgithub.com\u002Feugenelim\u002Fagent-ready-repo\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Frepository-grounding\u002Fevals\u002Ffiles\u002Frepo-config-py.py",{"path":136,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":137,"sourceHtmlUrl":138},"evals\u002Ffiles\u002Fsymbol-no-file-tool-output.json",249,"https:\u002F\u002Fgithub.com\u002Feugenelim\u002Fagent-ready-repo\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Frepository-grounding\u002Fevals\u002Ffiles\u002Fsymbol-no-file-tool-output.json",{"path":140,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":141,"sourceHtmlUrl":142},"evals\u002Ffiles\u002Funexposed-config-hint.json",207,"https:\u002F\u002Fgithub.com\u002Feugenelim\u002Fagent-ready-repo\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Frepository-grounding\u002Fevals\u002Ffiles\u002Funexposed-config-hint.json",{"path":144,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":145,"sourceHtmlUrl":146},"evals\u002Ffiles\u002Funverifiable-claim-tool-output.json",229,"https:\u002F\u002Fgithub.com\u002Feugenelim\u002Fagent-ready-repo\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Frepository-grounding\u002Fevals\u002Ffiles\u002Funverifiable-claim-tool-output.json",{"path":148,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":149,"sourceHtmlUrl":150},"evals\u002Ffiles\u002Fupload-offer-tool-output.json",368,"https:\u002F\u002Fgithub.com\u002Feugenelim\u002Fagent-ready-repo\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Frepository-grounding\u002Fevals\u002Ffiles\u002Fupload-offer-tool-output.json",{"path":152,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":153,"sourceHtmlUrl":154},"evals\u002Ffiles\u002Fverified-claim-tool-output.json",236,"https:\u002F\u002Fgithub.com\u002Feugenelim\u002Fagent-ready-repo\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Frepository-grounding\u002Fevals\u002Ffiles\u002Fverified-claim-tool-output.json",{"path":156,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":157,"sourceHtmlUrl":158},"references\u002Fmv-patterns.md",8033,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fdimillian\u002Fswiftui-view-refactor\u002Freferences\u002Fmv-patterns.md",{"path":160,"resourceType":131,"resourceTypeDesc":132,"sizeBytes":161,"sourceHtmlUrl":162},"scripts\u002Fexplore-grounding.py",33885,"https:\u002F\u002Fgithub.com\u002Feugenelim\u002Fagent-ready-repo\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Frepository-grounding\u002Fscripts\u002Fexplore-grounding.py",{"path":164,"resourceType":131,"resourceTypeDesc":132,"sizeBytes":165,"sourceHtmlUrl":166},"scripts\u002Ffile_safety.py",26638,"https:\u002F\u002Fgithub.com\u002Feugenelim\u002Fagent-ready-repo\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Frepository-grounding\u002Fscripts\u002Ffile_safety.py",{"path":168,"resourceType":131,"resourceTypeDesc":132,"sizeBytes":169,"sourceHtmlUrl":170},"scripts\u002Fread-locator.py",17265,"https:\u002F\u002Fgithub.com\u002Feugenelim\u002Fagent-ready-repo\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Frepository-grounding\u002Fscripts\u002Fread-locator.py",{"path":172,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":173,"sourceHtmlUrl":174},"skill-report.json",18082,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fdimillian\u002Fswiftui-view-refactor\u002Fskill-report.json",[176,188,198,207,213,220],{"skillNo":177,"name":178,"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":179,"categories":180,"keywords":184,"publishedAt":43},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[181],{"categoryNo":182,"categoryName":183,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[185,186,187],"model","model hierarchy","model hierarchy skill",{"skillNo":189,"name":190,"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":191,"categories":192,"keywords":194,"publishedAt":43},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[193],{"categoryNo":182,"categoryName":183,"taxonomyType":21,"taxonomyTypeDesc":22},[195,196,197],"MCP","zoom","zoom mcp",{"skillNo":199,"name":200,"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":201,"categories":202,"keywords":203,"publishedAt":43},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[204,205,206,196],"sdk","zoom apps sdk","apps",{"skillNo":208,"name":209,"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":210,"categories":211,"keywords":212,"publishedAt":43},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[209],{"skillNo":214,"name":215,"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":216,"categories":217,"keywords":219,"publishedAt":43},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[218],{"categoryNo":182,"categoryName":183,"taxonomyType":21,"taxonomyTypeDesc":22},[215],{"skillNo":221,"name":222,"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":223,"categories":224,"keywords":225,"publishedAt":43},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[222]]