Pular para o conteúdo
Skillpedia
Deploy e nuvem (DevOps)48 mil · #2990

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

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/feature-flags/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/feature-flags/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
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-flags

Ou 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.md
Conteú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.

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#2990
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas