@brainpilot/skills 0.0.6 → 0.0.8

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 (285) hide show
  1. package/package.json +2 -2
  2. package/skills/01_Meta-Skills/academic-research-hub/SKILL.md +108 -0
  3. package/skills/01_Meta-Skills/academic-research-hub/scripts/requirements.txt +17 -0
  4. package/skills/01_Meta-Skills/academic-research-hub/scripts/research.py +781 -0
  5. package/skills/01_Meta-Skills/beautiful-log/SKILL.md +64 -0
  6. package/skills/01_Meta-Skills/beautiful-log/scripts/beautiful_log.py +274 -0
  7. package/skills/01_Meta-Skills/ethoclaw-daily-paper/SKILL.md +130 -0
  8. package/skills/01_Meta-Skills/ethoclaw-daily-paper/assets/config.template.yaml +54 -0
  9. package/skills/01_Meta-Skills/ethoclaw-daily-paper/assets/top5_digest_template.md +5 -0
  10. package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/build_top5_digest.py +300 -0
  11. package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/common.py +137 -0
  12. package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/merge_results.py +106 -0
  13. package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/run_pipeline.py +177 -0
  14. package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/search_arxiv.py +162 -0
  15. package/skills/01_Meta-Skills/ethoclaw-daily-paper/scripts/search_pubmed.py +202 -0
  16. package/skills/01_Meta-Skills/ethoclaw-normalize-tabular/SKILL.md +173 -0
  17. package/skills/01_Meta-Skills/ethoclaw-normalize-tabular/scripts/normalize_data.py +874 -0
  18. package/skills/01_Meta-Skills/ethoclaw-pdf-research/SKILL.md +134 -0
  19. package/skills/01_Meta-Skills/ethoclaw-pdf-research/references/confirmation-prompts.md +31 -0
  20. package/skills/01_Meta-Skills/ethoclaw-pdf-research/references/output-patterns.md +45 -0
  21. package/skills/01_Meta-Skills/ethoclaw-pdf-research/scripts/build_markdown_deliverables.py +41 -0
  22. package/skills/01_Meta-Skills/ethoclaw-pdf-research/scripts/build_research_log.py +84 -0
  23. package/skills/01_Meta-Skills/ethoclaw-pdf-research/scripts/build_summary_md.py +63 -0
  24. package/skills/01_Meta-Skills/ethoclaw-pdf-research/scripts/extract_pdf_bundle.py +140 -0
  25. package/skills/01_Meta-Skills/experiment-controller/SKILL.md +140 -0
  26. package/skills/01_Meta-Skills/knowledge-graph-builder/SKILL.md +366 -0
  27. package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/entity_resolution.py +120 -0
  28. package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/extraction_prompt_template.txt +19 -0
  29. package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/graph_query.py +106 -0
  30. package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/hypothesis_cli_reference.py +42 -0
  31. package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/new_data_source_template.py +116 -0
  32. package/skills/01_Meta-Skills/knowledge-graph-builder/scripts/requirements.txt +15 -0
  33. package/skills/01_Meta-Skills/method-design/SKILL.md +61 -0
  34. package/skills/01_Meta-Skills/multi-search-engine/SKILL.md +119 -0
  35. package/skills/01_Meta-Skills/research-idea/SKILL.md +65 -0
  36. package/skills/05_EEG_ERP/eeg-skill/SKILL.md +197 -0
  37. package/skills/05_EEG_ERP/meg-skill/SKILL.md +188 -0
  38. package/skills/05_EEG_ERP/meg-skill/scripts/time_frequency.py +223 -0
  39. package/skills/05_EEG_ERP/mne-eeg-tool/SKILL.md +165 -0
  40. package/skills/05_EEG_ERP/mne-eeg-tool/scripts/eeg_pipeline_reference.py +231 -0
  41. package/skills/05_EEG_ERP/seed-iv-skill/SKILL.md +184 -0
  42. package/skills/05_EEG_ERP/seed-iv-skill/scripts/classify_seed_iv.py +154 -0
  43. package/skills/05_EEG_ERP/seed-iv-skill/scripts/extract_seed_iv_features.py +190 -0
  44. package/skills/05_EEG_ERP/seed-iv-skill/scripts/validate_seed_iv.py +102 -0
  45. package/skills/05_EEG_ERP/seed-vig-skill/SKILL.md +182 -0
  46. package/skills/05_EEG_ERP/seed-vig-skill/scripts/classify_seed_vig.py +165 -0
  47. package/skills/05_EEG_ERP/seed-vig-skill/scripts/extract_seed_vig_features.py +185 -0
  48. package/skills/05_EEG_ERP/seed-vig-skill/scripts/validate_seed_vig.py +88 -0
  49. package/skills/06_fMRI_Neuroimaging/abcd-skill/SKILL.md +308 -0
  50. package/skills/06_fMRI_Neuroimaging/abcd-skill/scripts/abcd_qc_summary.py +449 -0
  51. package/skills/06_fMRI_Neuroimaging/abcd-skill/scripts/extract_abcd_phenotype.py +292 -0
  52. package/skills/06_fMRI_Neuroimaging/abcd-skill/scripts/reorganize_abcd.py +387 -0
  53. package/skills/06_fMRI_Neuroimaging/abide-skill/SKILL.md +302 -0
  54. package/skills/06_fMRI_Neuroimaging/abide-skill/scripts/abide_qc_summary.py +317 -0
  55. package/skills/06_fMRI_Neuroimaging/abide-skill/scripts/extract_abide_phenotype.py +267 -0
  56. package/skills/06_fMRI_Neuroimaging/abide-skill/scripts/reorganize_abide.py +387 -0
  57. package/skills/06_fMRI_Neuroimaging/adhd200-skill/SKILL.md +244 -0
  58. package/skills/06_fMRI_Neuroimaging/adhd200-skill/scripts/adhd200_qc_summary.py +98 -0
  59. package/skills/06_fMRI_Neuroimaging/adhd200-skill/scripts/extract_adhd200_phenotype.py +134 -0
  60. package/skills/06_fMRI_Neuroimaging/adhd200-skill/scripts/reorganize_adhd200.py +206 -0
  61. package/skills/06_fMRI_Neuroimaging/adni-skill/SKILL.md +358 -0
  62. package/skills/06_fMRI_Neuroimaging/adni-skill/scripts/generate_adni_task_files.py +1305 -0
  63. package/skills/06_fMRI_Neuroimaging/adni-skill/scripts/generate_vqa_from_tasks.py +766 -0
  64. package/skills/06_fMRI_Neuroimaging/adni-skill/scripts/reorganize_adni.py +491 -0
  65. package/skills/06_fMRI_Neuroimaging/aibl-skill/SKILL.md +295 -0
  66. package/skills/06_fMRI_Neuroimaging/aibl-skill/scripts/aibl_qc_summary.py +260 -0
  67. package/skills/06_fMRI_Neuroimaging/aibl-skill/scripts/extract_aibl_phenotype.py +365 -0
  68. package/skills/06_fMRI_Neuroimaging/aibl-skill/scripts/reorganize_aibl.py +394 -0
  69. package/skills/06_fMRI_Neuroimaging/aomic-skill/SKILL.md +292 -0
  70. package/skills/06_fMRI_Neuroimaging/aomic-skill/scripts/aomic_qc_summary.py +258 -0
  71. package/skills/06_fMRI_Neuroimaging/aomic-skill/scripts/extract_aomic_phenotype.py +284 -0
  72. package/skills/06_fMRI_Neuroimaging/aomic-skill/scripts/reorganize_aomic.py +322 -0
  73. package/skills/06_fMRI_Neuroimaging/asl-skill/SKILL.md +168 -0
  74. package/skills/06_fMRI_Neuroimaging/asl-skill/scripts/compute_cbf.py +224 -0
  75. package/skills/06_fMRI_Neuroimaging/bids-organizer/SKILL.md +241 -0
  76. package/skills/06_fMRI_Neuroimaging/bold5000-skill/SKILL.md +186 -0
  77. package/skills/06_fMRI_Neuroimaging/bold5000-skill/scripts/bold5000_qc_summary.py +96 -0
  78. package/skills/06_fMRI_Neuroimaging/bold5000-skill/scripts/extract_bold5000_stimulus.py +125 -0
  79. package/skills/06_fMRI_Neuroimaging/bold5000-skill/scripts/reorganize_bold5000.py +102 -0
  80. package/skills/06_fMRI_Neuroimaging/camcan-skill/SKILL.md +213 -0
  81. package/skills/06_fMRI_Neuroimaging/camcan-skill/scripts/camcan_qc_summary.py +131 -0
  82. package/skills/06_fMRI_Neuroimaging/camcan-skill/scripts/extract_camcan_phenotype.py +145 -0
  83. package/skills/06_fMRI_Neuroimaging/camcan-skill/scripts/validate_camcan.py +141 -0
  84. package/skills/06_fMRI_Neuroimaging/cobre-skill/SKILL.md +201 -0
  85. package/skills/06_fMRI_Neuroimaging/cobre-skill/scripts/cobre_qc_summary.py +95 -0
  86. package/skills/06_fMRI_Neuroimaging/cobre-skill/scripts/extract_cobre_phenotype.py +104 -0
  87. package/skills/06_fMRI_Neuroimaging/cobre-skill/scripts/reorganize_cobre.py +140 -0
  88. package/skills/06_fMRI_Neuroimaging/conn-tool/SKILL.md +180 -0
  89. package/skills/06_fMRI_Neuroimaging/dcm2nii/SKILL.md +189 -0
  90. package/skills/06_fMRI_Neuroimaging/dmt-har-med-skill/SKILL.md +183 -0
  91. package/skills/06_fMRI_Neuroimaging/dmt-har-med-skill/scripts/dmt_har_med_qc_summary.py +96 -0
  92. package/skills/06_fMRI_Neuroimaging/dmt-har-med-skill/scripts/extract_dmt_har_med_phenotype.py +121 -0
  93. package/skills/06_fMRI_Neuroimaging/dmt-har-med-skill/scripts/reorganize_dmt_har_med.py +125 -0
  94. package/skills/06_fMRI_Neuroimaging/dwi-skill/SKILL.md +359 -0
  95. package/skills/06_fMRI_Neuroimaging/fmri-skill/SKILL.md +371 -0
  96. package/skills/06_fMRI_Neuroimaging/fmriprep-tool/SKILL.md +228 -0
  97. package/skills/06_fMRI_Neuroimaging/freesurfer-tool/SKILL.md +286 -0
  98. package/skills/06_fMRI_Neuroimaging/freesurfer-tool/scripts/freesurfer_processor.py +145 -0
  99. package/skills/06_fMRI_Neuroimaging/fsl-tool/SKILL.md +208 -0
  100. package/skills/06_fMRI_Neuroimaging/hbn-skill/SKILL.md +271 -0
  101. package/skills/06_fMRI_Neuroimaging/hbn-skill/scripts/extract_hbn_phenotype.py +107 -0
  102. package/skills/06_fMRI_Neuroimaging/hbn-skill/scripts/hbn_qc_summary.py +96 -0
  103. package/skills/06_fMRI_Neuroimaging/hbn-skill/scripts/reorganize_hbn.py +150 -0
  104. package/skills/06_fMRI_Neuroimaging/hcpa-skill/SKILL.md +210 -0
  105. package/skills/06_fMRI_Neuroimaging/hcpa-skill/scripts/extract_hcpa_phenotype.py +146 -0
  106. package/skills/06_fMRI_Neuroimaging/hcpa-skill/scripts/hcpa_qc_summary.py +120 -0
  107. package/skills/06_fMRI_Neuroimaging/hcpa-skill/scripts/reorganize_hcpa.py +155 -0
  108. package/skills/06_fMRI_Neuroimaging/hcpd-skill/SKILL.md +210 -0
  109. package/skills/06_fMRI_Neuroimaging/hcpd-skill/scripts/extract_hcpd_phenotype.py +148 -0
  110. package/skills/06_fMRI_Neuroimaging/hcpd-skill/scripts/hcpd_qc_summary.py +125 -0
  111. package/skills/06_fMRI_Neuroimaging/hcpd-skill/scripts/reorganize_hcpd.py +146 -0
  112. package/skills/06_fMRI_Neuroimaging/hcpep-skill/SKILL.md +215 -0
  113. package/skills/06_fMRI_Neuroimaging/hcpep-skill/scripts/extract_hcpep_phenotype.py +157 -0
  114. package/skills/06_fMRI_Neuroimaging/hcpep-skill/scripts/hcpep_qc_summary.py +143 -0
  115. package/skills/06_fMRI_Neuroimaging/hcpep-skill/scripts/reorganize_hcpep.py +146 -0
  116. package/skills/06_fMRI_Neuroimaging/hcppipeline-tool/SKILL.md +217 -0
  117. package/skills/06_fMRI_Neuroimaging/hcpya-skill/SKILL.md +214 -0
  118. package/skills/06_fMRI_Neuroimaging/hcpya-skill/scripts/extract_hcpya_phenotype.py +190 -0
  119. package/skills/06_fMRI_Neuroimaging/hcpya-skill/scripts/hcpya_qc_summary.py +152 -0
  120. package/skills/06_fMRI_Neuroimaging/hcpya-skill/scripts/reorganize_hcpya.py +203 -0
  121. package/skills/06_fMRI_Neuroimaging/ixi-skill/SKILL.md +198 -0
  122. package/skills/06_fMRI_Neuroimaging/ixi-skill/scripts/ixi_qc_summary.py +137 -0
  123. package/skills/06_fMRI_Neuroimaging/ixi-skill/scripts/reorganize_ixi.py +190 -0
  124. package/skills/06_fMRI_Neuroimaging/mnd-skill/SKILL.md +191 -0
  125. package/skills/06_fMRI_Neuroimaging/mnd-skill/scripts/extract_mnd_phenotype.py +143 -0
  126. package/skills/06_fMRI_Neuroimaging/mnd-skill/scripts/mnd_qc_summary.py +120 -0
  127. package/skills/06_fMRI_Neuroimaging/mnd-skill/scripts/validate_mnd.py +107 -0
  128. package/skills/06_fMRI_Neuroimaging/mschallenge-skill/SKILL.md +203 -0
  129. package/skills/06_fMRI_Neuroimaging/mschallenge-skill/scripts/analyze_lesions.py +119 -0
  130. package/skills/06_fMRI_Neuroimaging/mschallenge-skill/scripts/longitudinal_lesion.py +148 -0
  131. package/skills/06_fMRI_Neuroimaging/mschallenge-skill/scripts/mschallenge_qc_summary.py +132 -0
  132. package/skills/06_fMRI_Neuroimaging/mschallenge-skill/scripts/validate_mschallenge.py +116 -0
  133. package/skills/06_fMRI_Neuroimaging/nibabel-skill/SKILL.md +184 -0
  134. package/skills/06_fMRI_Neuroimaging/nibabel-skill/scripts/atlas_coordinate_reference.py +61 -0
  135. package/skills/06_fMRI_Neuroimaging/nibabel-skill/scripts/freesurfer_io_reference.py +34 -0
  136. package/skills/06_fMRI_Neuroimaging/nibabel-skill/scripts/nifti_inspection_reference.py +35 -0
  137. package/skills/06_fMRI_Neuroimaging/nifd-skill/SKILL.md +205 -0
  138. package/skills/06_fMRI_Neuroimaging/nifd-skill/scripts/extract_nifd_phenotype.py +132 -0
  139. package/skills/06_fMRI_Neuroimaging/nifd-skill/scripts/nifd_qc_summary.py +111 -0
  140. package/skills/06_fMRI_Neuroimaging/nifd-skill/scripts/validate_nifd.py +111 -0
  141. package/skills/06_fMRI_Neuroimaging/nii2dcm/SKILL.md +143 -0
  142. package/skills/06_fMRI_Neuroimaging/nilearn-tool/SKILL.md +266 -0
  143. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/connectome_reference.py +65 -0
  144. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/denoise_timeseries_reference.py +58 -0
  145. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/hierarchical_parcellation_reference.py +53 -0
  146. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/kmeans_parcellation_reference.py +53 -0
  147. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/preprocess_bold_reference.py +76 -0
  148. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/rest_dictlearning_reference.py +56 -0
  149. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/rest_ica_reference.py +59 -0
  150. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/second_level_glm_reference.py +58 -0
  151. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/spacenet_classifier_reference.py +59 -0
  152. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/svm_classifier_reference.py +60 -0
  153. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/task_glm_reference.py +63 -0
  154. package/skills/06_fMRI_Neuroimaging/nilearn-tool/scripts/zalff_summary_reference.py +109 -0
  155. package/skills/06_fMRI_Neuroimaging/nsd-skill/SKILL.md +210 -0
  156. package/skills/06_fMRI_Neuroimaging/nsd-skill/scripts/extract_nsd_stimulus.py +171 -0
  157. package/skills/06_fMRI_Neuroimaging/nsd-skill/scripts/nsd_qc_summary.py +142 -0
  158. package/skills/06_fMRI_Neuroimaging/nsd-skill/scripts/validate_nsd.py +142 -0
  159. package/skills/06_fMRI_Neuroimaging/oasis-skill/SKILL.md +205 -0
  160. package/skills/06_fMRI_Neuroimaging/oasis-skill/scripts/extract_oasis_phenotype.py +126 -0
  161. package/skills/06_fMRI_Neuroimaging/oasis-skill/scripts/oasis_qc_summary.py +115 -0
  162. package/skills/06_fMRI_Neuroimaging/oasis-skill/scripts/validate_oasis.py +119 -0
  163. package/skills/06_fMRI_Neuroimaging/pet-skill/SKILL.md +173 -0
  164. package/skills/06_fMRI_Neuroimaging/pet-skill/scripts/compute_suvr.py +202 -0
  165. package/skills/06_fMRI_Neuroimaging/pnc-skill/SKILL.md +206 -0
  166. package/skills/06_fMRI_Neuroimaging/pnc-skill/scripts/extract_pnc_phenotype.py +136 -0
  167. package/skills/06_fMRI_Neuroimaging/pnc-skill/scripts/pnc_qc_summary.py +116 -0
  168. package/skills/06_fMRI_Neuroimaging/pnc-skill/scripts/validate_pnc.py +120 -0
  169. package/skills/06_fMRI_Neuroimaging/ppmi-skill/SKILL.md +209 -0
  170. package/skills/06_fMRI_Neuroimaging/ppmi-skill/scripts/extract_ppmi_phenotype.py +138 -0
  171. package/skills/06_fMRI_Neuroimaging/ppmi-skill/scripts/ppmi_qc_summary.py +111 -0
  172. package/skills/06_fMRI_Neuroimaging/ppmi-skill/scripts/validate_ppmi.py +117 -0
  173. package/skills/06_fMRI_Neuroimaging/qsiprep-tool/SKILL.md +320 -0
  174. package/skills/06_fMRI_Neuroimaging/rest-mneta-mdd-skill/SKILL.md +215 -0
  175. package/skills/06_fMRI_Neuroimaging/rest-mneta-mdd-skill/scripts/extract_rest_mdd_phenotype.py +132 -0
  176. package/skills/06_fMRI_Neuroimaging/rest-mneta-mdd-skill/scripts/harmonize_sites.py +152 -0
  177. package/skills/06_fMRI_Neuroimaging/rest-mneta-mdd-skill/scripts/rest_mdd_qc_summary.py +124 -0
  178. package/skills/06_fMRI_Neuroimaging/rest-mneta-mdd-skill/scripts/validate_rest_mdd.py +103 -0
  179. package/skills/06_fMRI_Neuroimaging/smri-skill/SKILL.md +302 -0
  180. package/skills/06_fMRI_Neuroimaging/tcp-skill/SKILL.md +204 -0
  181. package/skills/06_fMRI_Neuroimaging/tcp-skill/scripts/extract_tcp_phenotype.py +139 -0
  182. package/skills/06_fMRI_Neuroimaging/tcp-skill/scripts/tcp_qc_summary.py +111 -0
  183. package/skills/06_fMRI_Neuroimaging/tcp-skill/scripts/validate_tcp.py +99 -0
  184. package/skills/06_fMRI_Neuroimaging/ucla-cnp-skill/SKILL.md +217 -0
  185. package/skills/06_fMRI_Neuroimaging/ucla-cnp-skill/scripts/extract_ucla_cnp_phenotype.py +145 -0
  186. package/skills/06_fMRI_Neuroimaging/ucla-cnp-skill/scripts/ucla_cnp_qc_summary.py +111 -0
  187. package/skills/06_fMRI_Neuroimaging/ucla-cnp-skill/scripts/validate_ucla_cnp.py +113 -0
  188. package/skills/06_fMRI_Neuroimaging/ukb-skill/SKILL.md +310 -0
  189. package/skills/06_fMRI_Neuroimaging/ukb-skill/scripts/build_ukb_survival.py +210 -0
  190. package/skills/06_fMRI_Neuroimaging/ukb-skill/scripts/extract_ukb_cases.py +308 -0
  191. package/skills/06_fMRI_Neuroimaging/ukb-skill/scripts/extract_ukb_phenotype.py +232 -0
  192. package/skills/06_fMRI_Neuroimaging/ukb-skill/scripts/ukb_qc_summary.py +158 -0
  193. package/skills/06_fMRI_Neuroimaging/wmh-segmentation/SKILL.md +133 -0
  194. package/skills/07_Computational_Modeling/detrending/SKILL.md +118 -0
  195. package/skills/07_Computational_Modeling/dictlearning/SKILL.md +122 -0
  196. package/skills/07_Computational_Modeling/filtering/SKILL.md +121 -0
  197. package/skills/07_Computational_Modeling/glm/SKILL.md +153 -0
  198. package/skills/07_Computational_Modeling/hierarchical/SKILL.md +121 -0
  199. package/skills/07_Computational_Modeling/ica/SKILL.md +122 -0
  200. package/skills/07_Computational_Modeling/kmeans/SKILL.md +119 -0
  201. package/skills/07_Computational_Modeling/run_models/SKILL.md +427 -0
  202. package/skills/07_Computational_Modeling/spacenet/SKILL.md +122 -0
  203. package/skills/07_Computational_Modeling/svm/SKILL.md +120 -0
  204. package/skills/08_Computational_Neuroscience/brain_gnn/SKILL.md +183 -0
  205. package/skills/08_Computational_Neuroscience/dipy-tool/SKILL.md +239 -0
  206. package/skills/08_Computational_Neuroscience/dipy-tool/scripts/dti_metrics_reference.py +70 -0
  207. package/skills/08_Computational_Neuroscience/dipy-tool/scripts/load_and_mask_reference.py +76 -0
  208. package/skills/08_Computational_Neuroscience/dipy-tool/scripts/roi_stats_reference.py +59 -0
  209. package/skills/08_Computational_Neuroscience/fm_app/SKILL.md +195 -0
  210. package/skills/08_Computational_Neuroscience/neurostorm/SKILL.md +151 -0
  211. package/skills/13_Visualization/brain-visualization/SKILL.md +191 -0
  212. package/skills/13_Visualization/brain-visualization/scripts/connectome_reference.py +108 -0
  213. package/skills/13_Visualization/brain-visualization/scripts/freesurfer_ply_reference.py +54 -0
  214. package/skills/13_Visualization/brain-visualization/scripts/zalff_summary_reference.py +116 -0
  215. package/skills/13_Visualization/ethoclaw-paper-figure-layout/SKILL.md +78 -0
  216. package/skills/13_Visualization/ethoclaw-paper-figure-layout/assets/naturecomm_figures.tex +74 -0
  217. package/skills/13_Visualization/ethoclaw-paper-figure-layout/scripts/layout_results_foldered.py +579 -0
  218. package/skills/14_Writing/overleaf-skill/SKILL.md +184 -0
  219. package/skills/14_Writing/overleaf-skill/scripts/install.sh +30 -0
  220. package/skills/14_Writing/paper-writing/SKILL.md +146 -0
  221. package/skills/14_Writing/paper-writing/scripts/data_statement_templates.py +164 -0
  222. package/skills/14_Writing/paper-writing/scripts/figure_templates.py +315 -0
  223. package/skills/14_Writing/paper-writing/scripts/nature_figure_style.py +214 -0
  224. package/skills/14_Writing/paper-writing/scripts/section_phrasebank.py +246 -0
  225. package/skills/16_Animal_Behavior/deeplabcut/SKILL.md +154 -0
  226. package/skills/16_Animal_Behavior/deeplabcut/references/3d-pose.md +89 -0
  227. package/skills/16_Animal_Behavior/deeplabcut/references/maDLC.md +123 -0
  228. package/skills/16_Animal_Behavior/deeplabcut/references/modelzoo.md +98 -0
  229. package/skills/16_Animal_Behavior/deeplabcut/references/standard-pipeline.md +165 -0
  230. package/skills/16_Animal_Behavior/deeplabcut/references/utilities.md +146 -0
  231. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/SKILL.md +274 -0
  232. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/report_template_en.html +112 -0
  233. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/report_template_en.md +21 -0
  234. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/cluster-section.md +5 -0
  235. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/heatmap-section.md +5 -0
  236. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/integrated-interpretation.md +3 -0
  237. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/overview.md +3 -0
  238. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/project-summary.md +3 -0
  239. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/radar-section.md +5 -0
  240. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/raw-trajectory.md +3 -0
  241. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/sample-check.md +3 -0
  242. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/single-subject-section.md +3 -0
  243. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/assets/section_templates/stats-section.md +5 -0
  244. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/epm.md +52 -0
  245. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/fst.md +37 -0
  246. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/nor.md +39 -0
  247. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/oft.md +43 -0
  248. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/tcst.md +45 -0
  249. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/experiment-types/tst.md +36 -0
  250. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/input-types.md +59 -0
  251. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/interpretation-guardrails.md +45 -0
  252. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/metadata-schema.md +57 -0
  253. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/report-sections.md +86 -0
  254. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/references/section-selection-rules.md +169 -0
  255. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/scripts/build_report_manifest.py +27 -0
  256. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/scripts/render_report.py +34 -0
  257. package/skills/16_Animal_Behavior/ethoclaw-analysis-report/scripts/report_utils.py +1121 -0
  258. package/skills/16_Animal_Behavior/ethoclaw-animal-grounding/SKILL.md +390 -0
  259. package/skills/16_Animal_Behavior/ethoclaw-animal-grounding/reference_code.py +98 -0
  260. package/skills/16_Animal_Behavior/ethoclaw-animal-pose-estimation/SKILL.md +336 -0
  261. package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/README.md +21 -0
  262. package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/SKILL.md +41 -0
  263. package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/batch_kinematic_generator.py +663 -0
  264. package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/config.json +19 -0
  265. package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/generate_kinematic_parameter.py +401 -0
  266. package/skills/16_Animal_Behavior/ethoclaw-kinematic-parameter-generator/kinematic_generator.py +265 -0
  267. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-clustermap-generate/SKILL.md +72 -0
  268. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-clustermap-generate/references/config.example.toml +56 -0
  269. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-clustermap-generate/scripts/cluster_all_params.py +232 -0
  270. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-clustermap-generate/scripts/cluster_all_params_from_config.py +236 -0
  271. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-radar-generate/SKILL.md +68 -0
  272. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-radar-generate/references/notes.md +5 -0
  273. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-radar-generate/scripts/plot_h5_radar.py +513 -0
  274. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/SKILL.md +52 -0
  275. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/config.toml +81 -0
  276. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/references/stats-rule.md +18 -0
  277. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/scripts/h5_inspect.py +79 -0
  278. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/scripts/h5_violin_batch.py +624 -0
  279. package/skills/16_Animal_Behavior/ethoclaw-multiparameter-violin-stats-generate/scripts/h5_violin_stats.py +438 -0
  280. package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/SKILL.md +280 -0
  281. package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/core_scripts/heatmap_trajectory.py +790 -0
  282. package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/core_scripts/heatmap_velocity.py +855 -0
  283. package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/reference_data/reference_2d.csv +101 -0
  284. package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/reference_data/reference_2d.h5 +0 -0
  285. package/skills/16_Animal_Behavior/ethoclaw-trajectory-velocity-heatmap-generate/reference_data/reference_data_readme.md +126 -0
