Validar nomes de feature flags
Digite o nome de uma flag e saiba na hora se ele segue a convenção: enable-checkout-express é válido, com o prefixo enable e três segmentos em minúsculas. Maiúsculas, separadores misturados ou uma palavra solta falham com a lista de motivos. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Nome
- enable-checkout-express
- Estilo
- kebab
- Prefixo
- enable
- Segmentos
- enable, checkout, express
- Número de segmentos
- 3
Feature flags (também chamados toggles, gates ou kill switches) só permanecem gerenciáveis quando cada nome segue uma convenção compartilhada. Misturar maiúsculas, restos de camelCase, acrônimos aleatórios e flags sem prefixo de verbo ou área dificulta a busca, quebra painéis e causa colisões entre equipes.
O que a convenção de nomes exige
Um nome de feature flag sob esta convenção é um identificador curto de máquina, não prosa livre. Misturar hífens e underscores no mesmo nome é falha dura, assim como qualquer maiúscula, espaço, barra ou pontuação. Terceiro, o nome deve se dividir em pelo menos dois segmentos não vazios para que uma palavra isolada como checkout nunca seja publicada como flag; as equipes precisam de um prefixo mais um corpo descritivo.
Quarto, o primeiro segmento deve ser um prefixo descritivo conhecido de catálogos comuns: enable, disable, show, hide, allow, deny, use, is, has, can, feature, ff, exp, experiment, rollout, beta, alpha, new, legacy, dark, light, ops, ui, api, web, mobile, backend, frontend, gate, toggle, flag, release, kill, killswitch, perm ou temp. Quinto, o comprimento é limitado a sessenta e quatro caracteres para ser amigável a stores de configuração, variáveis de ambiente e parâmetros de consulta URL.
Separadores iniciais, finais ou duplicados são rejeitados para o código gerado e filtros regex permanecerem simples.
Contrato de entrada, formato da resposta e erros
O valor de exemplo enable-checkout-express é um flag kebab-case válido com o prefixo enable. Quando o nome atende a todas as regras, valid é true, issues é um array vazio e style é kebab ou snake. Números são convertidos em strings; objetos e arrays são rejeitados.
Como a implementação é parse pura de nível A, os resultados são estáveis entre runtimes, sem rede e sem timestamps.
Casos de uso
Scripts de migração e limpeza
Verifique em lote flags legados em camelCase ou UPPER_SNAKE e emita uma lista de issues legível por máquina para cada candidato a renomeação.
Perguntas frequentes
O que acontece se o nome estiver vazio?
Nomes vazios ou só espaços não podem ser avaliados contra a convenção.
Quais prefixos descritivos são permitidos?
Prefixos comuns de catálogo como enable, disable, show, hide, feature, ff, exp, experiment, rollout, beta, api, ui, gate, toggle, release, kill e marcadores de área ou intenção semelhantes listados pelo verificador.
Posso misturar hífens e sublinhados no mesmo nome?
Não. Cada nome usa um único estilo de separador do início ao fim: hífens ou sublinhados, nunca os dois. Misturá-los é falha direta, assim como uma letra maiúscula, um espaço, uma barra ou qualquer sinal de pontuação.
Por que uma palavra só, como checkout, é rejeitada?
Porque a convenção exige pelo menos dois segmentos não vazios: um prefixo conhecido, como enable ou rollout, e um corpo descritivo. Uma palavra solta não diz que tipo de chave é nem a qual área do produto pertence.
Quantos caracteres o nome de uma flag pode ter?
Até 64. O limite mantém os nomes práticos em arquivos de configuração, variáveis de ambiente e endereços web. Separadores no começo, no fim ou repetidos em sequência também são recusados.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/dev/feature-flag-name-validate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"enable-checkout-express"}'const res = await fetch("https://api.kit.forhosting.com/dev/feature-flag-name-validate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"name": "enable-checkout-express"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/feature-flag-name-validate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"name": "enable-checkout-express"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/feature-flag-name-validate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"name":"enable-checkout-express"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"name":"enable-checkout-express"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/feature-flag-name-validate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"name": "enable-checkout-express"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.feature_flag_name_validate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Esta capacidade valida um nome candidato contra um padrão prático da indústria: não vazio, todo em minúsculas, em kebab-case com hífens ou em snake_case (nunca os dois separadores na mesma string), pelo menos dois segmentos, prefixo descritivo como enable, feature, ff, rollout ou beta, no máximo sessenta e quatro caracteres e sem separadores nas bordas nem consecutivos. Entrada vazia falha com invalid_input e não é cobrada. Falhas de convenção devolvem um payload de sucesso com valid em false e uma lista ordenada de issues para a integração contínua falhar o build com um relatório claro.
O que a convenção de nomes exige
Primeiro, não pode estar vazio nem ser só espaços: um nome vazio é rejeitado imediatamente como invalid_input porque não há nada útil a avaliar. Segundo, cada caractere deve ser letra ASCII minúscula, dígito e exatamente um estilo de separador: hífens para kebab-case ou underscores para snake_case. Juntas, essas regras se alinham a chaves no estilo LaunchDarkly, toggles Unleash e a maioria dos arquivos JSON ou YAML internos sem inventar um dialeto de um único fornecedor.
Contrato de entrada, formato da resposta e erros
Em sucesso a resposta sempre inclui valid (booleano), o name após trim, style (kebab, snake ou null quando o padrão não foi classificado), prefix (primeiro segmento ou null), segments como array ordenado de strings, segment_count, has_descriptive_prefix, issues como lista estável e ordenada de códigos legíveis por máquina, e uma frase curta de convention adequada à interface. Quando o nome existe mas quebra a convenção, valid é false e issues lista códigos como not_lowercase, mixed_separators, missing_descriptive_prefix, too_few_segments, invalid_characters, consecutive_separators, leading_or_trailing_separator, too_long, missing_separator_segments ou invalid_pattern—sem lançar erro—para linters e bots de pull request imprimirem todos os problemas de uma vez. Somente nomes vazios, ausentes ou não string lançam invalid_input; essas falhas não consomem saldo pré-pago.
Onde a validação de nomes de flags se paga
Equipes de plataforma e de experiência do desenvolvedor conectam esta verificação a geradores de scaffolding para que novos flags não entrem sem prefixo nem estilo de separador. Jobs de integração contínua examinam pull requests que tocam catálogos de flags ou arquivos de ambiente de exemplo e falham o build quando um nome confundiria operadores meses depois. Ferramentas de analytics de produto e de experimentos usam as mesmas regras ao registrar chaves de rollout para painéis agruparem por prefixo de forma consistente em mobile, web e backend. Bots de code review chamam a API com uma string candidata e colam a lista de issues no fio da revisão em vez de discutir estilo por gosto. Como cada chamada bem-sucedida custa o preço base publicado US$ 0,002 sem tokens de modelo, você pode validar milhares de nomes em um script de migração sem gasto surpresa; envios vazios permanecem sem cobrança como erros do cliente. Mantenha a tabela de prefixos alinhada ao estilo da sua organização mapeando verbos internos para o conjunto suportado, ou envolva este endpoint e rejeite qualquer prefixo que sua política proíba mesmo quando a convenção base passa.
Casos de integração
Lint de CI para catálogos de flags
Analise arquivos YAML ou JSON de flags em pull requests e falhe o build quando algum nome estiver vazio, misturar maiúsculas ou faltar prefixo descritivo.
Scaffolding e geradores CLI
Valide o nome que um desenvolvedor digita antes de gravar enable-foo-bar em configuração, stubs de SDK ou painéis de feature toggles.
Perguntas técnicas
O que é um nome de feature flag válido?
Uma string não vazia em minúsculas em kebab-case ou snake_case, pelo menos dois segmentos, primeiro segmento um prefixo descritivo (por exemplo enable, feature ou ff), no máximo 64 caracteres, sem misturar separadores.
Nomes camelCase ou PascalCase são aceitos?
Não. Letras maiúsculas produzem not_lowercase na lista de issues e valid fica false. Converta primeiro para kebab-case ou snake_case.
Quanto custa o validador de nomes de feature flags?
A ferramenta do navegador é gratuita. Requisições API usam saldo pré-pago KIT a US$ 0,002 por chamada bem-sucedida; entrada vazia inválida não é cobrada.