Validar nombres de feature flags
Escriba el nombre de una flag y sepa al instante si cumple la convención: enable-checkout-express es válido, con el prefijo enable y tres segmentos en minúsculas. Mayúsculas, separadores mezclados o una palabra suelta fallan con la lista de motivos. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Nombre
- enable-checkout-express
- Estilo
- kebab
- Prefijo
- enable
- Segmentos
- enable, checkout, express
- Número de segmentos
- 3
Los feature flags (también llamados toggles, gates o kill switches) solo se gestionan bien cuando cada nombre sigue una convención compartida. Mezclar mayúsculas, restos de camelCase, acrónimos aleatorios y flags sin prefijo de verbo o área complica la búsqueda, rompe los paneles y provoca colisiones entre equipos.
Qué exige la convención de nombres
Un nombre de feature flag bajo esta convención es un identificador corto de máquina, no prosa libre. Mezclar guiones y guiones bajos en el mismo nombre es un fallo duro, igual que cualquier mayúscula, espacio, barra u otra puntuación. Tercero, el nombre debe dividirse en al menos dos segmentos no vacíos para que una palabra suelta como checkout no se publique como flag; los equipos necesitan un prefijo más un cuerpo descriptivo.
Cuarto, el primer segmento debe ser un prefijo descriptivo conocido de catálogos habituales: 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 o temp. Quinto, la longitud se limita a sesenta y cuatro caracteres para ser amable con almacenes de configuración, variables de entorno y parámetros de consulta URL.
Se rechazan separadores iniciales, finales o dobles para que el código generado y los filtros regex sigan simples.
Contrato de entrada, forma de respuesta y errores
El valor de ejemplo enable-checkout-express es un flag kebab-case válido con el prefijo enable. Cuando el nombre cumple todas las reglas, valid es true, issues es un array vacío y style es kebab o snake. Los números se convierten a cadena; objetos y arrays se rechazan.
Como la implementación es parse pura de nivel A, los resultados son estables entre entornos, sin red ni marcas de tiempo.
Qué puede hacer con ella
Scripts de migración y limpieza
Compruebe por lotes flags antiguos en camelCase o UPPER_SNAKE y emita una lista de issues legible por máquina para cada candidato a renombrar.
Preguntas frecuentes
¿Qué ocurre si el nombre está vacío?
Los nombres vacíos o solo espacios no pueden evaluarse frente a la convención.
¿Qué prefijos descriptivos están permitidos?
Prefijos habituales de catálogo como enable, disable, show, hide, feature, ff, exp, experiment, rollout, beta, api, ui, gate, toggle, release, kill y marcadores de área o intención similares que enumera el comprobador.
¿Puedo mezclar guiones y guiones bajos en el mismo nombre?
No. Cada nombre usa un único estilo de separador de principio a fin: guiones o guiones bajos, nunca los dos. Mezclarlos es un fallo directo, igual que una mayúscula, un espacio, una barra o cualquier signo de puntuación.
¿Por qué se rechaza una sola palabra como checkout?
Porque la convención exige al menos dos segmentos no vacíos: un prefijo conocido, como enable o rollout, y un cuerpo descriptivo. Una palabra suelta no dice qué tipo de interruptor es ni a qué área del producto pertenece.
¿Cuántos caracteres puede tener el nombre de una flag?
Hasta 64. El límite mantiene los nombres manejables en archivos de configuración, variables de entorno y direcciones web. También se rechazan los separadores al principio, al final o repetidos seguidos.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
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)Ejemplo de solicitud
{
"name": "enable-checkout-express"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.feature_flag_name_validate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Esta capacidad valida un nombre candidato frente a un patrón práctico de la industria: no vacío, todo en minúsculas, en kebab-case con guiones o en snake_case (nunca ambos separadores en la misma cadena), al menos dos segmentos, prefijo descriptivo como enable, feature, ff, rollout o beta, máximo sesenta y cuatro caracteres y sin separadores al borde ni consecutivos. La entrada vacía falla con invalid_input y no se factura. Los fallos de convención devuelven un payload de éxito con valid en false y una lista ordenada de issues para que la integración continua falle el build con un informe claro.
Qué exige la convención de nombres
Primero, no debe estar vacío ni ser solo espacios: un nombre vacío se rechaza al instante como invalid_input porque no hay nada útil que evaluar. Segundo, cada carácter debe ser letra ASCII minúscula, dígito y exactamente un estilo de separador: guiones para kebab-case o guiones bajos para snake_case. En conjunto, estas reglas encajan con claves al estilo LaunchDarkly, toggles Unleash y la mayoría de ficheros JSON o YAML internos sin inventar un dialecto de un solo proveedor.
Contrato de entrada, forma de respuesta y errores
Envíe un cuerpo JSON con un campo de cadena obligatorio llamado name (el manejador acepta también los alias flag_name y text por flexibilidad de transporte). En éxito la respuesta incluye siempre valid (booleano), el name recortado, style (kebab, snake o null si el patrón no se clasificó), prefix (primer segmento o null), segments como array ordenado de cadenas, segment_count, has_descriptive_prefix, issues como lista estable y ordenada de códigos legibles por máquina, y una frase breve de convention apta para la interfaz. Cuando el nombre existe pero rompe la convención, valid es false e issues enumera 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 o invalid_pattern—sin lanzar error—para que linters y bots de pull request impriman todos los problemas de una vez. Solo nombres vacíos, ausentes o no cadena lanzan invalid_input; esos fallos no consumen saldo prepago.
Dónde aporta valor la validación de nombres de flags
Los equipos de plataforma y de experiencia de desarrollador integran esta comprobación en generadores de scaffolding para que no entren flags nuevos sin prefijo ni estilo de separador. Los trabajos de integración continua escanean solicitudes de cambios que tocan catálogos de flags o ficheros de entorno de ejemplo y fallan el build cuando un nombre confundiría a los operadores meses después. Las herramientas de analítica de producto y de experimentos usan las mismas reglas al registrar claves de despliegue para que los paneles agrupen por prefijo de forma coherente en mobile, web y backend. Los bots de revisión de código llaman a la API con una cadena candidata y pegan la lista de issues en el hilo de revisión en lugar de discutir el estilo por gusto. Como cada llamada correcta cuesta el precio base publicado $0.002 sin tokens de modelo, puede validar miles de nombres en un script de migración sin gasto sorpresa; los envíos vacíos siguen sin cargo como error del cliente. Mantenga la tabla de prefijos alineada con el estilo de su organización mapeando verbos internos al conjunto admitido, o envuelva este endpoint y rechace cualquier prefijo que su política prohíba aunque la convención base pase.
Casos de integración
Lint de CI para catálogos de flags
Analice ficheros YAML o JSON de flags en solicitudes de cambios y falle el build si algún nombre está vacío, mezcla mayúsculas o carece de prefijo descriptivo.
Scaffolding y generadores CLI
Valide el nombre que escribe un desarrollador antes de grabar enable-foo-bar en configuración, stubs de SDK o paneles de feature toggles.
Preguntas técnicas
¿Qué es un nombre de feature flag válido?
Una cadena no vacía en minúsculas en kebab-case o snake_case, al menos dos segmentos, primer segmento un prefijo descriptivo (por ejemplo enable, feature o ff), máximo 64 caracteres, sin mezclar separadores.
¿Se aceptan nombres camelCase o PascalCase?
No. Las mayúsculas producen not_lowercase en la lista de issues y valid es false. Conviértalos primero a kebab-case o snake_case.
¿Cuánto cuesta el validador de nombres de feature flags?
La herramienta del navegador es gratuita. Las peticiones API usan saldo prepago KIT a $0.002 por llamada correcta; la entrada vacía inválida no se factura.