---
// /skills/ — chapter page. Migrated from skills/index.html in task 13.
// Identical URL (/skills/). The package-anatomy picker is an Astro island
// (SkillPackageExplorer) — the only JS the page ships. Copy lives in
// src/content/chapters/skills.json.

import { getEntry } from 'astro:content';
import ChapterLayout from '../layouts/ChapterLayout.astro';
import ChapterHero from '../components/blocks/ChapterHero.astro';
import SkillPackageExplorer from '../components/islands/SkillPackageExplorer.astro';
import skillsStylesheet from '../../legacy/styles/skills.css?url';

// Required-field guard. The chapters schema marks section eyebrow /
// panelLabel / panelCode / steps / copy as optional because the schema
// does not know which page consumes which shape. These four pages do
// consume them — fail loudly here rather than rendering a blank section.
function requireField<T>(value: T | undefined, name: string): T {
  if (value === undefined) {
    throw new Error(`skills chapter: missing required field "${name}"`);
  }
  return value;
}

const base = import.meta.env.BASE_URL;
const chapter = await getEntry('chapters', 'skills');
if (!chapter) {
  throw new Error('skills chapter: missing collection entry');
}
const lede = chapter.data.lede.en;
const title = chapter.data.title.en;
const eyebrow = chapter.data.eyebrow.en;
const sections = chapter.data.sections ?? [];
const anatomySection = sections[0];
const createSection = sections[1];
if (!anatomySection) {
  throw new Error('skills chapter: missing sections[0]');
}
if (!createSection) {
  throw new Error('skills chapter: missing sections[1]');
}
const anatomyEyebrow = requireField(anatomySection.eyebrow, 'sections[0].eyebrow');
const anatomyCopy = requireField(anatomySection.copy, 'sections[0].copy');
const createEyebrow = requireField(createSection.eyebrow, 'sections[1].eyebrow');
const createSteps = requireField(createSection.steps, 'sections[1].steps');
---

<ChapterLayout title="AI For Dummies — Skills" description={lede.replace(/<[^>]+>/g, '')}>
  <link slot="styles" rel="stylesheet" href={skillsStylesheet} />
  <a slot="top-previous" href={`${base}summary/`}>← ROUTE MAP</a>
  <span slot="top-center">03 / SKILLS</span>
  <a slot="top-next" href={`${base}skills-review/`}>review desk ↗</a>

  <ChapterHero eyebrow={eyebrow}>
    <span slot="title" set:html={title} />
    <p set:html={lede} />
  </ChapterHero>

  <section class="pipeline package-anatomy">
    <div>
      <p class="eyebrow">{anatomyEyebrow.en}</p>
      <h2 set:html={anatomySection.title.en} />
      <p class="package-hint">{anatomyCopy.en}</p>
    </div>
    <SkillPackageExplorer />
  </section>

  <section class="practice">
    <div>
      <p class="eyebrow">{createEyebrow.en}</p>
      <h2 set:html={createSection.title.en} />
    </div>
    <div class="steps">
      {
        createSteps.map((step, index) => (
          <article>
            <b>{String(index + 1).padStart(2, '0')}</b>
            <div>
              <strong>{step.label.en}</strong>
              <span>{step.copy.en}</span>
            </div>
          </article>
        ))
      }
    </div>
  </section>

  <nav slot="footer-links" class="links" aria-label="Chapter navigation">
    <a href={`${base}agents/`}>Agents & trees →</a>
    <a href={`${base}rules/`}>Rules case study →</a>
    <a href={`${base}skills-review/`}>Review submitted skills →</a>
    <a href={`${base}full-guide/#create-skill`}>Full guide: skill forge →</a>
  </nav>
</ChapterLayout>