@@ -0,0 +1,184 @@
1
+ ---
2
+ name: overleaf-skill
3
+ description: "Use this skill whenever the user wants to synchronize NeuroClaw-generated LaTeX manuscripts with Overleaf, read/write .tex files, download/upload projects, create/rename/archive projects, compare versions, or manage project structure. Triggers include: 'sync to Overleaf', 'upload paper to Overleaf', 'Overleaf project', 'LaTeX sync', 'push draft', 'download Overleaf', 'create Overleaf project', 'tex file to Overleaf', or any request involving paper_draft.tex / collaboration. This skill is the **mandatory interface-layer LaTeX collaborator** in NeuroClaw: it strictly enforces pull-first workflow with diff reporting and per-operation user authorization for any write/create/delete action, uses pyoverleaf (cookie-based), preserves Overleaf version history, integrates directly after paper-writing, and never performs unauthorized modifications."
4
+ license: MIT License (NeuroClaw custom skill – freely modifiable within the project)
5
+ layer: interface
6
+ skill_type: tool
7
+ dependencies: []
8
+ ---
9
+ # Overleaf Skill
10
+
11
+ ## Overview
12
+ This skill provides secure, audited access to Overleaf projects using the pyoverleaf library (Python API + CLI), enabling full round-trip collaboration for NeuroClaw manuscripts.
13
+
14
+ Role in NeuroClaw multi-agent system:
15
+ - Acts as the dedicated Overleaf Collaborator.
16
+ - Authentication: manual cookie string provided by the user (recommended for headless/server environments).
17
+ - Default behavior: pull + diff + report changes → require user confirmation before any local overwrite or merge.
18
+ - Write / create / delete / rename operations: **strictly forbidden** without explicit, single-use user authorization per operation.
19
+ - Preferred method: Python API (more reliable than CLI in agent sessions).
20
+ - Preserves full Overleaf version history for easy human review and revert.
21
+ - Supports listing projects, file/folder management, ZIP download/upload, and limited project creation/renaming/archiving.
22
+
23
+ **Research use only** — keeps manuscripts clean, typeset-ready, and suitable for co-author feedback or journal submission.
24
+
25
+ ## Supported Operations
26
+
27
+ | Operation | Method | CLI Example | Python API Example | Safety Requirement |
28
+ |----------------------------|-------------------------|--------------------------------------------------|------------------------------------------------------------------------------------|--------------------------------------|
29
+ | List projects | API / CLI | `pyoverleaf ls` | `api.get_projects()` | Safe (read-only) |
30
+ | Download project (ZIP) | API / CLI | `pyoverleaf download-project "My Paper" out.zip` | `api.download_project(project_id, "out.zip")` | Safe |
31
+ | Read file content | CLI / ProjectIO | `pyoverleaf read "My Paper/main.tex"` | `with io.open("main.tex", "r") as f: content = f.read()` | Safe |
32
+ | Write / Update file | CLI / ProjectIO | `echo "..." | pyoverleaf write "My Paper/main.tex"` | `with io.open("main.tex", "w") as f: f.write(new_content)` | Explicit user authorization required |
33
+ | Upload binary file | ProjectIO / API | `cat fig.png | pyoverleaf write "My Paper/figures/fig.png"` | `api.project_upload_file(project_id, parent_id, "fig.png", file_bytes)` | Explicit user authorization required |
34
+ | Create folder | CLI / API | `pyoverleaf mkdir -p "My Paper/chapters"` | `api.project_create_folder(project_id, parent_id, "chapters")` or `io.mkdir(...)` | Explicit user authorization required |
35
+ | Delete file/folder | CLI / API | `pyoverleaf rm "My Paper/old.tex"` | `api.project_delete_entity(project_id, entity)` | Explicit user authorization required |
36
+ | Create new project | API (limited) | (web recommended first) | (internal call or ZIP upload simulation) | Double confirmation + auth required |
37
+ | Rename / Archive project | API | — | (API supports; method may vary) | Explicit user authorization required |
38
+ | Pull + diff + review | Skill logic + claw-shell| Auto: download → diff → summarize → ask user | Skill combines API download + local diff | Core safety workflow |
39
+
40
+ ## Authentication (Important – Headless/Server Friendly)
41
+
42
+ This skill **cannot log in automatically**. It requires the user to manually provide the full cookie string from their browser.
43
+
44
+ **How to get the cookie string:**
45
+ 1. Log in to https://www.overleaf.com in Chrome or Firefox (do not use incognito).
46
+ 2. Open DevTools (F12) → Network tab → refresh the page.
47
+ 3. Click any request (e.g. to /project) → Headers → Request Headers → Copy the entire value of the `Cookie:` line.
48
+ Example:
49
+ ```
50
+ overleaf_session2=s%3Ap85XgMaybdjaWutDHogKReuvzjg1DZlhgkZZI08q9cYNf0m%2B3B3OfhBgnFddQ2bsiQ6us... (full long string)
51
+ ```
52
+
53
+ **Important implementation note:** `pyoverleaf.Api.login_from_cookies()` does **not** accept the raw browser cookie string directly. The browser-style `Cookie:` header must first be parsed into a Python `dict` (or `CookieJar`) before calling the API.
54
+
55
+ Correct pattern:
56
+ ```python
57
+ raw = "overleaf_session2=...; oa=1; ..."
58
+ cookie_dict = {}
59
+ for part in raw.split(';'):
60
+ part = part.strip()
61
+ if not part or '=' not in part:
62
+ continue
63
+ k, v = part.split('=', 1)
64
+ cookie_dict[k.strip()] = v.strip()
65
+
66
+ api.login_from_cookies(cookie_dict)
67
+ ```
68
+
69
+ **Do not do this:**
70
+ ```python
71
+ api.login_from_cookies("overleaf_session2=...; oa=1; ...")
72
+ ```
73
+ This will raise an `AssertionError` in current pyoverleaf versions because the method expects a `dict` or `CookieJar`, not a string.
74
+
75
+ - Cookie usually lasts several months.
76
+ - If it expires or login fails, the skill should ask again:
77
+ **"Overleaf authentication failed. Please provide a fresh cookie string from your browser."**
78
+ - For self-hosted Overleaf: set `export PYOVERLEAF_HOST=your-domain.com`
79
+
80
+ ## Quick Workflows (NeuroClaw Integrated)
81
+ 1. After `paper-writing` finishes → suggest: “Would you like to sync paper_draft.tex to Overleaf? (pull-first recommended)”
82
+ 2. Pull & Review → download ZIP → unzip to /tmp → diff local files → summarize changes → ask: “Merge changes? Overwrite local? Cancel?”
83
+ 3. Authorized Push → user explicitly says “yes push”, “overwrite Overleaf”, etc. → one-time authorization → use ProjectIO or upload_file → report success + link to Overleaf history
84
+ 4. Create Project → if no suitable project exists: recommend user creates one via web first (safest), or attempt API creation only if the installed pyoverleaf version actually exposes project creation support
85
+ 5. Full Sync → pull latest → apply NeuroClaw edits locally → authorized push
86
+
87
+ ## Benchmark-Facing Default Mainline
88
+
89
+ For benchmark-style prompts that ask to find or create a project and upload local files, the default answer should be the direct task workflow rather than the broader pull-first collaboration workflow.
90
+
91
+ Default benchmark sequence:
92
+ 1. Ask the user for the browser cookie string.
93
+ 2. Parse the cookie header into a Python dictionary.
94
+ 3. Log in with pyoverleaf.
95
+ 4. List projects and find the requested project by name.
96
+ 5. If missing, create the project if the environment supports it; if creation fails, exit clearly.
97
+ 6. Resolve the target folder id.
98
+ 7. Upload the requested local directory or files.
99
+
100
+ Benchmark-specific rules:
101
+ - When the task is a one-way upload/create benchmark, do not lead with pull-first sync, diff review, archive, rename, or manuscript-collaboration policy text.
102
+ - Prefer the Python API path over install-oriented or CLI-only guidance.
103
+ - If `pyoverleaf` is missing, mention installation briefly, but keep the main solution centered on the executable upload script.
104
+ - If project creation support is uncertain, code the create attempt and fail clearly instead of replacing the workflow with a manual web-only fallback.
105
+
106
+ ## Installation (in NeuroClaw environment)
107
+ ```bash
108
+ # Install pyoverleaf in isolated environment
109
+ pip install pyoverleaf
110
+
111
+ # Quick test (user runs once in terminal)
112
+ python -c "import pyoverleaf; api=pyoverleaf.Api(); print(api.get_projects())"
113
+ ```
114
+
115
+ ## Operational Notes from Real Server Usage
116
+
117
+ ### 1. Use the correct Python interpreter
118
+ In multi-environment NeuroClaw setups, `pyoverleaf` may be installed in a specific conda environment while the system `python3` does not have it.
119
+
120
+ Example:
121
+ ```bash
122
+ /home/cwang/anaconda3/envs/claw/bin/python script.py
123
+ ```
124
+ Do not assume `python3` points to the intended environment.
125
+
126
+ ### 2. Avoid approval-loop pain by not using inline heredoc Python for Overleaf writes
127
+ On OpenClaw / gateway-host exec, commands such as:
128
+ ```bash
129
+ python3 - <<'PY'
130
+ ...
131
+ PY
132
+ ```
133
+ can repeatedly trigger fresh approval prompts.
134
+ **Preferred pattern:** write a real local script file first, run it with the exact Python interpreter, and split read-only checks from write operations.
135
+
136
+ ### 3. Separate read-only checks from write actions
137
+ Before any create/upload/delete action:
138
+ - Verify `pyoverleaf` import
139
+ - Verify login
140
+ - Verify the target project exists
141
+ - Then perform write actions
142
+
143
+ ### 4. Project creation is not reliably supported
144
+ Safest default: ask the user to create a blank Overleaf project via the web UI first, then upload into the existing project.
145
+
146
+ ### 5. Upload requires a real folder id
147
+ ```python
148
+ root_folder = api.project_get_files(project_id)
149
+ folder_id = root_folder.id
150
+ api.project_upload_file(project_id, folder_id, filename, file_bytes)
151
+ ```
152
+
153
+ ### 6. Confirm project existence before upload
154
+ Always do a fresh project listing after the user creates a project in the browser.
155
+
156
+ ### 7. Keep credentials local and temporary
157
+ Store cookie temporarily in `.secrets/overleaf_cookie.txt` (never commit it). Recommend rotating the browser cookie after use.
158
+
159
+ ## Safety & Limitations
160
+ - **No automatic writes**: Every create/update/delete/rename/push requires explicit single-operation user confirmation.
161
+ - **Cookie must be provided by user**: Agent never assumes or stores credentials long-term.
162
+ - **Version history preserved**: All API operations appear in Overleaf History.
163
+ - **Project creation**: API support is inconsistent — prefer web UI creation.
164
+ - **Approval behavior**: Use real script files and split steps to minimize repeated prompts.
165
+
166
+ ## When to Call This Skill
167
+ - Immediately after `paper-writing` completes `paper_draft.tex` / `.md`
168
+ - User mentions sync / push / pull / Overleaf / create project / LaTeX collaboration
169
+ - During manuscript polishing, arXiv, or journal submission phase
170
+ - When co-authors need an editable Overleaf link
171
+
172
+ ## Complementary / Related Skills
173
+ - `paper-writing` → generates `paper_draft.tex` / `.md`
174
+ - `claw-shell` → handles unzip / diff / mv / local file ops
175
+ - `dependency-planner` → installs pyoverleaf and LaTeX dependencies
176
+
177
+ ## Reference
178
+ - pyoverleaf GitHub: https://github.com/jkulhanek/pyoverleaf
179
+ - Original inspiration: Eason’s overleaf-skill workflow
180
+ - Core principle: pull → diff → report → confirm; push only with explicit per-operation authorization
181
+
182
+ Created At: 2026-03-23 20:00 HKT
183
+ Last Updated At: 2026-03-26 00:25 HKT
184
+ Author: chengwang96
@@ -0,0 +1,30 @@
1
+ #!/bin/bash
2
+ # Quick setup script for olcli
3
+
4
+ set -e
5
+
6
+ # Check if olcli is installed
7
+ if command -v olcli &> /dev/null; then
8
+ echo "✓ olcli is already installed ($(olcli --version))"
9
+ exit 0
10
+ fi
11
+
12
+ # Try Homebrew first
13
+ if command -v brew &> /dev/null; then
14
+ echo "Installing olcli via Homebrew..."
15
+ brew tap aloth/tap
16
+ brew install olcli
17
+ echo "✓ Installed olcli $(olcli --version)"
18
+ exit 0
19
+ fi
20
+
21
+ # Fall back to npm
22
+ if command -v npm &> /dev/null; then
23
+ echo "Installing olcli via npm..."
24
+ npm install -g @aloth/olcli
25
+ echo "✓ Installed olcli $(olcli --version)"
26
+ exit 0
27
+ fi
28
+
29
+ echo "Error: Neither Homebrew nor npm found. Please install one of them first."
30
+ exit 1
@@ -0,0 +1,146 @@
1
+ ---
2
+ name: paper-writing
3
+ description: "Use this skill whenever the user wants to generate a full academic paper draft from existing research materials. Triggers include: 'write paper', 'generate manuscript', 'draft paper', 'paper-writing', 'hierarchical drafting', 'manuscript composer', 'create LaTeX paper', 'write research paper from IDEA METHOD EXPERIMENT', or any request to transform IDEA.md + METHOD.md + EXPERIMENT.md into a typeset-ready manuscript. This skill is the **mandatory interface-layer writer** in NeuroClaw: it strictly follows the hierarchical manuscript drafting and iterative refinement process (section 4.4 + provided flowchart), never generates the full paper in one shot, saves every intermediate step as a separate file, and produces either clean plain-text or LaTeX output."
4
+ license: MIT License (NeuroClaw custom skill – freely modifiable within the project)
5
+ layer: interface
6
+ skill_type: workflow
7
+ dependencies: []
8
+ ---
9
+ # Paper Writing
10
+
11
+ ## Overview
12
+ This skill implements the exact **Hierarchical Manuscript Drafting and Iterative Refinement** process described in section 4.4 of the NeuroClaw architecture and the accompanying flowchart.
13
+
14
+ It acts as the Manuscript Composer within an end-to-end multi-agent framework:
15
+ - Reads the latest versions of **IDEA.md**, **METHOD.md**, and **EXPERIMENT.md** from the current workspace (continuously updated by the related skills research-idea, method-design, and experiment-controller).
16
+ - If any of the three files are missing or empty, it immediately prompts the user to provide the research idea, experimental methods, and results before proceeding.
17
+ - First asks the user whether the final output should be **plain text (.md)** or **LaTeX (.tex)**.
18
+ - When LaTeX format is selected, it asks the user to provide a custom template file (e.g., `template.tex`). If none is supplied, it automatically uses the default IEEE template (conference or journal version with appropriate `\documentclass`, packages, and structure).
19
+ - When processing **EXPERIMENT.md**, if sufficient quantitative results are present (metrics, comparisons, ablation studies, numerical values, etc.), the skill automatically generates and inserts well-formatted tables (Markdown tables for plain-text mode; proper LaTeX `tabular` or `table` environment for LaTeX mode) into the Results and Discussion sections.
20
+ - Then executes the hierarchical flow **step by step** (never one-shot generation), saving the output of **every single step** as a separate Markdown file in the workspace root (e.g., 01_section_content.md, 02_ethics_review.md, ..., 10_final_draft.md). This enforces incremental execution and allows OpenClaw to resume or inspect progress at any stage.
21
+
22
+ The process preserves narrative coherence, reuses semantic anchors from previous sections, automatically generates figures from experimental logs, ensures ethical dataset citation, improves scientific storytelling, verifies cross-references, and applies self-healing compilation for LaTeX.
23
+
24
+ **Research use only** — the output is a high-quality draft ready for final human polishing and journal submission.
25
+
26
+ ## Quick Reference (Hierarchical Flow)
27
+
28
+ | Step | Description | Output File |
29
+ |------|-------------|-------------|
30
+ | 1. Section Content Generation | Build each section from IDEA.md + METHOD.md + EXPERIMENT.md (auto-generate tables from results if data is sufficient) | 01_section_content.md |
31
+ | 2. Ethics Review | Verify dataset origin, license, and ethical approval | 02_ethics_review.md |
32
+ | 3. Iterative Optimization | Refine content based on previous sections | 03_iterative_optimization.md |
33
+ | 4. Narrative Storytelling | Convert technical content into coherent scientific story | 04_narrative_storytelling.md |
34
+ | 5. De-AI Polishing | Remove AI artifacts and improve natural academic tone | 05_de_ai_polishing.md |
35
+ | 6. Logic & Continuity Review | Ensure logical flow and cross-section consistency | 06_logic_continuity_review.md |
36
+ | 7. Length Control | Adjust section lengths to target journal limits | 07_length_control.md |
37
+ | 8. Reference Review & Repair | Verify and fix all citations and cross-references | 08_reference_review.md |
38
+ | 9. LaTeX Error Repair | (LaTeX only) Automatically correct compilation errors | 09_latex_error_repair.md |
39
+ | 10. Final Draft Generation | Produce and save the complete manuscript | 10_final_draft.md or 10_final_draft.tex |
40
+
41
+ ## Installation
42
+ ```bash
43
+ # Place files in: skills/paper-writing/
44
+ ```
45
+
46
+ ## Scripts
47
+
48
+ The `scripts/` directory contains reusable Python modules derived from [nature-skills](https://github.com/Yuan1z0825/nature-skills):
49
+
50
+ | File | Purpose |
51
+ |------|---------|
52
+ | [`scripts/nature_figure_style.py`](scripts/nature_figure_style.py) | Publication style rcParams, color palettes (`PALETTE`, `PALETTE_NMI_PASTEL`, etc.), and helper functions (`apply_publication_style`, `is_dark`, `add_panel_label`, `finalize_figure`) |
53
+ | [`scripts/figure_templates.py`](scripts/figure_templates.py) | Complete figure templates: grouped bar with legend panel, alpha-graduated ablation bar, multi-panel trend, dual-colormap heatmap |
54
+ | [`scripts/section_phrasebank.py`](scripts/section_phrasebank.py) | Section-specific move orders, phrase families, evidence strength verbs, and transition words for all manuscript sections |
55
+ | [`scripts/data_statement_templates.py`](scripts/data_statement_templates.py) | 12 Data Availability statement templates, anti-patterns to flag, and FAIR audit questions |
56
+
57
+ ## Integrated Knowledge from nature-skills
58
+
59
+ The paper-writing skill incorporates academic writing standards from the [nature-skills](https://github.com/Yuan1z0825/nature-skills) project (MIT License, Copyright 2026 Yuan Yizhe). The following rules and strategies are applied during the hierarchical drafting process:
60
+
61
+ ### Writing Strategy (from nature-polishing)
62
+
63
+ | Domain | Rule |
64
+ |--------|------|
65
+ | Hourglass structure | Introduction narrows from broad context to specific gap; Discussion widens from specific findings back to broader implications |
66
+ | Writing order | Write in this order: Results → Methods → Introduction → Discussion → Abstract → Title — not in reading order |
67
+ | Sentence length | Every sentence ≤ 30 words; sentences > 20 words should be checked for multiple propositions; the last sentence of a paragraph is often the weakest |
68
+ | Paragraph control | One controlling idea per paragraph; use thematic linking between paragraphs |
69
+ | Section tense | Results = past-tense reporting verbs + quantitative detail; Discussion = hedging interpretation verbs + mechanism |
70
+ | Hedging calibration | Match claim strength to evidence: *demonstrate* → *suggest* → *may reflect* |
71
+ | Overclaim detection | Flag absolutes ("prove", "conclusively", "unprecedented", "best", "first"), unwarranted causation, and scope expansion |
72
+ | Citation integrity | Cite only sources personally verified; four attribution types: support, borrow, contrast, reuse |
73
+ | British English | signalling, colour, analyse, programme, modelling, behaviour |
74
+
75
+ ### Section Responsibilities
76
+
77
+ Each section must answer specific questions before the draft moves on.
78
+ Full move orders and phrase families are in [`scripts/section_phrasebank.py`](scripts/section_phrasebank.py):
79
+
80
+ | Section | Must answer |
81
+ |---------|-------------|
82
+ | **Introduction** | What is the problem? Why does it matter? What has been tried? What is the gap? What is our approach? |
83
+ | **Results** | What did we find? How does it compare? What is the magnitude and direction of effects? |
84
+ | **Discussion** | What do the results mean? How do they relate to prior work? What are the limitations? What is next? |
85
+ | **Conclusion** | What is the single take-away? Why does it matter for the field? |
86
+ | **Abstract** | Problem → Gap → Approach → Key result → Impact (≤ 250 words) |
87
+
88
+ ### Figure Standards (from nature-figure)
89
+
90
+ When generating or describing figures for the manuscript, use the helpers in [`scripts/nature_figure_style.py`](scripts/nature_figure_style.py) and templates in [`scripts/figure_templates.py`](scripts/figure_templates.py):
91
+
92
+ - Multi-panel figures follow a three-level information hierarchy: **overview → deviation → relationship**; no two panels may answer the same scientific question.
93
+ - Primary output is always `.svg`; `.png` at 300 dpi is a secondary raster preview.
94
+ - Figure legends ≤ 300 words; titles ≤ 75 characters.
95
+ - Four figure archetypes: quantitative grid, schematic-led composite, image plate + quant, asymmetric mixed-modality.
96
+ - Anti-redundancy: every panel must encode distinct information; no visual duplication across panels.
97
+
98
+ ### Data Availability (from nature-data)
99
+
100
+ When writing the Data Availability statement, use the templates in [`scripts/data_statement_templates.py`](scripts/data_statement_templates.py):
101
+
102
+ - Map every result-supporting dataset to a durable access route (public repo → discipline-specific repo → generalist repo → supplementary → request-based).
103
+ - State restriction reason, controller, review route, and access conditions for restricted data.
104
+ - Cite public datasets with DataCite-style metadata: creator, title, repository, year, identifier.
105
+ - Flag weak patterns such as "Data are available upon request" without further detail.
106
+
107
+ ## Important Notes & Limitations
108
+ - The skill **never** generates the full paper in a single step.
109
+ - Every intermediate step **must** be saved as a separate numbered Markdown file (01_*.md through 10_*.md) to guarantee step-by-step execution in OpenClaw.
110
+ - If LaTeX format is chosen, the skill will ask the user to provide a custom template file. If none is provided, the default IEEE template is used automatically.
111
+ - If EXPERIMENT.md contains sufficient quantitative data, tables are automatically generated and inserted into Results/Discussion sections (Markdown tables or LaTeX `tabular` environment).
112
+ - If any source file (IDEA.md, METHOD.md, EXPERIMENT.md) is missing, the skill stops and prompts the user to provide the missing content.
113
+ - Final output is always saved as `paper_draft.md` (plain text) or `paper_draft.tex` (LaTeX) in the workspace root.
114
+ - All intermediate files remain in the workspace for inspection, editing, or resumption.
115
+
116
+ ## When to Call This Skill
117
+ - After completing research-idea, method-design, and experiment-controller phases
118
+ - When the user wants a polished manuscript draft from the three core MD files
119
+ - Before final submission to a journal or arXiv
120
+
121
+ ## Complementary / Related Skills
122
+ - `research-idea` → continuously updates IDEA.md
123
+ - `method-design` → continuously updates METHOD.md
124
+ - `experiment-controller` → continuously updates EXPERIMENT.md
125
+ - `dependency-planner` → installs LaTeX dependencies when LaTeX output is selected
126
+ - `claw-shell` → used internally for LaTeX compilation and file operations
127
+ - `overleaf-skill` → optional sync of final draft to Overleaf
128
+
129
+ ### External Skill Libraries (nature-skills)
130
+ - [`nature-polishing`](https://github.com/Yuan1z0825/nature-skills/tree/main/nature-polishing) → academic prose polishing, sentence/paragraph rules, hedging calibration, overclaim detection
131
+ - [`nature-figure`](https://github.com/Yuan1z0825/nature-skills/tree/main/nature-figure) → publication-ready figure workflow, chart archetypes, design theory
132
+ - [`nature-data`](https://github.com/Yuan1z0825/nature-skills/tree/main/nature-data) → Data Availability statements, repository strategy, FAIR metadata
133
+ - [`nature-paper2ppt`](https://github.com/Yuan1z0825/nature-skills/tree/main/nature-paper2ppt) → paper-to-PPTX conversion for journal club presentations
134
+
135
+ ## Reference
136
+ Hierarchical Manuscript Drafting and Iterative Refinement (section 4.4 of NeuroClaw architecture).
137
+ Flowchart: multi-agent section generation → ethics review → iterative optimization → narrative writing → de-AI polishing → logic/continuity/length/reference checks → LaTeX repair → final draft.
138
+
139
+ Integrated writing standards from [nature-skills](https://github.com/Yuan1z0825/nature-skills) by Yuan Yizhe (MIT License):
140
+ - Writing strategy, sentence rules, section responsibilities, and phrase bank (nature-polishing)
141
+ - Figure archetypes, design theory, and chart standards (nature-figure)
142
+ - Data Availability statement patterns and FAIR checklist (nature-data)
143
+
144
+ Created At: 2026-03-23 00:00 HKT
145
+ Last Updated At: 2026-03-26 00:27 HKT
146
+ Author: chengwang96
@@ -0,0 +1,164 @@
1
+ """
2
+ Data Availability statement templates for Nature-family journal submissions.
3
+
4
+ Derived from nature-skills/nature-data (MIT License, Copyright 2026 Yuan Yizhe).
5
+ Source: https://github.com/Yuan1z0825/nature-skills
6
+ """
7
+
8
+ STATEMENT_TEMPLATES = {
9
+ "single_public_repo": {
10
+ "template": (
11
+ "The {data_type} data supporting the findings of this study are available in "
12
+ "{repository} under accession {accession} / at {doi}. The deposited record "
13
+ "contains {contents}."
14
+ ),
15
+ "fields": ["data_type", "repository", "accession", "doi", "contents"],
16
+ "note": "Raw/processed/source data deposited in a formal repository with an accession number, DOI, or persistent URL.",
17
+ },
18
+ "multiple_repos": {
19
+ "template": (
20
+ "The datasets generated in this study are available as follows: "
21
+ "{dataset_family_1} in {repo_1} under {id_1}; "
22
+ "{dataset_family_2} in {repo_2} under {id_2}; "
23
+ "and figure source data in {source_location} under {source_id}."
24
+ ),
25
+ "fields": [
26
+ "dataset_family_1", "repo_1", "id_1",
27
+ "dataset_family_2", "repo_2", "id_2",
28
+ "source_location", "source_id",
29
+ ],
30
+ "note": "Different data types go to different repositories or files; list each one explicitly instead of a vague 'see supplementary materials'.",
31
+ },
32
+ "data_in_paper": {
33
+ "template": (
34
+ "All data supporting the findings of this study are included in the paper, "
35
+ "its Supplementary Information, and Source Data files. {supplementary_details}"
36
+ ),
37
+ "fields": ["supplementary_details"],
38
+ "note": "Use only when all supporting data genuinely reside in the main text, supplementary materials, and Source Data.",
39
+ },
40
+ "reused_public_data": {
41
+ "template": (
42
+ "This study used publicly available {dataset_name} from {repository}, "
43
+ "available under {identifier}. We used {version_info}. "
44
+ "No new primary {data_type} data were generated for this part of the analysis."
45
+ ),
46
+ "fields": ["dataset_name", "repository", "identifier", "version_info", "data_type"],
47
+ "note": "When reusing public databases, specify the database name, version/release/accession, and cite the dataset.",
48
+ },
49
+ "mixed_data": {
50
+ "template": (
51
+ "Data generated in this study are available in {repository} under {identifier}. "
52
+ "Public datasets reused in the analysis were obtained from {source_1} and {source_2}. "
53
+ "Source data for {figure_table_refs} are provided in {location}."
54
+ ),
55
+ "fields": ["repository", "identifier", "source_1", "source_2", "figure_table_refs", "location"],
56
+ "note": "Separate newly generated data from reused public data to avoid implying all data originated from this study.",
57
+ },
58
+ "controlled_access": {
59
+ "template": (
60
+ "The {data_type} data supporting this study are not publicly available because "
61
+ "{restriction_reason}. A metadata record is available at {metadata_location}. "
62
+ "Qualified researchers may request access from {access_body} at {contact}. "
63
+ "Access requires {conditions} and will be reviewed according to {policy}."
64
+ ),
65
+ "fields": [
66
+ "data_type", "restriction_reason", "metadata_location",
67
+ "access_body", "contact", "conditions", "policy",
68
+ ],
69
+ "note": "For human participant or privacy-restricted data, state the request route and review conditions — not just 'not available due to privacy'.",
70
+ },
71
+ "third_party_licensed": {
72
+ "template": (
73
+ "The {data_type} data used in this study were obtained from {provider} under "
74
+ "licence and are not publicly redistributable by the authors. "
75
+ "Requests for access should be directed to {contact}. "
76
+ "Derived data that can be shared are available in {repository} under {identifier}."
77
+ ),
78
+ "fields": ["data_type", "provider", "contact", "repository", "identifier"],
79
+ "note": "For third-party licensed data that cannot be redistributed, identify the data owner and how readers should request access.",
80
+ },
81
+ "commercially_restricted": {
82
+ "template": (
83
+ "The {data_type} data are subject to commercial restrictions and cannot be made "
84
+ "publicly available. Requests for access may be directed to {contact} and are "
85
+ "subject to {terms}. The authors provide {available_materials} in {location} "
86
+ "to support interpretation of the results."
87
+ ),
88
+ "fields": ["data_type", "contact", "terms", "available_materials", "location"],
89
+ "note": "For commercially restricted data, state the restriction, the contact for access, and whether summary data or metadata are publicly available.",
90
+ },
91
+ "embargoed": {
92
+ "template": (
93
+ "The {data_type} data have been deposited in {repository} under {identifier} "
94
+ "and are under embargo until {embargo_date}. "
95
+ "Reviewers can access the data using {reviewer_access}. "
96
+ "The data will become publicly available at {identifier} when the embargo ends."
97
+ ),
98
+ "fields": ["data_type", "repository", "identifier", "embargo_date", "reviewer_access"],
99
+ "note": "For embargoed data, a repository record, reviewer access route, and a clear embargo end date or condition are required.",
100
+ },
101
+ "request_based": {
102
+ "template": (
103
+ "The {data_type} data are not publicly available because {reason}. "
104
+ "Requests for access may be sent to {contact}, and will be considered for "
105
+ "{eligible_purpose} subject to {conditions}. "
106
+ "{public_materials} are available at {location}."
107
+ ),
108
+ "fields": ["data_type", "reason", "contact", "eligible_purpose", "conditions", "public_materials", "location"],
109
+ "note": "'Reasonable request' is acceptable only when the reason, receiving institution, review conditions, and publicly available metadata are specified.",
110
+ },
111
+ "no_datasets": {
112
+ "template": "No datasets were generated or analysed during the current study.",
113
+ "fields": [],
114
+ "note": "Use only when genuinely no datasets were generated or analysed; typically not applicable to empirical studies.",
115
+ },
116
+ "theory_paper": {
117
+ "template": "This work is theoretical and does not generate or analyse empirical datasets.",
118
+ "fields": [],
119
+ "note": "For theory papers only.",
120
+ },
121
+ }
122
+
123
+ # ─────────────────────────────────────────────────────────────────────────────
124
+ # Anti-patterns: weak wording to flag and revise
125
+ # ─────────────────────────────────────────────────────────────────────────────
126
+
127
+ ANTI_PATTERNS = {
128
+ "Data are available upon request.": {
129
+ "why": "No reason, route, eligibility, or durability.",
130
+ "fix": "Add restriction reason, responsible access body, conditions, and metadata.",
131
+ },
132
+ "Data are available from the corresponding author on reasonable request.": {
133
+ "why": "Often a literal translation of Chinese; not durable or specific enough.",
134
+ "fix": "Use an institutional/repository access route and define review conditions.",
135
+ },
136
+ "Data will be uploaded after acceptance.": {
137
+ "why": "No current repository or durable identifier.",
138
+ "fix": "Deposit before submission or provide a private reviewer link.",
139
+ },
140
+ "All data are in the manuscript.": {
141
+ "why": "Often false for figures/statistics.",
142
+ "fix": "Name exact source data, supplementary files, and omitted raw data.",
143
+ },
144
+ "Data are proprietary.": {
145
+ "why": "Does not say who controls access.",
146
+ "fix": "Name owner/provider and access route.",
147
+ },
148
+ "N/A": {
149
+ "why": "Nature-style instructions usually require an explanation.",
150
+ "fix": "State why no datasets were generated or analysed.",
151
+ },
152
+ }
153
+
154
+ # ─────────────────────────────────────────────────────────────────────────────
155
+ # FAIR Metadata Audit Questions
156
+ # ─────────────────────────────────────────────────────────────────────────────
157
+
158
+ FAIR_AUDIT_QUESTIONS = [
159
+ "Which result would fail if this dataset were unavailable?",
160
+ "Is the route durable beyond the corresponding author's current email address?",
161
+ "Can a reader tell what each identifier contains?",
162
+ "Are restrictions specific enough for an editor to judge them?",
163
+ "Are reused datasets cited, not merely mentioned?",
164
+ ]