Synthèse automatique
Vérifie les fichiers de configuration et les variables d'environnement (.env, config.json, settings.py, application.yml) pour repérer les paramètres manquants, mal formatés ou non documentés avant le déploiement.
Points forts
- Compare .env.example et .env avec comm/grep pour lister les variables absentes
- Fournit des contrôles de format et de typage prêts à l'emploi (Node.js et Python), y compris la validation de PORT et d'URL
- Propose une validation par schéma (exemple Joi) et des vérifications de sécurité de base : .env dans .gitignore, secrets en dur
- Génère un .env.example à partir du fichier réel avec sed
Limites
- S'appuie sur des heuristiques grep limitées aux noms de variables en majuscules ; les conventions différentes peuvent être ignorées
- Les exemples de code sont surtout JavaScript/Node.js et Python, avec Joi comme seule bibliothèque de schéma citée
- N'exécute pas l'application : la validation au runtime doit être ajoutée au code par l'utilisateur
- La détection de secrets reste un grep simple, pas un vrai scanner de credentials
À utiliser dès que vous ajoutez ou modifiez des variables d'environnement, ou qu'un déploiement échoue à cause d'un paramètre de configuration manquant.
À éviter pour des configurations gérées par un service externe (Vault, SSM) ou comme substitut à un audit de sécurité approfondi.
Analyse de sécurité
PrudenceThe skill is legitimate configuration validation, but it instructs the agent to read .env files that often contain secrets and to write generated files via Bash/Write. These are powerful capabilities used for a reasonable purpose, so it warrants caution rather than being outright risky.
- •Uses Bash and Write tools to read .env files, which may contain secrets, and to generate/overwrite .env.example files.
- •The sed command `sed 's/=.*/=/' .env > .env.example` can overwrite an existing .env.example without confirmation.
- •No exfiltration or destructive actions are present, but secrets could be exposed in agent context during validation.
Exemples
Compare my .env and .env.example, list every variable that's missing from .env, and flag any values that look malformed.Create a safe .env.example from my .env with placeholder values, and make sure .env is in .gitignore.Add a startup check to my Node.js app that validates required env vars and their types (PORT, DATABASE_URL, API_KEY) and fails fast with a clear error.name: configuration-validator description: Validates environment variables, config files, and ensures all required settings are documented. Use when working with .env files, configs, or deployment settings. allowed-tools: Read, Grep, Glob, Write, Bash
Configuration Validator
Validates configuration files and environment variables to prevent runtime errors and missing settings.
When to Use
- Working with environment variables or config files
- Deployment or configuration issues
- User mentions ".env", "config", "environment variables", or "settings"
Instructions
1. Find Configuration Files
Search for:
.env,.env.example,.env.localconfig/,config.js,config.jsonsettings.py,application.ymlappsettings.json,.env.production
2. Detect Missing Variables
Compare .env.example vs .env:
# Variables in example but not in .env
comm -23 <(grep -o '^[A-Z_]*' .env.example | sort) <(grep -o '^[A-Z_]*' .env | sort)
Common required variables:
DATABASE_URL
API_KEY
SECRET_KEY
NODE_ENV
PORT
3. Validate Variable Format
Check for common issues:
// Missing quotes for values with spaces
DATABASE_URL=postgres://localhost/db name // Bad
DATABASE_URL="postgres://localhost/db name" // Good
// Missing protocol
API_URL=example.com // Bad
API_URL=https://example.com // Good
// Boolean as string
DEBUG=true // Might be interpreted as string
DEBUG=1 // More explicit
4. Validate Required Variables at Runtime
Node.js example:
const requiredEnvVars = [
'DATABASE_URL',
'API_KEY',
'JWT_SECRET'
];
const missing = requiredEnvVars.filter(v => !process.env[v]);
if (missing.length > 0) {
throw new Error(`Missing required env vars: ${missing.join(', ')}`);
}
Python example:
import os
REQUIRED_ENV_VARS = [
'DATABASE_URL',
'SECRET_KEY',
'ALLOWED_HOSTS'
]
missing = [var for var in REQUIRED_ENV_VARS if not os.getenv(var)]
if missing:
raise EnvironmentError(f"Missing env vars: {', '.join(missing)}")
5. Type Validation
Validate types:
const config = {
port: parseInt(process.env.PORT || '3000', 10),
debug: process.env.DEBUG === 'true',
apiUrl: new URL(process.env.API_URL), // Throws if invalid
maxConnections: Number(process.env.MAX_CONNECTIONS),
};
// Validate
if (isNaN(config.port) || config.port < 1 || config.port > 65535) {
throw new Error('PORT must be a valid port number');
}
6. Generate .env.example
Create template from actual .env:
# Remove values, keep keys
sed 's/=.*/=/' .env > .env.example
Or with placeholders:
DATABASE_URL=postgres://user:password@localhost:5432/dbname
API_KEY=your_api_key_here
SECRET_KEY=generate_random_secret
PORT=3000
NODE_ENV=development
7. Configuration Schema
Define schema (using Joi example):
const Joi = require('joi');
const envSchema = Joi.object({
NODE_ENV: Joi.string()
.valid('development', 'production', 'test')
.required(),
PORT: Joi.number()
.port()
.default(3000),
DATABASE_URL: Joi.string()
.uri()
.required(),
API_KEY: Joi.string()
.min(32)
.required(),
DEBUG: Joi.boolean()
.default(false),
}).unknown();
const { error, value } = envSchema.validate(process.env);
if (error) {
throw new Error(`Config validation error: ${error.message}`);
}
module.exports = value;
8. Security Checks
Don't commit secrets:
# Check if .env is gitignored
if ! grep -q "^\.env$" .gitignore; then
echo "Warning: .env not in .gitignore"
fi
# Check for hardcoded secrets in code
grep -r "api_key.*=.*['\"]" --exclude-dir=node_modules
Common security issues:
- Hardcoded passwords/keys
- Default secrets in production
- Exposed sensitive configs
- Unencrypted secrets
9. Environment-Specific Configs
Organize by environment:
.env.development
.env.staging
.env.production
.env.test
Load appropriately:
require('dotenv').config({
path: `.env.${process.env.NODE_ENV || 'development'}`
});
10. Document All Variables
Create CONFIG.md:
# Configuration
## Environment Variables
### Required
- `DATABASE_URL`: PostgreSQL connection string
- Format: `postgres://user:pass@host:port/db`
- Example: `postgres://app:secret@localhost:5432/myapp`
- `API_KEY`: Third-party API key
- Obtain from: https://dashboard.example.com
- Required scopes: read, write
### Optional
- `PORT`: Server port (default: 3000)
- `DEBUG`: Enable debug logging (default: false)
- `MAX_CONNECTIONS`: Database pool size (default: 10)
## Setup
1. Copy `.env.example` to `.env`
2. Fill in all required values
3. Run `npm run validate-config` to verify
11. Validation Script
Create scripts/validate-config.js:
const fs = require('fs');
function validateConfig() {
const required = ['DATABASE_URL', 'API_KEY'];
const missing = required.filter(v => !process.env[v]);
if (missing.length > 0) {
console.error(`❌ Missing: ${missing.join(', ')}`);
process.exit(1);
}
console.log('✓ All required config variables present');
}
validateConfig();
12. Best Practices
- Never commit .env: Always gitignore
- Maintain .env.example: Keep it updated
- Validate on startup: Fail fast if misconfigured
- Use strong defaults: Sensible fallbacks
- Document everything: Explain each variable
- Rotate secrets: Regularly update keys
- Use secret managers: Vault, AWS Secrets Manager for production
- Type check: Validate types, not just presence
Supporting Files
templates/config-validator.jstemplates/.env.examplescripts/generate-env-example.sh
Du fichier au premier essai
Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.
Consulter la source et ses fichiers annexesCe téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.
1. Télécharger le fichier
Télécharger SKILL.mdDepuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/configuration-validator-mm78no5j/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.
Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.
mkdir -p '.skill-downloads/configuration-validator-mm78no5j' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/configuration-validator-mm78no5j/download' --output '.skill-downloads/configuration-validator-mm78no5j/SKILL.md.part' && mv '.skill-downloads/configuration-validator-mm78no5j/SKILL.md.part' '.skill-downloads/configuration-validator-mm78no5j/SKILL.md'2. Vérifier les prérequis
Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.
Outils déclarés par l’auteur (à vérifier dans votre agent) : Read, Grep, Glob, Write, Bash
Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.
Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.
3. Charger la skill
Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.
Claude Code
test -f '.skill-downloads/configuration-validator-mm78no5j/SKILL.md' && test -s '.skill-downloads/configuration-validator-mm78no5j/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/configuration-validator' && cp -R '.skill-downloads/configuration-validator-mm78no5j' '.claude/skills/configuration-validator'Cursor
test -f '.skill-downloads/configuration-validator-mm78no5j/SKILL.md' && test -s '.skill-downloads/configuration-validator-mm78no5j/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/configuration-validator' && cp -R '.skill-downloads/configuration-validator-mm78no5j' '.cursor/skills/configuration-validator'Codex
test -f '.skill-downloads/configuration-validator-mm78no5j/SKILL.md' && test -s '.skill-downloads/configuration-validator-mm78no5j/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/configuration-validator' && cp -R '.skill-downloads/configuration-validator-mm78no5j' '.agents/skills/configuration-validator'OpenSkills
OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.
Installation officielle d’OpenSkillsopenskills install './.skill-downloads/configuration-validator-mm78no5j'openskills read 'configuration-validator-mm78no5j'La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.
Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.
openskills syncMode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.
4. Faire un premier essai
Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :
Lis .skill-downloads/configuration-validator-mm78no5j/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.
Configurer un canal de discussion avec SecretRefs
DevOps
Configurez des canaux de discussion avec des commandes non interactives, les secrets étant uniquement des SecretRefs. Couvre les étapes de collecte, modification, réparation et vérification.
Enquêter sur les échecs CI de ClickHouse
DevOps
Investigue un échec CI de ClickHouse de bout en bout à partir d'une URL de PR ou de rapport S3. Récupère les tests échoués, classe flaky vs vraie régression, et cherche des issues/fixes existants.
Revue de PR Ansible
DevOps
Examine une PR Ansible selon le processus standardisé du projet, incluant la validation des changelogs, la couverture de tests et le suivi des commentaires.