choose-your-own-adventure security training processor + renderer
Smarty the Fox Greeting

SecurityAdventure

A small “what-if” engine for security stories: write scenarios as structured nodes, compile them, validate them, and run them as a playable adventure (web, CLI, or both).
Select a training module above to begin.

Step-by-step process (proposed)

Nano Banana Step-by-step Process
  1. Author scenarios
    Write each decision point as a node with: id, prompt, choices[], and optional effects (score, flags, inventory, time, detection risk).
  2. Compile to a normalized graph
    Convert markdown / JSON / YAML into a single canonical graph model (nodes + edges + metadata).
  3. Validate
    Fail fast on broken content: missing node ids, dead links, unreachable endings, cycles (if disallowed), and invalid effects.
  4. Instrument & balance
    Compute helpful analytics: path lengths, expected risk, “dominant choice” detection, and story coverage.
  5. Render a playable experience
    Use the normalized graph to drive a UI: show prompt, show choices, apply effects, track state, and record a run log.
  6. Export outcomes
    Output the run transcript (JSON + human summary) for learning, audits, or classroom review.

Minimal node format

Nano Banana Node Format
{
  "id": "start",
  "prompt": "You receive an email claiming to be from IT...",
  "choices": [
    {"label": "Click the link", "to": "phished", "effects": {"risk": "+=20"}},
    {"label": "Report to security", "to": "good_call", "effects": {"risk": "-=5", "badge": "reporter"}}
  ]
}

Pipeline sketch

Nano Banana Pipeline Sketch

Design goals (philosophy lab vibes)

Nano Banana Design Goals
  • Citizens survive by default: the world is coherent and self-consistent.
  • Player interventions create tradeoffs (security vs speed, stealth vs certainty, etc.).
  • Bad endings are teachable and explain why (not just “you lose”).