opencode-skills-collection 4.1.0 → 4.1.2

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 (219) hide show
  1. package/README.md +46 -42
  2. package/bundled-skills/.antigravity-install-manifest.json +127 -1
  3. package/bundled-skills/360-feedback-system/SKILL.md +481 -0
  4. package/bundled-skills/access-matrix/SKILL.md +338 -0
  5. package/bundled-skills/accounting-audit-system-builder/SKILL.md +302 -0
  6. package/bundled-skills/accounting-audit-system-builder/references/catalog.md +114 -0
  7. package/bundled-skills/accounting-software-selection/SKILL.md +427 -0
  8. package/bundled-skills/accounting-software-selection/references/build-artifacts.md +362 -0
  9. package/bundled-skills/accounting-software-selection/references/common-pitfalls.md +44 -0
  10. package/bundled-skills/accounting-software-selection/references/field-reference.md +93 -0
  11. package/bundled-skills/accounting-software-selection/references/select-options.md +202 -0
  12. package/bundled-skills/admin-access-register/SKILL.md +381 -0
  13. package/bundled-skills/advanced-analytics-dashboard/SKILL.md +318 -0
  14. package/bundled-skills/ai-image-generation-studio/SKILL.md +259 -0
  15. package/bundled-skills/ai-logo-maker/SKILL.md +259 -0
  16. package/bundled-skills/ai-multilingual-dubbing/SKILL.md +259 -0
  17. package/bundled-skills/ai-photo-restyler/SKILL.md +259 -0
  18. package/bundled-skills/ai-podcast-voiceover/SKILL.md +259 -0
  19. package/bundled-skills/alumni-re-hire-tracker/SKILL.md +314 -0
  20. package/bundled-skills/announcement-board/SKILL.md +336 -0
  21. package/bundled-skills/antigravity-maintainer-batch-release/SKILL.md +48 -3
  22. package/bundled-skills/asset-it-management/SKILL.md +407 -0
  23. package/bundled-skills/attendance/SKILL.md +331 -0
  24. package/bundled-skills/audit-log/SKILL.md +314 -0
  25. package/bundled-skills/audit-preparation/SKILL.md +416 -0
  26. package/bundled-skills/beatra/SKILL.md +260 -0
  27. package/bundled-skills/board-governance/SKILL.md +360 -0
  28. package/bundled-skills/brand-growth-system-builder/SKILL.md +360 -0
  29. package/bundled-skills/brand-kit-print-collateral/SKILL.md +498 -0
  30. package/bundled-skills/buddy-program-manager/SKILL.md +329 -0
  31. package/bundled-skills/budget-cash-flow/SKILL.md +352 -0
  32. package/bundled-skills/busabase/SKILL.md +118 -0
  33. package/bundled-skills/business-email-template/SKILL.md +480 -0
  34. package/bundled-skills/business-email-template/references/common-pitfalls.md +30 -0
  35. package/bundled-skills/business-website-setup/SKILL.md +489 -0
  36. package/bundled-skills/business-website-setup/references/common-pitfalls.md +32 -0
  37. package/bundled-skills/candidate-talent-pool/SKILL.md +359 -0
  38. package/bundled-skills/capacity-workload-planner/SKILL.md +354 -0
  39. package/bundled-skills/changelog-entry/SKILL.md +141 -0
  40. package/bundled-skills/clients-accounts/SKILL.md +398 -0
  41. package/bundled-skills/code-of-conduct/SKILL.md +488 -0
  42. package/bundled-skills/code-of-conduct/references/common-pitfalls.md +31 -0
  43. package/bundled-skills/company-email-accounts/SKILL.md +404 -0
  44. package/bundled-skills/competency-matrix/SKILL.md +335 -0
  45. package/bundled-skills/contract-document-renewal/SKILL.md +396 -0
  46. package/bundled-skills/course-upskilling-requests/SKILL.md +354 -0
  47. package/bundled-skills/credit-cycle-analysis/SKILL.md +303 -0
  48. package/bundled-skills/credit-cycle-analysis/references/best-practices.md +35 -0
  49. package/bundled-skills/credit-cycle-analysis/references/common-pitfalls.md +5 -0
  50. package/bundled-skills/credit-cycle-analysis/references/examples.md +34 -0
  51. package/bundled-skills/credit-cycle-analysis/references/field-reference.md +47 -0
  52. package/bundled-skills/credit-cycle-analysis/references/how-it-works.md +494 -0
  53. package/bundled-skills/credit-cycle-analysis/references/security-notes.md +16 -0
  54. package/bundled-skills/credit-cycle-analysis/references/select-options.md +32 -0
  55. package/bundled-skills/csv-manual-export/SKILL.md +499 -0
  56. package/bundled-skills/csv-manual-export/references/common-pitfalls.md +19 -0
  57. package/bundled-skills/culture-retention/SKILL.md +346 -0
  58. package/bundled-skills/data-export-engine/SKILL.md +308 -0
  59. package/bundled-skills/data-privacy-controls/SKILL.md +317 -0
  60. package/bundled-skills/day-book/SKILL.md +499 -0
  61. package/bundled-skills/day-book/references/best-practices.md +32 -0
  62. package/bundled-skills/day-book/references/common-pitfalls.md +58 -0
  63. package/bundled-skills/day-book/references/field-reference.md +45 -0
  64. package/bundled-skills/day-book/references/how-it-works.md +7 -0
  65. package/bundled-skills/day-book/references/related-skills.md +18 -0
  66. package/bundled-skills/day-book/references/relations.md +14 -0
  67. package/bundled-skills/day-book/references/reusable-prompt.md +50 -0
  68. package/bundled-skills/day-book/references/security-safety-notes.md +19 -0
  69. package/bundled-skills/day-book/references/select-options.md +38 -0
  70. package/bundled-skills/dei-dashboard/SKILL.md +307 -0
  71. package/bundled-skills/design-theme-guide/SKILL.md +472 -0
  72. package/bundled-skills/disciplinary-pip-tracker/SKILL.md +345 -0
  73. package/bundled-skills/document-management-system/SKILL.md +328 -0
  74. package/bundled-skills/ecommerce-listing-image-set/SKILL.md +259 -0
  75. package/bundled-skills/employee-suggestion-hub/SKILL.md +322 -0
  76. package/bundled-skills/esop-equity-tracker/SKILL.md +331 -0
  77. package/bundled-skills/events-activities/SKILL.md +355 -0
  78. package/bundled-skills/expense-accounting/SKILL.md +496 -0
  79. package/bundled-skills/expense-accounting/references/common-pitfalls.md +41 -0
  80. package/bundled-skills/expense-accounting/references/related-skills.md +11 -0
  81. package/bundled-skills/expense-accounting/references/reusable-prompt.md +36 -0
  82. package/bundled-skills/expense-management/SKILL.md +351 -0
  83. package/bundled-skills/free-design-resources/SKILL.md +480 -0
  84. package/bundled-skills/free-design-resources/references/common-pitfalls.md +44 -0
  85. package/bundled-skills/free-design-resources/references/related-skills.md +24 -0
  86. package/bundled-skills/free-design-resources/references/reusable-prompt.md +12 -0
  87. package/bundled-skills/gamification-engine/SKILL.md +307 -0
  88. package/bundled-skills/gbp-local-seo-intent/SKILL.md +466 -0
  89. package/bundled-skills/gbp-local-seo-intent/references/best-practices.md +41 -0
  90. package/bundled-skills/gbp-local-seo-intent/references/common-pitfalls.md +40 -0
  91. package/bundled-skills/gbp-local-seo-intent/references/related-skills.md +17 -0
  92. package/bundled-skills/gbp-local-seo-intent/references/reusable-prompt.md +11 -0
  93. package/bundled-skills/gbp-local-seo-intent/references/security-safety-notes.md +27 -0
  94. package/bundled-skills/health-wellness/SKILL.md +334 -0
  95. package/bundled-skills/intern-program/SKILL.md +354 -0
  96. package/bundled-skills/internal-communication/SKILL.md +318 -0
  97. package/bundled-skills/inventory-stock-reconciliation/SKILL.md +470 -0
  98. package/bundled-skills/inventory-stock-reconciliation/references/best-practices.md +18 -0
  99. package/bundled-skills/inventory-stock-reconciliation/references/common-pitfalls.md +42 -0
  100. package/bundled-skills/inventory-stock-reconciliation/references/related-skills.md +13 -0
  101. package/bundled-skills/inventory-stock-reconciliation/references/relations.md +8 -0
  102. package/bundled-skills/inventory-stock-reconciliation/references/reusable-prompt.md +31 -0
  103. package/bundled-skills/inventory-stock-reconciliation/references/security-safety-notes.md +17 -0
  104. package/bundled-skills/inventory-stock-reconciliation/references/select-options.md +45 -0
  105. package/bundled-skills/invoices-billing/SKILL.md +385 -0
  106. package/bundled-skills/issue-grievance-tracker/SKILL.md +400 -0
  107. package/bundled-skills/json-schema-manual/SKILL.md +309 -0
  108. package/bundled-skills/json-schema-manual/references/best-practices.md +9 -0
  109. package/bundled-skills/json-schema-manual/references/common-pitfalls.md +25 -0
  110. package/bundled-skills/json-schema-manual/references/input-modules.md +203 -0
  111. package/bundled-skills/json-schema-manual/references/related-skills.md +8 -0
  112. package/bundled-skills/json-schema-manual/references/reusable-prompt.md +10 -0
  113. package/bundled-skills/json-schema-manual/references/security-safety-notes.md +13 -0
  114. package/bundled-skills/knowledge-base/SKILL.md +318 -0
  115. package/bundled-skills/kpi-tracker/SKILL.md +345 -0
  116. package/bundled-skills/learning-career-development/SKILL.md +349 -0
  117. package/bundled-skills/leave-management/SKILL.md +341 -0
  118. package/bundled-skills/legal-compliance-vault/SKILL.md +324 -0
  119. package/bundled-skills/linktree-link-hub/SKILL.md +453 -0
  120. package/bundled-skills/logo-image-design/SKILL.md +459 -0
  121. package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package-lock.json +3 -3
  122. package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package.json +2 -1
  123. package/bundled-skills/mentorship-program/SKILL.md +332 -0
  124. package/bundled-skills/mirrord/SKILL.md +90 -0
  125. package/bundled-skills/monthly-closing-statements/SKILL.md +488 -0
  126. package/bundled-skills/monthly-closing-statements/references/related-skills.md +17 -0
  127. package/bundled-skills/monthly-closing-statements/references/reusable-prompt.md +8 -0
  128. package/bundled-skills/music-generation-studio/SKILL.md +259 -0
  129. package/bundled-skills/notification-reminder-hub/SKILL.md +324 -0
  130. package/bundled-skills/notion-manual-import/SKILL.md +376 -0
  131. package/bundled-skills/notion-manual-import/references/best-practices.md +10 -0
  132. package/bundled-skills/notion-manual-import/references/common-pitfalls.md +26 -0
  133. package/bundled-skills/notion-manual-import/references/input-modules.md +203 -0
  134. package/bundled-skills/notion-manual-import/references/related-skills.md +7 -0
  135. package/bundled-skills/notion-manual-import/references/reusable-prompt.md +8 -0
  136. package/bundled-skills/notion-manual-import/references/security-safety-notes.md +15 -0
  137. package/bundled-skills/observability-cloud-planning/SKILL.md +487 -0
  138. package/bundled-skills/observability-cloud-planning/references/common-pitfalls.md +39 -0
  139. package/bundled-skills/observability-cloud-planning/references/related-skills.md +20 -0
  140. package/bundled-skills/observability-cloud-planning/references/reusable-prompt.md +12 -0
  141. package/bundled-skills/observability-cloud-planning/references/security-safety-notes.md +30 -0
  142. package/bundled-skills/offboarding-exit/SKILL.md +343 -0
  143. package/bundled-skills/offer-appointment/SKILL.md +351 -0
  144. package/bundled-skills/okr-system/SKILL.md +355 -0
  145. package/bundled-skills/omentir-linkedin-outreach/SKILL.md +96 -0
  146. package/bundled-skills/onboarding-playbook/SKILL.md +292 -0
  147. package/bundled-skills/organization-design/SKILL.md +324 -0
  148. package/bundled-skills/party-ledger-reconciliation/SKILL.md +411 -0
  149. package/bundled-skills/payment-accounting/SKILL.md +421 -0
  150. package/bundled-skills/payments-received/SKILL.md +315 -0
  151. package/bundled-skills/payroll-finance/SKILL.md +351 -0
  152. package/bundled-skills/people-directory/SKILL.md +459 -0
  153. package/bundled-skills/performance-management/SKILL.md +367 -0
  154. package/bundled-skills/petty-cash-management/SKILL.md +448 -0
  155. package/bundled-skills/policy-acknowledgement/SKILL.md +314 -0
  156. package/bundled-skills/policy-library/SKILL.md +327 -0
  157. package/bundled-skills/poster-design-studio/SKILL.md +259 -0
  158. package/bundled-skills/pre-boarding/SKILL.md +326 -0
  159. package/bundled-skills/presentation-deck/SKILL.md +491 -0
  160. package/bundled-skills/presentation-deck/references/related-skills.md +19 -0
  161. package/bundled-skills/presentation-deck/references/reusable-prompt.md +11 -0
  162. package/bundled-skills/probation-tracker/SKILL.md +347 -0
  163. package/bundled-skills/product-photo-studio/SKILL.md +259 -0
  164. package/bundled-skills/project-based-performance/SKILL.md +323 -0
  165. package/bundled-skills/projects-work-management/SKILL.md +368 -0
  166. package/bundled-skills/promotion-upgrade-requests/SKILL.md +377 -0
  167. package/bundled-skills/purchase-accounting/SKILL.md +414 -0
  168. package/bundled-skills/receipt-accounting/SKILL.md +424 -0
  169. package/bundled-skills/recognition-rewards/SKILL.md +324 -0
  170. package/bundled-skills/recruitment-pipeline/SKILL.md +399 -0
  171. package/bundled-skills/remote-work-tracker/SKILL.md +306 -0
  172. package/bundled-skills/reports-analytics/SKILL.md +320 -0
  173. package/bundled-skills/salary-benchmarking/SKILL.md +318 -0
  174. package/bundled-skills/salary-wage-accounting/SKILL.md +412 -0
  175. package/bundled-skills/sales-accounting/SKILL.md +494 -0
  176. package/bundled-skills/sales-accounting/references/common-pitfalls.md +28 -0
  177. package/bundled-skills/sales-accounting/references/related-skills.md +13 -0
  178. package/bundled-skills/sales-accounting/references/reusable-prompt.md +8 -0
  179. package/bundled-skills/seo-directory-backlinks/SKILL.md +484 -0
  180. package/bundled-skills/seo-directory-backlinks/references/common-pitfalls.md +36 -0
  181. package/bundled-skills/seo-directory-backlinks/references/related-skills.md +15 -0
  182. package/bundled-skills/seo-directory-backlinks/references/reusable-prompt.md +11 -0
  183. package/bundled-skills/since-cutoff/SKILL.md +68 -0
  184. package/bundled-skills/skill-gap-analysis/SKILL.md +338 -0
  185. package/bundled-skills/social-media-setup/SKILL.md +477 -0
  186. package/bundled-skills/social-media-setup/references/common-pitfalls.md +34 -0
  187. package/bundled-skills/social-media-setup/references/related-skills.md +19 -0
  188. package/bundled-skills/social-media-setup/references/reusable-prompt.md +11 -0
  189. package/bundled-skills/social-media-setup/references/security-safety-notes.md +27 -0
  190. package/bundled-skills/sop-company-wiki/SKILL.md +324 -0
  191. package/bundled-skills/source-document-filing/SKILL.md +368 -0
  192. package/bundled-skills/spreadsheet-manual-build/SKILL.md +493 -0
  193. package/bundled-skills/spreadsheet-manual-build/references/best-practices.md +9 -0
  194. package/bundled-skills/spreadsheet-manual-build/references/common-pitfalls.md +22 -0
  195. package/bundled-skills/spreadsheet-manual-build/references/related-skills.md +8 -0
  196. package/bundled-skills/spreadsheet-manual-build/references/reusable-prompt.md +9 -0
  197. package/bundled-skills/spreadsheet-manual-build/references/security-safety-notes.md +16 -0
  198. package/bundled-skills/stakeholder-investor-reports/SKILL.md +303 -0
  199. package/bundled-skills/suno-lyrics-to-song/SKILL.md +259 -0
  200. package/bundled-skills/talking-avatar-video/SKILL.md +260 -0
  201. package/bundled-skills/tax-register/SKILL.md +363 -0
  202. package/bundled-skills/tds-booking-payment/SKILL.md +405 -0
  203. package/bundled-skills/team-calendar/SKILL.md +312 -0
  204. package/bundled-skills/telegram/assets/boilerplate/nodejs/package-lock.json +3 -3
  205. package/bundled-skills/telegram/assets/boilerplate/nodejs/package.json +1 -0
  206. package/bundled-skills/template-library/SKILL.md +304 -0
  207. package/bundled-skills/time-tracking/SKILL.md +353 -0
  208. package/bundled-skills/vendor-contractor-management/SKILL.md +327 -0
  209. package/bundled-skills/viral-video-teardown-remake/SKILL.md +260 -0
  210. package/bundled-skills/voice-cloning-studio/SKILL.md +260 -0
  211. package/bundled-skills/voiceover-narration-studio/SKILL.md +259 -0
  212. package/bundled-skills/whatsapp-cloud-api/assets/boilerplate/nodejs/package-lock.json +3 -3
  213. package/bundled-skills/whatsapp-cloud-api/assets/boilerplate/nodejs/package.json +1 -0
  214. package/dist/skill-pointer/index.d.ts +2 -1
  215. package/dist/skill-pointer/index.js +2 -1
  216. package/dist/skill-pointer/pointer-generator.d.ts +4 -2
  217. package/dist/skill-pointer/pointer-generator.js +4 -2
  218. package/package.json +1 -1
  219. package/skills_index.json +4312 -0
