opencode-knowledge-work 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +212 -0
- package/README.md +124 -2
- package/content/bio-research/.mcp.json +48 -0
- package/content/bio-research/CONNECTORS.md +23 -0
- package/content/bio-research/LICENSE +202 -0
- package/content/bio-research/README.md +83 -0
- package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/LICENSE.txt +201 -0
- package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/SKILL.md +280 -0
- package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/references/asm_schema_overview.md +226 -0
- package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/references/field_classification_guide.md +503 -0
- package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/references/flattening_guide.md +254 -0
- package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/references/supported_instruments.md +151 -0
- package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/requirements.txt +26 -0
- package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/scripts/convert_to_asm.py +543 -0
- package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/scripts/export_parser.py +481 -0
- package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/scripts/flatten_asm.py +254 -0
- package/content/bio-research/skills/bio-research-instrument-data-to-allotrope/scripts/validate_asm.py +1102 -0
- package/content/bio-research/skills/bio-research-nextflow-development/LICENSE.txt +201 -0
- package/content/bio-research/skills/bio-research-nextflow-development/SKILL.md +290 -0
- package/content/bio-research/skills/bio-research-nextflow-development/references/geo-sra-acquisition.md +416 -0
- package/content/bio-research/skills/bio-research-nextflow-development/references/installation.md +96 -0
- package/content/bio-research/skills/bio-research-nextflow-development/references/pipelines/atacseq.md +138 -0
- package/content/bio-research/skills/bio-research-nextflow-development/references/pipelines/rnaseq.md +118 -0
- package/content/bio-research/skills/bio-research-nextflow-development/references/pipelines/sarek.md +145 -0
- package/content/bio-research/skills/bio-research-nextflow-development/references/troubleshooting.md +137 -0
- package/content/bio-research/skills/bio-research-nextflow-development/scripts/check_environment.py +452 -0
- package/content/bio-research/skills/bio-research-nextflow-development/scripts/config/genomes.yaml +148 -0
- package/content/bio-research/skills/bio-research-nextflow-development/scripts/config/pipelines/atacseq.yaml +187 -0
- package/content/bio-research/skills/bio-research-nextflow-development/scripts/config/pipelines/rnaseq.yaml +147 -0
- package/content/bio-research/skills/bio-research-nextflow-development/scripts/config/pipelines/sarek.yaml +233 -0
- package/content/bio-research/skills/bio-research-nextflow-development/scripts/detect_data_type.py +300 -0
- package/content/bio-research/skills/bio-research-nextflow-development/scripts/generate_samplesheet.py +455 -0
- package/content/bio-research/skills/bio-research-nextflow-development/scripts/manage_genomes.py +521 -0
- package/content/bio-research/skills/bio-research-nextflow-development/scripts/sra_geo_fetch.py +732 -0
- package/content/bio-research/skills/bio-research-nextflow-development/scripts/utils/__init__.py +69 -0
- package/content/bio-research/skills/bio-research-nextflow-development/scripts/utils/file_discovery.py +189 -0
- package/content/bio-research/skills/bio-research-nextflow-development/scripts/utils/ncbi_utils.py +808 -0
- package/content/bio-research/skills/bio-research-nextflow-development/scripts/utils/sample_inference.py +290 -0
- package/content/bio-research/skills/bio-research-nextflow-development/scripts/utils/validators.py +256 -0
- package/content/bio-research/skills/bio-research-scientific-problem-selection/LICENSE.txt +201 -0
- package/content/bio-research/skills/bio-research-scientific-problem-selection/SKILL.md +269 -0
- package/content/bio-research/skills/bio-research-scientific-problem-selection/references/01-intuition-pumps.md +264 -0
- package/content/bio-research/skills/bio-research-scientific-problem-selection/references/02-risk-assessment.md +323 -0
- package/content/bio-research/skills/bio-research-scientific-problem-selection/references/03-optimization-function.md +481 -0
- package/content/bio-research/skills/bio-research-scientific-problem-selection/references/04-parameter-strategy.md +396 -0
- package/content/bio-research/skills/bio-research-scientific-problem-selection/references/05-decision-tree.md +85 -0
- package/content/bio-research/skills/bio-research-scientific-problem-selection/references/06-adversity-planning.md +123 -0
- package/content/bio-research/skills/bio-research-scientific-problem-selection/references/07-problem-inversion.md +152 -0
- package/content/bio-research/skills/bio-research-scientific-problem-selection/references/08-integration-synthesis.md +173 -0
- package/content/bio-research/skills/bio-research-scientific-problem-selection/references/09-meta-framework.md +504 -0
- package/content/bio-research/skills/bio-research-scvi-tools/LICENSE.txt +201 -0
- package/content/bio-research/skills/bio-research-scvi-tools/SKILL.md +155 -0
- package/content/bio-research/skills/bio-research-scvi-tools/references/atac_peakvi.md +398 -0
- package/content/bio-research/skills/bio-research-scvi-tools/references/batch_correction_sysvi.md +417 -0
- package/content/bio-research/skills/bio-research-scvi-tools/references/citeseq_totalvi.md +420 -0
- package/content/bio-research/skills/bio-research-scvi-tools/references/data_preparation.md +286 -0
- package/content/bio-research/skills/bio-research-scvi-tools/references/environment_setup.md +254 -0
- package/content/bio-research/skills/bio-research-scvi-tools/references/label_transfer.md +373 -0
- package/content/bio-research/skills/bio-research-scvi-tools/references/multiome_multivi.md +384 -0
- package/content/bio-research/skills/bio-research-scvi-tools/references/rna_velocity_velovi.md +410 -0
- package/content/bio-research/skills/bio-research-scvi-tools/references/scarches_mapping.md +401 -0
- package/content/bio-research/skills/bio-research-scvi-tools/references/scrna_integration.md +429 -0
- package/content/bio-research/skills/bio-research-scvi-tools/references/spatial_deconvolution.md +438 -0
- package/content/bio-research/skills/bio-research-scvi-tools/references/troubleshooting.md +420 -0
- package/content/bio-research/skills/bio-research-scvi-tools/scripts/cluster_embed.py +212 -0
- package/content/bio-research/skills/bio-research-scvi-tools/scripts/differential_expression.py +220 -0
- package/content/bio-research/skills/bio-research-scvi-tools/scripts/integrate_datasets.py +237 -0
- package/content/bio-research/skills/bio-research-scvi-tools/scripts/model_utils.py +634 -0
- package/content/bio-research/skills/bio-research-scvi-tools/scripts/prepare_data.py +169 -0
- package/content/bio-research/skills/bio-research-scvi-tools/scripts/train_model.py +370 -0
- package/content/bio-research/skills/bio-research-scvi-tools/scripts/transfer_labels.py +224 -0
- package/content/bio-research/skills/bio-research-scvi-tools/scripts/validate_adata.py +397 -0
- package/content/bio-research/skills/bio-research-single-cell-rna-qc/LICENSE.txt +201 -0
- package/content/bio-research/skills/bio-research-single-cell-rna-qc/SKILL.md +175 -0
- package/content/bio-research/skills/bio-research-single-cell-rna-qc/references/scverse_qc_guidelines.md +186 -0
- package/content/bio-research/skills/bio-research-single-cell-rna-qc/scripts/qc_analysis.py +232 -0
- package/content/bio-research/skills/bio-research-single-cell-rna-qc/scripts/qc_core.py +233 -0
- package/content/bio-research/skills/bio-research-single-cell-rna-qc/scripts/qc_plotting.py +235 -0
- package/content/bio-research/skills/bio-research-start/SKILL.md +79 -0
- package/content/customer-support/.mcp.json +40 -0
- package/content/customer-support/CONNECTORS.md +19 -0
- package/content/customer-support/LICENSE +202 -0
- package/content/customer-support/README.md +140 -0
- package/content/customer-support/skills/customer-support-customer-escalation/SKILL.md +248 -0
- package/content/customer-support/skills/customer-support-customer-research/SKILL.md +252 -0
- package/content/customer-support/skills/customer-support-draft-response/SKILL.md +418 -0
- package/content/customer-support/skills/customer-support-kb-article/SKILL.md +351 -0
- package/content/customer-support/skills/customer-support-ticket-triage/SKILL.md +275 -0
- package/content/data/.mcp.json +36 -0
- package/content/data/CONNECTORS.md +18 -0
- package/content/data/LICENSE +202 -0
- package/content/data/README.md +121 -0
- package/content/data/skills/data-analyze/SKILL.md +119 -0
- package/content/data/skills/data-build-dashboard/SKILL.md +924 -0
- package/content/data/skills/data-create-viz/SKILL.md +154 -0
- package/content/data/skills/data-data-context-extractor/SKILL.md +227 -0
- package/content/data/skills/data-data-context-extractor/references/domain-template.md +147 -0
- package/content/data/skills/data-data-context-extractor/references/example-output.md +198 -0
- package/content/data/skills/data-data-context-extractor/references/skill-template.md +148 -0
- package/content/data/skills/data-data-context-extractor/references/sql-dialects.md +121 -0
- package/content/data/skills/data-data-context-extractor/scripts/package_data_skill.py +126 -0
- package/content/data/skills/data-data-visualization/SKILL.md +305 -0
- package/content/data/skills/data-explore-data/SKILL.md +325 -0
- package/content/data/skills/data-sql-queries/SKILL.md +428 -0
- package/content/data/skills/data-statistical-analysis/SKILL.md +245 -0
- package/content/data/skills/data-validate-data/SKILL.md +383 -0
- package/content/data/skills/data-write-query/SKILL.md +122 -0
- package/content/design/.mcp.json +44 -0
- package/content/design/CONNECTORS.md +18 -0
- package/content/design/README.md +117 -0
- package/content/design/skills/design-accessibility-review/SKILL.md +128 -0
- package/content/design/skills/design-design-critique/SKILL.md +118 -0
- package/content/design/skills/design-design-handoff/SKILL.md +131 -0
- package/content/design/skills/design-design-system/SKILL.md +190 -0
- package/content/design/skills/design-research-synthesis/SKILL.md +92 -0
- package/content/design/skills/design-user-research/SKILL.md +41 -0
- package/content/design/skills/design-ux-copy/SKILL.md +107 -0
- package/content/engineering/.mcp.json +48 -0
- package/content/engineering/CONNECTORS.md +19 -0
- package/content/engineering/README.md +136 -0
- package/content/engineering/skills/engineering-architecture/SKILL.md +85 -0
- package/content/engineering/skills/engineering-code-review/SKILL.md +118 -0
- package/content/engineering/skills/engineering-debug/SKILL.md +95 -0
- package/content/engineering/skills/engineering-deploy-checklist/SKILL.md +78 -0
- package/content/engineering/skills/engineering-documentation/SKILL.md +49 -0
- package/content/engineering/skills/engineering-incident-response/SKILL.md +158 -0
- package/content/engineering/skills/engineering-standup/SKILL.md +75 -0
- package/content/engineering/skills/engineering-system-design/SKILL.md +42 -0
- package/content/engineering/skills/engineering-tech-debt/SKILL.md +32 -0
- package/content/engineering/skills/engineering-testing-strategy/SKILL.md +33 -0
- package/content/enterprise-search/.mcp.json +36 -0
- package/content/enterprise-search/CONNECTORS.md +21 -0
- package/content/enterprise-search/LICENSE +202 -0
- package/content/enterprise-search/README.md +157 -0
- package/content/enterprise-search/skills/enterprise-search-digest/SKILL.md +173 -0
- package/content/enterprise-search/skills/enterprise-search-knowledge-synthesis/SKILL.md +258 -0
- package/content/enterprise-search/skills/enterprise-search-search/SKILL.md +178 -0
- package/content/enterprise-search/skills/enterprise-search-search-strategy/SKILL.md +222 -0
- package/content/enterprise-search/skills/enterprise-search-source-management/SKILL.md +173 -0
- package/content/finance/.mcp.json +32 -0
- package/content/finance/CONNECTORS.md +20 -0
- package/content/finance/LICENSE +202 -0
- package/content/finance/README.md +92 -0
- package/content/finance/skills/finance-audit-support/SKILL.md +374 -0
- package/content/finance/skills/finance-close-management/SKILL.md +221 -0
- package/content/finance/skills/finance-financial-statements/SKILL.md +335 -0
- package/content/finance/skills/finance-journal-entry/SKILL.md +131 -0
- package/content/finance/skills/finance-journal-entry-prep/SKILL.md +186 -0
- package/content/finance/skills/finance-reconciliation/SKILL.md +175 -0
- package/content/finance/skills/finance-sox-testing/SKILL.md +218 -0
- package/content/finance/skills/finance-variance-analysis/SKILL.md +266 -0
- package/content/human-resources/.mcp.json +28 -0
- package/content/human-resources/CONNECTORS.md +19 -0
- package/content/human-resources/README.md +138 -0
- package/content/human-resources/skills/human-resources-comp-analysis/SKILL.md +92 -0
- package/content/human-resources/skills/human-resources-draft-offer/SKILL.md +82 -0
- package/content/human-resources/skills/human-resources-interview-prep/SKILL.md +37 -0
- package/content/human-resources/skills/human-resources-onboarding/SKILL.md +104 -0
- package/content/human-resources/skills/human-resources-org-planning/SKILL.md +28 -0
- package/content/human-resources/skills/human-resources-people-report/SKILL.md +99 -0
- package/content/human-resources/skills/human-resources-performance-review/SKILL.md +149 -0
- package/content/human-resources/skills/human-resources-policy-lookup/SKILL.md +94 -0
- package/content/human-resources/skills/human-resources-recruiting-pipeline/SKILL.md +31 -0
- package/content/legal/.mcp.json +36 -0
- package/content/legal/CONNECTORS.md +21 -0
- package/content/legal/LICENSE +202 -0
- package/content/legal/README.md +234 -0
- package/content/legal/skills/legal-brief/SKILL.md +208 -0
- package/content/legal/skills/legal-compliance-check/SKILL.md +274 -0
- package/content/legal/skills/legal-legal-response/SKILL.md +457 -0
- package/content/legal/skills/legal-legal-risk-assessment/SKILL.md +265 -0
- package/content/legal/skills/legal-meeting-briefing/SKILL.md +220 -0
- package/content/legal/skills/legal-review-contract/SKILL.md +358 -0
- package/content/legal/skills/legal-signature-request/SKILL.md +104 -0
- package/content/legal/skills/legal-triage-nda/SKILL.md +262 -0
- package/content/legal/skills/legal-vendor-check/SKILL.md +159 -0
- package/content/manifest.json +86 -0
- package/content/marketing/.mcp.json +60 -0
- package/content/marketing/CONNECTORS.md +20 -0
- package/content/marketing/LICENSE +202 -0
- package/content/marketing/README.md +90 -0
- package/content/marketing/skills/marketing-brand-review/SKILL.md +276 -0
- package/content/marketing/skills/marketing-campaign-plan/SKILL.md +308 -0
- package/content/marketing/skills/marketing-competitive-brief/SKILL.md +331 -0
- package/content/marketing/skills/marketing-content-creation/SKILL.md +157 -0
- package/content/marketing/skills/marketing-draft-content/SKILL.md +117 -0
- package/content/marketing/skills/marketing-email-sequence/SKILL.md +220 -0
- package/content/marketing/skills/marketing-performance-report/SKILL.md +392 -0
- package/content/marketing/skills/marketing-seo-audit/SKILL.md +190 -0
- package/content/operations/.mcp.json +32 -0
- package/content/operations/CONNECTORS.md +20 -0
- package/content/operations/README.md +135 -0
- package/content/operations/skills/operations-capacity-plan/SKILL.md +113 -0
- package/content/operations/skills/operations-change-request/SKILL.md +121 -0
- package/content/operations/skills/operations-compliance-tracking/SKILL.md +44 -0
- package/content/operations/skills/operations-process-doc/SKILL.md +82 -0
- package/content/operations/skills/operations-process-optimization/SKILL.md +39 -0
- package/content/operations/skills/operations-risk-assessment/SKILL.md +40 -0
- package/content/operations/skills/operations-runbook/SKILL.md +87 -0
- package/content/operations/skills/operations-status-report/SKILL.md +77 -0
- package/content/operations/skills/operations-vendor-review/SKILL.md +104 -0
- package/content/pdf-viewer/.mcp.json +8 -0
- package/content/pdf-viewer/CONNECTORS.md +15 -0
- package/content/pdf-viewer/LICENSE +202 -0
- package/content/pdf-viewer/README.md +57 -0
- package/content/pdf-viewer/commands/annotate.md +51 -0
- package/content/pdf-viewer/commands/fill-form.md +73 -0
- package/content/pdf-viewer/commands/open.md +34 -0
- package/content/pdf-viewer/commands/sign.md +54 -0
- package/content/pdf-viewer/skills/pdf-viewer-view-pdf/SKILL.md +147 -0
- package/content/product-management/.mcp.json +72 -0
- package/content/product-management/CONNECTORS.md +22 -0
- package/content/product-management/LICENSE +202 -0
- package/content/product-management/README.md +118 -0
- package/content/product-management/commands/brainstorm.md +120 -0
- package/content/product-management/skills/product-management-competitive-brief/SKILL.md +302 -0
- package/content/product-management/skills/product-management-metrics-review/SKILL.md +388 -0
- package/content/product-management/skills/product-management-product-brainstorming/SKILL.md +273 -0
- package/content/product-management/skills/product-management-roadmap-update/SKILL.md +266 -0
- package/content/product-management/skills/product-management-sprint-planning/SKILL.md +94 -0
- package/content/product-management/skills/product-management-stakeholder-update/SKILL.md +352 -0
- package/content/product-management/skills/product-management-synthesize-research/SKILL.md +312 -0
- package/content/product-management/skills/product-management-write-spec/SKILL.md +250 -0
- package/content/productivity/.mcp.json +44 -0
- package/content/productivity/CONNECTORS.md +18 -0
- package/content/productivity/LICENSE +202 -0
- package/content/productivity/README.md +97 -0
- package/content/productivity/skills/dashboard.html +3111 -0
- package/content/productivity/skills/productivity-memory-management/SKILL.md +323 -0
- package/content/productivity/skills/productivity-start/SKILL.md +158 -0
- package/content/productivity/skills/productivity-task-management/SKILL.md +91 -0
- package/content/productivity/skills/productivity-update/SKILL.md +168 -0
- package/content/sales/.mcp.json +100 -0
- package/content/sales/CONNECTORS.md +36 -0
- package/content/sales/LICENSE +202 -0
- package/content/sales/README.md +148 -0
- package/content/sales/skills/sales-account-context/SKILL.md +94 -0
- package/content/sales/skills/sales-account-plan/SKILL.md +95 -0
- package/content/sales/skills/sales-account-research/SKILL.md +99 -0
- package/content/sales/skills/sales-account-tiering/SKILL.md +101 -0
- package/content/sales/skills/sales-call-prep/SKILL.md +111 -0
- package/content/sales/skills/sales-call-summary/SKILL.md +111 -0
- package/content/sales/skills/sales-close-plan/SKILL.md +106 -0
- package/content/sales/skills/sales-competitive-intelligence/SKILL.md +102 -0
- package/content/sales/skills/sales-create-an-asset/SKILL.md +105 -0
- package/content/sales/skills/sales-crm-hygiene-check/SKILL.md +103 -0
- package/content/sales/skills/sales-customer-health/SKILL.md +108 -0
- package/content/sales/skills/sales-customer-voice/SKILL.md +94 -0
- package/content/sales/skills/sales-daily-briefing/SKILL.md +61 -0
- package/content/sales/skills/sales-deal-advance-gap/SKILL.md +102 -0
- package/content/sales/skills/sales-deal-review/SKILL.md +105 -0
- package/content/sales/skills/sales-deal-signals/SKILL.md +96 -0
- package/content/sales/skills/sales-deal-slip-scenario/SKILL.md +101 -0
- package/content/sales/skills/sales-draft-outreach/SKILL.md +116 -0
- package/content/sales/skills/sales-end-of-day/SKILL.md +114 -0
- package/content/sales/skills/sales-expansion-whitespace/SKILL.md +97 -0
- package/content/sales/skills/sales-forecast/SKILL.md +100 -0
- package/content/sales/skills/sales-handle-objection/SKILL.md +93 -0
- package/content/sales/skills/sales-inbox-sweep/SKILL.md +114 -0
- package/content/sales/skills/sales-lead-triage/SKILL.md +105 -0
- package/content/sales/skills/sales-log-activity/SKILL.md +111 -0
- package/content/sales/skills/sales-pipeline-review/SKILL.md +97 -0
- package/content/sales/skills/sales-renewal-radar/SKILL.md +95 -0
- package/content/sales/skills/sales-rep-context/SKILL.md +90 -0
- package/content/sales/skills/sales-route-lead/SKILL.md +111 -0
- package/content/sales/skills/sales-schedule-meeting/SKILL.md +99 -0
- package/content/sales/skills/sales-setup/SKILL.md +195 -0
- package/content/sales/skills/sales-stakeholder-map/SKILL.md +107 -0
- package/content/sales/skills/sales-team-pipeline/SKILL.md +105 -0
- package/content/sales/skills/sales-update-opportunity/SKILL.md +111 -0
- package/content/sales/skills/sales-weekly-wrap/SKILL.md +90 -0
- package/content/sales/skills/sales-win-loss-review/SKILL.md +88 -0
- package/content/small-business/.mcp.json +148 -0
- package/content/small-business/README.md +117 -0
- package/content/small-business/skills/small-business-ad-manager/SKILL.md +128 -0
- package/content/small-business/skills/small-business-ad-manager/reference/ad_copy.md +112 -0
- package/content/small-business/skills/small-business-ad-manager/reference/change_playbook.md +127 -0
- package/content/small-business/skills/small-business-ad-manager/reference/data_sources.md +100 -0
- package/content/small-business/skills/small-business-ad-manager/reference/diagnostics.md +89 -0
- package/content/small-business/skills/small-business-ad-manager/reference/gotchas.md +181 -0
- package/content/small-business/skills/small-business-ap-processor/SKILL.md +158 -0
- package/content/small-business/skills/small-business-ap-processor/reference/coding_rules.md +70 -0
- package/content/small-business/skills/small-business-ap-processor/reference/gotchas.md +131 -0
- package/content/small-business/skills/small-business-ap-processor/reference/intake_and_extraction.md +82 -0
- package/content/small-business/skills/small-business-ap-processor/reference/matching_and_exceptions.md +80 -0
- package/content/small-business/skills/small-business-ap-processor/reference/payment_run.md +77 -0
- package/content/small-business/skills/small-business-brand-style/SKILL.md +106 -0
- package/content/small-business/skills/small-business-build-agent/SKILL.md +105 -0
- package/content/small-business/skills/small-business-build-agent/reference/capture.md +133 -0
- package/content/small-business/skills/small-business-build-agent/reference/gotchas.md +204 -0
- package/content/small-business/skills/small-business-build-agent/reference/skill_authoring.md +165 -0
- package/content/small-business/skills/small-business-build-connector/SKILL.md +102 -0
- package/content/small-business/skills/small-business-build-connector/reference/discovery.md +120 -0
- package/content/small-business/skills/small-business-build-connector/reference/gotchas.md +237 -0
- package/content/small-business/skills/small-business-build-connector/reference/paths.md +106 -0
- package/content/small-business/skills/small-business-build-connector/reference/use-zapier.md +128 -0
- package/content/small-business/skills/small-business-business-pulse/SKILL.md +181 -0
- package/content/small-business/skills/small-business-business-pulse/reference/data_sources.md +173 -0
- package/content/small-business/skills/small-business-business-pulse/reference/gotchas.md +103 -0
- package/content/small-business/skills/small-business-business-pulse/reference/output_template.md +109 -0
- package/content/small-business/skills/small-business-business-pulse/reference/thresholds.md +71 -0
- package/content/small-business/skills/small-business-business-pulse/reference/v2_sources.md +63 -0
- package/content/small-business/skills/small-business-call-list/SKILL.md +82 -0
- package/content/small-business/skills/small-business-canva-creator/SKILL.md +448 -0
- package/content/small-business/skills/small-business-canva-creator/reference/canva-api.md +208 -0
- package/content/small-business/skills/small-business-canva-creator/reference/examples/boutique-brief-campaign.md +181 -0
- package/content/small-business/skills/small-business-canva-creator/reference/gotchas.md +380 -0
- package/content/small-business/skills/small-business-canva-creator/reference/hubspot-staging.md +137 -0
- package/content/small-business/skills/small-business-cash-flow-snapshot/SKILL.md +251 -0
- package/content/small-business/skills/small-business-cash-flow-snapshot/reference/examples/worked-example.md +92 -0
- package/content/small-business/skills/small-business-cash-flow-snapshot/reference/gotchas.md +62 -0
- package/content/small-business/skills/small-business-cash-flow-snapshot/reference/v2_sources.md +84 -0
- package/content/small-business/skills/small-business-close-month/SKILL.md +86 -0
- package/content/small-business/skills/small-business-content-strategy/SKILL.md +152 -0
- package/content/small-business/skills/small-business-content-strategy/reference/examples/retail-boutique-example.md +71 -0
- package/content/small-business/skills/small-business-content-strategy/reference/gotchas.md +104 -0
- package/content/small-business/skills/small-business-content-strategy/reference/v2_sources.md +40 -0
- package/content/small-business/skills/small-business-contract-review/SKILL.md +158 -0
- package/content/small-business/skills/small-business-contract-review/reference/docusign-fetch.md +32 -0
- package/content/small-business/skills/small-business-contract-review/reference/examples/flagged-summary-saas.md +97 -0
- package/content/small-business/skills/small-business-contract-review/reference/gmail-fetch.md +30 -0
- package/content/small-business/skills/small-business-contract-review/reference/gotchas.md +105 -0
- package/content/small-business/skills/small-business-contract-review/reference/m365-fetch.md +60 -0
- package/content/small-business/skills/small-business-crm-autopilot/SKILL.md +162 -0
- package/content/small-business/skills/small-business-crm-autopilot/reference/cleanup-checklist.md +82 -0
- package/content/small-business/skills/small-business-crm-autopilot/reference/examples/cleanup-deal.md +83 -0
- package/content/small-business/skills/small-business-crm-autopilot/reference/examples/log-call-happy-path.md +68 -0
- package/content/small-business/skills/small-business-crm-autopilot/reference/examples/log-email-happy-path.md +50 -0
- package/content/small-business/skills/small-business-crm-autopilot/reference/gotchas.md +110 -0
- package/content/small-business/skills/small-business-crm-autopilot/reference/hubspot-fields.md +62 -0
- package/content/small-business/skills/small-business-crm-autopilot/reference/lightweight_crm.md +125 -0
- package/content/small-business/skills/small-business-crm-autopilot/reference/salesforce-fields.md +122 -0
- package/content/small-business/skills/small-business-crm-autopilot/reference/standing_mode.md +144 -0
- package/content/small-business/skills/small-business-grant-rfp-writer/SKILL.md +162 -0
- package/content/small-business/skills/small-business-grant-rfp-writer/reference/drafting.md +129 -0
- package/content/small-business/skills/small-business-grant-rfp-writer/reference/go_no_go.md +125 -0
- package/content/small-business/skills/small-business-grant-rfp-writer/reference/gotchas.md +180 -0
- package/content/small-business/skills/small-business-grant-rfp-writer/reference/opportunity_sources.md +90 -0
- package/content/small-business/skills/small-business-grant-rfp-writer/reference/org_profile.md +81 -0
- package/content/small-business/skills/small-business-grow-pipeline/SKILL.md +92 -0
- package/content/small-business/skills/small-business-growth-pulse/SKILL.md +143 -0
- package/content/small-business/skills/small-business-growth-pulse/reference/data_sources.md +113 -0
- package/content/small-business/skills/small-business-growth-pulse/reference/gotchas.md +175 -0
- package/content/small-business/skills/small-business-growth-pulse/reference/output_template.md +122 -0
- package/content/small-business/skills/small-business-growth-pulse/reference/thresholds.md +110 -0
- package/content/small-business/skills/small-business-hiring-screener/SKILL.md +137 -0
- package/content/small-business/skills/small-business-hiring-screener/reference/candidate_comms.md +132 -0
- package/content/small-business/skills/small-business-hiring-screener/reference/fair_screening.md +103 -0
- package/content/small-business/skills/small-business-hiring-screener/reference/gotchas.md +183 -0
- package/content/small-business/skills/small-business-hiring-screener/reference/onboarding.md +82 -0
- package/content/small-business/skills/small-business-hiring-screener/reference/rubric.md +122 -0
- package/content/small-business/skills/small-business-inbox-manager/SKILL.md +130 -0
- package/content/small-business/skills/small-business-inbox-manager/reference/digest_format.md +110 -0
- package/content/small-business/skills/small-business-inbox-manager/reference/gotchas.md +220 -0
- package/content/small-business/skills/small-business-inbox-manager/reference/handoffs.md +77 -0
- package/content/small-business/skills/small-business-inbox-manager/reference/reply_drafting.md +116 -0
- package/content/small-business/skills/small-business-inbox-manager/reference/triage_rules.md +72 -0
- package/content/small-business/skills/small-business-inventory-planner/SKILL.md +126 -0
- package/content/small-business/skills/small-business-inventory-planner/reference/data_sources.md +94 -0
- package/content/small-business/skills/small-business-inventory-planner/reference/gotchas.md +153 -0
- package/content/small-business/skills/small-business-inventory-planner/reference/po_drafting.md +92 -0
- package/content/small-business/skills/small-business-inventory-planner/reference/seasonality.md +112 -0
- package/content/small-business/skills/small-business-inventory-planner/reference/velocity_and_reorder.md +154 -0
- package/content/small-business/skills/small-business-invoice-chase/SKILL.md +131 -0
- package/content/small-business/skills/small-business-invoice-chase/reference/examples/firm-reminder.md +28 -0
- package/content/small-business/skills/small-business-invoice-chase/reference/examples/gentle-reminder.md +27 -0
- package/content/small-business/skills/small-business-invoice-chase/reference/gotchas.md +75 -0
- package/content/small-business/skills/small-business-invoice-chase/reference/tone-matching.md +44 -0
- package/content/small-business/skills/small-business-invoice-chase/reference/v2_sources.md +78 -0
- package/content/small-business/skills/small-business-job-post-builder/SKILL.md +204 -0
- package/content/small-business/skills/small-business-job-post-builder/reference/docusign-routing.md +63 -0
- package/content/small-business/skills/small-business-job-post-builder/reference/examples/worked-example.md +110 -0
- package/content/small-business/skills/small-business-job-post-builder/reference/existing-document-merge.md +58 -0
- package/content/small-business/skills/small-business-job-post-builder/reference/gotchas.md +68 -0
- package/content/small-business/skills/small-business-job-post-builder/reference/interview-guide-structure.md +93 -0
- package/content/small-business/skills/small-business-job-post-builder/reference/job-post-structure.md +62 -0
- package/content/small-business/skills/small-business-job-post-builder/reference/offer-letter-template.md +145 -0
- package/content/small-business/skills/small-business-job-post-builder/reference/role-intake.md +73 -0
- package/content/small-business/skills/small-business-lead-finder/SKILL.md +119 -0
- package/content/small-business/skills/small-business-lead-finder/reference/gotchas.md +152 -0
- package/content/small-business/skills/small-business-lead-finder/reference/icp_method.md +97 -0
- package/content/small-business/skills/small-business-lead-finder/reference/output_template.md +124 -0
- package/content/small-business/skills/small-business-lead-finder/reference/scoring.md +92 -0
- package/content/small-business/skills/small-business-lead-finder/reference/sourcing.md +78 -0
- package/content/small-business/skills/small-business-lead-triage/SKILL.md +81 -0
- package/content/small-business/skills/small-business-lead-triage/reference/examples/happy-path-triage.md +68 -0
- package/content/small-business/skills/small-business-lead-triage/reference/gotchas.md +76 -0
- package/content/small-business/skills/small-business-lead-triage/reference/hubspot-scoring.md +169 -0
- package/content/small-business/skills/small-business-marketing-monday/SKILL.md +108 -0
- package/content/small-business/skills/small-business-monday-brief/SKILL.md +97 -0
- package/content/small-business/skills/small-business-month-end-prep/SKILL.md +331 -0
- package/content/small-business/skills/small-business-month-end-prep/reference/close-packet-format.md +127 -0
- package/content/small-business/skills/small-business-month-end-prep/reference/examples/pl-narrative.md +52 -0
- package/content/small-business/skills/small-business-month-end-prep/reference/gotchas.md +113 -0
- package/content/small-business/skills/small-business-month-end-prep/reference/paypal-settlements.md +110 -0
- package/content/small-business/skills/small-business-month-end-prep/reference/quickbooks-reconcile.md +71 -0
- package/content/small-business/skills/small-business-month-end-prep/reference/v2_sources.md +125 -0
- package/content/small-business/skills/small-business-month-end-prep/reference/xero-reconcile.md +175 -0
- package/content/small-business/skills/small-business-month-end-prep/reference/zoho-books-reconcile.md +168 -0
- package/content/small-business/skills/small-business-outreach-composer/SKILL.md +144 -0
- package/content/small-business/skills/small-business-outreach-composer/reference/gotchas.md +213 -0
- package/content/small-business/skills/small-business-outreach-composer/reference/output_template.md +147 -0
- package/content/small-business/skills/small-business-outreach-composer/reference/sequence_patterns.md +99 -0
- package/content/small-business/skills/small-business-outreach-composer/reference/slop_test.md +164 -0
- package/content/small-business/skills/small-business-pay-the-bills/SKILL.md +101 -0
- package/content/small-business/skills/small-business-payroll-prep/SKILL.md +139 -0
- package/content/small-business/skills/small-business-payroll-prep/reference/anomaly_rules.md +99 -0
- package/content/small-business/skills/small-business-payroll-prep/reference/books_sync.md +72 -0
- package/content/small-business/skills/small-business-payroll-prep/reference/gotchas.md +153 -0
- package/content/small-business/skills/small-business-payroll-prep/reference/run_sheet_format.md +90 -0
- package/content/small-business/skills/small-business-payroll-prep/reference/timesheet_intake.md +118 -0
- package/content/small-business/skills/small-business-plan-payroll/SKILL.md +88 -0
- package/content/small-business/skills/small-business-proposal-builder/SKILL.md +168 -0
- package/content/small-business/skills/small-business-proposal-builder/reference/discovery_extraction.md +138 -0
- package/content/small-business/skills/small-business-proposal-builder/reference/gotchas.md +184 -0
- package/content/small-business/skills/small-business-proposal-builder/reference/output_template.md +128 -0
- package/content/small-business/skills/small-business-proposal-builder/reference/pricing_method.md +125 -0
- package/content/small-business/skills/small-business-proposal-builder/reference/proposal_structure.md +120 -0
- package/content/small-business/skills/small-business-reactivate/SKILL.md +109 -0
- package/content/small-business/skills/small-business-report-builder/SKILL.md +142 -0
- package/content/small-business/skills/small-business-report-builder/reference/data_sources.md +168 -0
- package/content/small-business/skills/small-business-report-builder/reference/gotchas.md +155 -0
- package/content/small-business/skills/small-business-report-builder/reference/output_template.md +109 -0
- package/content/small-business/skills/small-business-report-builder/reference/report_spec.md +109 -0
- package/content/small-business/skills/small-business-report-builder/reference/saved_reports.md +50 -0
- package/content/small-business/skills/small-business-report-pack/SKILL.md +83 -0
- package/content/small-business/skills/small-business-restock/SKILL.md +88 -0
- package/content/small-business/skills/small-business-review-reputation/SKILL.md +130 -0
- package/content/small-business/skills/small-business-review-reputation/reference/churn-signals.md +110 -0
- package/content/small-business/skills/small-business-review-reputation/reference/examples/example-report.md +150 -0
- package/content/small-business/skills/small-business-review-reputation/reference/gotchas.md +164 -0
- package/content/small-business/skills/small-business-review-reputation/reference/response-patterns.md +123 -0
- package/content/small-business/skills/small-business-review-reputation/reference/sources.md +116 -0
- package/content/small-business/skills/small-business-seo-ai-visibility/SKILL.md +143 -0
- package/content/small-business/skills/small-business-seo-ai-visibility/reference/ai_visibility.md +173 -0
- package/content/small-business/skills/small-business-seo-ai-visibility/reference/audit_checklist.md +134 -0
- package/content/small-business/skills/small-business-seo-ai-visibility/reference/catalog_refresh.md +126 -0
- package/content/small-business/skills/small-business-seo-ai-visibility/reference/content_rewrite.md +113 -0
- package/content/small-business/skills/small-business-seo-ai-visibility/reference/gotchas.md +211 -0
- package/content/small-business/skills/small-business-smb-onboard/SKILL.md +82 -0
- package/content/small-business/skills/small-business-smb-onboard/reference/examples/happy-path.md +190 -0
- package/content/small-business/skills/small-business-smb-onboard/reference/gotchas.md +111 -0
- package/content/small-business/skills/small-business-smb-onboard/reference/onboard-checklist.md +99 -0
- package/content/small-business/skills/small-business-smb-onboard/reference/website-research.md +82 -0
- package/content/small-business/skills/small-business-smb-router/SKILL.md +216 -0
- package/content/small-business/skills/small-business-smb-router/reference/connector-map.md +96 -0
- package/content/small-business/skills/small-business-social-content-engine/SKILL.md +162 -0
- package/content/small-business/skills/small-business-social-content-engine/reference/calendar.md +116 -0
- package/content/small-business/skills/small-business-social-content-engine/reference/canva-api.md +208 -0
- package/content/small-business/skills/small-business-social-content-engine/reference/examples/okonkwo-campaign.md +190 -0
- package/content/small-business/skills/small-business-social-content-engine/reference/gotchas.md +447 -0
- package/content/small-business/skills/small-business-social-content-engine/reference/publishing.md +166 -0
- package/content/small-business/skills/small-business-social-content-engine/reference/shopify-assets.md +77 -0
- package/content/small-business/skills/small-business-speed-to-lead/SKILL.md +172 -0
- package/content/small-business/skills/small-business-speed-to-lead/reference/approval.md +61 -0
- package/content/small-business/skills/small-business-speed-to-lead/reference/gotchas.md +167 -0
- package/content/small-business/skills/small-business-speed-to-lead/reference/qualification.md +153 -0
- package/content/small-business/skills/small-business-speed-to-lead/reference/response_patterns.md +184 -0
- package/content/small-business/skills/small-business-tax-prep/SKILL.md +85 -0
- package/content/small-business/skills/small-business-tax-season-organizer/SKILL.md +210 -0
- package/content/small-business/skills/small-business-tax-season-organizer/reference/calculation-assumptions.md +177 -0
- package/content/small-business/skills/small-business-tax-season-organizer/reference/connector-queries.md +267 -0
- package/content/small-business/skills/small-business-tax-season-organizer/reference/examples/quarterly-estimate.md +92 -0
- package/content/small-business/skills/small-business-tax-season-organizer/reference/examples/year-end-1099.md +102 -0
- package/content/small-business/skills/small-business-tax-season-organizer/reference/gotchas.md +104 -0
- package/content/small-business/skills/small-business-tax-season-organizer/reference/output-formats.md +68 -0
- package/content/small-business/skills/small-business-ticket-deflector/SKILL.md +164 -0
- package/content/small-business/skills/small-business-ticket-deflector/reference/examples/deny-refund-request.md +98 -0
- package/content/small-business/skills/small-business-ticket-deflector/reference/examples/respond-refund-request.md +77 -0
- package/content/small-business/skills/small-business-ticket-deflector/reference/gotchas.md +57 -0
- package/index.ts +84 -0
- package/package.json +30 -3
package/content/small-business/skills/small-business-social-content-engine/reference/gotchas.md
ADDED
|
@@ -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 (``), 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 `` → 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?"
|
package/content/small-business/skills/small-business-social-content-engine/reference/publishing.md
ADDED
|
@@ -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.
|