feat: give the chapters motion, diagrams, and retrieval practice
Three strands of work on the chapter surface, all reading from the same constraint: this site ships no runtime dependencies, so every effect below is native CSS or an .astro component. Motion (src/styles/motion.css, DrawRule.astro). A scroll-driven layer of reveals, hero parallax, section depth, and a hairline that paints itself along its path, scrubbed by `animation-timeline: view()` — 0KB against lottie-web's ~60KB gzipped on the main thread. Every scrubbed rule sits inside `prefers-reduced-motion: no-preference` and `@supports`, so a Firefox reader or an opted-out one gets the complete static page rather than one with holes in it. Ranges key to `cover 40%`-`cover 75%` where the motion is meant to be watched: `view()` ranges key to first visibility, which on a 2600px page is long before anyone is reading the section. `.agents/skills/motion/references/scroll-driven.md` records the technique and the two ways `pathLength` normalisation was broken while building it. Diagrams (StepFlow.astro, WorktreeMap.astro). The `.steps` stack on /skills/, /models/, and /agents/ becomes a numbered flow with connectors, and /agents/ grows the worktree map it was describing in prose — reusing the `trees` collection rather than a second set of strings. The map's static variant is gated one class deeper than full-guide's page styles, so the interactive copy renders byte-identical. Connectors are pseudo-elements, not SVG: a stretched path desynchronises its own dash pattern, and a straight line does not need one. Mermaid was considered and rejected at ~1MB of runtime. Retrieval practice (/rules/, /skills/). A "check yourself" section of native `<details>` question/answer pairs plus a citation row, both bilingual through the existing `data-copy` toggle, and both JavaScript-free. Two audit blind spots surfaced and are closed rather than worked around: `build.inlineStylesheets: 'never'`, because Astro inlined sheets under ~4kB and audit-ui.mjs reads its colour and size baseline from dist/_astro/*.css; and `--columns` declared in the grid components, because an element-level custom property is not a declaration the audit can resolve. legacy/styles/skills.css is renamed and imported for its side effect. Inside a *page*, `?url` resolves to that page's own CSS chunk whatever file it names, so the link pointed at the wrong asset and the sheet was emitted but never loaded — the package preview had been rendering unstyled and overflowing since the Astro cutover. verify.mjs gains 5 assertions for the recall sections and their Portuguese copy: 89 now, against the 84 baseline. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -170,6 +170,17 @@ if (
|
||||
throw new Error('built rules page lost its accessible controls');
|
||||
if (!html.rules.includes('data-rules-copy') || !html.rules.includes('"pt"'))
|
||||
throw new Error('built rules page lost its Portuguese interaction data');
|
||||
if (
|
||||
!has(html.rules, [
|
||||
'id="recall"',
|
||||
'data-copy="recallQ1"',
|
||||
'data-copy="recallQ2"',
|
||||
'data-copy="recallQ3"',
|
||||
])
|
||||
)
|
||||
throw new Error('built rules page lost its retrieval-practice section');
|
||||
if (!html.rules.includes('Dificuldade desejável') || !html.rules.includes('"recallA2"'))
|
||||
throw new Error('built rules page lost its Portuguese recall copy');
|
||||
|
||||
if (
|
||||
!has(html.review, [
|
||||
@@ -233,6 +244,25 @@ if (
|
||||
])
|
||||
)
|
||||
throw new Error('built skills page lost its package explorer');
|
||||
if (
|
||||
!has(html.skills, [
|
||||
'id="recall"',
|
||||
'<summary',
|
||||
'The skill never loads. What is the first suspect?',
|
||||
'agentskills.io/specification',
|
||||
'hands-on/starter/',
|
||||
])
|
||||
)
|
||||
throw new Error('built skills page lost its recall section or citations');
|
||||
if (
|
||||
!has(read('src/content/chapters/skills.json'), [
|
||||
'"recall"',
|
||||
'"links"',
|
||||
'Teste-se',
|
||||
'Especificação do formato',
|
||||
])
|
||||
)
|
||||
throw new Error('skills chapter lost its Portuguese recall copy');
|
||||
if (!has(html.starter, ['id="task-list"', 'id="task-count"']))
|
||||
throw new Error('starter lab lost its task-list contract');
|
||||
|
||||
|
||||
Reference in New Issue
Block a user