Skip to main content Skills Marketplace Discover and explore AI skills built by the community.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Copy promptShow prompt details A direct command skips the review prompt. Inspect the source before running it.
npx skills add https://github.com/BEKO2210/Firstbrain --skill azure-appconfiguration-tsThe command stays on one line. Scroll horizontally to inspect it before copying.
Prefer a local copy? Download the files currently available to SkillsMP.
Download Zip Downloading... More from this repository Related occupations SOC
Based on SOC occupation classification
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]]