Search Console flagged two indexing issues on worktrunk.dev:
**"Alternate page with proper canonical tag"**: the sitemap listed
`/worktrunk/`, which canonicalizes to `/` (its content is rendered on
the homepage via `templates/index.html`). Only canonicals belong in a
sitemap. Skip sitemap entries whose frontmatter declares a canonical.
**"Page with redirect"**: the `extra_menu` links `/worktrunk` and
`/tips-patterns` had no trailing slash, so every page's nav triggered a
301 on GitHub Pages. Added the trailing slashes.
Verified locally with `zola build`: sitemap goes from 14 to 13 entries
(no more `/worktrunk/`), `/worktrunk/` page still served with canonical
= `/`, and built nav hrefs now have trailing slashes.
Search Console also reported "Not found (404)" — those are old renamed
URLs (`/why-worktrunk/`, `/quickstart/`, `/advanced/`) that no longer
exist. Left alone here: a static 404 is correct, and adding meta-refresh
redirect stubs would just create new "Page with redirect" entries.
> _This was written by Claude Code on behalf of @max-sixty_
Co-authored-by: Claude <noreply@anthropic.com>
## Summary
- Add per-page `<meta name="description">` to all doc pages — command
pages auto-generated from CLI `about`/`long_about` via new
`--help-description` flag, non-command pages manually written
- Add `<link rel="canonical">` URLs and JSON-LD structured data (WebSite
+ SoftwareApplication) on the homepage
- Add custom `sitemap.xml` template with `<lastmod>` dates and
descriptive homepage `<title>`
- Extract shared `extract_about_and_subtitle()` helper, eliminating
duplicated subtitle logic between `handle_help_description` and
`combine_command_docs`
- Fix broken anchor in faq.md (`#picker-summaries` →
`#branch-summaries-experimental`)
## Test plan
- [x] Full test suite passes (2713 tests via `wt hook pre-merge --yes`)
- [x] All lints clean (pre-commit, clippy, cargo fmt)
- [x] Doc sync test confirms auto-generated descriptions match CLI help
- [x] Zola build succeeds with all template changes
> _This was written by Claude Code on behalf of @max-sixty_
---------
Co-authored-by: Claude <noreply@anthropic.com>