Importance: Medium. Core skill upgrade, not a live-site change. Fully reversible (rollback artifact preserved).
Status of work: Skill authoring + QA = DONE. Canonical repo commit + optional Notion config page = PENDING your approval.
What was done
- Rewrote the generic
programmatic-seo skill (it was SaaS-flavored: resume templates, currency conversions, software integrations) into a personal-injury pSEO engine for aguiarinjurylawyers.com. Name preserved as programmatic-seo so it updates in place; version bumped 1.1.0 to 2.0.0.
- Reframed around the two outcomes that justify a page: own Kentucky local PI search, and close the AI informational-query gap surfaced in the recent AI-visibility audit. AI-citation strategy is now first-class and threaded through the firm content-exclusion rules, so it closes the gap without producing the cookie-cutter filler firm-briefing bans.
- Replaced the 12 generic playbooks with the 5 that fit a PI firm (Practice-area x Location, Accident-scenario, Informational-for-AI, County/Court, Spanish localization) and told future agents explicitly not to reach for the SaaS plays.
- Baked in the guardrails that matter most for one firm across many cities: hard anti-cannibalization (one intent, one canonical page;
site: check before building), a no-doorway/no-thin rule, and a per-page differentiation test every page must pass before deploy.
- Wired it into the firm pipeline by reference, not hardcoded: firm-briefing (brand/voice/banned words/citations), Notion (IDs/paths), live sitemap (current inventory), then copywriting, schema-markup, pre-publish QA / brand linter, wp-content-deployer, batch-indexnow, seo-pulse / ai-visibility monitoring; dedup via aguiar-sitemap-page-architecture and aguiar-location-page-audit.
- Added
references/pi-pseo-playbooks.md with per-pattern build detail (URL pattern, unique-value requirement, page skeleton mapped to the firm content architecture, schema, internal links, cannibalization checks).
Problems found and fixed
- The old skill pointed to
references/playbooks.md, which did not exist (broken pointer). Fixed: the new reference file exists and resolves.
- The old skill hardcoded SaaS assumptions. Config now comes from canonical, no-drift sources per your skills-hygiene rule.
- QA caught a description over the 1024-char validator limit and a few generic "expert" usages; both corrected (rephrased to named retained roles: reconstructionists, economists, life care planners).
QA performed
- Banned-word scan (only hits are inside the documented do-not-use list), zero em dashes, valid YAML, name preserved, broken pointer resolved, official skill validator returns valid, packaged to a
.skill. Dry-run routing trace passed on 3 realistic prompts, including correctly refusing a request to generate 200 city-swap pages.
Why the session is ending
Task complete and QA'd. Holding before the canonical repo commit because the controlled commit lane (github-direct-commit) and the brand-compliance-linter live in your Cowork/Code environment, not this web session, and your standing rule is that skill files go through that lane rather than the Pipedream wrapper. The finished files are ready to drop in.
Recommended next actions (your call)
- Commit the two files to
samaguiar1982-cpu/sail-skills at programmatic-seo/SKILL.md and programmatic-seo/references/pi-pseo-playbooks.md via github-direct-commit (keep the rollback artifact, log a KB entry). They are formatted to drop straight in.
- Optional but recommended: create a canonical "Programmatic SEO Config" Notion page holding the priority city/region target list and a keyword-to-URL map, so future batches read from a no-drift source instead of a frozen list. Happy to build it once you confirm priority markets.