[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6JMDJCC2M887G01X41NFSRW":3,"skill-same:01M6JMDJCC2M887G01X41NFSRW":85},{"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":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":53,"ownerHtmlUrl":54,"ownerBlogUrl":55,"ownerDescription":6,"updatedAt":56,"install":57,"resources":70},"01M6JMDJCC2M887G01X41NFSRW","azure_appconfiguration_ts",null,"Build applications using Azure App Configuration SDK for JavaScript (@azure\u002Fapp-configuration). Use when working with configuration settings, feature flags, Key Vault references, dynamic refresh, or centralized configuration management.","LongLeo287\u002FOmniClaw","LongLeo287","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F141803367?v=4","01M6JK75C62VCNZKR5BRZ386YV","LongLeo","01M6JK75GQ78TSP1ZPXNKK3MCH",9,"MIT","https:\u002F\u002Fgithub.com\u002FLongLeo287\u002FOmniClaw\u002Fblob\u002Fmain\u002Fecosystem\u002Fskills\u002Fazure_appconfiguration_ts\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"azure","azure appconfiguration ts","use","for","with","azure app configuration","app","feature","configuration management","flags","build","references","sdk","settings","refresh","feature flags","vault","applications","microsoft","javascript","2026-11-10 10:12:30",false,"---\nname: azure_appconfiguration_ts\n\ndescription: Build applications using Azure App Configuration SDK for JavaScript (@azure\u002Fapp-configuration). Use when working with configuration settings, feature flags, Key Vault references, dynamic refresh, or centralized configuration management.\nlicense: MIT\nmetadata:\n  author: Microsoft\n  version: \"1.0.0\"\n  package: '@azure\u002Fapp-configuration'\n---\n\n# Azure App Configuration SDK for TypeScript\n\nCentralized configuration management with feature flags and dynamic refresh.\n\n## Installation\n\n```bash\n# Low-level CRUD SDK\nnpm install @azure\u002Fapp-configuration @azure\u002Fidentity\n\n# High-level provider (recommended for apps)\nnpm install @azure\u002Fapp-configuration-provider @azure\u002Fidentity\n\n# Feature flag management\nnpm install @microsoft\u002Ffeature-management\n```\n\n## Environment Variables\n\n```bash\nAZURE_APPCONFIG_ENDPOINT=https:\u002F\u002F\u003Cyour-resource>.azconfig.io\n# OR\nAZURE_APPCONFIG_CONNECTION_STRING=Endpoint=https:\u002F\u002F...;Id=...;Secret=...\n```\n\n## Authentication\n\n```typescript\nimport { AppConfigurationClient } from \"@azure\u002Fapp-configuration\";\nimport { DefaultAzureCredential } from \"@azure\u002Fidentity\";\n\n\u002F\u002F DefaultAzureCredential (recommended)\nconst client = new AppConfigurationClient(\n  process.env.AZURE_APPCONFIG_ENDPOINT!,\n  new DefaultAzureCredential()\n);\n\n\u002F\u002F Connection string\nconst client2 = new AppConfigurationClient(\n  process.env.AZURE_APPCONFIG_CONNECTION_STRING!\n);\n```\n\n## CRUD Operations\n\n### Create\u002FUpdate Settings\n\n```typescript\n\u002F\u002F Add new (fails if exists)\nawait client.addConfigurationSetting({\n  key: \"app:settings:message\",\n  value: \"Hello World\",\n  label: \"production\",\n  contentType: \"text\u002Fplain\",\n  tags: { environment: \"prod\" },\n});\n\n\u002F\u002F Set (create or update)\nawait client.setConfigurationSetting({\n  key: \"app:settings:message\",\n  value: \"Updated value\",\n  label: \"production\",\n});\n\n\u002F\u002F Update with optimistic concurrency\nconst existing = await client.getConfigurationSetting({ key: \"myKey\" });\nexisting.value = \"new value\";\nawait client.setConfigurationSetting(existing, { onlyIfUnchanged: true });\n```\n\n### Read Settings\n\n```typescript\n\u002F\u002F Get single setting\nconst setting = await client.getConfigurationSetting({\n  key: \"app:settings:message\",\n  label: \"production\",  \u002F\u002F optional\n});\nconsole.log(setting.value);\n\n\u002F\u002F List with filters\nconst settings = client.listConfigurationSettings({\n  keyFilter: \"app:*\",\n  labelFilter: \"production\",\n});\n\nfor await (const setting of settings) {\n  console.log(`${setting.key}: ${setting.value}`);\n}\n```\n\n### Delete Settings\n\n```typescript\nawait client.deleteConfigurationSetting({\n  key: \"app:settings:message\",\n  label: \"production\",\n});\n```\n\n### Lock\u002FUnlock (Read-Only)\n\n```typescript\n\u002F\u002F Lock\nawait client.setReadOnly({ key: \"myKey\", label: \"prod\" }, true);\n\n\u002F\u002F Unlock\nawait client.setReadOnly({ key: \"myKey\", label: \"prod\" }, false);\n```\n\n## App Configuration Provider\n\n### Load Configuration\n\n```typescript\nimport { load } from \"@azure\u002Fapp-configuration-provider\";\nimport { DefaultAzureCredential } from \"@azure\u002Fidentity\";\n\nconst appConfig = await load(\n  process.env.AZURE_APPCONFIG_ENDPOINT!,\n  new DefaultAzureCredential(),\n  {\n    selectors: [\n      { keyFilter: \"app:*\", labelFilter: \"production\" },\n    ],\n    trimKeyPrefixes: [\"app:\"],\n  }\n);\n\n\u002F\u002F Map-style access\nconst value = appConfig.get(\"settings:message\");\n\n\u002F\u002F Object-style access\nconst config = appConfig.constructConfigurationObject({ separator: \":\" });\nconsole.log(config.settings.message);\n```\n\n### Dynamic Refresh\n\n```typescript\nconst appConfig = await load(endpoint, credential, {\n  selectors: [{ keyFilter: \"app:*\" }],\n  refreshOptions: {\n    enabled: true,\n    refreshIntervalInMs: 30_000,  \u002F\u002F 30 seconds\n  },\n});\n\n\u002F\u002F Trigger refresh (non-blocking)\nappConfig.refresh();\n\n\u002F\u002F Listen for refresh events\nconst disposer = appConfig.onRefresh(() => {\n  console.log(\"Configuration refreshed!\");\n});\n\n\u002F\u002F Express middleware pattern\napp.use((req, res, next) => {\n  appConfig.refresh();\n  next();\n});\n```\n\n### Key Vault References\n\n```typescript\nconst appConfig = await load(endpoint, credential, {\n  selectors: [{ keyFilter: \"app:*\" }],\n  keyVaultOptions: {\n    credential: new DefaultAzureCredential(),\n    secretRefreshIntervalInMs: 7200_000,  \u002F\u002F 2 hours\n  },\n});\n\n\u002F\u002F Secrets are automatically resolved\nconst dbPassword = appConfig.get(\"database:password\");\n```\n\n## Feature Flags\n\n### Create Feature Flag (Low-Level)\n\n```typescript\nimport {\n  featureFlagPrefix,\n  featureFlagContentType,\n  FeatureFlagValue,\n  ConfigurationSetting,\n} from \"@azure\u002Fapp-configuration\";\n\nconst flag: ConfigurationSetting\u003CFeatureFlagValue> = {\n  key: `${featureFlagPrefix}Beta`,\n  contentType: featureFlagContentType,\n  value: {\n    id: \"Beta\",\n    enabled: true,\n    description: \"Beta feature\",\n    conditions: {\n      clientFilters: [\n        {\n          name: \"Microsoft.Targeting\",\n          parameters: {\n            Audience: {\n              Users: [\"user@example.com\"],\n              Groups: [{ Name: \"beta-testers\", RolloutPercentage: 50 }],\n              DefaultRolloutPercentage: 0,\n            },\n          },\n        },\n      ],\n    },\n  },\n};\n\nawait client.addConfigurationSetting(flag);\n```\n\n### Load and Evaluate Feature Flags\n\n```typescript\nimport { load } from \"@azure\u002Fapp-configuration-provider\";\nimport {\n  ConfigurationMapFeatureFlagProvider,\n  FeatureManager,\n} from \"@microsoft\u002Ffeature-management\";\n\nconst appConfig = await load(endpoint, credential, {\n  featureFlagOptions: {\n    enabled: true,\n    selectors: [{ keyFilter: \"*\" }],\n    refresh: {\n      enabled: true,\n      refreshIntervalInMs: 30_000,\n    },\n  },\n});\n\nconst featureProvider = new ConfigurationMapFeatureFlagProvider(appConfig);\nconst featureManager = new FeatureManager(featureProvider);\n\n\u002F\u002F Simple check\nconst isEnabled = await featureManager.isEnabled(\"Beta\");\n\n\u002F\u002F With targeting context\nconst isEnabledForUser = await featureManager.isEnabled(\"Beta\", {\n  userId: \"user@example.com\",\n  groups: [\"beta-testers\"],\n});\n```\n\n## Snapshots\n\n```typescript\n\u002F\u002F Create snapshot\nconst snapshot = await client.beginCreateSnapshotAndWait({\n  name: \"release-v1.0\",\n  retentionPeriod: 2592000,  \u002F\u002F 30 days\n  filters: [{ keyFilter: \"app:*\", labelFilter: \"production\" }],\n});\n\n\u002F\u002F Get snapshot\nconst snap = await client.getSnapshot(\"release-v1.0\");\n\n\u002F\u002F List settings in snapshot\nconst settings = client.listConfigurationSettingsForSnapshot(\"release-v1.0\");\nfor await (const setting of settings) {\n  console.log(`${setting.key}: ${setting.value}`);\n}\n\n\u002F\u002F Archive\u002Frecover\nawait client.archiveSnapshot(\"release-v1.0\");\nawait client.recoverSnapshot(\"release-v1.0\");\n\n\u002F\u002F Load from snapshot (provider)\nconst config = await load(endpoint, credential, {\n  selectors: [{ snapshotName: \"release-v1.0\" }],\n});\n```\n\n## Labels\n\n```typescript\n\u002F\u002F Create settings with labels\nawait client.setConfigurationSetting({\n  key: \"database:host\",\n  value: \"dev-db.example.com\",\n  label: \"development\",\n});\n\nawait client.setConfigurationSetting({\n  key: \"database:host\",\n  value: \"prod-db.example.com\",\n  label: \"production\",\n});\n\n\u002F\u002F Filter by label\nconst prodSettings = client.listConfigurationSettings({\n  keyFilter: \"*\",\n  labelFilter: \"production\",\n});\n\n\u002F\u002F No label (null label)\nconst noLabelSettings = client.listConfigurationSettings({\n  labelFilter: \"\\0\",\n});\n\n\u002F\u002F List available labels\nfor await (const label of client.listLabels()) {\n  console.log(label.name);\n}\n```\n\n## Key Types\n\n```typescript\nimport {\n  AppConfigurationClient,\n  ConfigurationSetting,\n  FeatureFlagValue,\n  SecretReferenceValue,\n  featureFlagPrefix,\n  featureFlagContentType,\n  secretReferenceContentType,\n  ListConfigurationSettingsOptions,\n} from \"@azure\u002Fapp-configuration\";\n\nimport { load } from \"@azure\u002Fapp-configuration-provider\";\n\nimport {\n  FeatureManager,\n  ConfigurationMapFeatureFlagProvider,\n} from \"@microsoft\u002Ffeature-management\";\n```\n\n## Best Practices\n\n1. **Use provider for apps** - `@azure\u002Fapp-configuration-provider` for runtime config\n2. **Use low-level for management** - `@azure\u002Fapp-configuration` for CRUD operations\n3. **Enable refresh** - For dynamic configuration updates\n4. **Use labels** - Separate configurations by environment\n5. **Use snapshots** - For immutable release configurations\n6. **Sentinel pattern** - Use a sentinel key to trigger full refresh\n7. **RBAC roles** - `App Configuration Data Reader` for read-only access\n","# Azure App Configuration SDK for TypeScript\n\nCentralized configuration management with feature flags and dynamic refresh.\n\n## Installation\n\n```bash\n# Low-level CRUD SDK\nnpm install @azure\u002Fapp-configuration @azure\u002Fidentity\n\n# High-level provider (recommended for apps)\nnpm install @azure\u002Fapp-configuration-provider @azure\u002Fidentity\n\n# Feature flag management\nnpm install @microsoft\u002Ffeature-management\n```\n\n## Environment Variables\n\n```bash\nAZURE_APPCONFIG_ENDPOINT=https:\u002F\u002F\u003Cyour-resource>.azconfig.io\n# OR\nAZURE_APPCONFIG_CONNECTION_STRING=Endpoint=https:\u002F\u002F...;Id=...;Secret=...\n```\n\n## Authentication\n\n```typescript\nimport { AppConfigurationClient } from \"@azure\u002Fapp-configuration\";\nimport { DefaultAzureCredential } from \"@azure\u002Fidentity\";\n\n\u002F\u002F DefaultAzureCredential (recommended)\nconst client = new AppConfigurationClient(\n  process.env.AZURE_APPCONFIG_ENDPOINT!,\n  new DefaultAzureCredential()\n);\n\n\u002F\u002F Connection string\nconst client2 = new AppConfigurationClient(\n  process.env.AZURE_APPCONFIG_CONNECTION_STRING!\n);\n```\n\n## CRUD Operations\n\n### Create\u002FUpdate Settings\n\n```typescript\n\u002F\u002F Add new (fails if exists)\nawait client.addConfigurationSetting({\n  key: \"app:settings:message\",\n  value: \"Hello World\",\n  label: \"production\",\n  contentType: \"text\u002Fplain\",\n  tags: { environment: \"prod\" },\n});\n\n\u002F\u002F Set (create or update)\nawait client.setConfigurationSetting({\n  key: \"app:settings:message\",\n  value: \"Updated value\",\n  label: \"production\",\n});\n\n\u002F\u002F Update with optimistic concurrency\nconst existing = await client.getConfigurationSetting({ key: \"myKey\" });\nexisting.value = \"new value\";\nawait client.setConfigurationSetting(existing, { onlyIfUnchanged: true });\n```\n\n### Read Settings\n\n```typescript\n\u002F\u002F Get single setting\nconst setting = await client.getConfigurationSetting({\n  key: \"app:settings:message\",\n  label: \"production\",  \u002F\u002F optional\n});\nconsole.log(setting.value);\n\n\u002F\u002F List with filters\nconst settings = client.listConfigurationSettings({\n  keyFilter: \"app:*\",\n  labelFilter: \"production\",\n});\n\nfor await (const setting of settings) {\n  console.log(`${setting.key}: ${setting.value}`);\n}\n```\n\n### Delete Settings\n\n```typescript\nawait client.deleteConfigurationSetting({\n  key: \"app:settings:message\",\n  label: \"production\",\n});\n```\n\n### Lock\u002FUnlock (Read-Only)\n\n```typescript\n\u002F\u002F Lock\nawait client.setReadOnly({ key: \"myKey\", label: \"prod\" }, true);\n\n\u002F\u002F Unlock\nawait client.setReadOnly({ key: \"myKey\", label: \"prod\" }, false);\n```\n\n## App Configuration Provider\n\n### Load Configuration\n\n```typescript\nimport { load } from \"@azure\u002Fapp-configuration-provider\";\nimport { DefaultAzureCredential } from \"@azure\u002Fidentity\";\n\nconst appConfig = await load(\n  process.env.AZURE_APPCONFIG_ENDPOINT!,\n  new DefaultAzureCredential(),\n  {\n    selectors: [\n      { keyFilter: \"app:*\", labelFilter: \"production\" },\n    ],\n    trimKeyPrefixes: [\"app:\"],\n  }\n);\n\n\u002F\u002F Map-style access\nconst value = appConfig.get(\"settings:message\");\n\n\u002F\u002F Object-style access\nconst config = appConfig.constructConfigurationObject({ separator: \":\" });\nconsole.log(config.settings.message);\n```\n\n### Dynamic Refresh\n\n```typescript\nconst appConfig = await load(endpoint, credential, {\n  selectors: [{ keyFilter: \"app:*\" }],\n  refreshOptions: {\n    enabled: true,\n    refreshIntervalInMs: 30_000,  \u002F\u002F 30 seconds\n  },\n});\n\n\u002F\u002F Trigger refresh (non-blocking)\nappConfig.refresh();\n\n\u002F\u002F Listen for refresh events\nconst disposer = appConfig.onRefresh(() => {\n  console.log(\"Configuration refreshed!\");\n});\n\n\u002F\u002F Express middleware pattern\napp.use((req, res, next) => {\n  appConfig.refresh();\n  next();\n});\n```\n\n### Key Vault References\n\n```typescript\nconst appConfig = await load(endpoint, credential, {\n  selectors: [{ keyFilter: \"app:*\" }],\n  keyVaultOptions: {\n    credential: new DefaultAzureCredential(),\n    secretRefreshIntervalInMs: 7200_000,  \u002F\u002F 2 hours\n  },\n});\n\n\u002F\u002F Secrets are automatically resolved\nconst dbPassword = appConfig.get(\"database:password\");\n```\n\n## Feature Flags\n\n### Create Feature Flag (Low-Level)\n\n```typescript\nimport {\n  featureFlagPrefix,\n  featureFlagContentType,\n  FeatureFlagValue,\n  ConfigurationSetting,\n} from \"@azure\u002Fapp-configuration\";\n\nconst flag: ConfigurationSetting\u003CFeatureFlagValue> = {\n  key: `${featureFlagPrefix}Beta`,\n  contentType: featureFlagContentType,\n  value: {\n    id: \"Beta\",\n    enabled: true,\n    description: \"Beta feature\",\n    conditions: {\n      clientFilters: [\n        {\n          name: \"Microsoft.Targeting\",\n          parameters: {\n            Audience: {\n              Users: [\"user@example.com\"],\n              Groups: [{ Name: \"beta-testers\", RolloutPercentage: 50 }],\n              DefaultRolloutPercentage: 0,\n            },\n          },\n        },\n      ],\n    },\n  },\n};\n\nawait client.addConfigurationSetting(flag);\n```\n\n### Load and Evaluate Feature Flags\n\n```typescript\nimport { load } from \"@azure\u002Fapp-configuration-provider\";\nimport {\n  ConfigurationMapFeatureFlagProvider,\n  FeatureManager,\n} from \"@microsoft\u002Ffeature-management\";\n\nconst appConfig = await load(endpoint, credential, {\n  featureFlagOptions: {\n    enabled: true,\n    selectors: [{ keyFilter: \"*\" }],\n    refresh: {\n      enabled: true,\n      refreshIntervalInMs: 30_000,\n    },\n  },\n});\n\nconst featureProvider = new ConfigurationMapFeatureFlagProvider(appConfig);\nconst featureManager = new FeatureManager(featureProvider);\n\n\u002F\u002F Simple check\nconst isEnabled = await featureManager.isEnabled(\"Beta\");\n\n\u002F\u002F With targeting context\nconst isEnabledForUser = await featureManager.isEnabled(\"Beta\", {\n  userId: \"user@example.com\",\n  groups: [\"beta-testers\"],\n});\n```\n\n## Snapshots\n\n```typescript\n\u002F\u002F Create snapshot\nconst snapshot = await client.beginCreateSnapshotAndWait({\n  name: \"release-v1.0\",\n  retentionPeriod: 2592000,  \u002F\u002F 30 days\n  filters: [{ keyFilter: \"app:*\", labelFilter: \"production\" }],\n});\n\n\u002F\u002F Get snapshot\nconst snap = await client.getSnapshot(\"release-v1.0\");\n\n\u002F\u002F List settings in snapshot\nconst settings = client.listConfigurationSettingsForSnapshot(\"release-v1.0\");\nfor await (const setting of settings) {\n  console.log(`${setting.key}: ${setting.value}`);\n}\n\n\u002F\u002F Archive\u002Frecover\nawait client.archiveSnapshot(\"release-v1.0\");\nawait client.recoverSnapshot(\"release-v1.0\");\n\n\u002F\u002F Load from snapshot (provider)\nconst config = await load(endpoint, credential, {\n  selectors: [{ snapshotName: \"release-v1.0\" }],\n});\n```\n\n## Labels\n\n```typescript\n\u002F\u002F Create settings with labels\nawait client.setConfigurationSetting({\n  key: \"database:host\",\n  value: \"dev-db.example.com\",\n  label: \"development\",\n});\n\nawait client.setConfigurationSetting({\n  key: \"database:host\",\n  value: \"prod-db.example.com\",\n  label: \"production\",\n});\n\n\u002F\u002F Filter by label\nconst prodSettings = client.listConfigurationSettings({\n  keyFilter: \"*\",\n  labelFilter: \"production\",\n});\n\n\u002F\u002F No label (null label)\nconst noLabelSettings = client.listConfigurationSettings({\n  labelFilter: \"\\0\",\n});\n\n\u002F\u002F List available labels\nfor await (const label of client.listLabels()) {\n  console.log(label.name);\n}\n```\n\n## Key Types\n\n```typescript\nimport {\n  AppConfigurationClient,\n  ConfigurationSetting,\n  FeatureFlagValue,\n  SecretReferenceValue,\n  featureFlagPrefix,\n  featureFlagContentType,\n  secretReferenceContentType,\n  ListConfigurationSettingsOptions,\n} from \"@azure\u002Fapp-configuration\";\n\nimport { load } from \"@azure\u002Fapp-configuration-provider\";\n\nimport {\n  FeatureManager,\n  ConfigurationMapFeatureFlagProvider,\n} from \"@microsoft\u002Ffeature-management\";\n```\n\n## Best Practices\n\n1. **Use provider for apps** - `@azure\u002Fapp-configuration-provider` for runtime config\n2. **Use low-level for management** - `@azure\u002Fapp-configuration` for CRUD operations\n3. **Enable refresh** - For dynamic configuration updates\n4. **Use labels** - Separate configurations by environment\n5. **Use snapshots** - For immutable release configurations\n6. **Sentinel pattern** - Use a sentinel key to trigger full refresh\n7. **RBAC roles** - `App Configuration Data Reader` for read-only access\n",{"name":5,"license":15,"metadata":44,"description":7},{"author":45,"package":46,"version":47},"Microsoft","@azure\u002Fapp-configuration","1.0.0","main","c173cdffe08e788a99b91928a831b476b8434838","ecosystem\u002Fskills\u002Fazure_appconfiguration_ts",0,"https:\u002F\u002Fgithub.com\u002FLongLeo287\u002FOmniClaw","https:\u002F\u002Fportfolio-longleo.vercel.app\u002Flabs\u002Fomniclaw.html","https:\u002F\u002Fgithub.com\u002FLongLeo287","https:\u002F\u002Fwww.facebook.com\u002FResourceRookie2023","2026-09-30 00:58:05",{"source":8,"skillName":5,"commands":58,"prompt":68,"zipAvailable":69},[59,62,65],{"tool":60,"command":61},"npx","npx skills add LongLeo287\u002FOmniClaw --skill azure_appconfiguration_ts",{"tool":63,"command":64},"bunx","bunx skills add LongLeo287\u002FOmniClaw --skill azure_appconfiguration_ts",{"tool":66,"command":67},"pnpm","pnpm dlx skills add LongLeo287\u002FOmniClaw --skill azure_appconfiguration_ts","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FLongLeo287\u002FOmniClaw\u002Fblob\u002Fmain\u002Fecosystem\u002Fskills\u002Fazure_appconfiguration_ts\u002FSKILL.md",true,[71,77,81],{"path":72,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":75,"sourceHtmlUrl":76},"_DIR_IDENTITY.md","REFERENCE","参考文档",172,"https:\u002F\u002Fgithub.com\u002FLongLeo287\u002FOmniClaw\u002Fblob\u002Fmain\u002Fecosystem\u002Fskills\u002Fazure_appconfiguration_ts\u002F_DIR_IDENTITY.md",{"path":78,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":79,"sourceHtmlUrl":80},"README.md",485,"https:\u002F\u002Fgithub.com\u002FLongLeo287\u002FOmniClaw\u002Fblob\u002Fmain\u002Fecosystem\u002Fskills\u002Fazure_appconfiguration_ts\u002FREADME.md",{"path":82,"resourceType":73,"resourceTypeDesc":74,"sizeBytes":83,"sourceHtmlUrl":84},"schema.json",477,"https:\u002F\u002Fgithub.com\u002FLongLeo287\u002FOmniClaw\u002Fblob\u002Fmain\u002Fecosystem\u002Fskills\u002Fazure_appconfiguration_ts\u002Fschema.json",[86,129,148,174,190,217],{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":108,"publishedAt":39},"01M6JR0KQP4MHT32TN40D9CBFX","UI-UX Pro Max","Advanced UI\u002FUX analysis and generation skills with data-driven patterns. Python scripts (core.py, search.py) for systematic UI pattern extraction, design system generation, and component search from curated data sources.","https:\u002F\u002Fgithub.com\u002FLongLeo287\u002FOmniClaw\u002Fblob\u002Fmain\u002Fecosystem\u002Fui_components\u002Fui_ux_pro_max\u002FSKILL.md",[92,97,100,105],{"categoryNo":93,"categoryName":94,"taxonomyType":95,"taxonomyTypeDesc":96},"01JBSEEDCAT000000000000015","视觉设计","SCENARIO","使用场景",{"categoryNo":98,"categoryName":99,"taxonomyType":95,"taxonomyTypeDesc":96},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":101,"categoryName":102,"taxonomyType":103,"taxonomyTypeDesc":104},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",{"categoryNo":106,"categoryName":107,"taxonomyType":103,"taxonomyTypeDesc":104},"01JBSEEDCAT000000000000033","数据分析师",[109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128],"ux","ui","ui ux pro max","max","pro","ui ux","design","component","search","analysis","team","rd","ui-ux","active","systematic","scripts","pattern extraction","sources","advanced","data-driven",{"skillNo":130,"name":131,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":136,"publishedAt":39},"01M6JR0EF5AEQHP2FSTB57H05P","shadcn-ui","Expert guidance for integrating and building applications with shadcn\u002Fui components, including component discovery, installation, customization, and best practices.","https:\u002F\u002Fgithub.com\u002FLongLeo287\u002FOmniClaw\u002Fblob\u002Fmain\u002Fecosystem\u002Fui_components\u002Fshadcn_ui\u002FSKILL.md",[135],{"categoryNo":101,"categoryName":102,"taxonomyType":103,"taxonomyTypeDesc":104},[137,110,138,139,116,140,141,36,142,119,143,144,145,122,146,147,23,22],"shadcn","shadcn ui","components","core","best practices","discovery","customization","guidance","expert","installation","ui components",{"skillNo":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":157,"publishedAt":39},"01M6JR08F51BEN17RHFYX65WVE","zustand_store_ts","Create Zustand stores with TypeScript, subscribeWithSelector middleware, and proper state\u002Faction separation. Use when building React state management, creating global stores, or implementing reactive state patterns with Zustand.","https:\u002F\u002Fgithub.com\u002FLongLeo287\u002FOmniClaw\u002Fblob\u002Fmain\u002Fecosystem\u002Fskills\u002Fzustand_store_ts\u002FSKILL.md",[154],{"categoryNo":155,"categoryName":156,"taxonomyType":95,"taxonomyTypeDesc":96},"01JBSEEDCAT000000000000009","前端开发",[158,159,160,161,37,162,163,164,165,166,167,168,21,169,170,171,23,172,173],"zustand store ts","zustand","store","typescript","react","create","state management","state","react state management","management","global","patterns","separation","middleware","action","implementing",{"skillNo":175,"name":159,"nameZh":6,"description":176,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":177,"categories":178,"keywords":179,"publishedAt":39},"01M6JR00TDMVAFFCZXZ04AN7Q7","Zustand state management guide. Use when working with store code (src\u002Fstore\u002F**), implementing actions, managing state, or creating slices. Triggers on Zustand store development, state management questions, or action implementation.","https:\u002F\u002Fgithub.com\u002FLongLeo287\u002FOmniClaw\u002Fblob\u002Fmain\u002Fecosystem\u002Fskills\u002Fzustand\u002FSKILL.md",[],[159,180,164,181,165,182,183,167,184,21,185,186,187,160,23,188,189,172,173],"development","code","actions","src","guide","implementation","zustand state","triggers","questions","zustand state management",{"skillNo":191,"name":192,"nameZh":6,"description":193,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":194,"categories":195,"keywords":200,"publishedAt":39},"01M6JQZSWV4KWJP112G6XHEP44","youtube_summarizer","Automatically fetch YouTube video transcripts, generate structured summaries, and send full transcripts to messaging platforms. Detects YouTube URLs and provides metadata, key insights, and downloadable transcripts.","https:\u002F\u002Fgithub.com\u002FLongLeo287\u002FOmniClaw\u002Fblob\u002Fmain\u002Fecosystem\u002Fskills\u002Fyoutube_summarizer\u002FSKILL.md",[196,199],{"categoryNo":197,"categoryName":198,"taxonomyType":95,"taxonomyTypeDesc":96},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":98,"categoryName":99,"taxonomyType":95,"taxonomyTypeDesc":96},[201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216],"youtube","youtube summarizer","summarizer","generate","metadata","messaging","Video","fetch","telegram","transcription","summarization","structured","full","insights","transcripts","summaries",{"skillNo":218,"name":219,"nameZh":6,"description":220,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":221,"categories":222,"keywords":223,"publishedAt":39},"01M6JQZN3QJB6B77JGKJD62DQT","youtube_clipper","YouTube 视频智能剪辑工具。下载视频和字幕，AI 分析生成精细章节（几分钟级别）， 用户选择片段后自动剪辑、翻译字幕为中英双语、烧录字幕到视频，并生成总结文案。 使用场景：当用户需要剪辑 YouTube 视频、生成短视频片段、制作双语字幕版本时。 关键词：视频剪辑、YouTube、字幕翻译、双语字幕、视频下载、clip video","https:\u002F\u002Fgithub.com\u002FLongLeo287\u002FOmniClaw\u002Fblob\u002Fmain\u002Fecosystem\u002Fskills\u002Fyoutube_clipper\u002FSKILL.md",[],[201,224,225,207,226,227,228,229,230,231,232,233,234,235,236,237,238],"clipper","youtube clipper","Bash","下载","视频","生成","关键词","翻译","read","write","clip","总结","工具","文案","sonnet"]