[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CS1Q9MC1TP1QQRAVXB7M2T":3,"skill-same:01M6CS1Q9MC1TP1QQRAVXB7M2T":57},{"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":35,"commitSha":36,"skillDirectory":37,"forksCount":38,"repositoryHtmlUrl":39,"repositoryHomepageUrl":39,"ownerHtmlUrl":40,"ownerBlogUrl":6,"ownerDescription":41,"updatedAt":42,"install":43,"resources":56},"01M6CS1Q9MC1TP1QQRAVXB7M2T","azure-appconfiguration-ts",null,"Centralized configuration management with feature flags and dynamic refresh.","Sam-06060\u002Fjarvis-assistant","Sam-06060","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F208600848?v=4","01M6CRKT7C7FXD21V6HXF293S0","Samson Frank Ganta","01M6CRKTBEKYFD8YX5Z1GT99EE",6,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fazure-appconfiguration-ts\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27],"azure","azure appconfiguration ts","feature flags","refresh","management","community","configuration","flags","configuration management","2026-11-10 10:12:30",false,"---\nname: azure-appconfiguration-ts\ndescription: \"Centralized configuration management with feature flags and dynamic refresh.\"\nrisk: unknown\nsource: community\ndate_added: \"2026-02-27\"\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\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\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\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n",{"name":5,"risk":33,"source":24,"date_added":34,"description":7},"unknown","2026-02-27","main","a50a3aa6b39fb0e1b7db88bef1bfc9c93606e126","modules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fazure-appconfiguration-ts",0,"https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant","https:\u002F\u002Fgithub.com\u002FSam-06060","Mobile Application Developer | Kotlin | Flutter, KMP, Swfit, Android,Swift UI | Building at Saar It Resources | Creator of Jarvis (AI Assistant)","2026-06-23 05:13:38",{"source":8,"skillName":5,"commands":44,"prompt":54,"zipAvailable":55},[45,48,51],{"tool":46,"command":47},"npx","npx skills add Sam-06060\u002Fjarvis-assistant --skill azure-appconfiguration-ts",{"tool":49,"command":50},"bunx","bunx skills add Sam-06060\u002Fjarvis-assistant --skill azure-appconfiguration-ts",{"tool":52,"command":53},"pnpm","pnpm dlx skills add Sam-06060\u002Fjarvis-assistant --skill azure-appconfiguration-ts","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fazure-appconfiguration-ts\u002FSKILL.md",true,[],[58,71,87,113,132,159],{"skillNo":59,"name":60,"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":61,"categories":62,"keywords":68,"publishedAt":28},"01M6GDRVS6FXX3ESH0C9DW01C0","test_skill","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fscratch\u002Ftest_skill\u002FSKILL.md",[63],{"categoryNo":64,"categoryName":65,"taxonomyType":66,"taxonomyTypeDesc":67},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[69,70],"Test Skill","test",{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":77,"publishedAt":28},"01M6GDRQ40HX22MA6XWC31RHHK","zustand-store-ts","Create Zustand stores following established patterns with proper TypeScript types and middleware.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzustand-store-ts\u002FSKILL.md",[],[78,79,80,81,82,83,84,24,85,86],"zustand store ts","zustand","store","with","types","middleware","patterns","create","typescript",{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":96,"publishedAt":28},"01M6GDRKEA0WE670SPFWX5GKCN","zoom-automation","Automate Zoom meeting creation, management, recordings, webinars, and participant tracking via Rube MCP (Composio). Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzoom-automation\u002FSKILL.md",[93],{"categoryNo":94,"categoryName":95,"taxonomyType":66,"taxonomyTypeDesc":67},"01JBSEEDCAT000000000000023","Skill与智能体开发",[97,98,99,100,101,102,103,104,105,106,107,108,109,110,24,111,23,112],"automation","zoom automation","zoom","first","Tools","search","MCP","via","meeting","automate","critical","creation","webinars","composio","recordings","tracking",{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":120,"publishedAt":28},"01M6GDRFS1452PC71JQ38S24HR","zoho-crm-automation","Automate Zoho CRM tasks via Rube MCP (Composio): create\u002Fupdate records, search contacts, manage leads, and convert leads. Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzoho-crm-automation\u002FSKILL.md",[119],{"categoryNo":94,"categoryName":95,"taxonomyType":66,"taxonomyTypeDesc":67},[121,97,122,123,124,125,126,24,102,127,110,128,107,106,101,129,85,130,103,131],"crm automation","zoho crm","crm","zoho crm automation","zoho","leads","contacts","records","update","tasks","manage",{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":136,"categories":137,"keywords":141,"publishedAt":28},"01M6GDRCKQBAVTGHX5XBH26KPZ","zod-validation-expert","Expert in Zod — TypeScript-first schema validation. Covers parsing, custom errors, refinements, type inference, and integration with React Hook Form, Next.js, and tRPC.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzod-validation-expert\u002FSKILL.md",[138],{"categoryNo":139,"categoryName":140,"taxonomyType":66,"taxonomyTypeDesc":67},"01JBSEEDCAT000000000000009","前端开发",[142,143,144,145,146,86,147,148,149,150,151,152,81,153,154,155,156,24,157,158],"expert","zod","zod validation expert","validation","react","safe","parsing","errors","schema validation","react hook form","hook","trpc","form","type","next","schema","Next.js",{"skillNo":160,"name":161,"nameZh":6,"description":162,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":163,"categories":164,"keywords":166,"publishedAt":28},"01M6GDR658B08K4MY0RWD4A6EH","zeroize-audit","Detects missing zeroization of sensitive data in source code and identifies zeroization removed by compiler optimizations, with assembly-level analysis, and control-flow verification. Use for auditing C\u002FC++\u002FRust code handling secrets, keys, passwords, or other sensitive data.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzeroize-audit\u002FSKILL.md",[165],{"categoryNo":94,"categoryName":95,"taxonomyType":66,"taxonomyTypeDesc":67},[167,168,169,170,171,172,173,174,24,175,176,177,178,179,180,181,182,183,184,103],"zeroize audit","audit","write","passwords","get","project","c++","activate","assembly","read","Bash","secrets","analysis","data","flow","verification","code","rust"]