# Structured Challenge Output

> Structured Challenge Output — Skill 77

- Skill: `nickgallick/structured-challenge-output` (Agent Skill)
- Install (CLI): `npx skillmds@latest add nickgallick/structured-challenge-output`
- Raw SKILL.md: https://api.skillmd.com/api/skills/nickgallick/structured-challenge-output/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: nickgallick (https://skillmd.com/u/nickgallick)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/nickgallick/structured-challenge-output

---

# Structured Challenge Output — Skill 77

## Purpose
The exact JSON schema every challenge must conform to. When Gauntlet generates a challenge, the output is THIS schema — not prose, not a description, the actual JSON.

## Required Schema

```json
{
  "challenge": {
    "id": "BOUTS-2026-XXXX",
    "template_id": "tmpl-{family}-v{N}",
    "instance_seed": "8-char hex",
    "title": "string — evocative name",
    "family": "enum: blacksite_debug | fog_of_war | false_summit | constraint_maze | forensic_cascade | toolchain_disaster | recovery_lab | versus_arena | humanity_gap | deceptive_optimization",
    "category": "enum from 10 categories (Skill 35)",
    "format": "sprint | standard | marathon",
    "weight_class": "calibration | lightweight | middleweight | heavyweight | frontier",
    "time_limit_minutes": "integer",
    "max_iterations": "integer (1-8)",

    "difficulty_profile": {
      "reasoning_depth": "1-10",
      "tool_dependence": "1-10",
      "ambiguity": "1-10",
      "deception": "1-10",
      "time_pressure": "1-10",
      "error_recovery_burden": "1-10",
      "non_local_dependency": "1-10",
      "evaluation_strictness": "1-10"
    },

    "briefing": "Full markdown briefing text — what the agent sees",

    "provided_assets": [
      {
        "path": "string",
        "type": "file | directory",
        "description": "string",
        "file_count": "integer (directories only)"
      }
    ],

    "deliverables": [
      {
        "id": "string",
        "label": "string",
        "format": "markdown | git-diff | test-files | code-file",
        "required": "boolean",
        "scoring_weight": "integer (0-100)"
      }
    ],

    "judge_config": {
      "format_weights": {
        "objective": "30-55",
        "process": "5-25",
        "strategy": "5-30",
        "recovery": "0-35",
        "efficiency": "0-10"
      },
      "objective_config": {
        "static_test_suite": "path",
        "adversarial_test_suite": "path",
        "hidden_invariants": "path",
        "performance_benchmarks": "path | null",
        "security_scan": "boolean"
      },
      "process_rubric": { "key_signals": ["string"] },
      "strategy_rubric": { "key_signals": ["string"] },
      "recovery_rubric": { "key_signals": ["string"] },
      "integrity_checks": {
        "positive_triggers": ["string"],
        "negative_triggers": ["string"]
      }
    },

    "hidden_elements": {
      "planted_bugs": [
        {
          "id": "string",
          "severity": "critical | high | medium | low",
          "location": "file:line",
          "description": "string",
          "visible_symptom": "string",
          "interconnected_with": ["bug-id"]
        }
      ],
      "red_herrings": [
        {
          "location": "string",
          "description": "string",
          "why_its_distracting": "string"
        }
      ],
      "reference_solution_approach": "string",
      "reference_solution_score": "integer (must be >85)"
    },

    "calibration_expectations": {
      "naive_agent": { "expected_score": "range string", "expected_behavior": "string" },
      "standard_agent": { "expected_score": "range string", "expected_behavior": "string" },
      "elite_agent": { "expected_score": "range string", "expected_behavior": "string" },
      "reference_agent": { "expected_score": "range string", "expected_behavior": "string" }
    },

    "expected_failure_taxonomy": {
      "weak_agents": ["archetype names"],
      "standard_agents": ["archetype names"],
      "strong_agents": ["archetype names"],
      "elite_agents": ["archetype names"]
    },

    "mutation_strategy": {
      "mutable_dimensions": ["string"],
      "fixed_dimensions": ["string"],
      "variant_notes": "string"
    },

    "anti_contamination": {
      "fingerprint": "sha256:...",
      "public_similarity_check": "passed | failed | pending",
      "freshness_score": "integer 0-100 (must be >70)",
      "generated_at": "ISO-8601"
    },

    "lifecycle": {
      "status": "draft | calibrating | active | quarantined | retired",
      "max_attempts_before_retirement": "integer",
      "max_age_weeks": "integer",
      "quarantine_triggers": ["string"]
    }
  }
}
```

## Validation Rules

| Rule | Requirement |
|------|-------------|
| All required fields populated | No nulls on required fields |
| difficulty_profile values | Integers 1-10 |
| format_weights sum | Must equal 95 (5% implicit for integrity) |
| calibration_expectations | All four tiers present |
| expected_failure_taxonomy | References only standard 15 archetypes |
| mutation_strategy | Must specify both mutable and fixed dimensions |
| freshness_score | Must be >70 to proceed to calibration |
| reference_solution_score | Must be >85 or challenge is rejected |
| deliverables scoring_weight | Must sum to 100 |

## Integration Points

- **Calibration Packaging** (Skill 81): JSON becomes the core of the calibration package
- **Variant Pack Generation** (Skill 82): Each variant outputs this same schema
- **API-Ready Output** (Skill 89): Public API is a subset of this schema
- **Deterministic Packaging** (Skill 90): Audit trail references this schema

