AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides guidance and best practices for implementing PostHog feature flags within Go applications. It covers the core principles of flag management, including the use of environment variables for security, server-side evaluation for performance, and strategies for maintaining clean code when integrating flags. The skill also highlights how to leverage PostHog MCP tools to manage flag lifecycles directly from an AI agent interface.
What it does
- Provides patterns for implementing PostHog feature flags in Go code.
- Outlines best practices for flag naming and organization.
- Recommends server-side evaluation to prevent UI flicker.
- Guides the use of environment variables for secure API key management.
- Supports integration with PostHog MCP tools for programmatic flag management.
When to use it
- When you need to perform feature rollouts or A/B testing in a Go backend.
- When you want to manage feature flags programmatically via an AI agent.
- When you need to ensure consistent flag behavior across your application.
- When you are looking for architectural best practices for feature flag implementation.
Advantages
- Promotes secure configuration through environment variables.
- Improves application performance by favoring server-side evaluation.
- Reduces code clutter by encouraging centralized flag logic.
- Enables automated flag management via MCP tool integration.
Usage examples
- “How do I implement a boolean feature flag in my Go service using PostHog?”
- The agent provides a code pattern for checking a feature flag status in Go, emphasizing the use of environment variables for the PostHog key and suggesting a centralized wrapper function.
- “Can you help me update a feature flag status using the PostHog MCP tools?”
- The agent checks for a connected PostHog MCP server and uses the available tools to list or update the specified feature flag directly.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/posthog/feature-flags-go/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip feature-flags-go.zip -d .agents/skills
Documentation by PostHog
PostHog feature flags for Go
This skill helps you add PostHog feature flags to Go applications.
Reference files
references/go.md- Go feature flags installation - docsreferences/adding-feature-flag-code.md- Adding feature flag code - docsreferences/best-practices.md- Feature flag best practices - docs
Consult the documentation for API details and framework-specific patterns.
Key principles
Environment variables: Always use environment variables for PostHog keys. Never hardcode them.
Minimal changes: Add feature flag code alongside existing logic. Don't replace or restructure existing code.
Boolean flags first: Default to boolean flag checks unless the user specifically asks for multivariate flags.
Server-side when possible: Prefer server-side flag evaluation to avoid UI flicker.
PostHog MCP tools
Check if a PostHog MCP server is connected. If available, look for tools related to feature flag management (creating, listing, updating, deleting flags). Use these tools to manage flags directly in PostHog rather than requiring the user to do it manually in the dashboard.
Framework guidelines
No specific framework guidelines.
Files
- ATTRIBUTION.mdAdded by AutoGineer948 B
- LICENSELicence file added by AutoGineer1.0 KiB
- SKILL.md1.3 KiB
- references/adding-feature-flag-code.md108.7 KiB
- references/best-practices.md7.9 KiB
- references/go.md5.3 KiB
references/go.md
Go feature flags installation - Docs
1
Install the package
Required
Install the PostHog Go library:
Terminal
PostHog AI
go get "github.com/posthog/posthog-go"2
Configure PostHog
Required
Initialize the PostHog client with your project token and host:
main.go
PostHog AI
package main import ( "github.com/posthog/posthog-go" ) func main() { client, _ := posthog.NewWithConfig("<ph_project_token>", posthog.Config{Endpoint: "https://us.i.posthog.com"}) defer client.Close() }3
Send events
Recommended
Once installed, you can manually send events to test your integration:
Go
PostHog AI
client.Enqueue(posthog.Capture{ DistinctId: "user_123", Event: "button_clicked", Properties: posthog.NewProperties(). Set("button_name", "signup"), })4
Evaluate boolean feature flags
Required
Check if a feature flag is enabled:
isMyFlagEnabled, err := client.IsFeatureEnabled(posthog.FeatureFlagPayload{ Key: "flag-key", DistinctId: "distinct_id_of_your_user", }) if err != nil { // Handle error (e.g. capture error and fallback to default behaviour) } if isMyFlagEnabled == true { // Do something differently for this user }5
Evaluate multivariate feature flags
Optional
For multivariate flags, check which variant the user has been assigned:
enabledVariant, err := client.GetFeatureFlag(posthog.FeatureFlagPayload{ Key: "flag-key", DistinctId: "distinct_id_of_your_user", }) if err != nil { // Handle error (e.g. capture error and fallback to default behaviour) } if enabledVariant == "variant-key" { // replace 'variant-key' with the key of your variant // Do something differently for this user }6
Include feature flag information in events
Required
If you want to use your feature flag to breakdown or filter events in your insights, you'll need to include feature flag information in those events. This ensures that the feature flag value is attributed correctly to the event.
Note: This step is only required for events captured using our server-side SDKs or API.
Set SendFeatureFlags (recommended)
Set
SendFeatureFlagstotruein your capture call:Go
PostHog AI
client.Enqueue(posthog.Capture{ DistinctId: "distinct_id_of_your_user", Event: "event_name", SendFeatureFlags: true, })Include $feature property
Include the
$feature/feature_flag_nameproperty in your event properties:Go
PostHog AI
client.Enqueue(posthog.Capture{ DistinctId: "distinct_id_of_your_user", Event: "event_name", Properties: posthog.NewProperties(). Set("$feature/feature-flag-key", "variant-key"), // replace feature-flag-key with your flag key. Replace 'variant-key' with the key of your variant })7
Override server properties
Optional
Sometimes, you may want to evaluate feature flags using properties that haven't been ingested yet, or were set incorrectly earlier. You can provide properties to evaluate the flag with:
enabledVariant, err := client.GetFeatureFlag( FeatureFlagPayload{ Key: "flag-key", DistinctId: "distinct_id_of_the_user", Groups: posthog.NewGroups(). Set("your_group_type", "your_group_id"). Set("another_group_type", "your_group_id"), PersonProperties: posthog.NewProperties(). Set("property_name", "value"), GroupProperties: map[string]map[string]interface{}{ "your_group_type": { "group_property_name": "value", }, "another_group_type": { "group_property_name": "value", }, }, }, )8
Running experiments
Optional
Experiments run on top of our feature flags. Once you've implemented the flag in your code, you run an experiment by creating a new experiment in the PostHog dashboard.
9
Next steps
Recommended
Now that you're evaluating flags, continue with the resources below to learn what else Feature Flags enables within the PostHog platform.
Resource Description Creating a feature flag How to create a feature flag in PostHog Adding feature flag code How to check flags in your code for all platforms Framework-specific guides Setup guides for React Native, Next.js, Flutter, and other frameworks How to do a phased rollout Gradually roll out features to minimize risk More tutorials Other real-world examples and use cases
Community questions
Ask a question
Was this page useful?
HelpfulCould be better
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs an MCP server
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- PostHog
- Publisher
- PostHog (Official)
- Source
- PostHog/skills · skills/posthog/feature-flags/skills/go · commit a5d30e7
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
- Also distributed in
- PostHog/skills
AutoGineer is not affiliated with or endorsed by PostHog or PostHog.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download feature-flags-go.zip