Mirrord Configuration Skill
Purpose
Generate and validate mirrord.json configuration files:
- •Generate valid configs from natural language descriptions
- •Validate user-provided configs against schema
- •Fix invalid configurations with explanations
- •Explain configuration options and patterns
Critical First Steps
Step 1: Load references
Read BOTH reference files from this skill's references/ directory:
- •
references/schema.json- Authoritative JSON Schema - •
references/configuration.md- Configuration reference
If using absolute paths, these are located relative to this skill's installation directory. Search for them if needed using patterns like **/mirrord-config/references/*.
Step 2: Install mirrord CLI (if not present)
# Check if installed which mirrord || brew install metalbear-co/mirrord/mirrord || curl -fsSL https://raw.githubusercontent.com/metalbear-co/mirrord/main/scripts/install.sh | bash
Step 3: Validate before presenting After generating any config, ALWAYS run:
mirrord verify-config /path/to/config.json
- •If validation fails, fix the config and re-validate
- •Only present configs that pass validation
- •Include validation output in your response
Request Types
Generate new config
User describes what they want without providing JSON.
- •Extract target (pod/deployment), namespace, features needed
- •Create minimal valid config using only schema-defined keys
- •Default to minimal configs; mirrord has sensible defaults
Validate existing config
User provides JSON to check.
- •Parse strictly (catch trailing commas, comments, invalid syntax)
- •Validate against schema
- •List issues by severity: Errors → Warnings → Suggestions
- •Provide corrected version
Modify existing config
User wants changes to their config.
- •Validate first, then apply requested changes
- •Ensure modifications maintain schema conformance
Response Format
For generation or fixes:
- •Brief summary (1-2 sentences)
- •Valid JSON config in code block
- •Validation output from
mirrord verify-config:
{
"type": "Success",
"warnings": [],
"compatible_target_types": [...]
}
- •Short explanation of key sections (if validation passed)
For validation:
- •Errors (schema violations - will cause failures)
- •Warnings (valid but potentially wrong behavior)
- •Suggestions (optional improvements)
- •Corrected JSON config
Configuration Guidelines
Common patterns (verify exact keys in schema):
Target selection:
- •
"target": "pod/name"or{"path": "pod/name", "namespace": "staging"} - •Set
operatorif using operator mode - •Specify
kube_contextif needed
Features:
- •
"env": true- Mirror environment variables - •
"env": {"include": "VAR1;VAR2"}- Selective inclusion - •
"fs": "read"- Read-only filesystem access - •
"network": true- Enable network mirroring - •
"network": {"incoming": {"mode": "steal"}}- Steal incoming traffic
Network modes:
- •Check schema for valid
incoming.modevalues (e.g., "steal", "mirror", "off") - •Configure HTTP filters, port mapping, localhost handling
Templating:
- •mirrord uses Tera templates
- •Example:
"target": "{{ get_env(name=\"TARGET\", default=\"pod/fallback\") }}" - •Templates must remain valid JSON
Validation Rules
Must enforce:
- •Strict JSON parsing (no comments, no trailing commas)
- •All keys must exist in schema
- •Correct types (string vs object, enums, etc.)
- •Required fields present
- •No
additionalPropertieswhere schema forbids them
Path notation for errors:
Use JSON Pointer style: /feature/network/incoming/mode
Common Pitfalls
- •User pastes YAML/TOML → Explain JSON required, offer to convert structure
- •User requests unsupported key → Say it's not in schema, suggest alternatives
- •Overly complex configs → Prefer minimal configs with only requested settings
- •Conflicting settings → Identify based on configuration.md semantics
What to Ask (only if critical)
If request is under-specified, ask for ONE detail:
- •Target identity (pod name, namespace)
- •Incoming network behavior (steal vs mirror)
- •Operator usage (yes/no)
- •Specific ports to map/ignore
Otherwise provide safe defaults and note assumptions.
Automatic Validation Workflow
Every generated or modified config MUST be validated before presentation:
- •Save config to temporary file
- •Run
mirrord verify-config <file> - •If validation fails:
- •Parse error messages
- •Fix the config
- •Re-validate until success
- •Present config with validation output
Never skip validation - it catches schema errors we might miss manually.
Quality Requirements
✓ Schema-first: Output must conform to schema.json
✓ No hallucination: Only use documented keys
✓ Valid JSON: Always parseable, no comments
✓ Actionable feedback: Clear explanations of what to fix and why
✓ Minimal configs: Don't set unnecessary options
Example Scenarios
"Connect to pod api-7c8d9 in staging, steal traffic on port 8080, exclude secret env vars" → Read references, generate minimal config with target, network.incoming, env.exclude
User provides invalid JSON with trailing comma → Parse error → Fix syntax → Validate against schema → Explain issues → Provide corrected config
"Is my config valid?" + JSON provided → Check syntax → Validate all keys/types against schema → List violations → Suggest fixes