@@ -0,0 +1,489 @@
1
+ ---
2
+ name: business-website-setup
3
+ description: 'Website page register: URL, title, meta description, search intent, NAP block, schema type, canonical, indexability and Core Web Vitals target. Use for site builds and SEO reviews.'
4
+ category: business
5
+ risk: safe
6
+ source: self
7
+ source_type: self
8
+ date_added: "2026-09-27"
9
+ author: WHOISABHISHEKADHIKARI
10
+ tags: [sme, website, seo, page-map, nap, schema, structured-data, core-web-vitals, performance, local-seo, sitemap, csv, sql, notion]
11
+ tools: []
12
+ source_repo: WHOISABHISHEKADHIKARI/sme-ops-system-builder
13
+ ---
14
+
15
+ # Business Website Setup
16
+
17
+ **What it is:** the smallest site that ranks and converts - the page list, what each page is
18
+ for, which search intent it answers, and the technical and structured-data requirements
19
+ that make it findable.
20
+
21
+ ## Overview
22
+
23
+ Works out the smallest useful site for the business in front of it, then builds the plan
24
+ only when asked. The default output is a short recommendation, not a page map. The page
25
+ register - CSV, SQL DDL, JSON Schema, Notion mapping - is produced on request, from one
26
+ field list so the four cannot drift apart.
27
+
28
+ Layer: Layer 5: Fulfil. Fits: Growth stage. Table code: n/a.
29
+
30
+ **The rule this table exists to enforce:** a page with no declared search intent is a page
31
+ that ranks for nothing and a page with no declared owner is a page that rots. `Primary
32
+ Keyword`, `Search Intent` and `Owner` are therefore required, and the NAP block is a
33
+ per-page field rather than a global assumption - a business with one location and one
34
+ service area genuinely does repeat the NAP on every page, and a multi-location business
35
+ genuinely does not.
36
+
37
+ ## When to Use This Skill
38
+
39
+ - build a website, set up a website, website plan
40
+ - page structure, sitemap, site map, information architecture
41
+ - "we have a website but nobody finds us"
42
+ - on-page SEO, meta titles, meta descriptions, headings
43
+ - structured data, schema, LocalBusiness, Service, FAQ
44
+ - Core Web Vitals, page speed, mobile
45
+ - NAP on the website, local signals, Google Search Console
46
+
47
+ Do not use it for: the ranking asset that is not the website - that is
48
+ `gbp-local-seo-intent`; the design tokens (`design-theme-guide`); off-site citations
49
+ (`seo-directory-backlinks`); or a one-page campaign, which is `linktree-link-hub`.
50
+
51
+ ## How It Works
52
+
53
+ Follow the shared execution contract. The module-specific rules below define only domain fields, decisions, calculations, and safety constraints.
54
+
55
+ ### Step 1 - Identify intent
56
+
57
+ Read the request and pick the intent before asking anything.
58
+
59
+ - "build" / "set up" / "we need" -> artifacts wanted; go to Step 2.
60
+ - "we have one already" -> something exists; capture it, then Step 2.
61
+ - "not ranking" / "not found" / "fix" -> capture the current state and the queries, then
62
+ Step 2.
63
+ - "review" / "audit" / "check" -> a check, not a build.
64
+ - "which pages should we have" -> a decision question, not a build.
65
+
66
+ Ask only if this is the highest-value missing fact; otherwise proceed without an opener:
67
+
68
+ > **Q:** What is the business called, and what does one line of it actually do?
69
+
70
+ ### Step 2 - Ask only what is missing
71
+
72
+ Treat ambiguous replies as unanswered and ask which explicit option the user means. Record unknown values as `Unknown`; `Unknown` is not zero. A record must not be `Done` when a required check fails.
73
+
74
+ Skip anything already answered. Ask the rest one at a time, and stop as soon as the
75
+ remaining answers would not change the page list.
76
+
77
+ - **Business** - Name, address, phone, services, service area? / Do customers visit a
78
+ location, or is it a service-area business? / One location or several?
79
+ - **Current** - Is there a site today, and on what - WordPress, Shopify, Wix, Squarespace,
80
+ a builder, or hand-built? / Who can publish a page? / Is there a developer or is it
81
+ self-serve?
82
+ - **Customers** - What are the three questions a customer asks before they buy? / What do
83
+ they search for? / Do they compare, or just want the nearest option?
84
+ - **Proof** - Any reviews, ratings, certifications, case studies or photos that can be shown?
85
+ / Is there a team, a location, a process worth showing?
86
+ - **Outcome** - What is the site's job - calls, enquiries, bookings, direct sales, or just
87
+ credibility? / Is there a phone number or WhatsApp that must be reachable in one tap?
88
+
89
+ Never invent an answer. Services, keywords, addresses, phone numbers, review counts,
90
+ platforms and metrics the user has not supplied are `Unknown`.
91
+
92
+ ### Step 3 - Hold the internal context
93
+
94
+ ```yaml
95
+ module: business-website-setup
96
+ intent: null # set up | fix | review | report | import
97
+ scale: null # Starter | Growth | Scale, only if the answer changes it
98
+ areas:
99
+ "Business": null
100
+ "Current": null
101
+ "Customers": null
102
+ "Proof": null
103
+ "Outcome": null
104
+ requested_outputs: []
105
+ confirmed_facts: []
106
+ open_questions: []
107
+ ```
108
+
109
+ ### Step 4 - Recommend the smallest workflow
110
+
111
+ Build an already requested artifact without asking again. For advice-only requests, give a short recommendation and offer the relevant artifact.
112
+
113
+ **Recommended approach:** Five to eight pages, one per service and one per place, plus home,
114
+ about, contact and a service-area page. Every service gets its own page with its own
115
+ intent, its own NAP block and `LocalBusiness` or `Service` structured data. Mobile-first,
116
+ fast, one clear call to action per page, and a review widget on the pages that earn trust.
117
+ No blog unless someone will actually write it.
118
+
119
+ **Why this one:** One page per service is what ranks - a single homepage cannot rank for
120
+ six different things at once, and a page covering three services ranks for none of them
121
+ clearly. A blog is the classic SME trap: an unwritten blog is worse than no blog, because
122
+ it signals an abandoned site.
123
+
124
+ **Workflow:** Services and areas listed → Page map agreed → Primary keyword and intent per
125
+ page → NAP block placed → Structured data added → Titles, descriptions and headings written
126
+ → Mobile and Core Web Vitals verified → Search Console and sitemap connected → Launched and
127
+ submitted
128
+
129
+ ### Step 5 - Build only on request
130
+
131
+ Once the user asks for it, derive the fields from the confirmed context and emit the
132
+ requested artifacts. For machine-readable text, keep prose outside the data; for files,
133
+ provide a usable link. Report material validation failures or limitations separately.
134
+
135
+ **A selected Notion output is rendered by `notion-manual-import`, so route the
136
+ Notion step there.** When the user selects Notion, hand that step to
137
+ @notion-manual-import: it holds the CSV, the property
138
+ mapping, the import steps and the verification checklist, and it renders the Field
139
+ Reference below instead of defining a table of its own. Do not restate the mapping
140
+ here and do not improvise the import steps. Manual CSV and mapping outputs need no
141
+ connection. For requested workspace changes, follow the shared contract: verify actual
142
+ tool access and the target before writing. A user saying "connected" is not tool evidence.
143
+ Never ask for a Notion password or token.
144
+
145
+ ```csv
146
+ Page ID,Page URL,Page Title,Meta Description,Primary Keyword,Secondary Keywords,Search Intent,H1,NAP Block Present,Schema Type,Canonical URL,Indexable,Sitemap Included,Image Alt Text Rule,Target Device,Core Web Vitals Target,Build Platform,HTTPS,Mobile First,Structured Data Valid,Owner,Review Date,Status,Notes
147
+ ,https://example.com/services/example-service,Example Service in Example City | Example Retail,"Book Example Service in Example City. Same-week appointments, fixed prices and a 12-month workmanship guarantee.",example service example city,example service near me,example service cost,Transactional,Example Service in Example City,Yes,Service,Yes,Yes,"Example image alt text",Mobile first,"LCP under 2.5s, INP under 200ms, CLS under 0.1",Unknown,Yes,Yes,Not tested,Unknown,2026-10-27,Draft,Example row - replace every value before use.
148
+ ```
149
+
150
+ ```sql
151
+ -- Engine assumption: PostgreSQL. For another engine use the engine's auto-increment
152
+ -- equivalent and keep the rest portable.
153
+ CREATE TABLE website_page (
154
+ page_id BIGINT PRIMARY KEY,
155
+ page_url TEXT NOT NULL,
156
+ page_title VARCHAR(255) NOT NULL,
157
+ meta_description VARCHAR(500) NOT NULL,
158
+ primary_keyword VARCHAR(255) NOT NULL,
159
+ secondary_keywords TEXT,
160
+ search_intent VARCHAR(100) NOT NULL,
161
+ h1 VARCHAR(255) NOT NULL,
162
+ nap_block_present BOOLEAN NOT NULL,
163
+ schema_type VARCHAR(100) NOT NULL,
164
+ canonical_url TEXT NOT NULL,
165
+ indexable BOOLEAN NOT NULL,
166
+ sitemap_included BOOLEAN NOT NULL,
167
+ image_alt_text_rule VARCHAR(255) NOT NULL,
168
+ target_device VARCHAR(50) NOT NULL,
169
+ core_web_vitals_target VARCHAR(100) NOT NULL,
170
+ build_platform VARCHAR(100),
171
+ https BOOLEAN NOT NULL,
172
+ mobile_first BOOLEAN NOT NULL,
173
+ structured_data_valid BOOLEAN NOT NULL,
174
+ owner VARCHAR(255),
175
+ review_date DATE,
176
+ status VARCHAR(50) NOT NULL,
177
+ notes TEXT,
178
+ created_at TIMESTAMP DEFAULT NOW(),
179
+ updated_at TIMESTAMP DEFAULT NOW(),
180
+ CONSTRAINT website_page_intent CHECK (search_intent IN ('Informational','Commercial investigation','Transactional','Navigational','Local intent')),
181
+ CONSTRAINT website_page_status CHECK (status IN ('Planned','In build','In review','Live','Needs update','Retired'))
182
+ );
183
+
184
+ CREATE INDEX idx_website_page_status ON website_page (status);
185
+ CREATE INDEX idx_website_page_intent ON website_page (search_intent);
186
+ ```
187
+
188
+ ```json
189
+ {
190
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
191
+ "title": "Business Website Setup",
192
+ "type": "object",
193
+ "additionalProperties": false,
194
+ "properties": {
195
+ "Page ID": { "type": "integer" },
196
+ "Page URL": { "type": "string", "format": "uri" },
197
+ "Page Title": { "type": "string" },
198
+ "Meta Description": { "type": "string" },
199
+ "Primary Keyword": { "type": "string" },
200
+ "Secondary Keywords": { "type": "string" },
201
+ "Search Intent": { "type": "string" },
202
+ "H1": { "type": "string" },
203
+ "NAP Block Present": { "type": "boolean" },
204
+ "Schema Type": { "type": "string" },
205
+ "Canonical URL": { "type": "string", "format": "uri" },
206
+ "Indexable": { "type": "boolean" },
207
+ "Sitemap Included": { "type": "boolean" },
208
+ "Image Alt Text Rule": { "type": "string" },
209
+ "Target Device": { "type": "string" },
210
+ "Core Web Vitals Target": { "type": "string" },
211
+ "Build Platform": { "type": "string" },
212
+ "HTTPS": { "type": "boolean" },
213
+ "Mobile First": { "type": "boolean" },
214
+ "Structured Data Valid": { "type": "boolean" },
215
+ "Owner": { "type": "string" },
216
+ "Review Date": { "type": "string", "format": "date" },
217
+ "Status": { "type": "string" },
218
+ "Notes": { "type": "string" }
219
+ },
220
+ "required": [
221
+ "Page URL",
222
+ "Page Title",
223
+ "Meta Description",
224
+ "Primary Keyword",
225
+ "Search Intent",
226
+ "H1",
227
+ "NAP Block Present",
228
+ "Schema Type",
229
+ "Canonical URL",
230
+ "Indexable",
231
+ "Sitemap Included",
232
+ "Image Alt Text Rule",
233
+ "Target Device",
234
+ "Core Web Vitals Target",
235
+ "HTTPS",
236
+ "Mobile First",
237
+ "Structured Data Valid",
238
+ "Status"
239
+ ]
240
+ }
241
+ ```
242
+
243
+ ```markdown
244
+ | CSV column | Notion property | Set after import |
245
+ |---|---|---|
246
+ | Page ID | Text (preserve source ID) | Keep imported IDs as Text; optionally add a separate Unique ID property |
247
+ | Page URL | URL | Convert to URL. The canonical address, not the one in the CMS |
248
+ | Page Title | Text | Leave as Text. Aim for 50-60 characters before truncation |
249
+ | Meta Description | Text | Leave as Text. 140-160 characters. It is a sales line, not a summary |
250
+ | Primary Keyword | Text | Leave as Text. One per page. Two primary keywords is one page too many |
251
+ | Secondary Keywords | Title | Use as the database title |
252
+ | Search Intent | Select (add options after import) | Convert to Select, add options: "Informational", "Commercial investigation", "Transactional", "Navigational", "Local intent" |
253
+ | H1 | Text | Leave as Text. One per page, and it should be close to the primary keyword |
254
+ | NAP Block Present | Checkbox | Convert to Checkbox. Tick only if the exact canonical NAP is on the page |
255
+ | Schema Type | Select (add options after import) | Convert to Select, add options: "LocalBusiness", "Service", "Organization", "BreadcrumbList", "FAQPage", "Product", "Article", "WebSite", "None" |
256
+ | Canonical URL | URL | Convert to URL |
257
+ | Indexable | Checkbox | Convert to Checkbox. Off for thank-you, search results and filtered views |
258
+ | Sitemap Included | Checkbox | Convert to Checkbox |
259
+ | Image Alt Text Rule | Text | Leave as Text. The house rule, same on every page |
260
+ | Target Device | Select (add options after import) | Convert to Select, add options: "Mobile first", "Desktop first", "Responsive" |
261
+ | Core Web Vitals Target | Text | Leave as Text. State the numbers once and repeat them on every row |
262
+ | Build Platform | Text | Leave as Text |
263
+ | HTTPS | Checkbox | Convert to Checkbox |
264
+ | Mobile First | Checkbox | Convert to Checkbox |
265
+ | Structured Data Valid | Checkbox | Convert to Checkbox. Only true after the Rich Results Test or Schema.org validator has passed |
266
+ | Owner | Text | Leave as Text |
267
+ | Review Date | Date | Convert to Date |
268
+ | Status | Select (add options after import) | Convert to Select, add options: "Planned", "In build", "In review", "Live", "Needs update", "Retired" |
269
+ | Notes | Text | Leave as Text |
270
+ ```
271
+
272
+ The rows above are documentation examples only. Emit empty templates unless the user explicitly requests examples. `Structured Data Valid` is false until a
273
+ validator has actually run - it is never optimistic.
274
+
275
+ ## Field Reference
276
+
277
+ | # | Field | Type | SQL | JSON Schema | Notion | CSV example |
278
+ |---:|---|---|---|---|---|---|
279
+ | 1 | Page ID | `id` | `BIGINT PRIMARY KEY` | `integer` | Text or Notion auto-ID | `(blank)` |
280
+ | 2 | Page URL | `url` | `TEXT` | `string, format: uri` | URL | *(blank)* |
281
+ | 3 | Page Title | `text` | `VARCHAR(255)` | `string` | Text | *(blank)* |
282
+ | 4 | Meta Description | `long_text` | `VARCHAR(500)` | `string` | Text | *(blank)* |
283
+ | 5 | Primary Keyword | `text` | `VARCHAR(255)` | `string` | Text | *(blank)* |
284
+ | 6 | Secondary Keywords | `long_text` | `TEXT` | `string` | Text | *(blank)* |
285
+ | 7 | Search Intent | `select` | `VARCHAR(100)` | `string` | Select | `Transactional` |
286
+ | 8 | H1 | `text` | `VARCHAR(255)` | `string` | Text | *(blank)* |
287
+ | 9 | NAP Block Present | `boolean` | `BOOLEAN` | `boolean` | Checkbox | `true` |
288
+ | 10 | Schema Type | `select` | `VARCHAR(100)` | `string` | Select | `Service` |
289
+ | 11 | Canonical URL | `url` | `TEXT` | `string, format: uri` | URL | *(blank)* |
290
+ | 12 | Indexable | `boolean` | `BOOLEAN` | `boolean` | Checkbox | `true` |
291
+ | 13 | Sitemap Included | `boolean` | `BOOLEAN` | `boolean` | Checkbox | `true` |
292
+ | 14 | Image Alt Text Rule | `text` | `VARCHAR(255)` | `string` | Text | *(blank)* |
293
+ | 15 | Target Device | `select` | `VARCHAR(50)` | `string` | Select | `Mobile first` |
294
+ | 16 | Core Web Vitals Target | `text` | `VARCHAR(100)` | `string` | Text | *(blank)* |
295
+ | 17 | Build Platform | `text` | `VARCHAR(100)` | `string` | Text | `Unknown` |
296
+ | 18 | HTTPS | `boolean` | `BOOLEAN` | `boolean` | Checkbox | `true` |
297
+ | 19 | Mobile First | `boolean` | `BOOLEAN` | `boolean` | Checkbox | `true` |
298
+ | 20 | Structured Data Valid | `boolean` | `BOOLEAN` | `boolean` | Checkbox | `false` |
299
+ | 21 | Owner | `text` | `VARCHAR(255)` | `string` | Text | `Unknown` |
300
+ | 22 | Review Date | `date` | `DATE` | `string, format: date` | Date | *(blank)* |
301
+ | 23 | Status | `select` | `VARCHAR(50)` | `string` | Select | `Draft` |
302
+ | 24 | Notes | `long_text` | `TEXT` | `string` | Text | *(blank)* |
303
+
304
+ ## Select Options
305
+
306
+ **Search Intent** - the four standard intents plus a local one. Every page has exactly one,
307
+ and it decides the page's structure, its length and its call to action.
308
+
309
+ ```
310
+ Informational | Commercial investigation | Transactional | Navigational | Local intent
311
+ ```
312
+
313
+ **Schema Type** - a starting set, all schema.org. `FAQPage` markup was restricted by
314
+ Google for most commercial sites, so it earns its place only where the questions are real
315
+ and visible on the page.
316
+
317
+ ```
318
+ LocalBusiness | Service | Organization | BreadcrumbList | FAQPage | Product | Article | WebSite | None
319
+ ```
320
+
321
+ **Target Device**
322
+
323
+ ```
324
+ Mobile first | Desktop first | Responsive
325
+ ```
326
+
327
+ **Status** - `Needs update` is the important one. It is what a page becomes when its
328
+ service, price or staff changes and nobody has updated it.
329
+
330
+ ```
331
+ Planned | In build | In review | Live | Needs update | Retired
332
+ ```
333
+
334
+ ## Relations
335
+
336
+ None standalone. Two natural links worth confirming before making them live:
337
+
338
+ - `Primary Keyword` and `Search Intent` link to the keyword and intent map in
339
+ `gbp-local-seo-intent`, which is a different table. Confirm whether the business wants
340
+ one keyword map or two before joining them.
341
+ - `Owner` points at the people register in the operational pack, which is not in this
342
+ artifact set. It stays Text here with a note naming the intended target.
343
+
344
+ ## Examples
345
+
346
+ **Prompt**
347
+
348
+ ```
349
+ We want a website. We do about six different services, we have one shop, and the last
350
+ one was made by a nephew on a drag-and-drop builder and has not been touched in four
351
+ years.
352
+ ```
353
+
354
+ **Context first** - one question per message, nothing already answered:
355
+
356
+ > **Q:** What is the business called, and what does one line of it actually do?
357
+ > **A:** Example Retail, home and kitchen goods, one shop in Example City.
358
+ >
359
+ > **Q:** Can customers visit the shop, or do you go to them?
360
+ > **A:** The shop, mostly. We do a little delivery.
361
+ >
362
+ > **Q:** Who are the three questions a customer asks before they buy?
363
+ > **A:** What does it cost, is it in stock, and how long does it take.
364
+ >
365
+ > **Q:** What do you have that proves you are any good - reviews, certifications, photos?
366
+ > **A:** Google reviews, and a lot of photos of the shop.
367
+ >
368
+ > **Q:** Is there anyone who can publish a page without a developer?
369
+ > **A:** The founder, on the current site.
370
+
371
+ **Recommended next step** - offered, not built:
372
+
373
+ > Seven pages - home, six service pages, about, contact and a service-area page. Each
374
+ > service page answers cost, availability and time-to-serve, because those are the three
375
+ > questions your customers actually ask. One canonical NAP block repeated on every page,
376
+ > `Service` structured data on each, the real shop photos rather than stock, and the Google
377
+ > review widget on the pages that earn trust. No blog, because nobody would write it.
378
+ >
379
+ > Workflow: Services and areas listed → Page map agreed → Primary keyword and intent per
380
+ > page → NAP block placed → Structured data added → Titles, descriptions and headings
381
+ > written → Mobile and Core Web Vitals verified → Search Console and sitemap connected →
382
+ > Launched and submitted
383
+ >
384
+ > Want the CSV, SQL DDL, JSON Schema and Notion mapping for this?
385
+
386
+ ## Best Practices
387
+
388
+ - Build when requested; recommend and offer a build for advice-only requests.
389
+ - One question per message. A batched intake reads as a form and gets guessed at.
390
+ - One page per service, one primary keyword per page. A page trying to rank for three
391
+ things ranks for none of them clearly.
392
+ - Write the page for the question, not for the keyword. Check the actual search results for
393
+ the term and give people what the other results give them.
394
+ - Repeat the exact canonical NAP on every page that carries a location. Do not rephrase it
395
+ per page - variation across pages is a signal, not a style choice.
396
+ - `Service` and `LocalBusiness` structured data are the highest-value technical work for a
397
+ local business, and they are under-used. Validate before shipping, not after.
398
+ - Mobile first, and check on a real mid-range phone. A page that is fast on a laptop and
399
+ unusable on a phone loses the customer before the SEO matters.
400
+ - Core Web Vitals: LCP under 2.5s, INP under 200ms, CLS under 0.1 at the 75th percentile.
401
+ Compress images, serve AVIF or WebP, and reserve space for anything that shifts the
402
+ layout.
403
+ - Put the phone number and, where the market uses it, WhatsApp in one tap on mobile. A
404
+ contact that needs a form is a contact most people abandon.
405
+ - One clear call to action per page. Two is none.
406
+ - Add a click-to-call link in the footer, correctly formatted for the country.
407
+ - Get Search Console and Bing Webmaster Tools connected on day one, and submit a sitemap.
408
+ Then watch it weekly.
409
+ - Add real photographs - the shop, the team, the work. Stock images of a city are the
410
+ clearest signal that nobody has ever visited.
411
+ - Ask every happy customer for a review on the site, not only on Google. On-site reviews
412
+ with `Review` schema are a citation Google can use.
413
+ - Do not build a blog you will not write. A dead blog is an abandoned-site signal.
414
+ - Derive all four artifacts from the field list in this file, never by hand.
415
+ - If the user requests an example row, keep it obviously fake so nobody imports it as a real page.
416
+
417
+ ## Limitations
418
+
419
+ - This is a plan. It does not build, host or publish a website, and it cannot run a build
420
+ tool or deploy.
421
+ - It does not do keyword research. `Primary Keyword` records what the business or the
422
+ business's tool determined; this skill never invents search volume or difficulty.
423
+ - Core Web Vitals targets are goals, not measurements. `Core Web Vitals Target` states the
424
+ number the business is aiming at; the real figure comes from PageSpeed Insights field
425
+ data.
426
+ - `Structured Data Valid` is ticked by the business after running the Rich Results Test or
427
+ the Schema.org validator. This skill does not run it and must never set it optimistically.
428
+ - Rich result eligibility is decided by Google and changes. A schema type that earns a rich
429
+ result today may not in six months.
430
+ - It does not cover technical SEO beyond what is on the page: crawlability, redirects,
431
+ canonical tags across duplicate URLs, Core Web Vitals code fixes, JavaScript rendering
432
+ and index bloat all need a developer.
433
+ - It does not handle hosting, domain, DNS or email deliverability.
434
+ - It cannot predict rankings. Any output that implies a ranking outcome is out of bounds.
435
+ - A single-location site and a multi-location site need different structures - location
436
+ pages, a location selector, hreflang, and unique NAP per location. Confirm the case
437
+ before generating either.
438
+ - Accessibility compliance is a legal question in some markets. This table records
439
+ requirements; it does not certify conformance.
440
+
441
+ ## Security & Safety Notes
442
+
443
+ - Never invent a domain, a URL, a service, a keyword, a search volume, a metric, a review
444
+ count or a rating. `Unknown` and blank are correct.
445
+ - Never paste a real customer list, a real analytics export or a real Search Console dump
446
+ into this table. A visitor list is personal data.
447
+ - Structured data must describe what is actually visible on the page. Marking up reviews,
448
+ prices or a business that are not on the page is a policy violation and can cost the
449
+ whole site's rich results.
450
+ - Never claim or promise a ranking, and never quote a ranking position the skill did not
451
+ measure.
452
+ - A website forms section collects personal data. Lawful basis, privacy notice, retention
453
+ and consent apply. Flag it and refer it to `data-privacy-controls`.
454
+ - Do not paste API keys, CMS credentials or Search Console verification tokens into this
455
+ table or into shared notes.
456
+ - If the review widget is third-party, its own cookie and consent behaviour applies. That
457
+ is the business's decision to make, and it should be a deliberate one.
458
+ - Local reads, generation commands, and validation are part of a requested artifact build.
459
+ External writes, messages, provisioning, and publication require authorization for that
460
+ action and target; existing explicit authorization does not need to be repeated.
461
+
462
+ ## Common Pitfalls
463
+
464
+ See the [bundled common-pitfalls reference](references/common-pitfalls.md) for review and troubleshooting guidance.
465
+
466
+ ## Related Skills
467
+
468
+ - `brand-growth-system-builder` - routes to this skill and the other 12 brand and growth modules.
469
+ - @gbp-local-seo-intent - the local ranking asset that sits beside the site, sharing the
470
+ same keywords and the same NAP.
471
+ - @seo-directory-backlinks - the off-site citations that must match this NAP exactly.
472
+ - @design-theme-guide - the tokens the site is built from, including the contrast floor.
473
+ - @logo-image-design - the mark, the favicon and the page imagery.
474
+ - @linktree-link-hub - where social traffic lands before the site exists.
475
+ - @social-media-setup - where the site's URLs get distributed.
476
+ - @presentation-deck - the pitch that sells the website build to a stakeholder.
477
+ - @free-design-resources - PageSpeed Insights, Lighthouse, WAVE, Search Console, schema
478
+ validators and the free hosting tiers.
479
+
480
+ ## Reusable Prompt
481
+
482
+ ```
483
+ I want to set up a business website that ranks locally and converts - a page map, the
484
+ right page per service, NAP, structured data and speed targets.
485
+ Ask me one short question at a time, and only about what I have not already told you.
486
+ Never invent a keyword, a URL, a metric or a volume. Then recommend the smallest page
487
+ set that fits, and wait for me to ask before you build it.
488
+ When I ask, output CSV, SQL DDL, JSON Schema and a Notion property mapping. Data only.
489
+ ```
@@ -0,0 +1,32 @@
1
+ # Common Pitfalls
2
+
3
+
4
+ - **Problem:** a static mapping is described as a completed workspace build.
5
+ **Solution:** deliver manual mappings without a connection; claim a live change only
6
+ after the authorized tool operation succeeds.
7
+ - **Problem:** asked all five questions in one message.
8
+ **Solution:** ask one, wait, and drop any the first answer already covered.
9
+ - **Problem:** one homepage trying to rank for six services.
10
+ **Solution:** one page per service, one primary keyword each. This is the single biggest
11
+ structural win for a small local business.
12
+ - **Problem:** the NAP is written slightly differently on three pages.
13
+ **Solution:** copy the canonical block. Do not rephrase it for readability - consistency
14
+ is the signal.
15
+ - **Problem:** the site is fast on a laptop and unusable on a phone.
16
+ **Solution:** test on a mid-range Android, not a new iPhone. Compress the images first;
17
+ they are almost always the cause.
18
+ - **Problem:** a blog was added and has three posts from 2023.
19
+ **Solution:** either commit to writing or remove it. Do not leave a thin archive.
20
+ - **Problem:** schema was marked up but never validated.
21
+ **Solution:** `Structured Data Valid` stays false until the Rich Results Test passes. An
22
+ invalid schema block is worse than none.
23
+ - **Problem:** the meta description was auto-generated and reads like a robot wrote it.
24
+ **Solution:** it is a sales line under a search result, written by a human, 140-160
25
+ characters.
26
+ - **Problem:** the old site had traffic and the rebuild lost it.
27
+ **Solution:** a redirect map from every old URL to its new equivalent, checked before
28
+ launch. The developer task, not the copy task.
29
+ - **Problem:** all four artifacts drift apart.
30
+ **Solution:** derive all four from the field list in this file, never by hand.
31
+ - **Problem:** Notion import shows every column as Text.
32
+ **Solution:** that is expected. Apply the property mapping table once, after import.