feature-flags
Implementa 'feature flags' para lançar novas funcionalidades gradualmente. Ajuda a controlar a liberação de recursos e reduzir riscos em novas atualizações.
O que ela faz
Flags de funcionalidades são como interruptores para ligar ou desligar partes de um aplicativo. Elas permitem que você mostre novas funcionalidades apenas para alguns usuários ou em momentos específicos, sem precisar mudar o código principal.
Quando usar
- ✓Lançar uma nova funcionalidade para um pequeno grupo de usuários primeiro.
- ✓Testar duas versões de uma funcionalidade para ver qual funciona melhor.
- ✓Desativar rapidamente uma funcionalidade que está causando problemas.
Exemplo do que pedir para a IA
“Ative a nova funcionalidade de checkout para usuários premium.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
Você configura um serviço de flags de funcionalidades e, no seu código, verifica se a flag está ativa para o usuário atual. Se estiver, o novo código é executado; caso contrário, o código antigo é usado.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add sickn33/agentic-awesome-skills --skill feature-flagsOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/feature-flags/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Flags de Funcionalidades
Controle o lançamento de funcionalidades e habilite a liberação progressiva com sistemas de flags de funcionalidades.
Pré-requisitos
- Acesso ao código da aplicação
- Serviço de flags de funcionalidades ou solução auto-hospedada
- Conhecimento básico de padrões de implantação
Tipos de Flags de Funcionalidades
| Tipo | Propósito | Exemplo |
|---|---|---|
| Lançamento | Controle da visibilidade da funcionalidade | Novo fluxo de checkout |
| Experimento | Teste A/B | Teste de cor de botão |
| Operacional | Configuração em tempo de execução | Limitação de taxa |
| Permissão | Controle de acesso do usuário | Funcionalidades premium |
| Chave de Desligamento | Desabilitação de emergência | Integração de terceiros |
LaunchDarkly
Configuração do SDK (Node.js)
const LaunchDarkly = require('launchdarkly-node-server-sdk');
const client = LaunchDarkly.init(process.env.LAUNCHDARKLY_SDK_KEY);
await client.waitForInitialization();
// Evaluate flag
const user = {
key: 'user-123',
email: 'user@example.com',
custom: {
plan: 'premium',
company: 'acme'
}
};
const showNewFeature = await client.variation('new-checkout', user, false);
if (showNewFeature) {
// New feature code
} else {
// Existing code
}
SDK React
import { withLDProvider, useFlags, useLDClient } from 'launchdarkly-react-client-sdk';
// Provider setup
export default withLDProvider({
clientSideID: 'your-client-side-id',
user: {
key: 'user-123',
email: 'user@example.com'
}
})(App);
// Using flags in component
function FeatureComponent() {
const { newCheckout, experimentVariant } = useFlags();
const ldClient = useLDClient();
// Track events
const handleClick = () => {
ldClient.track('checkout-started');
};
if (newCheckout) {
return <NewCheckout onClick={handleClick} />;
}
return <OldCheckout onClick={handleClick} />;
}
Regras de Direcionamento
# LaunchDarkly targeting configuration
flag: new-checkout
targeting:
# Individual users
targets:
- variation: true
values: ['user-123', 'user-456']
# Rules
rules:
# Beta users
- variation: true
clauses:
- attribute: email
op: endsWith
values: ['@company.com']
# Premium plan
- variation: true
clauses:
- attribute: plan
op: in
values: ['premium', 'enterprise']
# Percentage rollout
- variation: true
rollout:
variations:
- variation: true
weight: 20000 # 20%
- variation: false
weight: 80000 # 80%
# Default
fallthrough:
variation: false
Unleash
Configuração do Servidor
# docker-compose.yml
version: '3.8'
services:
unleash:
image: unleashorg/unleash-server:latest
ports:
- "4242:4242"
environment:
- DATABASE_URL=postgres://postgres:password@db/unleash
- DATABASE_SSL=false
depends_on:
- db
db:
image: postgres:15
environment:
- POSTGRES_PASSWORD=password
- POSTGRES_DB=unleash
volumes:
- postgres-data:/var/lib/postgresql/data
volumes:
postgres-data:
Configuração do SDK (Node.js)
const { initialize } = require('unleash-client');
const unleash = initialize({
url: 'http://localhost:4242/api',
appName: 'my-app',
customHeaders: {
Authorization: 'your-api-token'
}
});
unleash.on('ready', () => {
// Check feature
const isEnabled = unleash.isEnabled('new-checkout');
// With context
const context = {
userId: 'user-123',
properties: {
plan: 'premium'
}
};
const isEnabledForUser = unleash.isEnabled('new-checkout', context);
// Get variant
const variant = unleash.getVariant('experiment-flag', context);
console.log(variant.name); // 'control' or 'treatment'
});
Estratégias de Ativação
# Standard strategies
strategies:
- name: default
# On/off for everyone
- name: userWithId
parameters:
userIds: 'user-1,user-2,user-3'
- name: gradualRolloutUserId
parameters:
percentage: 25
groupId: 'new-feature'
- name: gradualRolloutRandom
parameters:
percentage: 50
- name: flexibleRollout
parameters:
rollout: 30
stickiness: userId
groupId: 'checkout-exp'
Implementação Personalizada
Flags Baseadas em Banco de Dados
# models.py
from django.db import models
class FeatureFlag(models.Model):
name = models.CharField(max_length=100, unique=True)
enabled = models.BooleanField(default=False)
…
Perguntas frequentes
O que é um 'progressive rollout'?
É lançar uma nova funcionalidade gradualmente, começando com poucos usuários e aumentando o número ao longo do tempo, para minimizar riscos.
Posso usar flags para desativar funcionalidades?
Sim, elas funcionam como um 'kill switch' para desativar funcionalidades de emergência.
Preciso ser um programador experiente para usar isso?
Um entendimento básico de como o código funciona é útil, mas o serviço de flags simplifica o processo de controle.
Detalhes
Descrição original do autor
Implement feature flags for progressive feature rollout using LaunchDarkly, Unleash, or custom solutions.
Popularidade
- Estrelas no GitHub
- 48 mil
- Posição no ranking
- #2990
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
00-andruia-consultant
Ajuda seu agente a iniciar ou melhorar projetos de IA. Ele analisa código, sugere ferramentas e cria planos de ação em espanhol.
sickn33/agentic-awesome-skills
007
Faz seu agente realizar auditorias de segurança e modelagem de ameaças. É útil para proteger projetos contra ataques e vulnerabilidades.
sickn33/agentic-awesome-skills
10-andruia-skill-smith
Ajuda seu agente a criar ou melhorar ferramentas de IA. Ele define como as ferramentas funcionam, escreve a documentação e valida a estrutura.
sickn33/agentic-awesome-skills
20-andruia-niche-intelligence
Faz seu agente criar um resumo sobre um setor específico. É útil para entender o contexto, regras, padrões de uso e riscos de um projeto, usando fontes confiáveis.
sickn33/agentic-awesome-skills
Skills parecidas
bun-runtime
Faz seu agente usar o Bun para rodar, organizar e testar código. Ajuda a escolher o Bun em vez de outras ferramentas e a migrar projetos existentes.
affaan-m/ECC
database-migrations
Ajuda seu agente a fazer mudanças seguras em bancos de dados. Ele garante que as alterações possam ser desfeitas e minimiza o tempo de inatividade.
affaan-m/ECC
deployment-patterns
Configura fluxos de implantação e CI/CD, containerização e estratégias de rollback para garantir lançamentos seguros.
affaan-m/ECC