@hanzlaa/rcode 4.3.2 → 4.4.0

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 (130) hide show
  1. package/AGENTS.md +1 -1
  2. package/CONTRIBUTING.md +2 -1
  3. package/README.md +45 -10
  4. package/cli/doctor.js +21 -3
  5. package/cli/index.js +5 -1
  6. package/cli/install.js +16 -2
  7. package/cli/postinstall.js +1 -1
  8. package/cli/uninstall.js +48 -6
  9. package/dist/rcode.js +178 -174
  10. package/package.json +12 -22
  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 +303 -14
  18. package/rcode/bin/rcode-tools.cjs +669 -55
  19. package/rcode/commands/lens-audit.md +8 -6
  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/skills/SKILLS_INDEX.md +20 -2
  24. package/rcode/skills/actions/4-implementation/rcode-herdr-orchestration/SKILL.md +16 -21
  25. package/rcode/skills/actions/4-implementation/rcode-herdr-orchestration/rules/backlog-building.md +13 -0
  26. package/rcode/skills/actions/4-implementation/rcode-herdr-orchestration/rules/merge-strategy.md +17 -0
  27. package/rcode/skills/actions/4-implementation/rcode-herdr-orchestration/rules/orchestrator-rhythm.md +9 -0
  28. package/rcode/skills/actions/4-implementation/rcode-herdr-orchestration/rules/wave-design.md +21 -0
  29. package/rcode/skills/actions/4-implementation/rcode-herdr-orchestration/templates/heartbeat.sh +0 -0
  30. package/rcode/skills/actions/4-implementation/rcode-scaffold-project/SKILL.md +60 -1
  31. package/rcode/skills/core/rcode-lazy/SKILL.md +149 -0
  32. package/rcode/skills/seo/module.yaml +20 -0
  33. package/rcode/skills/seo/on-page-seo-auditor/SKILL.md +308 -0
  34. package/rcode/skills/seo/on-page-seo-auditor/references/audit-example.md +109 -0
  35. package/rcode/skills/seo/on-page-seo-auditor/references/audit-templates.md +427 -0
  36. package/rcode/skills/seo/on-page-seo-auditor/references/bulk-audit-playbook.md +116 -0
  37. package/rcode/skills/seo/on-page-seo-auditor/references/scoring-rubric.md +525 -0
  38. package/rcode/skills/seo/rank-and-rent-local-seo/SKILL.md +94 -0
  39. package/rcode/skills/seo/rank-and-rent-local-seo/rules/city-matrix-and-pages.md +76 -0
  40. package/rcode/skills/seo/rank-and-rent-local-seo/rules/monetization.md +70 -0
  41. package/rcode/skills/seo/rank-and-rent-local-seo/rules/niche-selection.md +60 -0
  42. package/rcode/skills/seo/rank-and-rent-local-seo/rules/subniche-discovery.md +66 -0
  43. package/rcode/skills/seo/rank-and-rent-local-seo/templates/service-city-page.md +36 -0
  44. package/rcode/skills/seo/rank-and-rent-local-seo/templates/subniche-research-prompt.md +34 -0
  45. package/rcode/skills/seo/seo-audit/SKILL.md +412 -0
  46. package/rcode/skills/seo/seo-audit/evals/evals.json +136 -0
  47. package/rcode/skills/seo/seo-audit/references/ai-writing-detection.md +200 -0
  48. package/rcode/skills/seo/seo-content-factory/SKILL.md +130 -0
  49. package/rcode/skills/seo/seo-content-factory/rules/agents.md +80 -0
  50. package/rcode/skills/seo/seo-content-factory/rules/herdr-wave-mapping.md +80 -0
  51. package/rcode/skills/seo/seo-content-factory/rules/pipeline.md +102 -0
  52. package/rcode/skills/seo/seo-content-factory/rules/programmatic-pages.md +107 -0
  53. package/rcode/skills/seo/seo-content-factory/rules/quality-gates.md +68 -0
  54. package/rcode/skills/seo/seo-content-factory/rules/weekly-cadence.md +61 -0
  55. package/rcode/skills/seo/seo-content-factory/templates/BACKLOG.md +23 -0
  56. package/rcode/skills/seo/seo-content-factory/templates/agent-prompts/01-funnel-A1-A4.md +63 -0
  57. package/rcode/skills/seo/seo-content-factory/templates/agent-prompts/02-fanout-editorial-A5-A6-A8.md +28 -0
  58. package/rcode/skills/seo/seo-content-factory/templates/agent-prompts/03-fanout-programmatic-A7-A6-A8.md +25 -0
  59. package/rcode/skills/seo/seo-content-factory/templates/agent-prompts/04-loop-A9-A10.md +34 -0
  60. package/rcode/skills/seo/seo-content-factory/templates/article.mdx +39 -0
  61. package/rcode/skills/seo/seo-content-factory/templates/cluster.schema.json +52 -0
  62. package/rcode/skills/seo/seo-content-factory/templates/content-brief.md +51 -0
  63. package/rcode/skills/seo/seo-content-factory/templates/jsonld-builders.ts +49 -0
  64. package/rcode/skills/seo/seo-content-factory/templates/keywords.csv +13 -0
  65. package/rcode/skills/seo/seo-content-factory/templates/programmatic-page.tsx +58 -0
  66. package/rcode/skills/seo/seo-content-writer/SKILL.md +263 -0
  67. package/rcode/skills/seo/seo-content-writer/references/content-structure-templates.md +875 -0
  68. package/rcode/skills/seo/seo-content-writer/references/instructions-detail.md +239 -0
  69. package/rcode/skills/seo/seo-content-writer/references/seo-writing-checklist.md +250 -0
  70. package/rcode/skills/seo/seo-content-writer/references/title-formulas.md +339 -0
  71. package/rcode/skills/seo/seo-growth-orchestrator/SKILL.md +79 -0
  72. package/rcode/skills/seo/seo-growth-orchestrator/rules/backlinks.md +29 -0
  73. package/rcode/skills/seo/seo-growth-orchestrator/rules/content-engine.md +27 -0
  74. package/rcode/skills/seo/seo-growth-orchestrator/rules/dos-and-donts.md +40 -0
  75. package/rcode/skills/seo/seo-growth-orchestrator/rules/goals-protocol.md +34 -0
  76. package/rcode/skills/seo/seo-growth-orchestrator/rules/local-seo-stack.md +35 -0
  77. package/rcode/skills/seo/seo-growth-orchestrator/rules/mrr-sprint.md +27 -0
  78. package/rcode/skills/seo/seo-growth-orchestrator/rules/tools.md +19 -0
  79. package/rcode/skills/seo/seo-growth-orchestrator/templates/backlink-research.md +29 -0
  80. package/rcode/skills/seo/seo-growth-orchestrator/templates/goal-protocol.md +35 -0
  81. package/rcode/skills/seo/seo-growth-orchestrator/templates/local-citations.md +24 -0
  82. package/rcode/skills/seo/seo-growth-orchestrator/templates/local-city-pages.md +27 -0
  83. package/rcode/skills/seo/seo-growth-orchestrator/templates/local-gbp-categories.md +23 -0
  84. package/rcode/skills/seo/seo-growth-orchestrator/templates/local-gsc-goldmine.md +27 -0
  85. package/rcode/skills/seo/seo-growth-orchestrator/templates/local-review-mining.md +26 -0
  86. package/rcode/skills/seo/seo-growth-orchestrator/templates/mrr-30day-plan.md +19 -0
  87. package/rcode/skills/seo/seo-growth-orchestrator/templates/mrr-cut.md +13 -0
  88. package/rcode/skills/seo/seo-growth-orchestrator/templates/mrr-opportunity-finder.md +17 -0
  89. package/rcode/skills/seo/seo-growth-orchestrator/templates/mrr-role-model.md +18 -0
  90. package/rcode/skills/seo/seo-site-builder/SKILL.md +149 -0
  91. package/rcode/skills/seo/seo-site-builder/rules/01-niche-discovery.md +64 -0
  92. package/rcode/skills/seo/seo-site-builder/rules/02-deep-research.md +164 -0
  93. package/rcode/skills/seo/seo-site-builder/rules/03-keyword-strategy.md +82 -0
  94. package/rcode/skills/seo/seo-site-builder/rules/04-content-plan.md +173 -0
  95. package/rcode/skills/seo/seo-site-builder/rules/05-site-build.md +187 -0
  96. package/rcode/skills/seo/seo-site-builder/rules/06-yolo.md +127 -0
  97. package/rcode/skills/seo/seo-site-builder/templates/article-stub.mdx +62 -0
  98. package/rcode/skills/seo/seo-site-builder/templates/image-prompt.md +97 -0
  99. package/rcode/skills/seo/seo-site-builder/templates/keyword-export.md +45 -0
  100. package/rcode/skills/seo/seo-site-builder/templates/niche-scorecard.md +28 -0
  101. package/rcode/skills/seo/technical-seo-checker/SKILL.md +329 -0
  102. package/rcode/skills/seo/technical-seo-checker/references/bulk-audit-playbook.md +118 -0
  103. package/rcode/skills/seo/technical-seo-checker/references/ecommerce-platform-patterns.md +166 -0
  104. package/rcode/skills/seo/technical-seo-checker/references/http-status-codes.md +705 -0
  105. package/rcode/skills/seo/technical-seo-checker/references/llm-crawler-handling.md +257 -0
  106. package/rcode/skills/seo/technical-seo-checker/references/pre-migration-playbook.md +137 -0
  107. package/rcode/skills/seo/technical-seo-checker/references/robots-txt-reference.md +717 -0
  108. package/rcode/skills/seo/technical-seo-checker/references/technical-audit-example.md +169 -0
  109. package/rcode/skills/seo/technical-seo-checker/references/technical-audit-templates.md +436 -0
  110. package/rcode/templates/settings-hooks.json +16 -1
  111. package/rcode/workflows/do.md +17 -0
  112. package/rcode/workflows/enable-hooks.md +3 -2
  113. package/rcode/workflows/execute-sprint.md +22 -0
  114. package/rcode/workflows/execute.md +17 -3
  115. package/rcode/workflows/lens-audit.md +49 -8
  116. package/rcode/workflows/new-milestone.md +21 -9
  117. package/rcode/workflows/new-project-create-roadmap.md +2 -0
  118. package/rcode/workflows/new-project-roadmap.md +2 -0
  119. package/rcode/workflows/new-project.md +3 -0
  120. package/rcode/workflows/plan.md +15 -2
  121. package/server/dashboard.js +6 -2
  122. package/server/lib/api.js +35 -20
  123. package/server/lib/html/client/components/OrchPanel.js +43 -2
  124. package/server/lib/html/client/components/dashboard/InProgress.js +5 -4
  125. package/server/lib/html/client/components/shared.js +14 -0
  126. package/server/lib/html/client/orchestrator.js +13 -0
  127. package/server/lib/html/client/views/KanbanView.js +33 -4
  128. package/server/lib/html/css.js +57 -3
  129. package/server/lib/scanner.js +40 -4
  130. package/server/orchestrator.js +42 -0
