Integrates FeatBit .NET Server SDK into C# console apps, Web APIs, Worker Services, and ASP.NET Core for real-time feature flag evaluation with setup and dependency injection guidance.
npx claudepluginhub joshuarweaver/cascade-code-devops-misc-1 --plugin featbit-featbit-skillsThis skill uses the workspace's default tool permissions.
Use for server-side .NET applications — Console apps, Web API, Worker Services, and ASP.NET Core — that need real-time feature flag evaluation.
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
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.