Skip to content

feat(parsa): seo-foundations covers page types, query families, agent surfaces, and the content handoff - #93

Open
parsakhaz wants to merge 1 commit into
mainfrom
feat/parsa-seo-foundations-page-types
Open

feat(parsa): seo-foundations covers page types, query families, agent surfaces, and the content handoff#93
parsakhaz wants to merge 1 commit into
mainfrom
feat/parsa-seo-foundations-page-types

Conversation

@parsakhaz

Copy link
Copy Markdown
Member

Why

I ran seo-foundations end to end on a real product (dcouple/discatch, PRs #11 and #13) and the skill left out most of what turned out to matter. The user had to tell the agent, after the fact, that alternatives, versus, mini tools, and cookbooks are the pages that win, that agents find products through registries and llms.txt, and that a no-site product still needs a page plan. The skill should know all of that on its own.

What changed

parsa/seo/seo-foundations/SKILL.md, rewritten (180 to 413 lines), product-agnostic:

  • Step 0, inputs and the no-site case. Works from docs and competitors when there is no site; the inventory becomes the site's first page plan.
  • Step 1 adds the product's own vocabulary, ship status (shipped, planned, reserved), and a product-type classification that drives the page-type map.
  • Step 2 adds the agent-first discovery channel, a list of rivals that surface unprompted, and the adjacent-category trap (a neighbouring category colonising your phrasing).
  • Step 3 fans crawls out per competitor and specifies what to record: sitemap pattern counts and the URL patterns they lack, dated pricing with monthly and annual and internal contradictions, agent surfaces (llms.txt, .well-known/mcp.json, OpenAPI, registry entries, CLI, skills), weak spots, structures worth matching, and a corrections table for the repo's own docs.
  • Step 4, new. Eleven query families to map every time (category, for-audience, alternatives singular and plural, versus incl. third-party pairs, pricing and review, per-integration or per-source, how-to and free, what-is, API and MCP, migration from dead or repriced tools, mini-tool queries); the demand signals that work at zero-to-one (suggest endpoint, Trends, cited volumes only, community threads); gap tells, beatability rules, skip rules; one owning page per query.
  • Step 5, new. Page types ordered by value (alternatives, versus, pricing teardowns, per-source, mini tools, cookbooks, audience, agent surfaces, free, guides, glossary and docs), the inventory shape (slug, owned query, angle, priority, status, build order, top ten by expected value, dependencies, wave 2), the page rules every money page follows, template mapping, and a required cold-read with the findings that recur.
  • Step 6, new. Non-page discovery surfaces by product type, what each needs, and the name-availability rule: no placeholder releases (squatting), claim only what registries support.
  • Step 7 expands the foundations template and adds the four docs/seo/ deliverables.
  • Step 8, new. The handoff to a content pass: content-driven templates first, a writer brief (truth, unbending rules, voice, depth, blocks, finish), one writer per file in parallel with examples, the strongest writing model, second-wave pages in their own files.

parsa/seo/README.md: the foundations paragraph describes the new scope.

Evidence

The discatch run: docs/seo/keyword-map.md, competitor-map.md, page-inventory.md, discovery-checklist.md in dcouple/discatch#11, and the templates plus content pass in dcouple/discatch#13. The cold-read findings listed in step 5 are the ones that actually came back on that inventory.

🤖 Generated with Claude Code

https://claude.ai/code/session_018fH7QAsq3wGqqsEbTmUczU

… surfaces, and the content handoff

Learned from running the skill on discatch (dcouple/discatch PRs #11 and
#13). The old skill stopped at "comparison and alternatives pages, then
explainers"; it did not say which query families to map, how to read a
gap, which page types actually intercept competitor traffic and earn links
(alternatives, versus incl. third-party pairs, pricing teardowns,
per-source or per-integration pages, mini tools, cookbooks), what an
agent-era competitor's discovery kit looks like, or how to hand the
inventory to a content pass. It also assumed a live site.

Now it is product-agnostic by classifying the product first, lists the
eleven query families and the demand signals that work at zero-to-one,
states the gap tells and beatability rules, orders page types by value,
sets the page rules every money page follows, requires a cold read of the
inventory (with the findings that recur), covers non-page discovery
surfaces and warns against name squatting, and ends with the writer brief
shape for the content pass.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018fH7QAsq3wGqqsEbTmUczU
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 11, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-11T04:35:36.634245Z da90e18 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: da90e18fcd

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +305 to +310
Run `cold-read` on the inventory with a fresh agent before publishing it.
The findings that recur: a priority rule that contradicts its rows, two
competing orderings, status columns that mix access and status, a page
counted twice, queries with two owners, a page both kept and dropped, new
page kinds with no template, undefined product terms, citations with bare
filenames. Fix them before the PR.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Keep cold-read out of the inline workflow

Running cold-read here and applying its findings before publishing embeds a review-and-mutation feedback loop in the skill. The root CLAUDE.md explicitly requires cold-read to remain a manual, separate skill because review-triggered mutations invalidate downstream work; move this audit to a follow-up step instead of invoking it inline.

Useful? React with 👍 / 👎.

Comment on lines +402 to +404
- Write one brief for the writers that says where the truth lives, the
rules that never bend (never name a provider, planned means planned,
concede first, dated numbers, no invented features), the voice, the depth

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Derive provider-naming restrictions from the product

When this handoff follows the alternatives, versus, or pricing pages required above, the universal never name a provider rule can prevent writers from naming the products needed to satisfy the target query and produce the required comparison or pricing table. This appears to be a product-specific restriction; determine it from the repository or brief rather than imposing it on every SEO run.

Useful? React with 👍 / 👎.

Comment on lines +109 to +112
- **Developer tools, infra, open source**: GitHub trending and topics,
awesome-lists, Reddit niche subs, Hacker News (Show HN and Ask HN), Product
Hunt, dev communities on X and Bluesky, package registries. Prioritize
repos with recent commits; discard dead projects.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Retain dead tools as migration targets

For developer-tool runs, discarding dead projects during discovery removes exactly the products that steps 4 and 5 later require for shutdown and migration queries. A defunct but widely used tool can be the highest-value alternatives target, so retain dead projects as migration candidates while excluding them only from the active-competitor count.

Useful? React with 👍 / 👎.

Comment on lines +347 to +348
**Success criteria**: a checklist with a "what discatch needs" line per
surface and a sequence tied to the roadmap.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Replace the leaked discatch product name

For every product other than discatch, this success criterion directs the generated checklist to use the wrong product name, leaking the source project's terminology into an otherwise product-agnostic skill. Substitute the product name discovered in step 1.

Useful? React with 👍 / 👎.

Comment on lines 355 to 356
```markdown
# SEO Foundations — [site name]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Remove em dashes from the generated template

This template emits an em dash, as does the action placeholder at line 381, despite the root CLAUDE.md rule that prohibits em dashes. Because agents will copy this block into generated foundations documents, replace both with permitted punctuation.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant