feat: give the chapters motion, diagrams, and retrieval practice
verify-and-publish / gate (push) Successful in 7m4s
verify-and-publish / publish (push) Has been skipped

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:
Marcos Paulo
2026-09-06 16:04:08 -03:00
parent ab2308441c
commit 79920c9e6c
38 changed files with 1712 additions and 133 deletions
+16 -1
View File
@@ -12,7 +12,22 @@ Split at
the
seam.
MAIN / ORCHESTRATOR
├── agent/ui → components + visual states · ├── agent/tests → acceptance + regressions · └── agent/docs → guide + examples · merge after each leaf returns a diff and evidence
├── agent/ui → components + visual states
├── agent/tests → acceptance + regressions
└── agent/docs → guide + examples
merge after each leaf returns a diff and evidence
Orchestrator
main
● clean
UI worker
agent/ui
● working
Test worker
agent/tests
● ready
Docs worker
agent/docs
● review
FRAME
Orchestrator
Owns scope, task graph, boundaries, and integration.
+3 -1
View File
@@ -19,7 +19,9 @@ Two knobs
Capability
× effort
ROUTING RULE
strong model + high effort → frame ambiguity · light model + low effort → bounded execution · raise one knob at a time → compare evidence
strong model + high effort → frame ambiguity
light model + low effort → bounded execution
raise one knob at a time → compare evidence
Sequence
Spend judgment
where it
+17
View File
@@ -4,6 +4,7 @@ field guide
Pipeline
Skills
Examples
Recall
EN
/
PT
@@ -94,6 +95,22 @@ A second reader checks intent.
├── languages
└── instructions
Read review policy →
Retrieval practice
answer before you open
Desirable difficulty
Close the
page.
Recall.
Retrieval practice — recalling an answer from memory before re-reading — is what builds long-term retention. Answer each question from memory first, then open it to check.
Where does a rule belong: context, skill, CLI check, or hook?
+
Guidance the agent must discover goes in AGENTS.md or a skill. Deterministic policy becomes a CLI command, cheap gates run at commit time, and judgment calls go to review.
Why does a skill need a trigger, not just a workflow?
+
The trigger says when to load it. Without one the skill either never fires or loads every time — and a skill that always loads is just a slower prompt.
What separates a repository rule from a prompt?
+
The prompt is advice for one run. The rule is reusable context plus an executable boundary — still present when the conversation is gone.
COPY / ADAPT
Ask your agent to map the enforcement stack.
Use this in the interview repository or adapt the path names to another project.
+16
View File
@@ -39,6 +39,22 @@ Use references for facts and scripts for deterministic mechanics.
04
Evaluate behavior
Test realistic prompts, edge cases, safety, and evidence.
Check yourself
Recall it before
you
ship it.
Answer from memory first — the reveal is the feedback.
Format specification ↗
Try it on the Tiny Tasks lab →
The skill never loads. What is the first suspect?
+
The trigger. A precise description says when to load the skill — and when to leave it out. A vague one never fires.
Where do the workflow, the facts, and the repeated mechanics each go?
+
The workflow stays in SKILL.md, conditional facts move to references/, and deterministic repeated mechanics become scripts/.
What proves a skill works?
+
Behavior, not headings: realistic prompts, edge cases, and safety checks with observable evidence — the same bar the review desk applies.
Agents & trees →
Rules case study →
Review submitted skills →