skills/featbit-sdks-dotnet/SKILL.md
Expert guidance for integrating FeatBit .NET Server SDK into C# and ASP.NET Core applications. Use when user asks about ".NET SDK", "C# feature flags", "ASP.NET Core FeatBit", "dotnet feature flags", or mentions .cs or .csproj files. Do not use for Node.js, Python, Java, Go, or client-side JavaScript questions.
npx skillsauth add featbit/featbit-skills featbit-sdks-dotnetInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use for server-side .NET applications — Console apps, Web API, Worker Services, and ASP.NET Core — that need real-time feature flag evaluation.
Why server-side SDK: establishes one persistent streaming connection, evaluates all flags locally, and returns results with near-zero latency on each call. Do not use for Blazor WebAssembly or MAUI — those require a client-side SDK.
https://github.com/featbit/featbit-dotnet-sdk
Copy and track progress:
Step 1: Install the package
Run:
dotnet add package FeatBit.ServerSdk
Step 2: Initialize the client
Use this minimal setup:
using FeatBit.Sdk.Server;
using FeatBit.Sdk.Server.Model;
using FeatBit.Sdk.Server.Options;
var options = new FbOptionsBuilder("<your-env-secret>")
.Streaming(new Uri("ws://localhost:5100"))
.Event(new Uri("http://localhost:5100"))
.Build();
var client = new FbClient(options);
var user = FbUser.Builder("anonymous").Build();
var flagValue = client.BoolVariation("flag-key", user, defaultValue: false);
await client.CloseAsync();
Step 3: Validate the integration
If client.Initialized is false or the first variation returns the fallback unexpectedly, verify EnvSecret, Streaming URI, and Event URI, then retry.
Step 4: If this is ASP.NET Core, use dependency injection
Why: ensures a single FbClient is shared across the application lifetime and is disposed automatically when the host shuts down.
Use this pattern:
using FeatBit.Sdk.Server.DependencyInjection;
builder.Services.AddFeatBit(options =>
{
options.EnvSecret = "<your-env-secret>";
options.StreamingUri = new Uri("ws://localhost:5100");
options.EventUri = new Uri("http://localhost:5100");
});
Inject IFbClient where feature flag evaluation is needed.
After the client is initialized, evaluate a feature flag with a user and a fallback value:
const string flagKey = "game-runner";
var user = FbUser.Builder("anonymous").Build();
var boolVariation = client.BoolVariation(flagKey, user, defaultValue: false);
var boolVariationDetail = client.BoolVariationDetail(flagKey, user, defaultValue: false);
Use BoolVariation when only the flag value is needed. Use BoolVariationDetail when the user also asks why a value was returned.
Add custom properties to FbUser when targeting rules depend on user attributes beyond key and name:
var user = FbUser.Builder("a-unique-key-of-user")
.Name("bob")
.Custom("age", "15")
.Custom("country", "FR")
.Build();
Use built-in properties for stable identity fields. Use Custom(key, value) for targeting attributes that must be referenced in feature flag rules.
references/openfeature-integration.md only when the user asks about OpenFeature or the FeatBit OpenFeature provider for .NET.tools
Expert guidance for integrating FeatBit JavaScript Client SDK in browser environments. Use when user asks about "JavaScript client SDK", "browser feature flags", "FeatBit JS", "vanilla JS SDK", or mentions browser-side HTML/JS with FeatBit. Do not use for Node.js server-side, React, React Native, .NET, Python, Java, or Go questions.
development
Expert guidance for integrating FeatBit Java Server SDK. Use when user asks about "Java SDK", "Java feature flags", "FeatBit Java", "Maven feature flags", or mentions .java or build.gradle files with FeatBit. Do not use for .NET, Go, Node.js, Python, or JavaScript questions.
development
Expert guidance for integrating FeatBit Go Server SDK. Use when user asks about "Go SDK", "Golang feature flags", "FeatBit Go", or mentions .go files with FeatBit. Do not use for Node.js, Python, Java, .NET, or JavaScript questions.
development
Expert guidance for using the FeatBit REST API to manage projects, environments, and feature flags programmatically. Use when user asks about "FeatBit API", "REST API", "create project API", "create environment API", "create feature flag API", "API authentication", "OpenAPI key", or needs to automate FeatBit operations via HTTP endpoints. Do not use for SDK integration, deployment configuration, or flag evaluation questions.