Back

    Insert challenge

    Paste a single challenge JSON (from an LLM or export). Use the Kill Chain schema: solution.vulnerable_lines (array of objects with id, file, match, and optionally fix_question, mitigation_comment, fix_options per line). Optional top-level scoring with free_wrong_attempts and wrong_check_penalty for the challenge-wide points pool (preferred). Legacy solution.target_scoring can still supply those values for inserts. Hints use target_id matching vulnerable_lines[].id. Saved under src/data/new_challenges/{language}/{difficulty}.json on disk and into Postgres via Drizzle. Set DATABASE_URL (PostgreSQL connection string) in .env when running the dev server (pnpm dev).

    Supported languages: go, java, javascript, kotlin, php, python, ruby, solidity, swift. Difficulty: easy, medium, hard. Solution must have vulnerable_lines (array with id, file, match per item; optionally fix_question, mitigation_comment, fix_options for the Fix It stepper). Prefer top-level scoring for wrong-attempt rules; optional legacy solution.target_scoring still accepted. Each hint must have target_id matching one of vulnerable_lines[].id; if omitted, the first objective is used.

    New challenges overview

    Counts in src/data/new_challenges. Refreshes after each insert.

    Loading stats…