@@ -0,0 +1,82 @@
1
+ # Rule: Keyword Strategy
2
+
3
+ ## When to Run
4
+ After deep research completes and user approves (or solo yolo auto-continues)
5
+
6
+ ## Step 1 — Build Keywords.txt
7
+ Extract ALL keywords from research/02-keyword-research.md
8
+ Format: comma-separated, one line, saved to `/keywords.txt`
9
+
10
+ ```bash
11
+ # Extract and deduplicate all keywords from research file
12
+ grep -E "^\|" research/02-keyword-research.md | \
13
+ grep -v "Keyword\|---\|keyword" | \
14
+ awk -F'|' '{print $2}' | \
15
+ sed 's/^[[:space:]]*//' | sed 's/[[:space:]]*$//' | \
16
+ grep -v "^$" | grep -v "^[0-9]*$" | \
17
+ sort -u | tr '\n' ',' | sed 's/,$/\n/' > keywords.txt
18
+ ```
19
+
20
+ **Tell user:**
21
+ "Keywords saved to keywords.txt — please paste into Google Keyword Planner:
22
+ 1. Go to ads.google.com → Tools → Keyword Planner
23
+ 2. Click 'Discover new keywords' → 'Enter keywords manually'
24
+ 3. Paste the contents of keywords.txt
25
+ 4. Download CSV with Volume, CPC, Competition columns
26
+ 5. Share the CSV here and I'll re-prioritize the article schedule"
27
+
28
+ ## Step 2 — If CSV Provided (Preferred Path)
29
+ Parse CSV with these columns:
30
+ - Keyword, Volume, CPC, AVG DA, Weakspot, Golden Score, Intent, Trending
31
+
32
+ **Priority sort algorithm:**
33
+ ```python
34
+ # Step 1: Filter to AVG DA < 55 (beatable without backlinks)
35
+ # Step 2: Sort by Weakspot DESC (more weak pages = easier)
36
+ # Step 3: Within same Weakspot tier, sort by Volume DESC
37
+ # Step 4: Flag Trending=true keywords with ⭐
38
+ # Step 5: Put Golden Score > 1.5 keywords in priority tier
39
+ ```
40
+
41
+ **Article Schedule Tiers:**
42
+ - Tier 1: AVG DA < 45, any Weakspot → Publish Month 1 (no backlinks needed)
43
+ - Tier 2: AVG DA 45-55, Weakspot ≥ 2 → Publish Month 1-2
44
+ - Tier 3: AVG DA 55-65, Weakspot ≥ 1 → Publish Month 3-4
45
+ - Tier 4: AVG DA 65-75, any → Publish Month 4-5 (need some authority)
46
+ - Tier 5: AVG DA 75+, high volume → Money pages, Publish Month 6+
47
+
48
+ ## Step 3 — If No CSV (Fallback Path)
49
+ Use browser tool to manually check top 10 SERPs for top 30 keywords:
50
+ - Note if top results are: big brands (bad) vs small blogs (good)
51
+ - Check Moz or Ahrefs toolbar data if visible
52
+ - Estimate DA based on: site type, content depth, known brand recognition
53
+
54
+ ## Step 4 — Generate article-schedule.md
55
+ Save to `docs/article-schedule.md` with exact format:
56
+ ```markdown
57
+ | # | Title | Keyword | DA | Vol | Weak | Score | Type |
58
+ ```
59
+
60
+ Each article must have:
61
+ - Exact target keyword
62
+ - Suggested URL slug
63
+ - Article type (Review/Comparison/How-To/Use-Case/FAQ/Roundup)
64
+ - Target publish month
65
+ - Why it ranks without backlinks (1 sentence)
66
+
67
+ ## Step 5 — Identify Top 5 "First Week" Articles
68
+ These go live in Week 1-2 for fastest sandbox exit signals:
69
+ 1. One troubleshoot/panic search (Reddit/forums dominate SERP)
70
+ 2. One specific model review (retailer pages only, zero affiliates)
71
+ 3. One comparison nobody wrote (brand A vs brand B gap)
72
+ 4. One question-based article (PAA box with weak answers)
73
+ 5. One use-case article (health condition + product recommendation)
74
+
75
+ ## Copy Keywords to Clipboard
76
+ Always run at end:
77
+ ```bash
78
+ cat keywords.txt | clip.exe # WSL
79
+ # or
80
+ cat keywords.txt | pbcopy # Mac
81
+ ```
82
+ Tell user: "Keywords copied to clipboard — paste into Google Ads Planner now"
@@ -0,0 +1,173 @@
1
+ # Rule: Content Plan & Article Stubs
2
+
3
+ ## When to Run
4
+ After article-schedule.md is finalized with real keyword data
5
+
6
+ ## Step 1 — Create Content Directory Structure
7
+ ```
8
+ /content/
9
+ ├── reviews/ ← single product/model reviews
10
+ ├── comparisons/ ← brand-vs-brand, type-vs-type
11
+ ├── guides/ ← buying guides, how-to, educational
12
+ ├── health/ ← use-case articles (condition-specific)
13
+ └── best/ ← roundup / best-of lists (money pages)
14
+ ```
15
+
16
+ ## Step 2 — Generate MDX Stubs for First 20 Articles
17
+ For each article in Tier 1 + Tier 2 of article-schedule.md, create a stub file.
18
+
19
+ File naming: `content/[type]/[slug].mdx`
20
+
21
+ **MDX Frontmatter Template:**
22
+ ```mdx
23
+ ---
24
+ title: "[Full SEO Title Here]"
25
+ slug: "[url-slug]"
26
+ type: "review|comparison|guide|health|best"
27
+ keyword: "[exact target keyword]"
28
+ metaTitle: "[Title under 60 chars for Google]"
29
+ metaDescription: "[Description 140-160 chars with keyword]"
30
+ publishDate: "[YYYY-MM-DD based on schedule]"
31
+ status: "stub"
32
+ wordCountTarget: [1500-5000 based on type]
33
+ affiliateLinks:
34
+ - brand: "[Brand Name]"
35
+ url: "[affiliate URL placeholder]"
36
+ commission: "[X%]"
37
+ internalLinks:
38
+ - "[related article slug 1]"
39
+ - "[related article slug 2]"
40
+ imageRequired: true
41
+ imagePomptFile: "assets/image-prompts/[slug]-images.md"
42
+ ---
43
+
44
+ ## [H2: Main Section Title]
45
+
46
+ [STUB: Write 2000-word expert review covering: specs, EMF levels, wood quality, heating performance, assembly, verdict]
47
+
48
+ ## Pros & Cons
49
+
50
+ **Pros:**
51
+ - [STUB]
52
+
53
+ **Cons:**
54
+ - [STUB]
55
+
56
+ ## Verdict
57
+
58
+ [STUB: Final recommendation with affiliate CTA]
59
+ ```
60
+
61
+ ## Step 3 — Image Handling (Two Strategies)
62
+
63
+ For EVERY article, handle images using ONE of these two strategies:
64
+
65
+ ### Strategy A — Download Real Product Images (Preferred for Reviews)
66
+ Use browser tool to find and download actual product images:
67
+ 1. Open Google Images: search `[product name] official product photo`
68
+ 2. Search brand's official website for press/product images
69
+ 3. Search Amazon listing for the product — use main product photos
70
+ 4. Download to: `public/images/[slug]/`
71
+ - `hero.jpg` — main product exterior shot
72
+ - `detail.jpg` — close-up or interior shot
73
+ - `specs.jpg` — specs sheet or comparison image if available
74
+
75
+ **When to use Strategy A:**
76
+ - Product review articles (real product photos = more trust + E-E-A-T)
77
+ - Brand overview articles
78
+ - Any article where real product imagery exists online
79
+
80
+ **Browser tool commands:**
81
+ ```
82
+ 1. Navigate to Google Images
83
+ 2. Search: "[Brand] [Model] product photo official"
84
+ 3. Filter: Large size, labeled for reuse if possible
85
+ 4. Save image to correct path
86
+ ```
87
+
88
+ ### Strategy B — AI Generation Prompt File (For Infographics, Cards, Pinterest)
89
+ Create `/assets/image-prompts/[slug]-images.md` with detailed prompts:
90
+
91
+ ```markdown
92
+ # Image Prompts: [Article Title]
93
+ # Place generated images at the exact paths specified below
94
+
95
+ ## Image 1 — Hero (if no real product photo found)
96
+ **Place at:** public/images/[slug]/hero.jpg
97
+ **Prompt:** Professional product photography of [product description],
98
+ warm cedar wood interior background, soft diffused natural lighting,
99
+ premium lifestyle feel, no text, 1200x630px, high-end editorial quality,
100
+ warm amber and cream tones
101
+
102
+ ## Image 2 — Verdict/Rating Card
103
+ **Place at:** public/images/[slug]/verdict-card.png
104
+ **Prompt:** Rating card graphic showing [X.X]/10 score,
105
+ product name "[Product Name]" in Playfair Display serif font,
106
+ warm Nordic minimal design, burnt amber (#C9622F) accent,
107
+ cream background (#FAF6F1), star rating icons, clean professional layout
108
+
109
+ ## Image 3 — Pinterest Pin
110
+ **Place at:** public/images/[slug]/pinterest.jpg
111
+ **Prompt:** Tall Pinterest 2:3 ratio graphic (1000x1500px),
112
+ "[Article Headline]" text in Playfair Display,
113
+ warm sauna interior background, burnt amber banner bottom with site name,
114
+ premium editorial feel, high contrast for mobile readability
115
+
116
+ ## Image 4 — Comparison Infographic (for comparison articles)
117
+ **Place at:** public/images/[slug]/comparison.png
118
+ **Prompt:** Clean two-column comparison infographic,
119
+ maple amber (#C9622F) vs dark forest (#1C2B2D) column headers,
120
+ cream background (#FAF6F1), Inter font body text,
121
+ professional data visualization, no stock photo people
122
+ ```
123
+
124
+ **When to use Strategy B:**
125
+ - Comparison infographics (no real product photo needed)
126
+ - Rating/verdict cards
127
+ - Pinterest pins
128
+ - Any custom graphic that doesn't require a real product photo
129
+
130
+ ### Decision Rule Per Article Type
131
+ | Article Type | Hero | Detail | Card | Pinterest |
132
+ |-------------|------|--------|------|-----------|
133
+ | Product Review | Strategy A | Strategy A | Strategy B | Strategy B |
134
+ | Comparison | Strategy B | Strategy A (both products) | Strategy B | Strategy B |
135
+ | How-To / FAQ | Strategy B | Strategy A (if product shown) | — | Strategy B |
136
+ | Roundup | Strategy B | Strategy A (top pick) | Strategy B | Strategy B |
137
+ | Use-Case/Health | Strategy B | Strategy A (product rec) | — | Strategy B |
138
+
139
+ ## Step 4 — Internal Linking Map
140
+ Create `docs/internal-linking-map.md`:
141
+
142
+ ```markdown
143
+ # Internal Linking Map
144
+
145
+ ## Rule: All roads lead to money pages
146
+
147
+ ### Money Pages (receive most links)
148
+ - /best/infrared-sauna-for-home ← linked from: all reviews, all comparisons
149
+ - /best/sauna-blanket ← linked from: all blanket reviews, portable comparisons
150
+
151
+ ### Hub Pages (give and receive links)
152
+ - /brands/[brand-name] ← linked from all model reviews of that brand
153
+ - /guides/buyers-guide ← linked from all Tier 1-2 articles
154
+
155
+ ### Spoke Pages (give links upward)
156
+ - /reviews/[model] → links to: brand hub, most relevant roundup, 1-2 comparisons
157
+ - /health/[condition] → links to: 2-3 model reviews, buyers guide
158
+
159
+ ### Anchor Text Rules
160
+ ✅ Use: natural phrases ("best for arthritis", "see our full review", "compared here")
161
+ ❌ Avoid: exact match anchors ("best infrared sauna") — triggers over-optimization
162
+ ❌ Avoid: generic anchors ("click here", "read more")
163
+ ```
164
+
165
+ ## Step 5 — Interactive Gate
166
+ After stubs + image prompts created:
167
+ "Content stubs ready for [N] articles.
168
+ Image prompts saved to assets/image-prompts/ — get them generated and place at paths specified.
169
+
170
+ Want to:
171
+ 1. Continue to site build (Next.js setup)
172
+ 2. Research the next niche idea
173
+ 3. Write full content for Article #1 now"
@@ -0,0 +1,187 @@
1
+ # Rule: Site Build — Next.js + Velite + BMAD
2
+
3
+ ## When to Run
4
+ After content plan approved and user wants to build the site
5
+
6
+ ## Tech Stack (Always Use Unless User Says Otherwise)
7
+ - **Framework:** Next.js 16.2.1 (App Router) — `pnpm create next-app@16.2.1`
8
+ - **Content Layer:** Velite (MDX + JSON → typed content)
9
+ - **Styling:** Tailwind CSS + shadcn/ui
10
+ - **Hosting:** Vercel (free tier)
11
+ - **Package Manager:** pnpm (ALWAYS — never npm or yarn)
12
+
13
+ ## Step 1 — Init Project
14
+ ```bash
15
+ cd /home/hanzla/development/
16
+ pnpm create next-app@16.2.1 [project-slug] \
17
+ --typescript \
18
+ --tailwind \
19
+ --eslint \
20
+ --app \
21
+ --src-dir \
22
+ --import-alias "@/*"
23
+ cd [project-slug]
24
+ ```
25
+
26
+ ## Step 2 — Install Dependencies
27
+ ```bash
28
+ # Content layer
29
+ pnpm add velite
30
+
31
+ # UI components
32
+ pnpm dlx shadcn@latest init
33
+ pnpm dlx shadcn@latest add button card badge separator table
34
+
35
+ # SEO
36
+ pnpm add next-sitemap
37
+
38
+ # Utilities
39
+ pnpm add date-fns reading-time
40
+ ```
41
+
42
+ ## Step 3 — Directory Structure
43
+ Create exactly:
44
+ ```
45
+ src/
46
+ ├── app/
47
+ │ ├── layout.tsx ← root layout with SEO defaults
48
+ │ ├── page.tsx ← homepage
49
+ │ ├── reviews/
50
+ │ │ └── [slug]/page.tsx ← single product review
51
+ │ ├── compare/
52
+ │ │ └── [slug]/page.tsx ← comparison articles
53
+ │ ├── guides/
54
+ │ │ └── [slug]/page.tsx ← buying guides
55
+ │ ├── health/
56
+ │ │ └── [slug]/page.tsx ← use-case articles
57
+ │ ├── best/
58
+ │ │ └── [slug]/page.tsx ← roundup pages
59
+ │ └── sitemap.ts ← auto-generated sitemap
60
+ ├── components/
61
+ │ ├── ui/ ← shadcn components
62
+ │ ├── ArticleLayout.tsx ← shared article wrapper
63
+ │ ├── ReviewCard.tsx ← product review card
64
+ │ ├── ComparisonTable.tsx ← side-by-side comparison
65
+ │ ├── AffiliateButton.tsx ← CTA button with disclosure
66
+ │ ├── RatingStars.tsx ← star rating display
67
+ │ ├── ProsCons.tsx ← pros/cons list
68
+ │ ├── KeywordBox.tsx ← target keyword highlight
69
+ │ └── SchemaMarkup.tsx ← JSON-LD schema injection
70
+ └── lib/
71
+ ├── velite.ts ← content queries
72
+ └── utils.ts ← helpers
73
+ ```
74
+
75
+ ## Step 4 — Velite Config
76
+ Create `velite.config.ts` with schemas for each content type:
77
+
78
+ ```typescript
79
+ // velite.config.ts
80
+ import { defineConfig, defineCollection, s } from 'velite'
81
+
82
+ const reviews = defineCollection({
83
+ name: 'Review',
84
+ pattern: 'reviews/**/*.mdx',
85
+ schema: s.object({
86
+ title: s.string(),
87
+ slug: s.string(),
88
+ keyword: s.string(),
89
+ metaTitle: s.string().max(60),
90
+ metaDescription: s.string().max(160),
91
+ publishDate: s.string(),
92
+ wordCountTarget: s.number().optional(),
93
+ affiliateLinks: s.array(s.object({
94
+ brand: s.string(),
95
+ url: s.string(),
96
+ commission: s.string(),
97
+ })).optional(),
98
+ rating: s.number().min(1).max(10).optional(),
99
+ price: s.number().optional(),
100
+ status: s.enum(['stub', 'draft', 'published']).default('stub'),
101
+ }).transform(data => ({ ...data, slugAsParams: data.slug }))
102
+ })
103
+
104
+ // Same schema for: comparisons, guides, health, best
105
+ export default defineConfig({
106
+ root: 'content',
107
+ output: { data: '.velite', assets: 'public/static' },
108
+ collections: { reviews, comparisons, guides, health, best }
109
+ })
110
+ ```
111
+
112
+ ## Step 5 — Core SEO Components
113
+
114
+ ### Metadata Generation (app/reviews/[slug]/page.tsx)
115
+ ```typescript
116
+ export async function generateMetadata({ params }): Promise<Metadata> {
117
+ const article = reviews.find(r => r.slug === params.slug)
118
+ return {
119
+ title: article.metaTitle,
120
+ description: article.metaDescription,
121
+ openGraph: { title: article.metaTitle, description: article.metaDescription },
122
+ alternates: { canonical: `https://[domain].com/reviews/${params.slug}` }
123
+ }
124
+ }
125
+ ```
126
+
127
+ ### JSON-LD Schema per Page Type
128
+ - Review pages: `Review` + `Product` schema
129
+ - Comparison pages: `Article` + `FAQPage` schema
130
+ - How-To pages: `HowTo` schema
131
+ - FAQ pages: `FAQPage` schema
132
+ - Roundup pages: `Article` + `ItemList` schema
133
+
134
+ ## Step 6 — Install BMAD in Project
135
+ ```bash
136
+ # Copy BMAD core from global install
137
+ BMAD_SRC="/home/hanzla/.nvm/versions/node/v24.7.0/lib/node_modules/bmad-method/bmad"
138
+ cp -r "$BMAD_SRC/core" ./bmad/
139
+ cp -r "$BMAD_SRC/_cfg" ./bmad/
140
+ cp -r "$BMAD_SRC/docs" ./bmad/
141
+ ```
142
+
143
+ Create `bmad/config.yaml`:
144
+ ```yaml
145
+ user_name: Hanzla
146
+ communication_language: English
147
+ document_output_language: English
148
+ output_folder: "{project-root}/docs"
149
+ project_name: [SiteName]
150
+ project_type: affiliate-content-site
151
+ domain: [domain].com
152
+ niche: [Niche Description]
153
+ ```
154
+
155
+ ## Step 7 — Create CLAUDE.md
156
+ ```markdown
157
+ # [SiteName] — Project Instructions
158
+ [standard project instructions with niche, tech stack, content paths]
159
+ ```
160
+
161
+ ## Step 8 — Hand Off to BMAD
162
+ After site scaffolding is complete, activate BMAD master agent:
163
+ "BMAD is now installed. To continue building:
164
+ 1. Open `/bmad/core/agents/bmad-master.md` in your Claude session
165
+ 2. BMAD will guide you through: component building, content writing, deployment
166
+ 3. Tell BMAD: 'Build the [SiteName] affiliate review site based on the research in /research/ and content stubs in /content/'"
167
+
168
+ ## Design Theme — Maple Light
169
+ Every site built with this skill uses the Maple Light aesthetic:
170
+
171
+ **Color Palette:**
172
+ - Primary: `#C9622F` (burnt amber / maple)
173
+ - Dark: `#1C2B2D` (deep forest)
174
+ - Background: `#FAF6F1` (warm cream)
175
+ - Accent: `#E8A96A` (golden amber)
176
+ - Text: `#2D2D2D` (near black)
177
+
178
+ **Typography:**
179
+ - Headings: Playfair Display (serif, authoritative)
180
+ - Body: Inter (clean, readable)
181
+
182
+ **Design Principles:**
183
+ - Warm, natural, premium feel
184
+ - Cedar wood photography in heroes
185
+ - Clean white space
186
+ - Trust signals prominent (author bio, testing methodology, disclosure)
187
+ - No dark mode (warm cream is the vibe)
@@ -0,0 +1,127 @@
1
+ # Rule: Yolo Mode — Full Autonomous Execution
2
+
3
+ ## Trigger Phrases
4
+ User says any of:
5
+ - "yolo"
6
+ - "do all the work and report after you finish"
7
+ - "do everything and report back"
8
+ - "do it all"
9
+ - "handle everything"
10
+ - "just do everything"
11
+ - "report when done"
12
+
13
+ ## NOT Triggers (do NOT activate yolo on these)
14
+ - "solo yolo" — this was a one-off phrase, not a real trigger
15
+ - "run autonomously" — too vague, ask for clarification
16
+ - "full auto" — ask: "Do you mean yolo mode (full autonomous, report when done)?"
17
+
18
+ ## What Changes in Yolo Mode
19
+
20
+ ### Decision Rules (No User Approval Needed)
21
+ | Decision | Yolo Behavior |
22
+ |----------|-------------------|
23
+ | Niche selection | Auto-pick #1 scored niche |
24
+ | Domain name | Auto-pick top recommendation |
25
+ | Research findings | Continue without showing intermediate results |
26
+ | Article schedule | Auto-finalize based on DA + Weakspot sort |
27
+ | Site tech stack | Always use Next.js 16.2.1 + Velite |
28
+ | Content stubs | Generate all Tier 1+2 stubs automatically |
29
+ | BMAD install | Install automatically |
30
+
31
+ ### What Yolo NEVER Skips
32
+ Even in full auto mode, always:
33
+ 1. **Save all research files** — every agent writes its output file
34
+ 2. **Generate keywords.txt** — user needs this for Ads Planner
35
+ 3. **Tell user about keywords.txt** — they must manually run Ads Planner
36
+ 4. **Create image-prompt files** — user generates images separately
37
+ 5. **Report completion** — final summary of everything created
38
+
39
+ ### Announcement at Start
40
+ When yolo is triggered, say:
41
+ ```
42
+ 🔴 YOLO MODE ACTIVATED
43
+
44
+ I will now run the complete workflow autonomously:
45
+ ✓ Pick best niche automatically
46
+ ✓ Launch 10 research agents in parallel
47
+ ✓ Build complete master business plan
48
+ ✓ Generate article schedule from keyword data
49
+ ✓ Create all content stubs + image prompts
50
+ ✓ Init Next.js site + install BMAD
51
+
52
+ I'll only stop if I hit a critical blocker.
53
+ Two things you'll need to do manually:
54
+ 1. Paste keywords.txt into Google Keyword Planner
55
+ 2. Generate images from the prompt files
56
+
57
+ Starting now...
58
+ ```
59
+
60
+ ## Yolo Execution Flow
61
+
62
+ ```
63
+ 1. Run niche discovery
64
+ → Score all candidates
65
+ → Pick #1 automatically
66
+ → Announce: "Selected: [Niche] (Score: XX/35)"
67
+
68
+ 2. Create project directory
69
+ → /home/hanzla/development/[niche-slug]/
70
+
71
+ 3. Launch ALL 10 research agents simultaneously
72
+ → Announce each agent as it completes (1-line summary)
73
+
74
+ 4. Fire synthesis agent
75
+ → Wait for master plan
76
+
77
+ 5. Extract + save keywords.txt
78
+ → Copy to clipboard
79
+
80
+ 6. Parse keyword data (if CSV exists)
81
+ → OR use research data directly
82
+
83
+ 7. Generate article-schedule.md
84
+ → 50+ articles, Tier 1-5
85
+
86
+ 8. Generate MDX stubs (Tier 1+2 articles)
87
+ → All frontmatter filled
88
+
89
+ 9. Generate image-prompt files
90
+ → One per article
91
+
92
+ 10. Init Next.js project
93
+ → Full structure
94
+
95
+ 11. Install BMAD
96
+
97
+ 12. Create CLAUDE.md
98
+
99
+ 13. Final report:
100
+ "✅ SOLO YOLO COMPLETE
101
+
102
+ Project: [domain].com
103
+ Location: /home/hanzla/development/[slug]/
104
+ Articles planned: [N]
105
+ Stubs created: [N]
106
+ Image prompts: [N] files in assets/image-prompts/
107
+
108
+ YOUR ACTIONS NEEDED:
109
+ 1. 📊 Keywords in keywords.txt → paste into Google Keyword Planner
110
+ 2. 🖼️ Generate images from assets/image-prompts/ files
111
+ 3. 🚀 Open BMAD: bmad/core/agents/bmad-master.md
112
+
113
+ Research: research/00-MASTER-BUSINESS-PLAN.md"
114
+ ```
115
+
116
+ ## Yolo Blocker Conditions
117
+ STOP and ask user only if:
118
+ - All top 10 niches score below 18/35 (market is oversaturated)
119
+ - No affiliate programs found for selected niche
120
+ - Domain name ideas all appear taken
121
+ - Research agents return empty/error results 3+ times
122
+
123
+ ## Continue with Next Idea
124
+ After completing one full workflow, if more niches exist in the queue:
125
+
126
+ **Interactive:** "Research complete for [Niche 1]. Want me to research [Niche 2] next?"
127
+ **Yolo:** Automatically start next niche research, announce: "Starting research for Niche #2: [Name]..."
@@ -0,0 +1,62 @@
1
+ ---
2
+ title: "[Full Article Title with Primary Keyword]"
3
+ slug: "[url-slug-lowercase-hyphens]"
4
+ type: "review"
5
+ keyword: "[exact target keyword]"
6
+ metaTitle: "[Under 60 chars — keyword near start]"
7
+ metaDescription: "[140-160 chars — keyword included, action-oriented]"
8
+ publishDate: "YYYY-MM-DD"
9
+ status: "stub"
10
+ wordCountTarget: 2000
11
+ tier: 1
12
+ avgDA: 0
13
+ weakspot: 0
14
+ volume: 0
15
+ intent: "commercial"
16
+ affiliateLinks:
17
+ - brand: "[Brand Name]"
18
+ url: "AFFILIATE_URL_PLACEHOLDER"
19
+ commission: "X%"
20
+ cookieDays: 30
21
+ rating: null
22
+ price: null
23
+ imageHero: "/images/[slug]/hero.jpg"
24
+ imagePomptFile: "assets/image-prompts/[slug]-images.md"
25
+ internalLinks:
26
+ - slug: "[related-article-slug]"
27
+ anchor: "[natural anchor text]"
28
+ featured: false
29
+ ---
30
+
31
+ {/* STUB — Replace with full article content */}
32
+ {/* Target: [wordCountTarget] words */}
33
+ {/* Primary keyword: [keyword] */}
34
+ {/* Intent: [intent] — write accordingly */}
35
+
36
+ ## Overview
37
+
38
+ [STUB: 200-word intro covering what this product/topic is, who it's for, and what we'll cover. Include primary keyword naturally in first 100 words.]
39
+
40
+ ## Key Specs
41
+
42
+ [STUB: Table with key specifications]
43
+
44
+ ## Full Review
45
+
46
+ [STUB: 800-1000 words covering: build quality, performance, EMF levels, heating, assembly, value]
47
+
48
+ ## Pros & Cons
49
+
50
+ **Pros:**
51
+ - [STUB]
52
+
53
+ **Cons:**
54
+ - [STUB]
55
+
56
+ ## Who Should Buy This
57
+
58
+ [STUB: 150 words on ideal buyer profile]
59
+
60
+ ## Verdict
61
+
62
+ [STUB: 200-word final verdict with affiliate CTA and rating]