Untitled Session
2026-05-25 21:03 UTC · 22 messages · cli
You2026-05-25 21:06 UTC
Create detailed implementation plans for the P0 SEO cards based on the PB at /root/.hermes/plans/pb-m9-seo.md
Read the PB (especially §3 Architecture, §4 Module Breakdown, §9 Build Order), then create individual task plans for these P0 cards:
**09-01 — Install Google Site Kit**
Plan what: Download from WP repo, activate, connect Google Search Console + Analytics via OAuth, verify connection, configure basic settings. Note: DO NOT use Site Kit for schema, sitemaps, or meta — it's Google integration only.
**09-02 — Build Sitemap Module**
Plan what: Custom XML sitemap generator. Sitemap index → sub-sitemaps per content type. Rewrite rule for /sitemap.xml. Transient caching. XML escaping (htmlspecialchars ENT_XML1). Register WP rewrite rule.
**09-03 — Build llms.txt Generator**
Plan what: Custom /llms.txt endpoint. AI crawler sections with markdown links. WP rewrite rule.
**09-04 — Build Schema Injection System**
Plan what: JSON-LD schema templates with {placeholder} system. Two injection paths: wp_head for WP post types, renderSchema() for non-WP pages. Support all schema types from the PB. Use json_encode() for template interpolation, NOT str_replace.
**09-05 — Build SEO Meta Tag System**
Plan what: Meta tag injection (title, description, OG, Twitter cards, canonical, robots, pagination). Two paths: wp_head for WP, renderMetaTags() for non-WP.
Create each plan as a separate .md file in /root/.hermes/plans/task-plans/task-{card_id}-plan.md using the writing-plans format (bite-sized tasks, exact file paths, complete code snippets, verification steps).
After creating all 5 plans, output a summary: "P0_PLANS_COMPLETE" so the orchestrator knows to move to GS review.
Donna2026-05-25 21:06 UTC
Tool2026-05-25 21:06 UTC
{"content": " 1|# Project Brief: Module 9 — SEO\n 2|\n 3|**Document ID:** PB-M9-SEO-002\n 4|**Author:** SA\n 5|**Date:** 2026-05-25\n 6|**Status:** DRAFT — Pending Profe greenlight\n 7|**Build Plan Source:** pb-complete.md (lines 890-957), features-brief.md, **Profe decis...
Donna2026-05-25 21:06 UTC
Tool2026-05-25 21:06 UTC
{"content": " 501|- Descriptive `alt` text on all content images (enforced at content creation, not automated)\n 502|- Image sitemap — forward signal item (post-launch)\n 503|\n 504|#### 10. Lit Reviews — E-E-A-T Signal Pages\n 505|\n 506|**Implementation:** Custom `ScholarlyArticle` sch...
Donna2026-05-25 21:06 UTC
Tool2026-05-25 21:06 UTC
{"content": " 1001|│ ├── createRedirect(), getRedirect(), listRedirects()\n 1002|│ ├── updateRedirect(), deleteRedirect()\n 1003|│ └── resolveRedirect() — WordPress rewrite hook\n 1004|├── Register admin REST endpoints\n 1005|│ ├── GET/POST/PUT/DELETE /seo-bridge/metadata/{entityType}/{...
Donna2026-05-25 21:06 UTC
Let me create the task-plans directory and start writing the 5 plans.
Tool2026-05-25 21:06 UTC
{"output": "", "exit_code": 0, "error": null}
Donna2026-05-25 21:06 UTC
Now I'll create all 5 task plans.
Tool2026-05-25 21:06 UTC
{"bytes_written": 7359, "dirs_created": true, "lint": {"status": "skipped", "message": "No linter for .md files"}}
Donna2026-05-25 21:06 UTC
Tool2026-05-25 21:06 UTC
{"bytes_written": 29193, "dirs_created": true, "lint": {"status": "skipped", "message": "No linter for .md files"}}
Donna2026-05-25 21:06 UTC
Tool2026-05-25 21:06 UTC
{"bytes_written": 17085, "dirs_created": true, "lint": {"status": "skipped", "message": "No linter for .md files"}}
Donna2026-05-25 21:06 UTC
Tool2026-05-25 21:06 UTC
{"bytes_written": 28364, "dirs_created": true, "lint": {"status": "skipped", "message": "No linter for .md files"}}
Donna2026-05-25 21:06 UTC
Tool2026-05-25 21:06 UTC
{"bytes_written": 25153, "dirs_created": true, "lint": {"status": "skipped", "message": "No linter for .md files"}}
Donna2026-05-25 21:06 UTC
Let me verify all 5 files exist:
Tool2026-05-25 21:06 UTC
{"output": "total 132\ndrwxr-xr-x 2 root root 4096 May 25 21:06 .\ndrwxr-xr-x 3 root root 12288 May 25 21:03 ..\n-rw-r--r-- 1 root root 7359 May 25 21:04 task-09-01-plan.md\n-rw-r--r-- 1 root root 29193 May 25 21:04 task-09-02-plan.md\n-rw-r--r-- 1 root root 17085 May 25 21:05 task-09-03-plan.md\n...
Donna2026-05-25 21:06 UTC
All 5 task plans created successfully. Here's the summary:
---
## P0 Task Plans Created
| File | Size | Card | Description |
|---|---|---|---|
| `task-09-01-plan.md` | 7,359 B | 09-01 | Install Google Site Kit + delete old stubs + M065 cleanup migration |
| `task-09-02-plan.md` | 29,193 B | 09-02 | Build full sitemap module (scaffold seo_bridge, M066 migration, 7 sub-sitemaps, rewrite rules, caching, ping) |
| `task-09-03-plan.md` | 17,085 B | 09-03 | Build llms.txt generator (SeoBridgeLlmsTxt class, rewrite rule, section config, dynamic links) |
| `task-09-04-plan.md` | 28,364 B | 09-04 | Build schema injection system (11 templates, json_encode placeholder engine, two injection paths, per-entity overrides) |
| `task-09-05-plan.md` | 25,153 B | 09-05 | Build SEO meta tag system (title/description/OG/Twitter/canonical/robots/pagination, renderMetaTags() + wp_head) |
### What each plan contains:
- **Bite-sized tasks** with exact file paths and complete code snippets
- **Verification checkpoints** after each task
- **Acceptance criteria** at the end
- **Dependencies** section linking to related cards
### Key architectural decisions captured from PB:
- All 5 plans reference the PB's decision to use **Google Site Kit for Google integration only** and **custom seo_bridge for everything else**
- 09-02 uses `htmlspecialchars(ENT_XML1)` for XML escaping per PB §3.1
- 09-04 uses `json_decode` → array manipulation → `json_encode` (NOT `str_replace`) per PB §3.1 Requirement 3
- All plans account for the **4 old stub directories to be deleted** and **M065 cleanup migration**
- All plans respect **FAULT-006** (PHP migration class for every SQL file) and **FAULT-011** (double backslash namespace syntax)
P0_PLANS_COMPLETE