mirrord
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
Use the view tool to read BOTH reference files:
/mnt/skills/user/mirrord/references/schema.json- Authoritative JSON Schema/mnt/skills/user/mirrord/references/configuration.md- Configuration reference
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
More from metalbear-co/skills
mirrord-config
Helps users generate, edit, and validate mirrord.json configuration files for mirrord (MetalBear). Use when the user wants to connect their local process to a Kubernetes environment, configure features (env/fs/network), or needs feedback on an existing mirrord.json. Always ensures output JSON is valid and schema-conformant.
28mirrord-quickstart
Guide users from zero to their first working mirrord session. Use when a user is new to mirrord, wants to install it, or needs help running their first session connecting to a Kubernetes cluster.
17mirrord-ci
Help users set up mirrord in CI pipelines for testing against real Kubernetes environments. Use when users want to run end-to-end tests, integration tests, or automated tests in CI using mirrord to connect to staging/shared clusters.
12mirrord-operator
Help users install and configure the mirrord operator for team environments. Use when users ask about operator setup, Helm installation, licensing, or multi-user mirrord deployments.
12mirrord-db-branching
Helps users configure mirrord.json for database branching, enabling isolated database copies for safe development and testing. Use when the user wants to set up MySQL or PostgreSQL branching, configure copy modes, IAM authentication, or manage database branches.
12mirrord-kafka
>
3