{
  "spec": "quick-html/v0",
  "id": "running-plan",
  "version": "0.1.0",
  "name": "Running Training Plan",
  "description": "Printable week-by-week running training schedule on one A4: weekly sessions Mon–Sun, phases, volume totals, pace zones and coach notes. Use for marathon, half-marathon, 10K or 5K training blocks.",
  "useWhen": [
    "training plan",
    "running schedule",
    "marathon plan",
    "half marathon schema",
    "hardloopschema",
    "couch to 5k",
    "training block"
  ],
  "category": "printable",
  "language": "en",
  "page": {
    "size": "A4",
    "orientation": "portrait"
  },
  "modules": [
    "edit-overlay",
    "print-helper"
  ],
  "slots": [
    {
      "name": "doc-title",
      "type": "text",
      "required": true,
      "example": "Sub-4:00 Marathon Plan — 10 weeks",
      "notes": "Browser tab title; used as the download filename."
    },
    {
      "name": "plan-title",
      "type": "text",
      "required": true,
      "example": "Sub-4:00 Marathon — 10-Week Plan"
    },
    {
      "name": "athlete",
      "type": "text",
      "required": true,
      "example": "Bram V."
    },
    {
      "name": "athlete-level",
      "type": "text",
      "required": false,
      "example": "Intermediate · 5 sessions/week"
    },
    {
      "name": "goal-race",
      "type": "text",
      "required": true,
      "example": "Amsterdam Marathon"
    },
    {
      "name": "race-date",
      "type": "date",
      "required": true,
      "example": "18 Oct 2026"
    },
    {
      "name": "goal-time",
      "type": "text",
      "required": true,
      "example": "3:55:00"
    },
    {
      "name": "weekly-peak",
      "type": "text",
      "required": true,
      "example": "58 km/wk"
    },
    {
      "name": "paces",
      "type": "html",
      "required": false,
      "example": "<dl><dt>Easy</dt><dd>5:55 – 6:20 /km</dd></dl>",
      "notes": "Inside the pace-zones optional block. Keep the dl/dt/dd structure."
    },
    {
      "name": "notes",
      "type": "html",
      "required": false,
      "example": "<p>Week 6 is a recovery week.</p>",
      "notes": "Inside the coach-notes optional block. Short paragraphs."
    },
    {
      "name": "plan-footer",
      "type": "text",
      "required": false,
      "example": "Prepared 13 Aug 2026 · adjust for life, not the other way around"
    }
  ],
  "repeats": [
    {
      "name": "week",
      "description": "One table row per training week, in chronological order.",
      "min": 3,
      "max": 24,
      "slots": [
        {
          "name": "week-number",
          "type": "number",
          "required": true,
          "example": "1"
        },
        {
          "name": "week-phase",
          "type": "text",
          "required": true,
          "example": "Base",
          "notes": "Typical: Base, Build, Recovery, Peak, Taper, Race."
        },
        {
          "name": "week-mon",
          "type": "text",
          "required": true,
          "example": "Rest"
        },
        {
          "name": "week-tue",
          "type": "text",
          "required": true,
          "example": "8 km easy"
        },
        {
          "name": "week-wed",
          "type": "text",
          "required": true,
          "example": "6×400 @5K, 90\" jog"
        },
        {
          "name": "week-thu",
          "type": "text",
          "required": true,
          "example": "Rest"
        },
        {
          "name": "week-fri",
          "type": "text",
          "required": true,
          "example": "8 km easy + strides"
        },
        {
          "name": "week-sat",
          "type": "text",
          "required": true,
          "example": "5 km parkrun"
        },
        {
          "name": "week-sun",
          "type": "text",
          "required": true,
          "example": "Long 18 km easy"
        },
        {
          "name": "week-total",
          "type": "text",
          "required": true,
          "example": "43 km"
        }
      ]
    }
  ],
  "optionals": [
    {
      "name": "pace-zones",
      "description": "Pace-zone legend panel. Keep only if the user provides or wants target paces."
    },
    {
      "name": "coach-notes",
      "description": "Free-form notes panel (recovery guidance, fuelling, strength work)."
    }
  ],
  "tags": [
    "personal",
    "sport",
    "planning"
  ],
  "changelog": [
    {
      "version": "0.1.0",
      "date": "2026-08-13",
      "notes": "Initial release: week-by-week plan table, meta tiles, pace zones and coach notes."
    }
  ],
  "agentInstructions": "Fill one 'week' row per training week in chronological order (min 3, max 24; remove the data-example rows — they are preview content only). Keep day entries telegraphic and under ~28 characters ('10 km easy', '3×2k @threshold', 'Rest') so rows stay one line. Compute week-total yourself as the sum of that week's distances, in the user's unit (km or mi — use one unit consistently everywhere, including weekly-peak). week-phase is one word (Base/Build/Recovery/Peak/Taper/Race). Dates like '18 Oct 2026'. Include a taper and mark the race in the final week's day cell in bold via <strong>RACE — 42.2 km</strong>. Keep the pace-zones block only if paces are known or derivable from the goal time (else remove that data-optional block); same for coach-notes. Up to ~14 week rows fit on one A4 page; beyond that the table flows to a second page cleanly. Sanity-check the plan: weekly volume should build gradually (~10%/week), include a recovery week roughly every 4th week, and taper before the race. If the user's request implies an unsafe ramp, flag it to them rather than printing it silently.",
  "license": "MIT",
  "authors": [
    {
      "github": "bvrln"
    }
  ]
}
