Skip to main content Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Un comando directo omite el prompt de revisión. Revisa el origen antes de ejecutarlo.
npx skills add https://github.com/BEKO2210/Firstbrain --skill azure-appconfiguration-tsEl comando permanece en una sola línea. Desplázate horizontalmente para revisarlo antes de copiarlo.
¿Prefieres una copia local? Descarga los archivos que SkillsMP tiene disponibles ahora.
Ocupaciones relacionadasSOC
Basado en la clasificación ocupacional SOC
| name | azure-appconfiguration-ts |
| description | Centralized configuration management with feature flags and dynamic refresh. |
| type | skill |
| created | 2026-02-27T00:00:00.000Z |
| domain | cloud-infrastructure |
| category | azure |
| risk | unknown |
| source | community |
| tags | ["skill","cloud-infrastructure","azure","appconfiguration"] |
Azure App Configuration SDK for TypeScript
Centralized configuration management with feature flags and dynamic refresh.
Installation
npm install @azure/app-configuration @azure/identity
npm install @azure/app-configuration-provider @azure/identity
npm install @microsoft/feature-management
Environment Variables
AZURE_APPCONFIG_ENDPOINT=https://<your-resource>.azconfig.io
AZURE_APPCONFIG_CONNECTION_STRING=Endpoint=https://...;Id=...;Secret=...
Authentication
import { AppConfigurationClient } from "@azure/app-configuration";
import { DefaultAzureCredential } from "@azure/identity";
const client = new AppConfigurationClient(
process.env.AZURE_APPCONFIG_ENDPOINT!,
new DefaultAzureCredential()
);
const client2 = new AppConfigurationClient(
process.env.AZURE_APPCONFIG_CONNECTION_STRING!
);
CRUD Operations
Create/Update Settings
await client.addConfigurationSetting({
key: "app:settings:message",
value: "Hello World",
label: "production",
: ,
: { : },
});
client.({
: ,
: ,
: ,
});
existing = client.({ : });
existing. = ;
client.(existing, { : });
contentType
"text/plain"
tags
environment
"prod"
await
setConfigurationSetting
key
"app:settings:message"
value
"Updated value"
label
"production"
const
await
getConfigurationSetting
key
"myKey"
value
"new value"
await
setConfigurationSetting
onlyIfUnchanged
true
Read Settings
const setting = await client.getConfigurationSetting({
key: "app:settings:message",
label: "production",
});
console.log(setting.value);
const settings = client.listConfigurationSettings({
keyFilter: "app:*",
labelFilter: "production",
});
for await (const setting of settings) {
console.log(`${setting.key}: ${setting.value}`);
}
Delete Settings
await client.deleteConfigurationSetting({
key: "app:settings:message",
label: "production",
});
Lock/Unlock (Read-Only)
await client.setReadOnly({ key: "myKey", label: "prod" }, true);
await client.setReadOnly({ key: "myKey", label: "prod" }, false);
App Configuration Provider
Load Configuration
import { load } from "@azure/app-configuration-provider";
import { DefaultAzureCredential } from "@azure/identity";
const appConfig = await load(
process.env.AZURE_APPCONFIG_ENDPOINT!,
new DefaultAzureCredential(),
{
selectors: [
{ keyFilter: "app:*", labelFilter: "production" },
],
trimKeyPrefixes: ["app:"],
}
);
const value = appConfig.get("settings:message");
const config = appConfig.constructConfigurationObject({ separator: ":" });
console.log(config.settings.message);
Dynamic Refresh
const appConfig = await load(endpoint, credential, {
selectors: [{ keyFilter: "app:*" }],
refreshOptions: {
enabled: true,
refreshIntervalInMs: 30_000,
},
});
appConfig.refresh();
const disposer = appConfig.onRefresh(() => {
console.log("Configuration refreshed!");
});
app.use((req, res, next) => {
appConfig.refresh();
next();
});
Key Vault References
const appConfig = await load(endpoint, credential, {
selectors: [{ keyFilter: "app:*" }],
keyVaultOptions: {
credential: new DefaultAzureCredential(),
secretRefreshIntervalInMs: 7200_000,
},
});
const dbPassword = appConfig.get("database:password");
Feature Flags
Create Feature Flag (Low-Level)
import {
featureFlagPrefix,
featureFlagContentType,
FeatureFlagValue,
ConfigurationSetting,
} from "@azure/app-configuration";
const flag: ConfigurationSetting<FeatureFlagValue> = {
key: `${featureFlagPrefix}Beta`,
contentType: featureFlagContentType,
value: {
id: "Beta",
enabled: true,
description: "Beta feature",
conditions: {
clientFilters: [
{
name: "Microsoft.Targeting",
parameters: {
Audience: {
Users: ["user@example.com"],
Groups: [{ Name: "beta-testers", RolloutPercentage: 50 }],
DefaultRolloutPercentage: 0,
},
},
},
],
},
},
};
await client.addConfigurationSetting(flag);
Load and Evaluate Feature Flags
import { load } from "@azure/app-configuration-provider";
import {
ConfigurationMapFeatureFlagProvider,
FeatureManager,
} from "@microsoft/feature-management";
const appConfig = await load(endpoint, credential, {
featureFlagOptions: {
enabled: true,
selectors: [{ keyFilter: "*" }],
refresh: {
enabled: true,
refreshIntervalInMs: 30_000,
},
},
});
const featureProvider = new ConfigurationMapFeatureFlagProvider(appConfig);
const featureManager = new FeatureManager(featureProvider);
const isEnabled = await featureManager.isEnabled("Beta");
const isEnabledForUser = await featureManager.isEnabled("Beta", {
userId: "user@example.com",
groups: ["beta-testers"],
});
Snapshots
const snapshot = await client.beginCreateSnapshotAndWait({
name: "release-v1.0",
retentionPeriod: 2592000,
filters: [{ keyFilter: "app:*", labelFilter: "production" }],
});
const snap = await client.getSnapshot("release-v1.0");
const settings = client.listConfigurationSettingsForSnapshot("release-v1.0");
for await (const setting of settings) {
console.log(`${setting.key}: ${setting.value}`);
}
await client.archiveSnapshot("release-v1.0");
await client.recoverSnapshot("release-v1.0");
const config = await load(endpoint, credential, {
selectors: [{ snapshotName: "release-v1.0" }],
});
Labels
await client.setConfigurationSetting({
key: "database:host",
value: "dev-db.example.com",
label: "development",
});
await client.setConfigurationSetting({
key: "database:host",
value: "prod-db.example.com",
label: "production",
});
const prodSettings = client.listConfigurationSettings({
keyFilter: "*",
labelFilter: "production",
});
const noLabelSettings = client.listConfigurationSettings({
labelFilter: "\0",
});
for await (const label of client.listLabels()) {
console.log(label.name);
}
Key Types
import {
AppConfigurationClient,
ConfigurationSetting,
FeatureFlagValue,
SecretReferenceValue,
featureFlagPrefix,
featureFlagContentType,
secretReferenceContentType,
ListConfigurationSettingsOptions,
} from "@azure/app-configuration";
import { load } from "@azure/app-configuration-provider";
import {
FeatureManager,
ConfigurationMapFeatureFlagProvider,
} from "@microsoft/feature-management";
Best Practices
- Use provider for apps -
@azure/app-configuration-provider for runtime config
- Use low-level for management -
@azure/app-configuration for CRUD operations
- Enable refresh - For dynamic configuration updates
- Use labels - Separate configurations by environment
- Use snapshots - For immutable release configurations
- Sentinel pattern - Use a sentinel key to trigger full refresh
- RBAC roles -
App Configuration Data Reader for read-only access
When to Use
This skill is applicable to execute the workflow or actions described in the overview.
Connections
- Domain: [[Cloud & Infrastruktur]]
- Kategorie: [[Microsoft Azure]]
- Navigation: [[Skills Uebersicht]], [[Home]]