@hanzlaa/rcode 4.3.3 → 4.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/CONTRIBUTING.md +1 -1
  2. package/README.md +28 -5
  3. package/cli/doctor.js +21 -3
  4. package/cli/generate-command-skills.cjs +1 -1
  5. package/cli/index.js +5 -1
  6. package/cli/install.js +7 -9
  7. package/cli/postinstall.js +22 -2
  8. package/cli/uninstall.js +48 -6
  9. package/dist/rcode.js +202 -203
  10. package/package.json +13 -23
  11. package/rcode/agents/rcode-codebase-mapper.md +12 -0
  12. package/rcode/agents/rcode-phase-researcher.md +13 -0
  13. package/rcode/agents/rcode-project-researcher.md +32 -0
  14. package/rcode/agents/rcode-roadmapper.md +15 -0
  15. package/rcode/agents/rules/planner/common-patterns.md +40 -0
  16. package/rcode/bin/lib/roadmap.cjs +184 -11
  17. package/rcode/bin/rcode-hooks.cjs +102 -151
  18. package/rcode/bin/rcode-tools.cjs +669 -55
  19. package/rcode/commands/lazy.md +10 -0
  20. package/rcode/data/intent-table.json +87 -0
  21. package/rcode/modules/seo.yaml +22 -0
  22. package/rcode/references/project-types.yaml +75 -0
  23. package/rcode/references/verb-dictionary.md +1 -1
  24. package/rcode/skills/SKILLS_INDEX.md +18 -1
  25. package/rcode/skills/actions/1-analysis/rcode-prfaq/SKILL.md +1 -1
  26. package/rcode/skills/actions/4-implementation/rcode-herdr-orchestration/SKILL.md +4 -21
  27. package/rcode/skills/actions/4-implementation/rcode-herdr-orchestration/templates/heartbeat.sh +0 -0
  28. package/rcode/skills/actions/4-implementation/rcode-scaffold-project/SKILL.md +60 -1
  29. package/rcode/skills/core/rcode-init/scripts/__pycache__/rcode_init.cpython-38.pyc +0 -0
  30. package/rcode/skills/core/rcode-init/scripts/tests/__pycache__/test_rcode_init.cpython-38.pyc +0 -0
  31. package/rcode/skills/seo/module.yaml +20 -0
  32. package/rcode/skills/seo/on-page-seo-auditor/SKILL.md +308 -0
  33. package/rcode/skills/seo/on-page-seo-auditor/references/audit-example.md +109 -0
  34. package/rcode/skills/seo/on-page-seo-auditor/references/audit-templates.md +427 -0
  35. package/rcode/skills/seo/on-page-seo-auditor/references/bulk-audit-playbook.md +116 -0
  36. package/rcode/skills/seo/on-page-seo-auditor/references/scoring-rubric.md +525 -0
  37. package/rcode/skills/seo/rank-and-rent-local-seo/SKILL.md +94 -0
  38. package/rcode/skills/seo/rank-and-rent-local-seo/rules/city-matrix-and-pages.md +76 -0
  39. package/rcode/skills/seo/rank-and-rent-local-seo/rules/monetization.md +70 -0
  40. package/rcode/skills/seo/rank-and-rent-local-seo/rules/niche-selection.md +60 -0
  41. package/rcode/skills/seo/rank-and-rent-local-seo/rules/subniche-discovery.md +66 -0
  42. package/rcode/skills/seo/rank-and-rent-local-seo/templates/service-city-page.md +36 -0
  43. package/rcode/skills/seo/rank-and-rent-local-seo/templates/subniche-research-prompt.md +34 -0
  44. package/rcode/skills/seo/seo-audit/SKILL.md +412 -0
  45. package/rcode/skills/seo/seo-audit/evals/evals.json +136 -0
  46. package/rcode/skills/seo/seo-audit/references/ai-writing-detection.md +200 -0
  47. package/rcode/skills/seo/seo-content-factory/SKILL.md +130 -0
  48. package/rcode/skills/seo/seo-content-factory/rules/agents.md +80 -0
  49. package/rcode/skills/seo/seo-content-factory/rules/herdr-wave-mapping.md +80 -0
  50. package/rcode/skills/seo/seo-content-factory/rules/pipeline.md +102 -0
  51. package/rcode/skills/seo/seo-content-factory/rules/programmatic-pages.md +107 -0
  52. package/rcode/skills/seo/seo-content-factory/rules/quality-gates.md +68 -0
  53. package/rcode/skills/seo/seo-content-factory/rules/weekly-cadence.md +61 -0
  54. package/rcode/skills/seo/seo-content-factory/templates/BACKLOG.md +23 -0
  55. package/rcode/skills/seo/seo-content-factory/templates/agent-prompts/01-funnel-A1-A4.md +63 -0
  56. package/rcode/skills/seo/seo-content-factory/templates/agent-prompts/02-fanout-editorial-A5-A6-A8.md +28 -0
  57. package/rcode/skills/seo/seo-content-factory/templates/agent-prompts/03-fanout-programmatic-A7-A6-A8.md +25 -0
  58. package/rcode/skills/seo/seo-content-factory/templates/agent-prompts/04-loop-A9-A10.md +34 -0
  59. package/rcode/skills/seo/seo-content-factory/templates/article.mdx +39 -0
  60. package/rcode/skills/seo/seo-content-factory/templates/cluster.schema.json +52 -0
  61. package/rcode/skills/seo/seo-content-factory/templates/content-brief.md +51 -0
  62. package/rcode/skills/seo/seo-content-factory/templates/jsonld-builders.ts +49 -0
  63. package/rcode/skills/seo/seo-content-factory/templates/keywords.csv +13 -0
  64. package/rcode/skills/seo/seo-content-factory/templates/programmatic-page.tsx +58 -0
  65. package/rcode/skills/seo/seo-content-writer/SKILL.md +263 -0
  66. package/rcode/skills/seo/seo-content-writer/references/content-structure-templates.md +875 -0
  67. package/rcode/skills/seo/seo-content-writer/references/instructions-detail.md +239 -0
  68. package/rcode/skills/seo/seo-content-writer/references/seo-writing-checklist.md +250 -0
  69. package/rcode/skills/seo/seo-content-writer/references/title-formulas.md +339 -0
  70. package/rcode/skills/seo/seo-growth-orchestrator/SKILL.md +79 -0
  71. package/rcode/skills/seo/seo-growth-orchestrator/rules/backlinks.md +29 -0
  72. package/rcode/skills/seo/seo-growth-orchestrator/rules/content-engine.md +27 -0
  73. package/rcode/skills/seo/seo-growth-orchestrator/rules/dos-and-donts.md +40 -0
  74. package/rcode/skills/seo/seo-growth-orchestrator/rules/goals-protocol.md +34 -0
  75. package/rcode/skills/seo/seo-growth-orchestrator/rules/local-seo-stack.md +35 -0
  76. package/rcode/skills/seo/seo-growth-orchestrator/rules/mrr-sprint.md +27 -0
  77. package/rcode/skills/seo/seo-growth-orchestrator/rules/tools.md +19 -0
  78. package/rcode/skills/seo/seo-growth-orchestrator/templates/backlink-research.md +29 -0
  79. package/rcode/skills/seo/seo-growth-orchestrator/templates/goal-protocol.md +35 -0
  80. package/rcode/skills/seo/seo-growth-orchestrator/templates/local-citations.md +24 -0
  81. package/rcode/skills/seo/seo-growth-orchestrator/templates/local-city-pages.md +27 -0
  82. package/rcode/skills/seo/seo-growth-orchestrator/templates/local-gbp-categories.md +23 -0
  83. package/rcode/skills/seo/seo-growth-orchestrator/templates/local-gsc-goldmine.md +27 -0
  84. package/rcode/skills/seo/seo-growth-orchestrator/templates/local-review-mining.md +26 -0
  85. package/rcode/skills/seo/seo-growth-orchestrator/templates/mrr-30day-plan.md +19 -0
  86. package/rcode/skills/seo/seo-growth-orchestrator/templates/mrr-cut.md +13 -0
  87. package/rcode/skills/seo/seo-growth-orchestrator/templates/mrr-opportunity-finder.md +17 -0
  88. package/rcode/skills/seo/seo-growth-orchestrator/templates/mrr-role-model.md +18 -0
  89. package/rcode/skills/seo/seo-site-builder/SKILL.md +149 -0
  90. package/rcode/skills/seo/seo-site-builder/rules/01-niche-discovery.md +64 -0
  91. package/rcode/skills/seo/seo-site-builder/rules/02-deep-research.md +164 -0
  92. package/rcode/skills/seo/seo-site-builder/rules/03-keyword-strategy.md +82 -0
  93. package/rcode/skills/seo/seo-site-builder/rules/04-content-plan.md +173 -0
  94. package/rcode/skills/seo/seo-site-builder/rules/05-site-build.md +187 -0
  95. package/rcode/skills/seo/seo-site-builder/rules/06-yolo.md +127 -0
  96. package/rcode/skills/seo/seo-site-builder/templates/article-stub.mdx +62 -0
  97. package/rcode/skills/seo/seo-site-builder/templates/image-prompt.md +97 -0
  98. package/rcode/skills/seo/seo-site-builder/templates/keyword-export.md +45 -0
  99. package/rcode/skills/seo/seo-site-builder/templates/niche-scorecard.md +28 -0
  100. package/rcode/skills/seo/technical-seo-checker/SKILL.md +329 -0
  101. package/rcode/skills/seo/technical-seo-checker/references/bulk-audit-playbook.md +118 -0
  102. package/rcode/skills/seo/technical-seo-checker/references/ecommerce-platform-patterns.md +166 -0
  103. package/rcode/skills/seo/technical-seo-checker/references/http-status-codes.md +705 -0
  104. package/rcode/skills/seo/technical-seo-checker/references/llm-crawler-handling.md +257 -0
  105. package/rcode/skills/seo/technical-seo-checker/references/pre-migration-playbook.md +137 -0
  106. package/rcode/skills/seo/technical-seo-checker/references/robots-txt-reference.md +717 -0
  107. package/rcode/skills/seo/technical-seo-checker/references/technical-audit-example.md +169 -0
  108. package/rcode/skills/seo/technical-seo-checker/references/technical-audit-templates.md +436 -0
  109. package/rcode/templates/settings-hooks.json +4 -0
  110. package/rcode/workflows/do.md +16 -0
  111. package/rcode/workflows/execute-sprint.md +22 -0
  112. package/rcode/workflows/execute.md +17 -3
  113. package/rcode/workflows/help.md +0 -2
  114. package/rcode/workflows/new-milestone.md +21 -9
  115. package/rcode/workflows/new-project-create-roadmap.md +2 -0
  116. package/rcode/workflows/new-project-roadmap.md +2 -0
  117. package/rcode/workflows/new-project.md +3 -0
  118. package/rcode/workflows/plan.md +15 -2
