opencode-knowledge-work 0.0.0-stage → 0.1.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 (472) hide show
  1. package/LICENSE +212 -0
  2. package/README.md +124 -2
  3. package/content/bio-research/.mcp.json +48 -0
  4. package/content/bio-research/CONNECTORS.md +23 -0
  5. package/content/bio-research/LICENSE +202 -0
  6. package/content/bio-research/README.md +83 -0
  7. package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/LICENSE.txt +201 -0
  8. package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/SKILL.md +280 -0
  9. package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/references/asm_schema_overview.md +226 -0
  10. package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/references/field_classification_guide.md +503 -0
  11. package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/references/flattening_guide.md +254 -0
  12. package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/references/supported_instruments.md +151 -0
  13. package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/requirements.txt +26 -0
  14. package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/scripts/convert_to_asm.py +543 -0
  15. package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/scripts/export_parser.py +481 -0
  16. package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/scripts/flatten_asm.py +254 -0
  17. package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/scripts/validate_asm.py +1102 -0
  18. package/content/bio-research/skills/bio-research-nextflow-development/LICENSE.txt +201 -0
  19. package/content/bio-research/skills/bio-research-nextflow-development/SKILL.md +290 -0
  20. package/content/bio-research/skills/bio-research-nextflow-development/references/geo-sra-acquisition.md +416 -0
  21. package/content/bio-research/skills/bio-research-nextflow-development/references/installation.md +96 -0
  22. package/content/bio-research/skills/bio-research-nextflow-development/references/pipelines/atacseq.md +138 -0
  23. package/content/bio-research/skills/bio-research-nextflow-development/references/pipelines/rnaseq.md +118 -0
  24. package/content/bio-research/skills/bio-research-nextflow-development/references/pipelines/sarek.md +145 -0
  25. package/content/bio-research/skills/bio-research-nextflow-development/references/troubleshooting.md +137 -0
  26. package/content/bio-research/skills/bio-research-nextflow-development/scripts/check_environment.py +452 -0
  27. package/content/bio-research/skills/bio-research-nextflow-development/scripts/config/genomes.yaml +148 -0
  28. package/content/bio-research/skills/bio-research-nextflow-development/scripts/config/pipelines/atacseq.yaml +187 -0
  29. package/content/bio-research/skills/bio-research-nextflow-development/scripts/config/pipelines/rnaseq.yaml +147 -0
  30. package/content/bio-research/skills/bio-research-nextflow-development/scripts/config/pipelines/sarek.yaml +233 -0
  31. package/content/bio-research/skills/bio-research-nextflow-development/scripts/detect_data_type.py +300 -0
  32. package/content/bio-research/skills/bio-research-nextflow-development/scripts/generate_samplesheet.py +455 -0
  33. package/content/bio-research/skills/bio-research-nextflow-development/scripts/manage_genomes.py +521 -0
  34. package/content/bio-research/skills/bio-research-nextflow-development/scripts/sra_geo_fetch.py +732 -0
  35. package/content/bio-research/skills/bio-research-nextflow-development/scripts/utils/__init__.py +69 -0
  36. package/content/bio-research/skills/bio-research-nextflow-development/scripts/utils/file_discovery.py +189 -0
  37. package/content/bio-research/skills/bio-research-nextflow-development/scripts/utils/ncbi_utils.py +808 -0
  38. package/content/bio-research/skills/bio-research-nextflow-development/scripts/utils/sample_inference.py +290 -0
  39. package/content/bio-research/skills/bio-research-nextflow-development/scripts/utils/validators.py +256 -0
  40. package/content/bio-research/skills/bio-research-scientific-problem-selection/LICENSE.txt +201 -0
  41. package/content/bio-research/skills/bio-research-scientific-problem-selection/SKILL.md +269 -0
  42. package/content/bio-research/skills/bio-research-scientific-problem-selection/references/01-intuition-pumps.md +264 -0
  43. package/content/bio-research/skills/bio-research-scientific-problem-selection/references/02-risk-assessment.md +323 -0
  44. package/content/bio-research/skills/bio-research-scientific-problem-selection/references/03-optimization-function.md +481 -0
  45. package/content/bio-research/skills/bio-research-scientific-problem-selection/references/04-parameter-strategy.md +396 -0
  46. package/content/bio-research/skills/bio-research-scientific-problem-selection/references/05-decision-tree.md +85 -0
  47. package/content/bio-research/skills/bio-research-scientific-problem-selection/references/06-adversity-planning.md +123 -0
  48. package/content/bio-research/skills/bio-research-scientific-problem-selection/references/07-problem-inversion.md +152 -0
  49. package/content/bio-research/skills/bio-research-scientific-problem-selection/references/08-integration-synthesis.md +173 -0
  50. package/content/bio-research/skills/bio-research-scientific-problem-selection/references/09-meta-framework.md +504 -0
  51. package/content/bio-research/skills/bio-research-scvi-tools/LICENSE.txt +201 -0
  52. package/content/bio-research/skills/bio-research-scvi-tools/SKILL.md +155 -0
  53. package/content/bio-research/skills/bio-research-scvi-tools/references/atac_peakvi.md +398 -0
  54. package/content/bio-research/skills/bio-research-scvi-tools/references/batch_correction_sysvi.md +417 -0
  55. package/content/bio-research/skills/bio-research-scvi-tools/references/citeseq_totalvi.md +420 -0
  56. package/content/bio-research/skills/bio-research-scvi-tools/references/data_preparation.md +286 -0
  57. package/content/bio-research/skills/bio-research-scvi-tools/references/environment_setup.md +254 -0
  58. package/content/bio-research/skills/bio-research-scvi-tools/references/label_transfer.md +373 -0
  59. package/content/bio-research/skills/bio-research-scvi-tools/references/multiome_multivi.md +384 -0
  60. package/content/bio-research/skills/bio-research-scvi-tools/references/rna_velocity_velovi.md +410 -0
  61. package/content/bio-research/skills/bio-research-scvi-tools/references/scarches_mapping.md +401 -0
  62. package/content/bio-research/skills/bio-research-scvi-tools/references/scrna_integration.md +429 -0
  63. package/content/bio-research/skills/bio-research-scvi-tools/references/spatial_deconvolution.md +438 -0
  64. package/content/bio-research/skills/bio-research-scvi-tools/references/troubleshooting.md +420 -0
  65. package/content/bio-research/skills/bio-research-scvi-tools/scripts/cluster_embed.py +212 -0
  66. package/content/bio-research/skills/bio-research-scvi-tools/scripts/differential_expression.py +220 -0
  67. package/content/bio-research/skills/bio-research-scvi-tools/scripts/integrate_datasets.py +237 -0
  68. package/content/bio-research/skills/bio-research-scvi-tools/scripts/model_utils.py +634 -0
  69. package/content/bio-research/skills/bio-research-scvi-tools/scripts/prepare_data.py +169 -0
  70. package/content/bio-research/skills/bio-research-scvi-tools/scripts/train_model.py +370 -0
  71. package/content/bio-research/skills/bio-research-scvi-tools/scripts/transfer_labels.py +224 -0
  72. package/content/bio-research/skills/bio-research-scvi-tools/scripts/validate_adata.py +397 -0
  73. package/content/bio-research/skills/bio-research-single-cell-rna-qc/LICENSE.txt +201 -0
  74. package/content/bio-research/skills/bio-research-single-cell-rna-qc/SKILL.md +175 -0
  75. package/content/bio-research/skills/bio-research-single-cell-rna-qc/references/scverse_qc_guidelines.md +186 -0
  76. package/content/bio-research/skills/bio-research-single-cell-rna-qc/scripts/qc_analysis.py +232 -0
  77. package/content/bio-research/skills/bio-research-single-cell-rna-qc/scripts/qc_core.py +233 -0
  78. package/content/bio-research/skills/bio-research-single-cell-rna-qc/scripts/qc_plotting.py +235 -0
  79. package/content/bio-research/skills/bio-research-start/SKILL.md +79 -0
  80. package/content/customer-support/.mcp.json +40 -0
  81. package/content/customer-support/CONNECTORS.md +19 -0
  82. package/content/customer-support/LICENSE +202 -0
  83. package/content/customer-support/README.md +140 -0
  84. package/content/customer-support/skills/customer-support-customer-escalation/SKILL.md +248 -0
  85. package/content/customer-support/skills/customer-support-customer-research/SKILL.md +252 -0
  86. package/content/customer-support/skills/customer-support-draft-response/SKILL.md +418 -0
  87. package/content/customer-support/skills/customer-support-kb-article/SKILL.md +351 -0
  88. package/content/customer-support/skills/customer-support-ticket-triage/SKILL.md +275 -0
  89. package/content/data/.mcp.json +36 -0
  90. package/content/data/CONNECTORS.md +18 -0
  91. package/content/data/LICENSE +202 -0
  92. package/content/data/README.md +121 -0
  93. package/content/data/skills/data-analyze/SKILL.md +119 -0
  94. package/content/data/skills/data-build-dashboard/SKILL.md +924 -0
  95. package/content/data/skills/data-create-viz/SKILL.md +154 -0
  96. package/content/data/skills/data-data-context-extractor/SKILL.md +227 -0
  97. package/content/data/skills/data-data-context-extractor/references/domain-template.md +147 -0
  98. package/content/data/skills/data-data-context-extractor/references/example-output.md +198 -0
  99. package/content/data/skills/data-data-context-extractor/references/skill-template.md +148 -0
  100. package/content/data/skills/data-data-context-extractor/references/sql-dialects.md +121 -0
  101. package/content/data/skills/data-data-context-extractor/scripts/package_data_skill.py +126 -0
  102. package/content/data/skills/data-data-visualization/SKILL.md +305 -0
  103. package/content/data/skills/data-explore-data/SKILL.md +325 -0
  104. package/content/data/skills/data-sql-queries/SKILL.md +428 -0
  105. package/content/data/skills/data-statistical-analysis/SKILL.md +245 -0
  106. package/content/data/skills/data-validate-data/SKILL.md +383 -0
  107. package/content/data/skills/data-write-query/SKILL.md +122 -0
  108. package/content/design/.mcp.json +44 -0
  109. package/content/design/CONNECTORS.md +18 -0
  110. package/content/design/README.md +117 -0
  111. package/content/design/skills/design-accessibility-review/SKILL.md +128 -0
  112. package/content/design/skills/design-design-critique/SKILL.md +118 -0
  113. package/content/design/skills/design-design-handoff/SKILL.md +131 -0
  114. package/content/design/skills/design-design-system/SKILL.md +190 -0
  115. package/content/design/skills/design-research-synthesis/SKILL.md +92 -0
  116. package/content/design/skills/design-user-research/SKILL.md +41 -0
  117. package/content/design/skills/design-ux-copy/SKILL.md +107 -0
  118. package/content/engineering/.mcp.json +48 -0
  119. package/content/engineering/CONNECTORS.md +19 -0
  120. package/content/engineering/README.md +136 -0
  121. package/content/engineering/skills/engineering-architecture/SKILL.md +85 -0
  122. package/content/engineering/skills/engineering-code-review/SKILL.md +118 -0
  123. package/content/engineering/skills/engineering-debug/SKILL.md +95 -0
  124. package/content/engineering/skills/engineering-deploy-checklist/SKILL.md +78 -0
  125. package/content/engineering/skills/engineering-documentation/SKILL.md +49 -0
  126. package/content/engineering/skills/engineering-incident-response/SKILL.md +158 -0
  127. package/content/engineering/skills/engineering-standup/SKILL.md +75 -0
  128. package/content/engineering/skills/engineering-system-design/SKILL.md +42 -0
  129. package/content/engineering/skills/engineering-tech-debt/SKILL.md +32 -0
  130. package/content/engineering/skills/engineering-testing-strategy/SKILL.md +33 -0
  131. package/content/enterprise-search/.mcp.json +36 -0
  132. package/content/enterprise-search/CONNECTORS.md +21 -0
  133. package/content/enterprise-search/LICENSE +202 -0
  134. package/content/enterprise-search/README.md +157 -0
  135. package/content/enterprise-search/skills/enterprise-search-digest/SKILL.md +173 -0
  136. package/content/enterprise-search/skills/enterprise-search-knowledge-synthesis/SKILL.md +258 -0
  137. package/content/enterprise-search/skills/enterprise-search-search/SKILL.md +178 -0
  138. package/content/enterprise-search/skills/enterprise-search-search-strategy/SKILL.md +222 -0
  139. package/content/enterprise-search/skills/enterprise-search-source-management/SKILL.md +173 -0
  140. package/content/finance/.mcp.json +32 -0
  141. package/content/finance/CONNECTORS.md +20 -0
  142. package/content/finance/LICENSE +202 -0
  143. package/content/finance/README.md +92 -0
  144. package/content/finance/skills/finance-audit-support/SKILL.md +374 -0
  145. package/content/finance/skills/finance-close-management/SKILL.md +221 -0
  146. package/content/finance/skills/finance-financial-statements/SKILL.md +335 -0
  147. package/content/finance/skills/finance-journal-entry/SKILL.md +131 -0
  148. package/content/finance/skills/finance-journal-entry-prep/SKILL.md +186 -0
  149. package/content/finance/skills/finance-reconciliation/SKILL.md +175 -0
  150. package/content/finance/skills/finance-sox-testing/SKILL.md +218 -0
  151. package/content/finance/skills/finance-variance-analysis/SKILL.md +266 -0
  152. package/content/human-resources/.mcp.json +28 -0
  153. package/content/human-resources/CONNECTORS.md +19 -0
  154. package/content/human-resources/README.md +138 -0
  155. package/content/human-resources/skills/human-resources-comp-analysis/SKILL.md +92 -0
  156. package/content/human-resources/skills/human-resources-draft-offer/SKILL.md +82 -0
  157. package/content/human-resources/skills/human-resources-interview-prep/SKILL.md +37 -0
  158. package/content/human-resources/skills/human-resources-onboarding/SKILL.md +104 -0
  159. package/content/human-resources/skills/human-resources-org-planning/SKILL.md +28 -0
  160. package/content/human-resources/skills/human-resources-people-report/SKILL.md +99 -0
  161. package/content/human-resources/skills/human-resources-performance-review/SKILL.md +149 -0
  162. package/content/human-resources/skills/human-resources-policy-lookup/SKILL.md +94 -0
  163. package/content/human-resources/skills/human-resources-recruiting-pipeline/SKILL.md +31 -0
  164. package/content/legal/.mcp.json +36 -0
  165. package/content/legal/CONNECTORS.md +21 -0
  166. package/content/legal/LICENSE +202 -0
  167. package/content/legal/README.md +234 -0
  168. package/content/legal/skills/legal-brief/SKILL.md +208 -0
  169. package/content/legal/skills/legal-compliance-check/SKILL.md +274 -0
  170. package/content/legal/skills/legal-legal-response/SKILL.md +457 -0
  171. package/content/legal/skills/legal-legal-risk-assessment/SKILL.md +265 -0
  172. package/content/legal/skills/legal-meeting-briefing/SKILL.md +220 -0
  173. package/content/legal/skills/legal-review-contract/SKILL.md +358 -0
  174. package/content/legal/skills/legal-signature-request/SKILL.md +104 -0
  175. package/content/legal/skills/legal-triage-nda/SKILL.md +262 -0
  176. package/content/legal/skills/legal-vendor-check/SKILL.md +159 -0
  177. package/content/manifest.json +86 -0
  178. package/content/marketing/.mcp.json +60 -0
  179. package/content/marketing/CONNECTORS.md +20 -0
  180. package/content/marketing/LICENSE +202 -0
  181. package/content/marketing/README.md +90 -0
  182. package/content/marketing/skills/marketing-brand-review/SKILL.md +276 -0
  183. package/content/marketing/skills/marketing-campaign-plan/SKILL.md +308 -0
  184. package/content/marketing/skills/marketing-competitive-brief/SKILL.md +331 -0
  185. package/content/marketing/skills/marketing-content-creation/SKILL.md +157 -0
  186. package/content/marketing/skills/marketing-draft-content/SKILL.md +117 -0
  187. package/content/marketing/skills/marketing-email-sequence/SKILL.md +220 -0
  188. package/content/marketing/skills/marketing-performance-report/SKILL.md +392 -0
  189. package/content/marketing/skills/marketing-seo-audit/SKILL.md +190 -0
  190. package/content/operations/.mcp.json +32 -0
  191. package/content/operations/CONNECTORS.md +20 -0
  192. package/content/operations/README.md +135 -0
  193. package/content/operations/skills/operations-capacity-plan/SKILL.md +113 -0
  194. package/content/operations/skills/operations-change-request/SKILL.md +121 -0
  195. package/content/operations/skills/operations-compliance-tracking/SKILL.md +44 -0
  196. package/content/operations/skills/operations-process-doc/SKILL.md +82 -0
  197. package/content/operations/skills/operations-process-optimization/SKILL.md +39 -0
  198. package/content/operations/skills/operations-risk-assessment/SKILL.md +40 -0
  199. package/content/operations/skills/operations-runbook/SKILL.md +87 -0
  200. package/content/operations/skills/operations-status-report/SKILL.md +77 -0
  201. package/content/operations/skills/operations-vendor-review/SKILL.md +104 -0
  202. package/content/pdf-viewer/.mcp.json +8 -0
  203. package/content/pdf-viewer/CONNECTORS.md +15 -0
  204. package/content/pdf-viewer/LICENSE +202 -0
  205. package/content/pdf-viewer/README.md +57 -0
  206. package/content/pdf-viewer/commands/annotate.md +51 -0
  207. package/content/pdf-viewer/commands/fill-form.md +73 -0
  208. package/content/pdf-viewer/commands/open.md +34 -0
  209. package/content/pdf-viewer/commands/sign.md +54 -0
  210. package/content/pdf-viewer/skills/pdf-viewer-view-pdf/SKILL.md +147 -0
  211. package/content/product-management/.mcp.json +72 -0
  212. package/content/product-management/CONNECTORS.md +22 -0
  213. package/content/product-management/LICENSE +202 -0
  214. package/content/product-management/README.md +118 -0
  215. package/content/product-management/commands/brainstorm.md +120 -0
  216. package/content/product-management/skills/product-management-competitive-brief/SKILL.md +302 -0
  217. package/content/product-management/skills/product-management-metrics-review/SKILL.md +388 -0
  218. package/content/product-management/skills/product-management-product-brainstorming/SKILL.md +273 -0
  219. package/content/product-management/skills/product-management-roadmap-update/SKILL.md +266 -0
  220. package/content/product-management/skills/product-management-sprint-planning/SKILL.md +94 -0
  221. package/content/product-management/skills/product-management-stakeholder-update/SKILL.md +352 -0
  222. package/content/product-management/skills/product-management-synthesize-research/SKILL.md +312 -0
  223. package/content/product-management/skills/product-management-write-spec/SKILL.md +250 -0
  224. package/content/productivity/.mcp.json +44 -0
  225. package/content/productivity/CONNECTORS.md +18 -0
  226. package/content/productivity/LICENSE +202 -0
  227. package/content/productivity/README.md +97 -0
  228. package/content/productivity/skills/dashboard.html +3111 -0
  229. package/content/productivity/skills/productivity-memory-management/SKILL.md +323 -0
  230. package/content/productivity/skills/productivity-start/SKILL.md +158 -0
  231. package/content/productivity/skills/productivity-task-management/SKILL.md +91 -0
  232. package/content/productivity/skills/productivity-update/SKILL.md +168 -0
  233. package/content/sales/.mcp.json +100 -0
  234. package/content/sales/CONNECTORS.md +36 -0
  235. package/content/sales/LICENSE +202 -0
  236. package/content/sales/README.md +148 -0
  237. package/content/sales/skills/sales-account-context/SKILL.md +94 -0
  238. package/content/sales/skills/sales-account-plan/SKILL.md +95 -0
  239. package/content/sales/skills/sales-account-research/SKILL.md +99 -0
  240. package/content/sales/skills/sales-account-tiering/SKILL.md +101 -0
  241. package/content/sales/skills/sales-call-prep/SKILL.md +111 -0
  242. package/content/sales/skills/sales-call-summary/SKILL.md +111 -0
  243. package/content/sales/skills/sales-close-plan/SKILL.md +106 -0
  244. package/content/sales/skills/sales-competitive-intelligence/SKILL.md +102 -0
  245. package/content/sales/skills/sales-create-an-asset/SKILL.md +105 -0
  246. package/content/sales/skills/sales-crm-hygiene-check/SKILL.md +103 -0
  247. package/content/sales/skills/sales-customer-health/SKILL.md +108 -0
  248. package/content/sales/skills/sales-customer-voice/SKILL.md +94 -0
  249. package/content/sales/skills/sales-daily-briefing/SKILL.md +61 -0
  250. package/content/sales/skills/sales-deal-advance-gap/SKILL.md +102 -0
  251. package/content/sales/skills/sales-deal-review/SKILL.md +105 -0
  252. package/content/sales/skills/sales-deal-signals/SKILL.md +96 -0
  253. package/content/sales/skills/sales-deal-slip-scenario/SKILL.md +101 -0
  254. package/content/sales/skills/sales-draft-outreach/SKILL.md +116 -0
  255. package/content/sales/skills/sales-end-of-day/SKILL.md +114 -0
  256. package/content/sales/skills/sales-expansion-whitespace/SKILL.md +97 -0
  257. package/content/sales/skills/sales-forecast/SKILL.md +100 -0
  258. package/content/sales/skills/sales-handle-objection/SKILL.md +93 -0
  259. package/content/sales/skills/sales-inbox-sweep/SKILL.md +114 -0
  260. package/content/sales/skills/sales-lead-triage/SKILL.md +105 -0
  261. package/content/sales/skills/sales-log-activity/SKILL.md +111 -0
  262. package/content/sales/skills/sales-pipeline-review/SKILL.md +97 -0
  263. package/content/sales/skills/sales-renewal-radar/SKILL.md +95 -0
  264. package/content/sales/skills/sales-rep-context/SKILL.md +90 -0
  265. package/content/sales/skills/sales-route-lead/SKILL.md +111 -0
  266. package/content/sales/skills/sales-schedule-meeting/SKILL.md +99 -0
  267. package/content/sales/skills/sales-setup/SKILL.md +195 -0
  268. package/content/sales/skills/sales-stakeholder-map/SKILL.md +107 -0
  269. package/content/sales/skills/sales-team-pipeline/SKILL.md +105 -0
  270. package/content/sales/skills/sales-update-opportunity/SKILL.md +111 -0
  271. package/content/sales/skills/sales-weekly-wrap/SKILL.md +90 -0
  272. package/content/sales/skills/sales-win-loss-review/SKILL.md +88 -0
  273. package/content/small-business/.mcp.json +148 -0
  274. package/content/small-business/README.md +117 -0
  275. package/content/small-business/skills/small-business-ad-manager/SKILL.md +128 -0
  276. package/content/small-business/skills/small-business-ad-manager/reference/ad_copy.md +112 -0
  277. package/content/small-business/skills/small-business-ad-manager/reference/change_playbook.md +127 -0
  278. package/content/small-business/skills/small-business-ad-manager/reference/data_sources.md +100 -0
  279. package/content/small-business/skills/small-business-ad-manager/reference/diagnostics.md +89 -0
  280. package/content/small-business/skills/small-business-ad-manager/reference/gotchas.md +181 -0
  281. package/content/small-business/skills/small-business-ap-processor/SKILL.md +158 -0
  282. package/content/small-business/skills/small-business-ap-processor/reference/coding_rules.md +70 -0
  283. package/content/small-business/skills/small-business-ap-processor/reference/gotchas.md +131 -0
  284. package/content/small-business/skills/small-business-ap-processor/reference/intake_and_extraction.md +82 -0
  285. package/content/small-business/skills/small-business-ap-processor/reference/matching_and_exceptions.md +80 -0
  286. package/content/small-business/skills/small-business-ap-processor/reference/payment_run.md +77 -0
  287. package/content/small-business/skills/small-business-brand-style/SKILL.md +106 -0
  288. package/content/small-business/skills/small-business-build-agent/SKILL.md +105 -0
  289. package/content/small-business/skills/small-business-build-agent/reference/capture.md +133 -0
  290. package/content/small-business/skills/small-business-build-agent/reference/gotchas.md +204 -0
  291. package/content/small-business/skills/small-business-build-agent/reference/skill_authoring.md +165 -0
  292. package/content/small-business/skills/small-business-build-connector/SKILL.md +102 -0
  293. package/content/small-business/skills/small-business-build-connector/reference/discovery.md +120 -0
  294. package/content/small-business/skills/small-business-build-connector/reference/gotchas.md +237 -0
  295. package/content/small-business/skills/small-business-build-connector/reference/paths.md +106 -0
  296. package/content/small-business/skills/small-business-build-connector/reference/use-zapier.md +128 -0
  297. package/content/small-business/skills/small-business-business-pulse/SKILL.md +181 -0
  298. package/content/small-business/skills/small-business-business-pulse/reference/data_sources.md +173 -0
  299. package/content/small-business/skills/small-business-business-pulse/reference/gotchas.md +103 -0
  300. package/content/small-business/skills/small-business-business-pulse/reference/output_template.md +109 -0
  301. package/content/small-business/skills/small-business-business-pulse/reference/thresholds.md +71 -0
  302. package/content/small-business/skills/small-business-business-pulse/reference/v2_sources.md +63 -0
  303. package/content/small-business/skills/small-business-call-list/SKILL.md +82 -0
  304. package/content/small-business/skills/small-business-canva-creator/SKILL.md +448 -0
  305. package/content/small-business/skills/small-business-canva-creator/reference/canva-api.md +208 -0
  306. package/content/small-business/skills/small-business-canva-creator/reference/examples/boutique-brief-campaign.md +181 -0
  307. package/content/small-business/skills/small-business-canva-creator/reference/gotchas.md +380 -0
  308. package/content/small-business/skills/small-business-canva-creator/reference/hubspot-staging.md +137 -0
  309. package/content/small-business/skills/small-business-cash-flow-snapshot/SKILL.md +251 -0
  310. package/content/small-business/skills/small-business-cash-flow-snapshot/reference/examples/worked-example.md +92 -0
  311. package/content/small-business/skills/small-business-cash-flow-snapshot/reference/gotchas.md +62 -0
  312. package/content/small-business/skills/small-business-cash-flow-snapshot/reference/v2_sources.md +84 -0
  313. package/content/small-business/skills/small-business-close-month/SKILL.md +86 -0
  314. package/content/small-business/skills/small-business-content-strategy/SKILL.md +152 -0
  315. package/content/small-business/skills/small-business-content-strategy/reference/examples/retail-boutique-example.md +71 -0
  316. package/content/small-business/skills/small-business-content-strategy/reference/gotchas.md +104 -0
  317. package/content/small-business/skills/small-business-content-strategy/reference/v2_sources.md +40 -0
  318. package/content/small-business/skills/small-business-contract-review/SKILL.md +158 -0
  319. package/content/small-business/skills/small-business-contract-review/reference/docusign-fetch.md +32 -0
  320. package/content/small-business/skills/small-business-contract-review/reference/examples/flagged-summary-saas.md +97 -0
  321. package/content/small-business/skills/small-business-contract-review/reference/gmail-fetch.md +30 -0
  322. package/content/small-business/skills/small-business-contract-review/reference/gotchas.md +105 -0
  323. package/content/small-business/skills/small-business-contract-review/reference/m365-fetch.md +60 -0
  324. package/content/small-business/skills/small-business-crm-autopilot/SKILL.md +162 -0
  325. package/content/small-business/skills/small-business-crm-autopilot/reference/cleanup-checklist.md +82 -0
  326. package/content/small-business/skills/small-business-crm-autopilot/reference/examples/cleanup-deal.md +83 -0
  327. package/content/small-business/skills/small-business-crm-autopilot/reference/examples/log-call-happy-path.md +68 -0
  328. package/content/small-business/skills/small-business-crm-autopilot/reference/examples/log-email-happy-path.md +50 -0
  329. package/content/small-business/skills/small-business-crm-autopilot/reference/gotchas.md +110 -0
  330. package/content/small-business/skills/small-business-crm-autopilot/reference/hubspot-fields.md +62 -0
  331. package/content/small-business/skills/small-business-crm-autopilot/reference/lightweight_crm.md +125 -0
  332. package/content/small-business/skills/small-business-crm-autopilot/reference/salesforce-fields.md +122 -0
  333. package/content/small-business/skills/small-business-crm-autopilot/reference/standing_mode.md +144 -0
  334. package/content/small-business/skills/small-business-grant-rfp-writer/SKILL.md +162 -0
  335. package/content/small-business/skills/small-business-grant-rfp-writer/reference/drafting.md +129 -0
  336. package/content/small-business/skills/small-business-grant-rfp-writer/reference/go_no_go.md +125 -0
  337. package/content/small-business/skills/small-business-grant-rfp-writer/reference/gotchas.md +180 -0
  338. package/content/small-business/skills/small-business-grant-rfp-writer/reference/opportunity_sources.md +90 -0
  339. package/content/small-business/skills/small-business-grant-rfp-writer/reference/org_profile.md +81 -0
  340. package/content/small-business/skills/small-business-grow-pipeline/SKILL.md +92 -0
  341. package/content/small-business/skills/small-business-growth-pulse/SKILL.md +143 -0
  342. package/content/small-business/skills/small-business-growth-pulse/reference/data_sources.md +113 -0
  343. package/content/small-business/skills/small-business-growth-pulse/reference/gotchas.md +175 -0
  344. package/content/small-business/skills/small-business-growth-pulse/reference/output_template.md +122 -0
  345. package/content/small-business/skills/small-business-growth-pulse/reference/thresholds.md +110 -0
  346. package/content/small-business/skills/small-business-hiring-screener/SKILL.md +137 -0
  347. package/content/small-business/skills/small-business-hiring-screener/reference/candidate_comms.md +132 -0
  348. package/content/small-business/skills/small-business-hiring-screener/reference/fair_screening.md +103 -0
  349. package/content/small-business/skills/small-business-hiring-screener/reference/gotchas.md +183 -0
  350. package/content/small-business/skills/small-business-hiring-screener/reference/onboarding.md +82 -0
  351. package/content/small-business/skills/small-business-hiring-screener/reference/rubric.md +122 -0
  352. package/content/small-business/skills/small-business-inbox-manager/SKILL.md +130 -0
  353. package/content/small-business/skills/small-business-inbox-manager/reference/digest_format.md +110 -0
  354. package/content/small-business/skills/small-business-inbox-manager/reference/gotchas.md +220 -0
  355. package/content/small-business/skills/small-business-inbox-manager/reference/handoffs.md +77 -0
  356. package/content/small-business/skills/small-business-inbox-manager/reference/reply_drafting.md +116 -0
  357. package/content/small-business/skills/small-business-inbox-manager/reference/triage_rules.md +72 -0
  358. package/content/small-business/skills/small-business-inventory-planner/SKILL.md +126 -0
  359. package/content/small-business/skills/small-business-inventory-planner/reference/data_sources.md +94 -0
  360. package/content/small-business/skills/small-business-inventory-planner/reference/gotchas.md +153 -0
  361. package/content/small-business/skills/small-business-inventory-planner/reference/po_drafting.md +92 -0
  362. package/content/small-business/skills/small-business-inventory-planner/reference/seasonality.md +112 -0
  363. package/content/small-business/skills/small-business-inventory-planner/reference/velocity_and_reorder.md +154 -0
  364. package/content/small-business/skills/small-business-invoice-chase/SKILL.md +131 -0
  365. package/content/small-business/skills/small-business-invoice-chase/reference/examples/firm-reminder.md +28 -0
  366. package/content/small-business/skills/small-business-invoice-chase/reference/examples/gentle-reminder.md +27 -0
  367. package/content/small-business/skills/small-business-invoice-chase/reference/gotchas.md +75 -0
  368. package/content/small-business/skills/small-business-invoice-chase/reference/tone-matching.md +44 -0
  369. package/content/small-business/skills/small-business-invoice-chase/reference/v2_sources.md +78 -0
  370. package/content/small-business/skills/small-business-job-post-builder/SKILL.md +204 -0
  371. package/content/small-business/skills/small-business-job-post-builder/reference/docusign-routing.md +63 -0
  372. package/content/small-business/skills/small-business-job-post-builder/reference/examples/worked-example.md +110 -0
  373. package/content/small-business/skills/small-business-job-post-builder/reference/existing-document-merge.md +58 -0
  374. package/content/small-business/skills/small-business-job-post-builder/reference/gotchas.md +68 -0
  375. package/content/small-business/skills/small-business-job-post-builder/reference/interview-guide-structure.md +93 -0
  376. package/content/small-business/skills/small-business-job-post-builder/reference/job-post-structure.md +62 -0
  377. package/content/small-business/skills/small-business-job-post-builder/reference/offer-letter-template.md +145 -0
  378. package/content/small-business/skills/small-business-job-post-builder/reference/role-intake.md +73 -0
  379. package/content/small-business/skills/small-business-lead-finder/SKILL.md +119 -0
  380. package/content/small-business/skills/small-business-lead-finder/reference/gotchas.md +152 -0
  381. package/content/small-business/skills/small-business-lead-finder/reference/icp_method.md +97 -0
  382. package/content/small-business/skills/small-business-lead-finder/reference/output_template.md +124 -0
  383. package/content/small-business/skills/small-business-lead-finder/reference/scoring.md +92 -0
  384. package/content/small-business/skills/small-business-lead-finder/reference/sourcing.md +78 -0
  385. package/content/small-business/skills/small-business-lead-triage/SKILL.md +81 -0
  386. package/content/small-business/skills/small-business-lead-triage/reference/examples/happy-path-triage.md +68 -0
  387. package/content/small-business/skills/small-business-lead-triage/reference/gotchas.md +76 -0
  388. package/content/small-business/skills/small-business-lead-triage/reference/hubspot-scoring.md +169 -0
  389. package/content/small-business/skills/small-business-marketing-monday/SKILL.md +108 -0
  390. package/content/small-business/skills/small-business-monday-brief/SKILL.md +97 -0
  391. package/content/small-business/skills/small-business-month-end-prep/SKILL.md +331 -0
  392. package/content/small-business/skills/small-business-month-end-prep/reference/close-packet-format.md +127 -0
  393. package/content/small-business/skills/small-business-month-end-prep/reference/examples/pl-narrative.md +52 -0
  394. package/content/small-business/skills/small-business-month-end-prep/reference/gotchas.md +113 -0
  395. package/content/small-business/skills/small-business-month-end-prep/reference/paypal-settlements.md +110 -0
  396. package/content/small-business/skills/small-business-month-end-prep/reference/quickbooks-reconcile.md +71 -0
  397. package/content/small-business/skills/small-business-month-end-prep/reference/v2_sources.md +125 -0
  398. package/content/small-business/skills/small-business-month-end-prep/reference/xero-reconcile.md +175 -0
  399. package/content/small-business/skills/small-business-month-end-prep/reference/zoho-books-reconcile.md +168 -0
  400. package/content/small-business/skills/small-business-outreach-composer/SKILL.md +144 -0
  401. package/content/small-business/skills/small-business-outreach-composer/reference/gotchas.md +213 -0
  402. package/content/small-business/skills/small-business-outreach-composer/reference/output_template.md +147 -0
  403. package/content/small-business/skills/small-business-outreach-composer/reference/sequence_patterns.md +99 -0
  404. package/content/small-business/skills/small-business-outreach-composer/reference/slop_test.md +164 -0
  405. package/content/small-business/skills/small-business-pay-the-bills/SKILL.md +101 -0
  406. package/content/small-business/skills/small-business-payroll-prep/SKILL.md +139 -0
  407. package/content/small-business/skills/small-business-payroll-prep/reference/anomaly_rules.md +99 -0
  408. package/content/small-business/skills/small-business-payroll-prep/reference/books_sync.md +72 -0
  409. package/content/small-business/skills/small-business-payroll-prep/reference/gotchas.md +153 -0
  410. package/content/small-business/skills/small-business-payroll-prep/reference/run_sheet_format.md +90 -0
  411. package/content/small-business/skills/small-business-payroll-prep/reference/timesheet_intake.md +118 -0
  412. package/content/small-business/skills/small-business-plan-payroll/SKILL.md +88 -0
  413. package/content/small-business/skills/small-business-proposal-builder/SKILL.md +168 -0
  414. package/content/small-business/skills/small-business-proposal-builder/reference/discovery_extraction.md +138 -0
  415. package/content/small-business/skills/small-business-proposal-builder/reference/gotchas.md +184 -0
  416. package/content/small-business/skills/small-business-proposal-builder/reference/output_template.md +128 -0
  417. package/content/small-business/skills/small-business-proposal-builder/reference/pricing_method.md +125 -0
  418. package/content/small-business/skills/small-business-proposal-builder/reference/proposal_structure.md +120 -0
  419. package/content/small-business/skills/small-business-reactivate/SKILL.md +109 -0
  420. package/content/small-business/skills/small-business-report-builder/SKILL.md +142 -0
  421. package/content/small-business/skills/small-business-report-builder/reference/data_sources.md +168 -0
  422. package/content/small-business/skills/small-business-report-builder/reference/gotchas.md +155 -0
  423. package/content/small-business/skills/small-business-report-builder/reference/output_template.md +109 -0
  424. package/content/small-business/skills/small-business-report-builder/reference/report_spec.md +109 -0
  425. package/content/small-business/skills/small-business-report-builder/reference/saved_reports.md +50 -0
  426. package/content/small-business/skills/small-business-report-pack/SKILL.md +83 -0
  427. package/content/small-business/skills/small-business-restock/SKILL.md +88 -0
  428. package/content/small-business/skills/small-business-review-reputation/SKILL.md +130 -0
  429. package/content/small-business/skills/small-business-review-reputation/reference/churn-signals.md +110 -0
  430. package/content/small-business/skills/small-business-review-reputation/reference/examples/example-report.md +150 -0
  431. package/content/small-business/skills/small-business-review-reputation/reference/gotchas.md +164 -0
  432. package/content/small-business/skills/small-business-review-reputation/reference/response-patterns.md +123 -0
  433. package/content/small-business/skills/small-business-review-reputation/reference/sources.md +116 -0
  434. package/content/small-business/skills/small-business-seo-ai-visibility/SKILL.md +143 -0
  435. package/content/small-business/skills/small-business-seo-ai-visibility/reference/ai_visibility.md +173 -0
  436. package/content/small-business/skills/small-business-seo-ai-visibility/reference/audit_checklist.md +134 -0
  437. package/content/small-business/skills/small-business-seo-ai-visibility/reference/catalog_refresh.md +126 -0
  438. package/content/small-business/skills/small-business-seo-ai-visibility/reference/content_rewrite.md +113 -0
  439. package/content/small-business/skills/small-business-seo-ai-visibility/reference/gotchas.md +211 -0
  440. package/content/small-business/skills/small-business-smb-onboard/SKILL.md +82 -0
  441. package/content/small-business/skills/small-business-smb-onboard/reference/examples/happy-path.md +190 -0
  442. package/content/small-business/skills/small-business-smb-onboard/reference/gotchas.md +111 -0
  443. package/content/small-business/skills/small-business-smb-onboard/reference/onboard-checklist.md +99 -0
  444. package/content/small-business/skills/small-business-smb-onboard/reference/website-research.md +82 -0
  445. package/content/small-business/skills/small-business-smb-router/SKILL.md +216 -0
  446. package/content/small-business/skills/small-business-smb-router/reference/connector-map.md +96 -0
  447. package/content/small-business/skills/small-business-social-content-engine/SKILL.md +162 -0
  448. package/content/small-business/skills/small-business-social-content-engine/reference/calendar.md +116 -0
  449. package/content/small-business/skills/small-business-social-content-engine/reference/canva-api.md +208 -0
  450. package/content/small-business/skills/small-business-social-content-engine/reference/examples/okonkwo-campaign.md +190 -0
  451. package/content/small-business/skills/small-business-social-content-engine/reference/gotchas.md +447 -0
  452. package/content/small-business/skills/small-business-social-content-engine/reference/publishing.md +166 -0
  453. package/content/small-business/skills/small-business-social-content-engine/reference/shopify-assets.md +77 -0
  454. package/content/small-business/skills/small-business-speed-to-lead/SKILL.md +172 -0
  455. package/content/small-business/skills/small-business-speed-to-lead/reference/approval.md +61 -0
  456. package/content/small-business/skills/small-business-speed-to-lead/reference/gotchas.md +167 -0
  457. package/content/small-business/skills/small-business-speed-to-lead/reference/qualification.md +153 -0
  458. package/content/small-business/skills/small-business-speed-to-lead/reference/response_patterns.md +184 -0
  459. package/content/small-business/skills/small-business-tax-prep/SKILL.md +85 -0
  460. package/content/small-business/skills/small-business-tax-season-organizer/SKILL.md +210 -0
  461. package/content/small-business/skills/small-business-tax-season-organizer/reference/calculation-assumptions.md +177 -0
  462. package/content/small-business/skills/small-business-tax-season-organizer/reference/connector-queries.md +267 -0
  463. package/content/small-business/skills/small-business-tax-season-organizer/reference/examples/quarterly-estimate.md +92 -0
  464. package/content/small-business/skills/small-business-tax-season-organizer/reference/examples/year-end-1099.md +102 -0
  465. package/content/small-business/skills/small-business-tax-season-organizer/reference/gotchas.md +104 -0
  466. package/content/small-business/skills/small-business-tax-season-organizer/reference/output-formats.md +68 -0
  467. package/content/small-business/skills/small-business-ticket-deflector/SKILL.md +164 -0
  468. package/content/small-business/skills/small-business-ticket-deflector/reference/examples/deny-refund-request.md +98 -0
  469. package/content/small-business/skills/small-business-ticket-deflector/reference/examples/respond-refund-request.md +77 -0
  470. package/content/small-business/skills/small-business-ticket-deflector/reference/gotchas.md +57 -0
  471. package/index.ts +83 -0
  472. package/package.json +28 -3
