Replace the bare root redirect with a polished landing hub that greets every visitor to the agentics GitHub Pages site and routes them in one click to the Plans gallery and the Social Media gallery — styled to match the existing light-theme Plans gallery, with every link relative so it works under the /agentics/ base path.
Read and implement all steps in the plan at docs/plans/add-docs-landing-hub.html — Replace the docs root redirect with a landing hub for the Pages site
add-docs-landing-hub.html
docs/plans/add-docs-landing-hub.html
Context
Today docs/index.html is a nine-line <meta http-equiv="refresh"> document that bounces visitors straight to plans/index.html. That makes the Plans gallery the de-facto home page and leaves the Social Media gallery (docs/media/social/index.html) completely undiscoverable from the site root — there is no real landing page tying the site together.
The deploy-pages.yml workflow uploads the entire docs/ directory as the Pages artifact, so docs/index.html is served as the site root at /agentics/. Replacing the redirect with a hub therefore changes nothing about deployment — the same file is simply richer. Because the site lives under the /agentics/ project sub-path, every link must be relative (plans/index.html, not /plans/); a leading-slash href would resolve against the domain root and 404.
The Plans gallery uses a light theme with a specific token set (--bg #ffffff, --surface #f9fafb, --border #e5e7eb, --text #111827, --accent #2563eb, --radius 4px, plus a soft card --shadow), a header with a 3px accent top-rule, and a responsive .gallery-grid of hover-highlighted .gallery-card anchors. The hub reuses those exact tokens and patterns for visual continuity. The Social gallery is dark-themed but remains a perfectly valid link target.
The guides directory (docs/guides/) holds 62 raw .md files and no index.html; under Pages with .nojekyll, markdown is served as raw text and there is no directory listing, so a guides/ link would 404. Per the decision on this plan, Guides is deferred from the hub for now and tracked in Next Steps — the hub ships with exactly the two galleries that already have working entry points.
Files to Modify
docs/index.htmlmodified replace meta-refresh redirect with the landing hubtests/pages/test-docs-hub.shnew objective smoke test for the hub (matchestests/pages/test-*convention)tests/pages/test-root-redirect.shmodified delete or update — currently asserts the meta-refresh redirect this plan removes
Out of scope and intentionally untouched: .github/workflows/deploy-pages.yml, docs/.nojekyll, docs/plans/index.html, and docs/media/social/index.html. The E2E spec (tests/e2e/docs-hub.spec.ts) is deferred — no Playwright infrastructure exists in this repo.
Diagram
- meta-refresh document
- jumps to plans/
- social gallery hidden
- no real home page
- landing page at /agentics/
- Plans card → plans/index.html
- Social card → media/social/
- light theme, relative links
- 62 raw .md files
- no index.html yet
- would 404 on Pages
- see Next Steps
Steps
:root token block as docs/plans/index.html guarantees visual parity from the first byte and keeps the page fully self-contained (inline CSS, no CDN).Verify
docs/index.html: there is no <meta http-equiv="refresh"> and no <link rel="canonical"> redirect; the file starts with <!DOCTYPE html>, <html lang="en">, includes <meta charset="UTF-8">, <meta name="viewport">, a <title>, and a <a class="skip-link" href="#main">Skip to content</a>; the :root block declares --bg:#ffffff, --accent: #2563eb, --radius:4px and the same --surface/--border/--text/--muted values as docs/plans/index.html.<h1>, and a one-line tagline.
.gallery-header (the 3px --accent rule above the title) gives the hub a recognizable masthead that visually belongs to the same family as the pages it links to.Verify
<h1> with the blue 3px rule directly above it and a muted tagline beneath; the header markup matches the .gallery-header / ::before structure used in docs/plans/index.html..gallery-grid + .gallery-card reuses the gallery's hover treatment, and relative hrefs (plans/index.html, media/social/index.html) are what keep navigation working under /agentics/.Verify
<a class="gallery-card"> elements exist; their href values are plans/index.html and media/social/index.html (no leading /, no protocol); each card shows a title (e.g. "Plans", "Social Media") and a descriptive subtitle that makes the destination unambiguous (e.g. "Browse implementation plans", "View social media cards and posts"). grep -n 'href="/' docs/index.html returns nothing.<main> landmark, a single <h1>, and a .gallery-footer complete the page chrome and keep it accessible and gallery-consistent; the grid must collapse cleanly on narrow screens like the gallery does at its 640px breakpoint.Verify
<a href="#main" class="skip-link"> appears before the <main> element; the cards live inside <main id="main">; a .gallery-footer renders at the bottom with the gallery's border-top styling; resizing the viewport below ~640px stacks the two cards into a single column with no horizontal scroll; at tablet widths (640px–1024px) the two-card grid is not awkwardly sparse.docs/ locally and confirm both relative links resolve from the root, then confirm the deploy workflow is untouched.
/agentics/, so the only trustworthy check is loading the hub as the served root and actually clicking through to each gallery — and the task forbids changing the deploy pipeline.Verify
cd docs && python3 -m http.server 8123, open http://localhost:8123/: the hub renders in the light theme, and clicking the Plans card loads "Plans Library" while the Social card loads "Media Library". Confirm .github/workflows/deploy-pages.yml exists and is unmodified (test -f).tests/pages/test-docs-hub.sh and update or delete tests/pages/test-root-redirect.sh.
tests/pages/ with the test-* naming convention matching its siblings (test-pages-smoke.sh, test-workflow-config.sh). The existing test-root-redirect.sh asserts the meta-refresh redirect this plan removes, so it must be deleted or rewritten to assert the hub instead.Verify
bash tests/pages/test-docs-hub.sh and confirm it exits 0. Confirm the test asserts: no http-equiv="refresh", href="plans/index.html" present, href="media/social/index.html" present, no absolute-root link (href="/"), and at least one CSS token (--accent:.*#2563eb). Confirm tests/pages/test-root-redirect.sh no longer asserts a meta-refresh redirect.Tests
File: tests/pages/test-docs-hub.sh
Type: smoke test (bash, matches the existing tests/pages/test-* convention)
Asserts: docs/index.html contains no http-equiv="refresh"; contains href="plans/index.html" and href="media/social/index.html"; contains no absolute-root link (grep -q 'href="/' must fail); contains at least one CSS token (--accent:.*#2563eb); and .github/workflows/deploy-pages.yml exists and was not modified in the current commit (checked via test -f, not git diff). Directly proves the plan's stated objective.
Run: bash tests/pages/test-docs-hub.sh
File: tests/e2e/docs-hub.spec.ts (Playwright)
Status: Deferred — the repo has no Playwright config, no tests/e2e/ directory, and no TypeScript tooling. This spec is aspirational; implement it when E2E infrastructure is set up. See Next Steps.
Targets: the served docs/ root and the two .gallery-card navigation links
Key cases: (1) loading / shows an <h1>, a skip-link, and exactly two cards; (2) clicking the Plans card lands on a page whose title is "Plans Library"; (3) clicking the Social card lands on a page whose title is "Media Library"; (4) the page exposes a single main landmark and one h1.
Acceptance Criteria
Verification
Serve the docs directory as the site root — cd docs && python3 -m http.server 8123 — and open http://localhost:8123/. Confirm the hub renders in the light theme with the accent top-rule header and two cards with descriptive subtitles, then click each card and confirm it loads the Plans Library and the Media Library respectively. Tab-focus the page and confirm the skip-link appears and targets #main. View source on the served root and confirm there is no <meta http-equiv="refresh"> and no href="/" absolute link. Run bash tests/pages/test-docs-hub.sh and confirm it exits 0. Confirm .github/workflows/deploy-pages.yml exists unchanged via test -f. Note: after merging to main, GitHub Pages CDN may serve the old redirect for several minutes — wait before declaring the live deploy verified.
Completion Checklist
Completion Report
No items to report — all requirements met.
Unresolved Questions
-
What headline and tagline copy should the hub use?
Decide the final headline and tagline for the docs landing hub (docs/index.html). The draft uses "Agentics" as the H1 with a one-line tagline describing the Claude Code plugin marketplace and its Pages galleries. Recommend final copy — H1, tagline, and an optional one-sentence intro — that fits the project's voice, then update docs/index.html accordingly. Keep it concise and do not change any links or the deploy workflow.
Team Review (2026-06-07 18:12:13 UTC) — 7 reviewers
Executive Summary
The plan is sound with revisions. All seven reviewers agree the scope is appropriate and the architecture is correct for a single-file static HTML change. However, the team identified several actionable gaps: the smoke test path and naming violated project conventions (tests/pages/test-*), no step created the test files described in the Tests section, the E2E spec assumed Playwright infrastructure that does not exist, the existing test-root-redirect.sh would break silently, the hub page lacked a required skip-link, and card descriptions were too vague. All issues have been addressed in the inline edits applied alongside this review.
Architecture
Fit: Architecturally sound for scope — single static HTML file, no build pipeline, no external dependencies. Concerns: CSS duplication across hub and galleries will drift (low); no back-navigation from galleries to hub (low, deferred to Next Steps); smoke test git-diff assertion is brittle (low). All accepted for current scope.
Completeness
Assessment: Well-scoped and largely executable, but had meaningful gaps. Key gaps addressed: (1) No step created test files — added Step 6. (2) Step 1 verify lacked HTML boilerplate checks — added DOCTYPE, lang, charset, viewport, title, skip-link assertions. (3) Card descriptions unspecified — Step 3 verify now requires descriptive subtitles. (4) E2E spec listed as deliverable with no Playwright infra — deferred to Next Steps.
Testability
Coverage: Adequate for the narrow scope after fixes. Key gaps addressed: (1) Smoke test had no CSS-token assertion — added --accent:.*#2563eb check. (2) Git-diff assertion replaced with test -f check. (3) E2E spec marked deferred with explicit status note. (4) Smoke test Run: command corrected to bash tests/pages/test-docs-hub.sh.
Risk
Risk level: Low. Key risks: relative links break if galleries move (medium — accepted, smoke test covers); CDN propagation delay after deploy (low — documented in Verification); test-root-redirect.sh would have broken silently (low — now addressed in Step 6 and AC9).
Conventions
Fit: Good overall after corrections. Key issues addressed: (1) Smoke test moved from tests/docs-hub-smoke.sh to tests/pages/test-docs-hub.sh matching sibling naming convention (high). (2) E2E spec deferred since no Playwright config exists (medium). (3) test-root-redirect.sh breakage added to Files and acceptance criteria (low).
UX
User fit: Clear happy path with direct routing. Key concerns addressed: (1) Skip-link added to Step 4 requirements and AC8. (2) Card descriptions required to be meaningful and unambiguous. (3) Tablet-range viewport check (640px–1024px) added to Step 4 verify. Accepted as-is: Back-to-home link deferred to Next Steps (already tracked); headline/tagline copy deferred to Unresolved Questions (implementer must resolve before shipping).
Accessibility
A11y compliance: Largely WCAG 2.1 AA compliant after fixes. Key issues addressed: (1) Skip-link requirement added to built hub page (high). (2) E2E test key case updated to check for skip-link. Accepted as-is: Copy button touch targets below 44px (low — non-primary actions); completion checklist disabled checkboxes lack aria-disabled hint (medium — pre-existing template concern, not plan-specific).
Agreements
- Skip-link required (Accessibility + UX + Completeness): All agree the built hub page must include a skip-to-content link.
- Test path wrong (Conventions + Completeness + Testability): All agree smoke test belongs at
tests/pages/test-docs-hub.sh. - E2E spec not deliverable (Conventions + Testability + Risk): All agree Playwright spec should be deferred, not listed as current-scope deliverable.
- test-root-redirect.sh breaks (Conventions + Risk): Both flagged the existing test will fail after the redirect is removed.
- Git-diff assertion brittle (Architecture + Testability + Risk): All agree
git diffcheck should be replaced with a direct file-existence check.
Conflicts
No material conflicts. UX reviewer rated "back-to-home link" as high severity and recommended promoting it to a required step; Architecture and Risk reviewers rated it low. Resolution: kept as Next Steps since it modifies files outside this plan's scope (docs/plans/index.html and docs/media/social/index.html), but the Next Steps prompt is already written and ready to execute immediately after this plan ships.
Highest-Risk Issues
- Missing test-creation step (Completeness, high) — Fixed: added Step 6.
- Wrong test path/naming (Conventions, high) — Fixed: renamed throughout.
- test-root-redirect.sh breakage (Conventions, low) — Fixed: added to Files and AC9.
- No skip-link on hub (Accessibility, high) — Fixed: added to Step 4, AC8.
- E2E spec assumes missing infra (Conventions, medium) — Fixed: deferred with explicit status note.
Edits Applied
| Target | Action | Change |
|---|---|---|
| Files section | edit | Renamed smoke test to tests/pages/test-docs-hub.sh; added tests/pages/test-root-redirect.sh as modified |
| Step 1 verify | edit | Added HTML boilerplate checks: DOCTYPE, lang, charset, viewport, title, skip-link |
| Step 3 verify | edit | Required descriptive card subtitles |
| Step 4 | edit | Added skip-link requirement, tablet-range viewport check (640px–1024px) |
| Step 5 verify | edit | Fixed port placeholder to 8123; replaced git-diff with test -f |
| Steps section | insert after Step 5 | Added Step 6: write smoke test and update/delete test-root-redirect.sh |
| Objective test | edit | Fixed path, naming convention, added CSS token assertion, replaced git-diff with test -f |
| E2E test | edit | Marked as deferred; added skip-link to key cases |
| Acceptance Criteria | append | Added AC8 (skip-link) and AC9 (test-root-redirect.sh updated) |
| Verification | edit | Fixed test path, added skip-link check, CDN propagation note, replaced git-diff |
| Next Steps | insert | Added Playwright E2E infrastructure setup prompt |
| Files note | edit | Added E2E spec deferral note to out-of-scope line |