claude/skills
bastien 864612ff7b fix(client-handover): kill PDF text superposition (URL dupe + list page-break)
Two distinct render bugs producing overlapping text on multi-page PDFs:

1. Bare-URL duplication. The print stylesheet injects `(href)` after every
   external link via `a[href^="http"]::after`. When pandoc/marked
   auto-links a bare URL or renders `[X](X)`, the visible text already
   equals the href, so the pseudo-element produces "URL (URL)" and the
   trailing duplicate wraps onto the next line, colliding with the
   following block (e.g. "https://pagespeed.web.dev/ (https://...)" then
   "• Ouvrir, taper l'URL...").
   Fix: post-process the body HTML in handover-to-pdf.sh; tag every
   `<a href="X">X</a>` (text == href, ignoring trailing slash + case)
   with `class="bare-url"`, and exclude `a.bare-url::after` from the
   URL-injection rule. Named links still get `(URL)` for print legibility.
   Belt-and-braces: add `white-space: nowrap` and `break-inside: avoid`
   on the remaining `::after` so future long URLs cannot wrap across
   page boundaries either.

2. List item splitting across page boundary. `li` had only
   `orphans/widows: 3` and no `break-inside`, so a long item could put
   its bullet on page N and its text on page N+1, overlapping unrelated
   content. Heading-to-first-block adjacency was also unprotected, so
   "heading at bottom of page A / intro paragraph or first bullet at top
   of page B" could produce visual overlap during reflow.
   Fix: add `li { page-break-inside: avoid; break-inside: avoid; }` and
   `h{1..4} + p|ul|ol { break-before: avoid; }` so list items stay
   intact and intros stay glued to their heading.

Verified end-to-end: rendered sample md with bare URL + named link +
heading-followed-by-list straddling a page break; pdftotext shows each
URL once, no orphaned bullets, no `::after` warning from weasyprint.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 20:23:14 +02:00
..
analyze test(darwin-skill): add baseline test-prompts.json for 18 personal skills 2026-05-06 17:53:51 +02:00
bugfix test(darwin-skill): add baseline test-prompts.json for 18 personal skills 2026-05-06 17:53:51 +02:00
client-handover fix(client-handover): kill PDF text superposition (URL dupe + list page-break) 2026-05-08 20:23:14 +02:00
close feat(capitalize): enforce English in all memory registry entries 2026-04-23 16:24:04 +02:00
code-clean test(darwin-skill): add baseline test-prompts.json for 18 personal skills 2026-05-06 17:53:51 +02:00
commit-change test(darwin-skill): add baseline test-prompts.json for 18 personal skills 2026-05-06 17:53:51 +02:00
doc Revert "optimize(doc): add resources/templates/README.md.tpl + DEPLOY.md.tpl + reference (d6 target)" 2026-05-06 18:32:54 +02:00
feat test(darwin-skill): add baseline test-prompts.json for 18 personal skills 2026-05-06 17:53:51 +02:00
geo test(darwin-skill): add baseline test-prompts.json for 18 personal skills 2026-05-06 17:53:51 +02:00
graphify chore(graphify): bump skill to 0.7.0 2026-05-06 17:08:47 +02:00
harden refactor(audits): route all report writes to .claude/audits/ 2026-04-23 16:06:54 +02:00
hotfix test(darwin-skill): add baseline test-prompts.json for 18 personal skills 2026-05-06 17:53:51 +02:00
init-project optimize(init-project): add PROGRESS PROTOCOL header per step + plain-language recap before status table (d8 target) 2026-05-06 18:26:01 +02:00
onboard optimize(onboard): tighten frontmatter description — verb-forward, EN consistency (d1 target) 2026-05-06 18:32:45 +02:00
plugin-check test(darwin-skill): add baseline test-prompts.json for 18 personal skills 2026-05-06 17:53:51 +02:00
profile feat(profile): partition skills/plugins/MCPs/CLIs by usage profile 2026-05-05 02:09:28 +02:00
refactor test(darwin-skill): add baseline test-prompts.json for 18 personal skills 2026-05-06 17:53:51 +02:00
seo optimize(seo): add resources/depth-matrix.md (depth/weights/dedup/envelope) + reference from SKILL.md (d6 target) 2026-05-06 18:30:25 +02:00
ship-feature optimize(ship-feature): add FAILURE PATHS table for orchestrator-level error handling (d6 target) 2026-05-06 18:26:51 +02:00
skills-perso optimize(skills-perso): tri-signal detection (marker/agent-ref/allowlist) + empty fallback (d8 target) 2026-05-06 18:16:57 +02:00
status test(darwin-skill): add baseline test-prompts.json for 18 personal skills 2026-05-06 17:53:51 +02:00
validate test(darwin-skill): add baseline test-prompts.json for 18 personal skills 2026-05-06 17:53:51 +02:00