@@ -0,0 +1,447 @@
1
+ # Gotchas
2
+
3
+ Common failure modes for the social-content-engine skill.
4
+
5
+ ---
6
+
7
+ ## Gotcha: Rebuilding the calendar instead of extending it
8
+
9
+ **Why it matters:** The calendar is the durable artifact — it is the reason
10
+ this is a content operation and not a campaign generator. When each run starts
11
+ from a blank calendar, the owner re-approves dates they already approved, and
12
+ posts that were scheduled last month quietly get duplicated or dropped.
13
+
14
+ ### ✗ Bad
15
+
16
+ ```
17
+ Owner: "Give me another month of posts."
18
+ → Build a fresh 30-day calendar from scratch.
19
+ → Two rows collide with posts already scheduled in HubSpot.
20
+ ```
21
+
22
+ ### ✓ Good
23
+
24
+ ```
25
+ Open the existing calendar first, then report:
26
+ Published since last run: 6 posts (Jun 2 – Jun 24)
27
+ Still scheduled: 4 posts (through Jul 6)
28
+ Gap starting: Jul 7
29
+
30
+ "I'll extend from Jul 7. Same cadence, three a week?"
31
+ ```
32
+
33
+ ---
34
+
35
+ ## Gotcha: Writing a caption before reading the voice profile
36
+
37
+ **Why it matters:** Voice fidelity is the stated adoption barrier for this
38
+ skill. Owners do not abandon it because the graphics are wrong; they abandon
39
+ it because the caption sounds like a brand account and not like them. The
40
+ shared profile exists so a correction made once holds across every skill.
41
+
42
+ ### ✗ Bad
43
+
44
+ Draft 12 captions in the owner's general industry register, present them, and
45
+ rewrite all 12 after the owner says "this doesn't sound like me."
46
+
47
+ ### ✓ Good
48
+
49
+ Read `../../../shared/voice-profile.md` first. Anchor on the never-dos before
50
+ each caption, not just the first. If no profile exists, build one from their
51
+ own posts and confirm it before drafting at volume.
52
+
53
+ ---
54
+
55
+ ## Gotcha: Restating a Shopify price from memory
56
+
57
+ **Why it matters:** A wrong price in a public post cannot be quietly fixed
58
+ after a hundred people have seen it. Prices change between sessions, and the
59
+ calendar is long-lived, so a number carried over from an earlier run is
60
+ routinely stale.
61
+
62
+ ### ✗ Bad
63
+
64
+ "The mini-split was USD 2,400 last time we posted — I'll use that again."
65
+
66
+ ### ✓ Good
67
+
68
+ Read `variants[].price` fresh for every post that names a number. If the
69
+ connector did not return one, say the price is unavailable and ask. Only claim
70
+ "was X, now Y" when `compare_at_price` exists and is genuinely higher.
71
+
72
+ ---
73
+
74
+ ## Gotcha: Generating ANY Canva design for an email row
75
+
76
+ **Why it matters:** Canva is out of scope for the email path entirely.
77
+ Canva email-template autofill produces placeholder graphics (stock
78
+ landscapes, blank rectangles) in service-grid tiles, and variation
79
+ thumbnails fail to render in chat. Emails are text-only
80
+ from this skill, period. Generating a Canva email design — even one —
81
+ breaks that rule.
82
+
83
+ ### ✗ Bad
84
+
85
+ ```
86
+ Calendar has 6 social rows + 2 email rows.
87
+ → Step 6 generates 6 social designs + 2 email designs.
88
+ → Email designs ship with placeholder service tiles.
89
+ ```
90
+
91
+ Or any variation: "I'll generate the email template just to give you a
92
+ visual reference," "I found an email template that might work, want to
93
+ preview it?", "Here's a Canva design for the Jun 5 email…" — all
94
+ forbidden.
95
+
96
+ ### ✓ Good
97
+
98
+ ```
99
+ Step 2: Calendar built with Path column.
100
+ - 6 rows tagged Canva (social)
101
+ - 2 rows tagged Text-only (no Canva)
102
+ Step 6: Generates exactly 6 Canva designs. Email rows are not passed
103
+ to any Canva endpoint.
104
+ Step 8: Drafts 6 social captions + 2 full emails (subject + preheader +
105
+ body) as plain text.
106
+ Step 9: Stages 6 social posts. Surfaces 2 emails inline for the owner
107
+ to copy into their email tool.
108
+ ```
109
+
110
+ If the owner explicitly asks for a Canva email design ("can you make me
111
+ a Canva version of the Jun 5 email?"), redirect: "This skill keeps emails
112
+ as text-only because the Canva email path produces placeholder graphics.
113
+ If you want a Canva-designed email, build it directly in Canva and I can
114
+ help you write the copy here."
115
+
116
+ ---
117
+
118
+ ## Gotcha: Generating without a budget plan
119
+
120
+ **Why it matters:** Canva caps API usage at 100 requests/minute per token,
121
+ and each design costs ~5 calls (autofill + export + polling). A 10-row
122
+ campaign with 4 candidates per row generates 40 designs and ~200 API
123
+ calls — and the math gets worse with parallelism. Without a pre-flight
124
+ budget, the owner hits quota mid-campaign with no clear recovery path
125
+ and four already-generated posts sitting unused.
126
+
127
+ ### ✗ Bad
128
+
129
+ ```
130
+ Calendar approved → immediately fire 4 candidates × 8 rows in parallel
131
+ → ~160 API calls in 90 seconds → RATE_LIMIT_EXCEEDED on post 5 → loop
132
+ on retry → owner blocked.
133
+ ```
134
+
135
+ ### ✓ Good
136
+
137
+ ```
138
+ Step 4: "8 Canva rows × 3 candidates = 24 designs, ~120 API calls.
139
+ Proceed at default 3 candidates per row?"
140
+
141
+ Step 6: row 1's 3 candidates fire in parallel → 30s pause → row 2 →
142
+ 30s pause → row 3 → … finishes at ~12 designs/minute, well under the
143
+ quota.
144
+
145
+ If quota does hit anyway: stop, surface progress, ask the owner
146
+ whether to drop to single candidates, pause an hour, or move to
147
+ captions with what's done.
148
+ ```
149
+
150
+ ---
151
+
152
+ ## Gotcha: Skipping Checkpoint 1 (calendar approval) before generating assets
153
+
154
+ **Why it matters:** Generating 10+ Canva designs takes API calls, time, and
155
+ user attention. If the calendar has the wrong dates, wrong channels, or the
156
+ owner changes their mind about a theme, all that work is discarded. The
157
+ calendar checkpoint is the cheapest place to catch misalignment.
158
+
159
+ ### ✗ Bad
160
+
161
+ Receive the brief → immediately start calling `POST /autofills` for all 12
162
+ posts → present designs before the owner has agreed on the schedule.
163
+
164
+ Owner: "Oh wait, I didn't want any posts the week of the 15th, I'm traveling."
165
+
166
+ ### ✓ Good
167
+
168
+ Present the calendar table first. Wait for explicit "looks good" before opening
169
+ a single Canva API call.
170
+
171
+ ---
172
+
173
+ ## Gotcha: Template has more image slots than the brief provides photos for
174
+
175
+ **Why it matters:** Multi-image social templates (Instagram carousels,
176
+ product grids) can have 3+ image slots. When the brief gives you 1 photo
177
+ and the template demands 3, the unfilled slots silently render Canva's
178
+ stock landscape graphic — generic clouds and green hills where product
179
+ photos should be. The design looks "complete" until the owner opens it.
180
+
181
+ (Note: email rows skip Canva entirely in this skill — see SKILL.md Step 2.
182
+ This gotcha applies only to social templates with multiple image slots.)
183
+
184
+ ### ✗ Bad
185
+
186
+ Build manifest with one row per design ("Carousel — needs Hero_Image").
187
+ Upload the one photo. Generate. Carousel ships with slide 1 populated
188
+ and slides 2-3 both showing identical generic landscapes.
189
+
190
+ ### ✓ Good
191
+
192
+ Build manifest slot-by-slot. Surface the gap explicitly:
193
+
194
+ ```
195
+ The "3-product carousel" template has 3 image slots. The brief gave me
196
+ 1 photo. How should I fill the other 2?
197
+
198
+ 1. Reuse the same photo across all 3 slots
199
+ 2. I'll send you 2 more photos
200
+ 3. Pick a single-image template
201
+ ```
202
+
203
+ Wait for the owner's choice before generating. Don't let placeholder
204
+ graphics ship.
205
+
206
+ ---
207
+
208
+ ## Gotcha: Trusting `status: success` without exporting and visually verifying
209
+
210
+ **Why it matters:** A successful autofill job means Canva accepted the
211
+ request and produced a design — not that the design contains the right
212
+ images. If an `asset_id` was empty, stale, or wrong-typed, the job still
213
+ returns `status: success` and the design renders with default placeholder
214
+ graphics. The only way to know is to look at the rendered output.
215
+
216
+ ### ✗ Bad
217
+
218
+ ```
219
+ Job status: success ✓
220
+ result.design.id: present ✓
221
+ → Present to owner
222
+ ```
223
+
224
+ Result: owner opens the carousel and sees stock landscape graphics in 3 of
225
+ 4 designs.
226
+
227
+ ### ✓ Good
228
+
229
+ After the job succeeds, export each design to a permanent PNG via
230
+ `POST /exports` (or `export-design` MCP). Look at each PNG and confirm it
231
+ contains real assets — not Canva's default landscape, not gray rectangles,
232
+ not lorem-ipsum text. Only present to the owner after visual verification
233
+ passes.
234
+
235
+ ---
236
+
237
+ ## Gotcha: One design in a batch fails to render
238
+
239
+ **Why it matters:** When 1 of 4 designs in a batch fails (job error, expired
240
+ preview URL, placeholder rendered) and you present the partial carousel
241
+ anyway, the owner sees three real designs and one "Show Image" gray
242
+ rectangle. They lose trust in the rest of the carousel even though it's
243
+ fine.
244
+
245
+ ### ✗ Bad
246
+
247
+ ```
248
+ Week 1 designs are ready:
249
+ [Option A — real preview]
250
+ [Option B — real preview]
251
+ [Option C — real preview]
252
+ [Option D — Show Image placeholder]
253
+ Which one should I use?
254
+ ```
255
+
256
+ ### ✓ Good
257
+
258
+ When you detect the broken design during Step 6 verification, regenerate just
259
+ that one design with the correct asset_id. Re-export, re-verify. Only
260
+ present once all four designs in the batch have permanent, verified
261
+ previews. If the second attempt also fails, ask the owner whether to skip,
262
+ swap template, or try a different photo.
263
+
264
+ ---
265
+
266
+ ## Gotcha: Generating assets without confirming all autofill fields have values
267
+
268
+ **Why it matters:** Canva autofill silently renders empty placeholders when a
269
+ field value is missing or the referenced `asset_id` doesn't exist. The result
270
+ is a professional-looking template with blank white rectangles where the
271
+ product photo and headline should be.
272
+
273
+ ### ✗ Bad
274
+
275
+ Build calendar → immediately fire all `POST /autofills` in parallel → half
276
+ the designs come back with empty image placeholders because product photos
277
+ weren't uploaded first.
278
+
279
+ ### ✓ Good
280
+
281
+ Build calendar → inventory every autofill field slot-by-slot → upload missing
282
+ product images → confirm all field values with owner → then generate designs
283
+ in parallel, with every field pre-populated.
284
+
285
+ ---
286
+
287
+ ## Gotcha: Passing invalid values to image autofill fields
288
+
289
+ **Why it matters:** When an autofill image field receives an empty string, a
290
+ file path, a URL, or a stale/invalid `asset_id`, Canva does not error — it
291
+ silently renders the template's default placeholder graphic (e.g., a generic
292
+ landscape with clouds and hills). The design looks "finished" but the hero
293
+ image is stock art, not the owner's product photo.
294
+
295
+ ### ✗ Bad
296
+
297
+ Upload product photo → don't wait for the upload job to complete → pass the
298
+ `job_id` (not the `asset.id`) into the autofill data → design renders with
299
+ a placeholder landscape instead of the product photo.
300
+
301
+ ### ✓ Good
302
+
303
+ Upload product photo via `POST /v1/asset-uploads` → poll
304
+ `GET /v1/asset-uploads/{job_id}` until `status == "success"` → extract
305
+ `asset.id` from the response → pass that exact ID into the autofill image
306
+ field. Verify every image field has a confirmed `asset.id` before calling
307
+ `POST /autofills`.
308
+
309
+ ---
310
+
311
+ ## Gotcha: Embedding Canva CDN thumbnail URLs in markdown
312
+
313
+ **Why it matters:** Canva's autofill response returns short-lived,
314
+ authenticated CDN URLs from `design.canva.ai`. These expire within minutes.
315
+ If Claude embeds them as markdown images (`![](design.canva.ai/...)`), they
316
+ render as broken "Show Image" placeholders by the time the message is shown.
317
+
318
+ ### ✗ Bad
319
+
320
+ Generate 8 designs → manually embed each CDN thumbnail URL in the response
321
+ as `![Hero 1](https://design.canva.ai/xxx)` → all images show as broken
322
+ gray placeholders because the URLs expired before render.
323
+
324
+ ### ✓ Good
325
+
326
+ Either let the native Cowork carousel render the tool result automatically,
327
+ or export each design via `POST /exports` and embed the **permanent** export
328
+ URL. As a final fallback, link to the design's permanent edit URL
329
+ (`https://www.canva.com/d/{design_id}`). Never re-embed `design.canva.ai`
330
+ URLs.
331
+
332
+ ---
333
+
334
+ ## Gotcha: Listing designs one-by-one as individual image blocks
335
+
336
+ **Why it matters:** When Claude lists each design as a separate block
337
+ ("Hero 1 / [image] / Hero 2 / [image]"), the images render as broken
338
+ gray "Show Image" placeholders. Presenting all designs together in a
339
+ single grouped batch triggers Cowork's side-by-side carousel, which
340
+ renders correctly.
341
+
342
+ ### ✗ Bad
343
+
344
+ ```
345
+ Hero 1 — Multi-property portfolio
346
+ [Show Image]
347
+ View in Canva: https://canva.com/d/xxx
348
+
349
+ Hero 2 — Coastal market case study
350
+ [Show Image]
351
+ View in Canva: https://canva.com/d/yyy
352
+ ```
353
+
354
+ ### ✓ Good
355
+
356
+ Present all designs in one grouped response so they render as a
357
+ side-by-side carousel. Below the carousel, add a single prompt:
358
+
359
+ ```
360
+ Here are 4 hero designs for Week 1. Scroll through the carousel
361
+ above and let me know which one to keep.
362
+ ```
363
+
364
+ ---
365
+
366
+ ## Gotcha: Generating designs sequentially instead of in parallel
367
+
368
+ **Why it matters:** Generating designs one at a time means the owner waits
369
+ through N round trips instead of one. Fire all generation requests within a
370
+ batch at once and present selection after all jobs complete.
371
+
372
+ ### ✗ Bad
373
+
374
+ Generate design 1 → wait → show it → generate design 2 → wait → show it →
375
+ … × 8 designs. Owner watches a slow drip for 10 minutes.
376
+
377
+ ### ✓ Good
378
+
379
+ Fire all designs in the current batch at once → poll all jobs concurrently →
380
+ once all complete, export each → verify visually → then present.
381
+
382
+ ---
383
+
384
+ ## Gotcha: Auto-selecting a brand template for Pro/Teams users
385
+
386
+ **Why it matters:** Pro/Teams users have no brand-template API access. If
387
+ Claude guesses a template by name and generates with the wrong one, the owner
388
+ gets designs in the wrong colors/fonts and has to redo the work in Canva
389
+ manually.
390
+
391
+ ### ✗ Bad
392
+
393
+ ```
394
+ Found template "Square Post - Blue". Using this for all feed posts.
395
+ ```
396
+ …followed by 8 designs in blue when the brand is green.
397
+
398
+ ### ✓ Good
399
+
400
+ ```
401
+ I found 3 templates in your Canva library that could work for feed posts:
402
+ 1. Square Post - Blue (last edited March 2026)
403
+ 2. Summer Promo - Green (last edited April 2026)
404
+ 3. Product Feature Card (last edited Jan 2026)
405
+
406
+ Which one should I use?
407
+ ```
408
+
409
+ ---
410
+
411
+ ## Gotcha: Caption voice drift across a long calendar
412
+
413
+ **Why it matters:** When drafting 12–20 captions in one pass, the tone tends
414
+ to drift — early captions follow the brief's voice markers, later ones slip
415
+ into generic marketing copy. Owners notice immediately.
416
+
417
+ ### ✗ Bad
418
+
419
+ Post 1: "Our handmade candles are the perfect summer gift 🌿" (matches brief: "warm, conversational")
420
+ Post 10: "Elevate your ambiance with our artisanal fragrance collection." (corporate drift)
421
+
422
+ ### ✓ Good
423
+
424
+ Before drafting, anchor on 2–3 voice markers from the brief (e.g., "casual,
425
+ friendly, uses light humor"). Re-read the first draft caption before writing
426
+ each new one. If the owner flags a voice mismatch on any caption, re-read that
427
+ caption and flag it as the recalibration point for the remaining drafts.
428
+
429
+ ---
430
+
431
+ ## Gotcha: Staging HubSpot posts without verifying `scheduledAt` is in the future
432
+
433
+ **Why it matters:** HubSpot rejects posts with `scheduledAt` in the past with
434
+ a validation error. If the calendar was built on an earlier date and the
435
+ owner is only now staging, some dates may have passed.
436
+
437
+ ### ✗ Bad
438
+
439
+ Build calendar on April 1st for June posts → owner approves May 15th → try to
440
+ stage without checking → post for "April 30th 10:00 AM" returns 400.
441
+
442
+ ### ✓ Good
443
+
444
+ Before calling `POST /social/posts`, compare each `scheduledAt` against the
445
+ current UTC time. If any post date has passed, surface it: "The post scheduled
446
+ for April 30th has already passed. Should I skip it, or reschedule it to next
447
+ week?"
@@ -0,0 +1,166 @@
1
+ # Publishing and staging
2
+
3
+ Two paths, in order of preference. Whichever one runs, the post is **staged,
4
+ never published** — the owner controls go-live and can still cancel or edit.
5
+
6
+ | Path | When | What the owner gets |
7
+ |---|---|---|
8
+ | HubSpot social | Marketing Hub Professional or higher | A scheduled post in the HubSpot campaign queue |
9
+ | Scheduling CSV | No HubSpot, or a non-Professional HubSpot plan | A CSV to import into Buffer, Later, or their tool |
10
+
11
+ ---
12
+
13
+ ## Before staging anything
14
+
15
+ 1. **Every scheduled time must be in the future.** Calendars built weeks ago
16
+ go stale quietly. Compare each time against now and surface any that have
17
+ passed: "The Jul 8 post date has already passed. Skip it or move it?"
18
+ 2. **Every asset URL must be a permanent export URL,** not an autofill
19
+ response thumbnail. Those expire in minutes and attach as broken images.
20
+ 3. **The caption must be the approved one,** not a later edit that skipped
21
+ Checkpoint 3.
22
+
23
+ ---
24
+
25
+ ## HubSpot social staging
26
+
27
+ Requires: **HubSpot Marketing Hub Professional** (or higher).
28
+ Base URL: `https://api.hubapi.com`
29
+ Auth: Bearer token (OAuth 2.0 or private app token).
30
+
31
+ ---
32
+
33
+ ## Tier check
34
+
35
+ If you're unsure whether the user has Marketing Hub Professional:
36
+
37
+ ```
38
+ GET /crm/v3/objects/companies?limit=1
39
+ ```
40
+
41
+ Check the `subscriptionType` on the account. If the API returns a 403 on
42
+ social endpoints, tell the user: "HubSpot campaign staging requires Marketing
43
+ Hub Professional. Your current plan doesn't include it. I can export a
44
+ scheduling CSV instead — would that work?"
45
+
46
+ ---
47
+
48
+ ## Create a campaign
49
+
50
+ ```
51
+ POST /marketing/v3/campaigns
52
+ {
53
+ "name": "Summer Sale 2026 — Social",
54
+ "startDate": "2026-06-01",
55
+ "endDate": "2026-06-30",
56
+ "currencyCode": "<Currency from the Business context block, e.g. AUD>",
57
+ "utm": {
58
+ "source": "social",
59
+ "medium": "owned",
60
+ "campaign": "summer-sale-2026"
61
+ }
62
+ }
63
+ ```
64
+
65
+ Response: `{ "id": "<campaign_id>", ... }` — save this for social post association.
66
+
67
+ ---
68
+
69
+ ## Create a social post
70
+
71
+ One call per calendar row. Stage as `SCHEDULED`, never `PUBLISHED`.
72
+
73
+ ```
74
+ POST /marketing/v3/social/posts
75
+ {
76
+ "campaignId": "<campaign_id>",
77
+ "channelId": "<hubspot_channel_id>",
78
+ "content": {
79
+ "body": "<approved caption text>"
80
+ },
81
+ "scheduledAt": "2026-06-03T10:00:00Z",
82
+ "attachments": [
83
+ {
84
+ "url": "<canva_export_png_url>"
85
+ }
86
+ ],
87
+ "status": "SCHEDULED"
88
+ }
89
+ ```
90
+
91
+ **`channelId`** — the HubSpot Social account ID (not the platform name).
92
+ Retrieve connected accounts:
93
+ ```
94
+ GET /marketing/v3/social/channels
95
+ ```
96
+ Match by `type` (`INSTAGRAM`, `FACEBOOK`, `TWITTER`, `LINKEDIN`) and use the `id` field.
97
+
98
+ **`scheduledAt`** — must be in the future (relative to the time of the API
99
+ call). Use noon local time for the owner's timezone unless they specify
100
+ otherwise.
101
+
102
+ ---
103
+
104
+ ## Verify the scheduled queue
105
+
106
+ After staging all posts:
107
+
108
+ ```
109
+ GET /marketing/v3/social/posts?status=SCHEDULED&campaignId=<campaign_id>
110
+ ```
111
+
112
+ Surface results in a table: date, channel, first 60 chars of caption, status.
113
+ Provide the direct HubSpot campaign URL:
114
+ `https://app.hubspot.com/content/{portalId}/social/campaigns/{campaign_id}`
115
+
116
+ Tell the user: "Posts are scheduled and will publish automatically. You can
117
+ cancel or edit any post in HubSpot before the send time."
118
+
119
+ ---
120
+
121
+ ## CSV fallback (non-Professional users)
122
+
123
+ When HubSpot staging is not available, export a CSV the user can import into
124
+ Buffer, Later, or their scheduler of choice.
125
+
126
+ Column headers:
127
+ ```
128
+ Date,Time,Channel,Caption,ImageURL,Status
129
+ ```
130
+
131
+ Example row:
132
+ ```
133
+ 2026-06-03,10:00 AM CDT,Instagram,"Summer Sale: 30% off candles ☀️ ...",https://canva.com/export/...,Scheduled
134
+ ```
135
+
136
+ Tell the user: "I've prepared a scheduling CSV since your HubSpot plan doesn't
137
+ include social staging. You can import this into Buffer or Later. [file path]"
138
+
139
+ ---
140
+
141
+ ## Field reference
142
+
143
+ | Field | Type | Notes |
144
+ |-------|------|-------|
145
+ | `campaignId` | string | UUID from campaign creation |
146
+ | `channelId` | string | From `GET /social/channels` |
147
+ | `content.body` | string | Caption text; max 2,000 chars |
148
+ | `scheduledAt` | ISO 8601 | Must be future time; include timezone offset |
149
+ | `attachments[].url` | string | Public URL (Canva export URL works) |
150
+ | `status` | enum | Always `"SCHEDULED"` — never `"PUBLISHED"` |
151
+
152
+ ---
153
+
154
+ ## Email handoff
155
+
156
+ Email copy is never staged by this skill, on any path. Present the approved
157
+ subject, preheader, and body inline, grouped by send date, for the owner to
158
+ paste into whatever they send from:
159
+
160
+ ```
161
+ Jul 11 — "Your service plan renews Aug 1"
162
+ Aug 5 — "Two tune-up slots left this month"
163
+ ```
164
+
165
+ That is the whole handoff. Do not offer to send it, and do not build a Canva
166
+ design for it.
@@ -0,0 +1,77 @@
1
+ # Shopify product data into content
2
+
3
+ When Shopify is connected, product photos, titles, descriptions, and prices
4
+ flow straight into design fields and captions. That removes the two steps
5
+ owners abandon on: hunting for a photo, and retyping a price they then get
6
+ wrong.
7
+
8
+ ---
9
+
10
+ ## What to pull
11
+
12
+ Read products and their variants. The fields that matter:
13
+
14
+ | Shopify field | Used for |
15
+ |---|---|
16
+ | `title` | Headline slot, caption subject |
17
+ | `body_html` | Source for the benefit line — strip tags, never paste raw HTML |
18
+ | `images[].src` | Design image slots |
19
+ | `variants[].price` | Price in the caption or a price slot |
20
+ | `variants[].compare_at_price` | Only source for a "was / now" claim |
21
+ | `variants[].inventory_quantity` | Whether to feature it at all |
22
+ | `tags`, `product_type` | Grouping products into a theme |
23
+
24
+ ---
25
+
26
+ ## Turning a product into a post
27
+
28
+ 1. **Pick products worth posting.** Skip anything out of stock or with
29
+ inventory too thin to survive the post working. A sold-out product
30
+ featured on a Tuesday is a customer complaint on Wednesday.
31
+ 2. **Get the image into Canva.** Upload from the Shopify image URL, poll the
32
+ upload job to success, and record the returned asset ID. That ID is the
33
+ only value an autofill image field accepts.
34
+ 3. **Write the benefit line from the description, not with it.** Product
35
+ descriptions are written for a product page, not a feed. Pull the one
36
+ concrete thing and drop the rest.
37
+ 4. **Carry the price through unchanged.** Copy the number from the API
38
+ response. Do not round it, convert it, or infer a sale price.
39
+
40
+ ---
41
+
42
+ ## Price and claim rules
43
+
44
+ A wrong price in a public post is the most expensive error this skill can
45
+ make. The owner cannot quietly fix it after a hundred people have seen it.
46
+
47
+ - Only state a price the connector actually returned.
48
+ - Only say "was X, now Y" when `compare_at_price` exists and is higher than
49
+ `price`. Never compute a discount percentage that Shopify did not imply.
50
+ - Never write "limited stock" or "almost gone" unless the inventory number
51
+ supports it.
52
+ - If a price is missing, say so and ask. Do not fall back to the last price
53
+ seen in an earlier session — prices change and the calendar is long-lived.
54
+
55
+ ---
56
+
57
+ ## Multiple products in one design
58
+
59
+ Product grids and carousels have one image slot per product. Enumerate them
60
+ individually and map each to a specific product before generating:
61
+
62
+ ```
63
+ Slot Product1_Image → "18k BTU Mini-Split" → asset_id confirmed
64
+ Slot Product2_Image → "Smart Thermostat" → asset_id confirmed
65
+ Slot Product3_Image → — → MISSING, ask the owner
66
+ ```
67
+
68
+ Never fill a slot with a repeated photo without asking. Three identical tiles
69
+ in a "three products" grid reads as a mistake, because it is one.
70
+
71
+ ---
72
+
73
+ ## Without Shopify
74
+
75
+ The fallback is the owner's photo folder plus whatever the brief states. It is
76
+ a complete path — it just costs an upload and a typed price, and the price
77
+ then needs confirming out loud before anything publishes.