@@ -0,0 +1,257 @@
1
+ # LLM Crawler Handling (GPTBot / ClaudeBot / PerplexityBot / etc.)
2
+
3
+ Referenced from [SKILL.md](https://github.com/aaron-he-zhu/seo-geo-claude-skills/blob/main/optimize/technical-seo-checker/SKILL.md). Use during technical audits to decide whether (and how) to allow AI-engine crawlers. As of 2026, this is a required technical-SEO decision, not an optional one.
4
+
5
+ ---
6
+
7
+ ## Why this matters
8
+
9
+ AI engines (ChatGPT Search, Claude Search, Perplexity, Google AI Overview, Gemini) crawl the web to populate training data AND real-time answer retrieval. Blocking them can:
10
+
11
+ - Prevent citation in AI answers (GEO visibility loss)
12
+ - Reduce brand mentions in AI-generated summaries
13
+ - Lock out traffic from the fastest-growing discovery channel
14
+
15
+ Allowing them can:
16
+
17
+ - Expose content to training without compensation
18
+ - Increase server load
19
+ - Leak competitive content to rivals who scrape via AI
20
+
21
+ **The decision is per-organization.** Common stances:
22
+
23
+ | Stance | Typical choice | Rationale |
24
+ |--------|----------------|-----------|
25
+ | Default-open (marketing-led orgs) | Allow all AI crawlers | GEO visibility > training-data concerns |
26
+ | Default-closed (IP-heavy orgs) | Block all | Proprietary research, legal docs, customer data |
27
+ | Split (most common in 2026) | Allow retrieval bots, block training bots | Best of both — see mapping below |
28
+
29
+ ---
30
+
31
+ ## Known crawler inventory (2026)
32
+
33
+ ### OpenAI
34
+
35
+ | User-Agent | Purpose | Typical robots.txt choice |
36
+ |-----------|---------|---------------------------|
37
+ | `GPTBot` | Training data for future ChatGPT models | Most orgs block |
38
+ | `ChatGPT-User` | Real-time retrieval when ChatGPT answers with browsing | Most orgs allow (loses citation if blocked) |
39
+ | `OAI-SearchBot` | ChatGPT Search (retrieval-focused) | Allow for GEO visibility |
40
+
41
+ ### Anthropic
42
+
43
+ | User-Agent | Purpose | Typical choice |
44
+ |-----------|---------|-----------------|
45
+ | `ClaudeBot` / `Claude-Web` | Training data | Most orgs block |
46
+ | `Claude-User` | Real-time fetch when user asks Claude to look up a URL | Allow |
47
+ | `anthropic-ai` (legacy) | Legacy tag; treat as `ClaudeBot` | Block if blocking training |
48
+
49
+ ### Google
50
+
51
+ | User-Agent | Purpose | Typical choice |
52
+ |-----------|---------|-----------------|
53
+ | `Googlebot` | Search + AI Overview | Always allow |
54
+ | `Google-Extended` | Opt-out for Bard / Gemini training (does NOT affect Search ranking) | Block if opting out of training only |
55
+ | `GoogleOther` | Internal research / product testing | Allow |
56
+
57
+ ### Perplexity
58
+
59
+ | User-Agent | Purpose | Typical choice |
60
+ |-----------|---------|-----------------|
61
+ | `PerplexityBot` | Crawl for retrieval answers | Allow for GEO visibility |
62
+ | `Perplexity-User` | Real-time fetch for user queries | Allow |
63
+
64
+ ### Common Crawl (downstream training data for many LLMs)
65
+
66
+ | User-Agent | Purpose | Typical choice |
67
+ |-----------|---------|-----------------|
68
+ | `CCBot` | Feeds Common Crawl dataset used by many LLMs | Blocking here is indirect training opt-out |
69
+
70
+ ### Other 2026 notable
71
+
72
+ | User-Agent | Purpose |
73
+ |-----------|---------|
74
+ | `Bytespider` | TikTok / Doubao / ByteDance LLMs |
75
+ | `Applebot-Extended` | Apple Intelligence training opt-out |
76
+ | `cohere-ai` | Cohere training |
77
+ | `Meta-ExternalAgent` | Meta Llama training |
78
+ | `Diffbot` | B2B data scraping (may power enterprise LLMs) |
79
+ | `omgili` | Data broker — often blocked |
80
+ | `DataForSeoBot`, `AhrefsBot`, `SemrushBot` | SEO tool crawlers — allow if you use the tool |
81
+
82
+ ---
83
+
84
+ ## Recommended robots.txt patterns
85
+
86
+ ### Pattern 1 — Default-open (maximize GEO visibility, accept training)
87
+
88
+ ```txt
89
+ # Allow all AI engines for both retrieval and training
90
+ User-agent: GPTBot
91
+ Allow: /
92
+
93
+ User-agent: ClaudeBot
94
+ Allow: /
95
+
96
+ User-agent: Google-Extended
97
+ Allow: /
98
+
99
+ User-agent: PerplexityBot
100
+ Allow: /
101
+
102
+ User-agent: Applebot-Extended
103
+ Allow: /
104
+
105
+ User-agent: cohere-ai
106
+ Allow: /
107
+
108
+ # Block only data resellers / scrapers
109
+ User-agent: omgili
110
+ Disallow: /
111
+ ```
112
+
113
+ ### Pattern 2 — Default-closed (training opt-out, retrieval in)
114
+
115
+ ```txt
116
+ # Allow retrieval bots (needed for GEO visibility)
117
+ User-agent: ChatGPT-User
118
+ Allow: /
119
+
120
+ User-agent: OAI-SearchBot
121
+ Allow: /
122
+
123
+ User-agent: Claude-User
124
+ Allow: /
125
+
126
+ User-agent: PerplexityBot
127
+ Allow: /
128
+
129
+ User-agent: Perplexity-User
130
+ Allow: /
131
+
132
+ User-agent: Googlebot
133
+ Allow: /
134
+
135
+ # Block training bots
136
+ User-agent: GPTBot
137
+ Disallow: /
138
+
139
+ User-agent: ClaudeBot
140
+ Disallow: /
141
+
142
+ User-agent: Google-Extended
143
+ Disallow: /
144
+
145
+ User-agent: Applebot-Extended
146
+ Disallow: /
147
+
148
+ User-agent: cohere-ai
149
+ Disallow: /
150
+
151
+ User-agent: Meta-ExternalAgent
152
+ Disallow: /
153
+
154
+ User-agent: CCBot
155
+ Disallow: /
156
+
157
+ User-agent: Bytespider
158
+ Disallow: /
159
+ ```
160
+
161
+ ### Pattern 3 — Section-specific (e.g., allow blog, block pricing)
162
+
163
+ ```txt
164
+ User-agent: GPTBot
165
+ Allow: /blog/
166
+ Allow: /guides/
167
+ Disallow: /pricing/
168
+ Disallow: /customers/
169
+ Disallow: /
170
+ # The trailing Disallow: / is the default; Allow: entries above it take precedence
171
+ ```
172
+
173
+ ---
174
+
175
+ ## Legal layer beyond robots.txt
176
+
177
+ Robots.txt alone is **not a legal opt-out** under EU law. For full compliance as content rights holder:
178
+
179
+ ### EU DSM Directive Art 4(3) — TDM reservation
180
+ Machine-readable reservation required (robots.txt is advisory, not legally binding for TDM):
181
+
182
+ ```html
183
+ <!-- In page HEAD -->
184
+ <meta name="tdm-reservation" content="1" />
185
+ ```
186
+
187
+ Or HTTP response header:
188
+
189
+ ```
190
+ X-Robots-Tag: noai, notrain
191
+ ```
192
+
193
+ Reference: [W3C TDM Reservation Protocol](https://www.w3.org/2022/tdmrep/).
194
+
195
+ ### EU AI Act Art 53(1)(c) — GPAI provider obligations
196
+
197
+ > **Phased application of the AI Act**: the Act entered into force 2024-08; prohibited-practice provisions applied from 2025-02; **GPAI provider obligations (Art 51-55, including Art 53 summary-of-training-data) applied from 2025-08-02**; general applicability to high-risk systems phases through 2026-08. The date below refers specifically to when Art 53 GPAI obligations became applicable, not the whole Act.
198
+
199
+ Art 53 applicable date: **2025-08-02**. General-Purpose AI Model providers (OpenAI, Anthropic, Google, etc.) must:
200
+ - Publish summary of training data content
201
+ - Respect opt-out signals including `tdm-reservation`
202
+ - Establish copyright policy
203
+
204
+ Content owners: monitor published training data summaries; file DMCA/EU copyright complaints if your content appears despite opt-out.
205
+
206
+ ### CCPA — 2026 California extension
207
+ California AG 2025 guidance extends §1798.135 "right to opt-out of sale/share" to training data. Use `Global Privacy Control (GPC)` HTTP header on requests + respect inbound GPC signals if you process user data.
208
+
209
+ ### Post-training content removal
210
+ If content was scraped before opt-out was in place:
211
+ - **OpenAI**: submit removal at https://platform.openai.com/privacy-removal-request (documented as of 2024)
212
+ - **Google Bard/Gemini training**: opt-out via Search Console > Settings > Crawling (Google-Extended block)
213
+ - **Perplexity**: email legal@perplexity.ai with URL + copyright assertion
214
+ - **Anthropic**: email privacy@anthropic.com (no public removal form as of 2026)
215
+
216
+ ### Enforcement timeline summary
217
+ | Jurisdiction | Regulation | Effective | Status |
218
+ |---|---|---|---|
219
+ | EU | DSM Art 4 | 2019 / 2021 transposition deadline | Active |
220
+ | EU | AI Act Art 53 GPAI | 2025-08 | Active |
221
+ | US CA | CCPA training data | 2025 AG guidance | Enforceable |
222
+ | UK | TDM exception | 2025 consultation | Pending |
223
+
224
+ ## Diagnostic signals during a technical audit
225
+
226
+ | Signal | Action |
227
+ |--------|--------|
228
+ | No `User-agent: GPTBot` / `ClaudeBot` / `PerplexityBot` rules in robots.txt | Site is using default-allow; confirm this is intentional with user |
229
+ | `Disallow: /` under `User-agent: *` | All bots blocked including Googlebot — usually accidental |
230
+ | Rules in robots.txt but no `<meta name="robots">` counterpart on high-value pages | Inconsistent — AI bots may honor meta tag differently |
231
+ | Server logs show `GPTBot` / `ClaudeBot` 429s or 403s | Firewall / CDN rate-limiting the bot (Cloudflare's default AI scraper rule, for example) — decide explicitly |
232
+ | Cloudflare "Block AI scrapers" toggle on | Check if user expects this — it overrides robots.txt |
233
+
234
+ ## Cloudflare-specific (2026)
235
+
236
+ Cloudflare added a one-click "Block AI scrapers" toggle that blocks GPTBot, ClaudeBot, CCBot, and others at the edge — **before** robots.txt is evaluated. Audit step:
237
+
238
+ 1. Log into Cloudflare dashboard
239
+ 2. Security → Bots → AI Scrapers and Crawlers
240
+ 3. Verify the toggle state matches the org's stance
241
+
242
+ If Cloudflare is blocking but robots.txt allows, the bot will never reach robots.txt — Cloudflare wins.
243
+
244
+ ## Handoff addition
245
+
246
+ When the technical audit covers LLM crawler handling, include in the handoff:
247
+
248
+ - `ai_crawler_stance`: `default-open` | `default-closed` | `mixed` | `unknown`
249
+ - `ai_crawler_blocked`: list of bot user-agents blocked (e.g., `[GPTBot, ClaudeBot, CCBot]`)
250
+ - `ai_crawler_allowed`: list allowed for retrieval (e.g., `[ChatGPT-User, PerplexityBot]`)
251
+ - `ai_crawler_edge_override`: `true` if Cloudflare / Cloudfront is enforcing rules ahead of robots.txt
252
+ - Open loop: ask user to confirm or modify stance if unknown
253
+
254
+ ## See also
255
+
256
+ - [geo-content-optimizer](https://github.com/aaron-he-zhu/seo-geo-claude-skills/blob/main/build/geo-content-optimizer/SKILL.md) — downstream skill that depends on AI engines actually seeing your content
257
+ - [entity-optimizer](https://github.com/aaron-he-zhu/seo-geo-claude-skills/blob/main/cross-cutting/entity-optimizer/SKILL.md) — blocking retrieval bots breaks AI entity recognition
@@ -0,0 +1,137 @@
1
+ # Technical SEO — Pre-Migration Playbook
2
+
3
+ Referenced from [SKILL.md](https://github.com/aaron-he-zhu/seo-geo-claude-skills/blob/main/optimize/technical-seo-checker/SKILL.md). Use when the user is planning a migration (platform, domain, URL structure, or framework change) and needs an audit + risk assessment before the change ships.
4
+
5
+ ---
6
+
7
+ ## When to use
8
+
9
+ - WordPress → Headless (Next.js, Astro, Remix, Gatsby, etc.)
10
+ - Shopify → custom / BigCommerce / Magento
11
+ - Subdomain consolidation (blog.example.com → example.com/blog)
12
+ - Domain change (oldbrand.com → newbrand.com)
13
+ - URL structure rewrite (/category/product → /product)
14
+ - HTTP → HTTPS (rare now, still applicable on legacy sites)
15
+ - CMS upgrade that rewrites URLs (e.g., major theme refactor)
16
+
17
+ ## The 6 pre-migration stages
18
+
19
+ ### Stage 1 — Freeze current state (baseline snapshot)
20
+
21
+ Goal: capture the **current** SEO signals so you can diff after migration.
22
+
23
+ Capture in `memory/audits/pre-migration-YYYY-MM-DD.md`:
24
+
25
+ 1. **URL inventory**
26
+ - Full crawl via `~~web crawler` MCP or Screaming Frog / Sitebulb export
27
+ - Canonical list of every indexable URL, with response code, canonical tag, redirect chain
28
+ - Total indexable count
29
+
30
+ 2. **Ranking baseline**
31
+ - Top 100 ranking keywords (from `~~SEO tool` or `~~search console`)
32
+ - For each: URL, position, volume, CTR, clicks last 90 days
33
+ - Save as CSV: `memory/monitoring/pre-migration-ranks.csv`
34
+
35
+ 3. **Traffic baseline**
36
+ - Top 50 URLs by organic sessions (from `~~analytics` or `~~search console`)
37
+ - Last 30 + 90-day session count per URL
38
+ - Pages with >1% of total traffic flagged for VIP redirect review
39
+
40
+ 4. **Backlink baseline**
41
+ - Top 100 backlinks by referring domain authority (from `~~SEO tool`)
42
+ - Top 50 linked URLs (on your site)
43
+ - Flag any URL with 10+ backlinks as HIGH-VALUE — needs exact 301 after migration
44
+
45
+ 5. **Schema & entity snapshot**
46
+ - Current structured data (JSON-LD extracted from head) per page template
47
+ - Entity representation (Organization, Person, Product, Article, etc.)
48
+
49
+ ### Stage 2 — Risk map
50
+
51
+ For each proposed migration change, score risk:
52
+
53
+ | Change | Risk | Impact if mishandled |
54
+ |--------|------|---------------------|
55
+ | URL structure change | HIGH | traffic loss 20-40% for 2-12 weeks |
56
+ | Template rewrite (meta, headers) | HIGH | keyword targeting loss |
57
+ | Domain change | CRITICAL | full PageRank reset without redirects |
58
+ | Schema change | MEDIUM | rich result loss |
59
+ | JS-rendered content | MEDIUM | partial deindex if not SSR |
60
+ | robots.txt / noindex change | CRITICAL | accidental deindex |
61
+ | Internal link restructure | MEDIUM | topic cluster weakness |
62
+
63
+ Produce a **GO / NOGO** recommendation per change.
64
+
65
+ ### Stage 3 — Redirect map
66
+
67
+ Before any URL changes, build a one-to-one redirect map:
68
+
69
+ ```csv
70
+ old_url,new_url,reason,priority
71
+ /category/blue-shoes,/shop/blue-shoes,url structure,P0
72
+ /product/abc-123,/product/blue-shoe,slug change,P0
73
+ /blog/2020/seo-tips,/blog/seo-tips,year removed,P1
74
+ ```
75
+
76
+ Rules:
77
+ - Every URL in the Stage 1 inventory MUST have a mapping or a documented decision to 410 / 404
78
+ - No chains (`A → B → C` must become `A → C` and `B → C`)
79
+ - No loops (never `A → B → A`)
80
+ - HIGH-VALUE URLs (Stage 1 flagged) verified manually
81
+
82
+ Save to `memory/audits/redirect-map-YYYY-MM-DD.csv`.
83
+
84
+ ### Stage 4 — Staging QA
85
+
86
+ Before production cutover, QA the staging environment:
87
+
88
+ 1. **Robots / indexing**: is `noindex` set on staging? Will it flip to `index` on launch? Any accidental `Disallow: /` in the production robots.txt draft?
89
+ 2. **Template parity**: do new templates produce equivalent `<title>`, `<meta description>`, `<h1>`, canonical, schema for each page type?
90
+ 3. **Internal linking**: run a crawl of staging; verify topic clusters intact; check for orphan pages introduced by the new template.
91
+ 4. **Core Web Vitals**: run PSI / Lighthouse / WebPageTest on staging. LCP, INP, CLS per template. Compare to Stage 1 baseline.
92
+ 5. **Schema validation**: validate every page-type template's JSON-LD with Schema.org validator and Google Rich Results Test.
93
+ 6. **Pagination / facets**: if the site has collection pages, verify pagination canonical / facet canonical behavior matches or improves on the baseline.
94
+
95
+ ### Stage 5 — Cutover day checklist
96
+
97
+ At launch:
98
+
99
+ 1. Deploy redirects BEFORE touching DNS / robots (if possible)
100
+ 2. Update `robots.txt` to production
101
+ 3. Submit new `sitemap.xml` to Search Console and Bing Webmaster
102
+ 4. Unblock crawling (remove any staging noindex)
103
+ 5. Monitor: tail access logs for 5xx spikes, 404 spikes on old URLs
104
+ 6. First-day rollback trigger: if 404 rate on old URLs exceeds 5% of old-URL traffic, immediately audit redirect map
105
+
106
+ ### Stage 6 — Post-migration diff (T+1, T+7, T+30)
107
+
108
+ Run the same inventory as Stage 1 and diff:
109
+
110
+ - **T+1**: full crawl. Flag any URL that returns non-2xx when it should redirect.
111
+ - **T+7**: compare traffic per URL vs baseline. Flag URLs with >30% drop.
112
+ - **T+30**: compare rankings vs baseline for top 100 keywords. Flag URLs lost from top 10 / top 20.
113
+
114
+ Deliverables:
115
+
116
+ - `memory/audits/post-migration-T+1-YYYY-MM-DD.md`
117
+ - `memory/audits/post-migration-T+7-YYYY-MM-DD.md`
118
+ - `memory/audits/post-migration-T+30-YYYY-MM-DD.md`
119
+
120
+ ## Handoff
121
+
122
+ - **Status**: DONE | DONE_WITH_CONCERNS | BLOCKED
123
+ - **Objective**: "Pre-migration audit for <change_description>"
124
+ - **Key Findings / Output**: baseline snapshot refs + risk map + redirect map + QA checklist
125
+ - **Evidence**: crawl counts, ranking CSV path, redirect CSV path, Core Web Vitals before/after (if staging ready)
126
+ - **Open Loops**: HIGH-VALUE URLs pending redirect confirmation, schema not validated for templates X/Y, rollback trigger thresholds not yet agreed with engineering
127
+ - **Recommended Next Skill**: `content-refresher` if template rewrite surfaced content-quality gaps; `schema-markup-generator` if new templates need schema authored; otherwise `rank-tracker` for post-launch monitoring
128
+
129
+ ## Red-flag patterns (STOP — do not ship until fixed)
130
+
131
+ - Any redirect chain >1 hop
132
+ - Missing 301 on a URL with >100 monthly organic sessions
133
+ - `robots.txt` has `Disallow: /` anywhere in production draft
134
+ - Canonical tag on new URL points back to old URL
135
+ - JS-only content with no SSR fallback on key landing pages
136
+ - New template omits `<h1>` or has multiple `<h1>`
137
+ - Schema type changed without rich-result eligibility check