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.
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 +84 -0
  472. package/package.json +30 -3
@@ -0,0 +1,452 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Pre-flight environment validation for nf-core pipelines.
4
+
5
+ Checks Docker, Nextflow, Java, system resources, and network connectivity.
6
+ Run this BEFORE attempting any pipeline execution.
7
+
8
+ Usage:
9
+ python check_environment.py
10
+ python check_environment.py --json
11
+ """
12
+
13
+ import json
14
+ import os
15
+ import shutil
16
+ import subprocess
17
+ import sys
18
+ from dataclasses import dataclass, field, asdict
19
+ from typing import List, Optional
20
+
21
+
22
+ @dataclass
23
+ class CheckResult:
24
+ """Result of a single environment check."""
25
+ name: str
26
+ passed: bool
27
+ message: str
28
+ details: Optional[str] = None
29
+ fix: Optional[str] = None
30
+
31
+
32
+ @dataclass
33
+ class EnvironmentReport:
34
+ """Complete environment validation report."""
35
+ ready: bool
36
+ checks: List[CheckResult] = field(default_factory=list)
37
+ recommendations: List[str] = field(default_factory=list)
38
+
39
+ def to_dict(self):
40
+ return {
41
+ "ready": self.ready,
42
+ "checks": [asdict(c) for c in self.checks],
43
+ "recommendations": self.recommendations
44
+ }
45
+
46
+
47
+ def check_docker() -> CheckResult:
48
+ """Check Docker availability, daemon status, and permissions."""
49
+ if not shutil.which("docker"):
50
+ return CheckResult(
51
+ name="Docker",
52
+ passed=False,
53
+ message="Docker not found in PATH",
54
+ fix="Install Docker: https://docs.docker.com/get-docker/"
55
+ )
56
+
57
+ try:
58
+ result = subprocess.run(
59
+ ["docker", "info"],
60
+ capture_output=True,
61
+ text=True,
62
+ timeout=15
63
+ )
64
+
65
+ if result.returncode != 0:
66
+ stderr_lower = result.stderr.lower()
67
+ if "permission denied" in stderr_lower:
68
+ return CheckResult(
69
+ name="Docker",
70
+ passed=False,
71
+ message="Docker permission denied",
72
+ details="Cannot connect to Docker daemon",
73
+ fix="sudo usermod -aG docker $USER && newgrp docker"
74
+ )
75
+ elif "cannot connect" in stderr_lower or "is the docker daemon running" in stderr_lower:
76
+ return CheckResult(
77
+ name="Docker",
78
+ passed=False,
79
+ message="Docker daemon not running",
80
+ details=result.stderr[:200] if result.stderr else None,
81
+ fix="sudo systemctl start docker"
82
+ )
83
+ else:
84
+ return CheckResult(
85
+ name="Docker",
86
+ passed=False,
87
+ message="Docker error",
88
+ details=result.stderr[:200] if result.stderr else None,
89
+ fix="Check Docker installation and daemon status"
90
+ )
91
+
92
+ return CheckResult(
93
+ name="Docker",
94
+ passed=True,
95
+ message="Docker is available and running"
96
+ )
97
+
98
+ except subprocess.TimeoutExpired:
99
+ return CheckResult(
100
+ name="Docker",
101
+ passed=False,
102
+ message="Docker command timed out",
103
+ fix="Check Docker daemon status: sudo systemctl status docker"
104
+ )
105
+ except Exception as e:
106
+ return CheckResult(
107
+ name="Docker",
108
+ passed=False,
109
+ message=f"Docker check failed: {str(e)}"
110
+ )
111
+
112
+
113
+ def check_nextflow() -> CheckResult:
114
+ """Check Nextflow installation and version (requires >= 23.04)."""
115
+ if not shutil.which("nextflow"):
116
+ return CheckResult(
117
+ name="Nextflow",
118
+ passed=False,
119
+ message="Nextflow not found in PATH",
120
+ fix="curl -s https://get.nextflow.io | bash && mv nextflow ~/bin/ && export PATH=$HOME/bin:$PATH"
121
+ )
122
+
123
+ try:
124
+ result = subprocess.run(
125
+ ["nextflow", "-version"],
126
+ capture_output=True,
127
+ text=True,
128
+ timeout=30
129
+ )
130
+
131
+ output = result.stdout + result.stderr
132
+ version_line = output.strip().split('\n')[0] if output else ""
133
+
134
+ import re
135
+ match = re.search(r'(\d+)\.(\d+)\.(\d+)', version_line)
136
+
137
+ if match:
138
+ major, minor, patch = int(match.group(1)), int(match.group(2)), int(match.group(3))
139
+ version_str = f"{major}.{minor}.{patch}"
140
+
141
+ # Require version >= 23.04
142
+ if major > 23 or (major == 23 and minor >= 4):
143
+ return CheckResult(
144
+ name="Nextflow",
145
+ passed=True,
146
+ message=f"Nextflow {version_str} installed",
147
+ details=version_line
148
+ )
149
+ else:
150
+ return CheckResult(
151
+ name="Nextflow",
152
+ passed=False,
153
+ message=f"Nextflow {version_str} is outdated (requires >= 23.04)",
154
+ details=version_line,
155
+ fix="nextflow self-update"
156
+ )
157
+
158
+ return CheckResult(
159
+ name="Nextflow",
160
+ passed=True,
161
+ message="Nextflow installed (version unknown)",
162
+ details=version_line
163
+ )
164
+
165
+ except subprocess.TimeoutExpired:
166
+ return CheckResult(
167
+ name="Nextflow",
168
+ passed=False,
169
+ message="Nextflow command timed out",
170
+ fix="Check Nextflow installation"
171
+ )
172
+ except Exception as e:
173
+ return CheckResult(
174
+ name="Nextflow",
175
+ passed=False,
176
+ message=f"Nextflow check failed: {str(e)}"
177
+ )
178
+
179
+
180
+ def check_java() -> CheckResult:
181
+ """Check Java version (requires >= 11)."""
182
+ if not shutil.which("java"):
183
+ return CheckResult(
184
+ name="Java",
185
+ passed=False,
186
+ message="Java not found in PATH",
187
+ fix="Install Java 11+: sudo apt install openjdk-11-jdk"
188
+ )
189
+
190
+ try:
191
+ result = subprocess.run(
192
+ ["java", "-version"],
193
+ capture_output=True,
194
+ text=True,
195
+ timeout=10
196
+ )
197
+
198
+ # Java version is typically in stderr
199
+ output = result.stderr or result.stdout
200
+ import re
201
+ match = re.search(r'version "(\d+)', output)
202
+
203
+ if match:
204
+ version = int(match.group(1))
205
+ version_line = output.strip().split('\n')[0]
206
+
207
+ if version >= 11:
208
+ return CheckResult(
209
+ name="Java",
210
+ passed=True,
211
+ message=f"Java {version} installed",
212
+ details=version_line
213
+ )
214
+ else:
215
+ return CheckResult(
216
+ name="Java",
217
+ passed=False,
218
+ message=f"Java {version} is too old (requires >= 11)",
219
+ details=version_line,
220
+ fix="Install Java 11+: sudo apt install openjdk-11-jdk"
221
+ )
222
+
223
+ return CheckResult(
224
+ name="Java",
225
+ passed=True,
226
+ message="Java installed",
227
+ details=output.strip().split('\n')[0] if output else None
228
+ )
229
+
230
+ except Exception as e:
231
+ return CheckResult(
232
+ name="Java",
233
+ passed=False,
234
+ message=f"Java check failed: {str(e)}"
235
+ )
236
+
237
+
238
+ def check_resources() -> CheckResult:
239
+ """Check system resources (CPU, memory, disk)."""
240
+ try:
241
+ # CPU cores
242
+ cpu_count = os.cpu_count() or 1
243
+
244
+ # Memory
245
+ mem_gb = 0
246
+ try:
247
+ # Linux: read from /proc/meminfo
248
+ with open('/proc/meminfo', 'r') as f:
249
+ for line in f:
250
+ if line.startswith('MemTotal:'):
251
+ mem_kb = int(line.split()[1])
252
+ mem_gb = mem_kb / (1024 * 1024)
253
+ break
254
+ except (FileNotFoundError, PermissionError):
255
+ # macOS: use sysctl
256
+ try:
257
+ result = subprocess.run(
258
+ ['sysctl', '-n', 'hw.memsize'],
259
+ capture_output=True, text=True, timeout=5
260
+ )
261
+ if result.returncode == 0:
262
+ mem_gb = int(result.stdout.strip()) / (1024**3)
263
+ except Exception:
264
+ pass
265
+
266
+ # Disk space (current directory)
267
+ disk_gb = 0
268
+ try:
269
+ statvfs = os.statvfs('.')
270
+ disk_gb = (statvfs.f_frsize * statvfs.f_bavail) / (1024**3)
271
+ except Exception:
272
+ pass
273
+
274
+ details = f"CPUs: {cpu_count}, Memory: {mem_gb:.1f}GB, Disk: {disk_gb:.1f}GB available"
275
+
276
+ # Check minimums
277
+ warnings = []
278
+ if cpu_count < 4:
279
+ warnings.append(f"Low CPU count ({cpu_count}). Consider --max_cpus {cpu_count}")
280
+ if 0 < mem_gb < 8:
281
+ warnings.append(f"Low memory ({mem_gb:.1f}GB). Use --max_memory '{int(mem_gb)}GB'")
282
+ if 0 < disk_gb < 50:
283
+ warnings.append(f"Low disk space ({disk_gb:.1f}GB). Pipelines need ~100GB for human data")
284
+
285
+ if warnings:
286
+ return CheckResult(
287
+ name="Resources",
288
+ passed=True,
289
+ message="Resources available (with warnings)",
290
+ details=details,
291
+ fix="; ".join(warnings)
292
+ )
293
+
294
+ return CheckResult(
295
+ name="Resources",
296
+ passed=True,
297
+ message="Sufficient resources available",
298
+ details=details
299
+ )
300
+
301
+ except Exception as e:
302
+ return CheckResult(
303
+ name="Resources",
304
+ passed=True, # Don't fail on resource check errors
305
+ message=f"Could not fully check resources: {str(e)}"
306
+ )
307
+
308
+
309
+ def check_network() -> CheckResult:
310
+ """Check network connectivity to Docker Hub and nf-core."""
311
+ try:
312
+ import urllib.request
313
+
314
+ # User-Agent header to avoid 403 from sites that block default Python agent
315
+ headers = {'User-Agent': 'nf-core-helper/1.0'}
316
+
317
+ # Try Docker Hub
318
+ try:
319
+ req = urllib.request.Request("https://hub.docker.com", headers=headers)
320
+ urllib.request.urlopen(req, timeout=10)
321
+ docker_hub_ok = True
322
+ except Exception:
323
+ docker_hub_ok = False
324
+
325
+ # Try nf-core (for pipeline downloads)
326
+ try:
327
+ req = urllib.request.Request("https://nf-co.re", headers=headers)
328
+ urllib.request.urlopen(req, timeout=10)
329
+ nfcore_ok = True
330
+ except Exception:
331
+ nfcore_ok = False
332
+
333
+ if docker_hub_ok and nfcore_ok:
334
+ return CheckResult(
335
+ name="Network",
336
+ passed=True,
337
+ message="Network connectivity OK (Docker Hub & nf-core reachable)"
338
+ )
339
+ elif docker_hub_ok:
340
+ return CheckResult(
341
+ name="Network",
342
+ passed=True,
343
+ message="Docker Hub reachable (nf-core.re not reachable)",
344
+ details="Pipeline downloads may still work via GitHub"
345
+ )
346
+ else:
347
+ return CheckResult(
348
+ name="Network",
349
+ passed=False,
350
+ message="Cannot reach Docker Hub",
351
+ fix="Check network connection. Containers require Docker Hub access."
352
+ )
353
+
354
+ except Exception as e:
355
+ return CheckResult(
356
+ name="Network",
357
+ passed=False,
358
+ message=f"Network check failed: {str(e)}",
359
+ fix="Check network connection and proxy settings"
360
+ )
361
+
362
+
363
+ def run_all_checks() -> EnvironmentReport:
364
+ """Run all environment checks and return comprehensive report."""
365
+ checks = [
366
+ check_docker(),
367
+ check_nextflow(),
368
+ check_java(),
369
+ check_resources(),
370
+ check_network(),
371
+ ]
372
+
373
+ # Critical checks that must pass
374
+ critical_checks = ["Docker", "Nextflow", "Java"]
375
+ ready = all(c.passed for c in checks if c.name in critical_checks)
376
+
377
+ # Build recommendations
378
+ recommendations = []
379
+ for check in checks:
380
+ if not check.passed and check.fix:
381
+ recommendations.append(f"{check.name}: {check.fix}")
382
+ elif check.passed and check.fix: # Warnings
383
+ recommendations.append(f"{check.name} (warning): {check.fix}")
384
+
385
+ return EnvironmentReport(
386
+ ready=ready,
387
+ checks=checks,
388
+ recommendations=recommendations
389
+ )
390
+
391
+
392
+ def print_report(report: EnvironmentReport):
393
+ """Print human-readable report to stdout."""
394
+ print("\n" + "=" * 50)
395
+ print(" nf-core Environment Check")
396
+ print("=" * 50 + "\n")
397
+
398
+ for check in report.checks:
399
+ status = "\033[92m[PASS]\033[0m" if check.passed else "\033[91m[FAIL]\033[0m"
400
+ print(f"{status} {check.name}: {check.message}")
401
+
402
+ if check.details:
403
+ print(f" {check.details}")
404
+
405
+ if not check.passed and check.fix:
406
+ print(f" \033[93mFix:\033[0m {check.fix}")
407
+ elif check.passed and check.fix: # Warning
408
+ print(f" \033[93mWarning:\033[0m {check.fix}")
409
+
410
+ print()
411
+ if report.ready:
412
+ print("\033[92m✓ Environment is READY for nf-core pipelines.\033[0m")
413
+ else:
414
+ print("\033[91m✗ Environment is NOT READY. Please address the issues above.\033[0m")
415
+
416
+ if report.recommendations:
417
+ print("\n--- Recommendations ---")
418
+ for i, rec in enumerate(report.recommendations, 1):
419
+ print(f" {i}. {rec}")
420
+
421
+ print()
422
+
423
+
424
+ def main():
425
+ import argparse
426
+
427
+ parser = argparse.ArgumentParser(
428
+ description="Check environment for nf-core pipeline execution",
429
+ formatter_class=argparse.RawDescriptionHelpFormatter,
430
+ epilog="""
431
+ Examples:
432
+ python check_environment.py # Human-readable output
433
+ python check_environment.py --json # JSON output for parsing
434
+ """
435
+ )
436
+ parser.add_argument("--json", action="store_true",
437
+ help="Output results as JSON")
438
+
439
+ args = parser.parse_args()
440
+
441
+ report = run_all_checks()
442
+
443
+ if args.json:
444
+ print(json.dumps(report.to_dict(), indent=2))
445
+ else:
446
+ print_report(report)
447
+
448
+ sys.exit(0 if report.ready else 1)
449
+
450
+
451
+ if __name__ == "__main__":
452
+ main()
@@ -0,0 +1,148 @@
1
+ # Organism to Genome Mapping for nf-core Pipelines
2
+ # Maps organism names (as they appear in GEO/SRA) to iGenomes keys
3
+
4
+ organisms:
5
+ # Human
6
+ "Homo sapiens":
7
+ genome: "GRCh38"
8
+ taxid: 9606
9
+ aliases: ["human", "hg38", "GRCh38"]
10
+ notes: "Primary human reference genome"
11
+
12
+ "Homo sapiens (legacy)":
13
+ genome: "GRCh37"
14
+ taxid: 9606
15
+ aliases: ["hg19", "GRCh37"]
16
+ notes: "Legacy human reference, still used for some clinical data"
17
+
18
+ # Mouse
19
+ "Mus musculus":
20
+ genome: "GRCm39"
21
+ taxid: 10090
22
+ aliases: ["mouse", "mm39", "GRCm39"]
23
+ notes: "Current mouse reference genome"
24
+
25
+ "Mus musculus (legacy)":
26
+ genome: "GRCm38"
27
+ taxid: 10090
28
+ aliases: ["mm10", "GRCm38"]
29
+ notes: "Legacy mouse reference"
30
+
31
+ # Yeast
32
+ "Saccharomyces cerevisiae":
33
+ genome: "R64-1-1"
34
+ taxid: 4932
35
+ aliases: ["yeast", "sacCer3", "S288C", "budding yeast"]
36
+ notes: "S288C reference strain"
37
+
38
+ # Fruit fly
39
+ "Drosophila melanogaster":
40
+ genome: "BDGP6"
41
+ taxid: 7227
42
+ aliases: ["fly", "dm6", "fruit fly", "Dmel"]
43
+ notes: "Berkeley Drosophila Genome Project release 6"
44
+
45
+ # Worm
46
+ "Caenorhabditis elegans":
47
+ genome: "WBcel235"
48
+ taxid: 6239
49
+ aliases: ["worm", "ce11", "C. elegans", "Cele"]
50
+ notes: "WormBase reference"
51
+
52
+ # Zebrafish
53
+ "Danio rerio":
54
+ genome: "GRCz11"
55
+ taxid: 7955
56
+ aliases: ["zebrafish", "danRer11", "Drer"]
57
+ notes: "Genome Reference Consortium Zebrafish Build 11"
58
+
59
+ # Arabidopsis
60
+ "Arabidopsis thaliana":
61
+ genome: "TAIR10"
62
+ taxid: 3702
63
+ aliases: ["arabidopsis", "thale cress", "Atha"]
64
+ notes: "The Arabidopsis Information Resource v10"
65
+
66
+ # Rat
67
+ "Rattus norvegicus":
68
+ genome: "Rnor_6.0"
69
+ taxid: 10116
70
+ aliases: ["rat", "rn6", "Rnor"]
71
+ notes: "Rnor 6.0 reference"
72
+
73
+ # Chicken
74
+ "Gallus gallus":
75
+ genome: "GRCg6a"
76
+ taxid: 9031
77
+ aliases: ["chicken", "galGal6", "Ggal"]
78
+ notes: "Genome Reference Consortium Chicken Build 6a"
79
+
80
+ # Pig
81
+ "Sus scrofa":
82
+ genome: "Sscrofa11.1"
83
+ taxid: 9823
84
+ aliases: ["pig", "susScr11", "Sscr"]
85
+ notes: "Swine genome assembly 11.1"
86
+
87
+ # Cow
88
+ "Bos taurus":
89
+ genome: "ARS-UCD1.2"
90
+ taxid: 9913
91
+ aliases: ["cow", "bosTau9", "cattle", "Btau"]
92
+ notes: "USDA ARS assembly"
93
+
94
+ # Dog
95
+ "Canis lupus familiaris":
96
+ genome: "CanFam3.1"
97
+ taxid: 9615
98
+ aliases: ["dog", "canFam3", "Clup"]
99
+ notes: "Broad Institute CanFam3.1"
100
+
101
+ # Frog
102
+ "Xenopus tropicalis":
103
+ genome: "JGI_4.2"
104
+ taxid: 8364
105
+ aliases: ["frog", "xenTro9", "Xtro"]
106
+ notes: "JGI assembly version 4.2"
107
+
108
+ # Maize/Corn
109
+ "Zea mays":
110
+ genome: "Zm-B73-REFERENCE-NAM-5.0"
111
+ taxid: 4577
112
+ aliases: ["maize", "corn", "Zmay"]
113
+ notes: "B73 reference genome v5"
114
+
115
+ # Rice
116
+ "Oryza sativa":
117
+ genome: "IRGSP-1.0"
118
+ taxid: 39947
119
+ aliases: ["rice", "Osat"]
120
+ notes: "International Rice Genome Sequencing Project"
121
+
122
+ # E. coli (common bacterial model)
123
+ "Escherichia coli":
124
+ genome: null
125
+ taxid: 562
126
+ aliases: ["E. coli", "Ecol"]
127
+ notes: "Use specific strain reference; K-12 MG1655 common"
128
+
129
+ # Fission yeast
130
+ "Schizosaccharomyces pombe":
131
+ genome: "ASM294v2"
132
+ taxid: 4896
133
+ aliases: ["fission yeast", "S. pombe", "Spom"]
134
+ notes: "PomBase reference"
135
+
136
+ # Pipeline mapping based on library strategy
137
+ pipeline_suggestions:
138
+ "RNA-SEQ": "rnaseq"
139
+ "ATAC-SEQ": "atacseq"
140
+ "CHIP-SEQ": "chipseq"
141
+ "WGS": "sarek"
142
+ "WXS": "sarek"
143
+ "EXOME": "sarek"
144
+ "AMPLICON": "ampliseq"
145
+ "BISULFITE-SEQ": "methylseq"
146
+ "HI-C": "hic"
147
+ "MIRNA-SEQ": "smrnaseq"
148
+ "RRBS": "methylseq"