@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,116 @@
1
+ """Template: Ingest a new data source into the knowledge graph.
2
+
3
+ Usage:
4
+ python scripts/new_data_source_template.py --input data.tsv
5
+
6
+ Replace TODO sections with your source-specific logic.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ import argparse
12
+ import logging
13
+ from pathlib import Path
14
+
15
+ # Adjust import path for your project structure
16
+ from core.knowledge_graph.src.schema import ConceptNode, Edge, DomainTag
17
+ from core.knowledge_graph.src.graph_manager import KnowledgeGraph
18
+ from core.knowledge_graph.src.storage import load_graph, save_graph
19
+
20
+ logger = logging.getLogger(__name__)
21
+
22
+
23
+ def parse_data(data_path: str) -> list[dict]:
24
+ """TODO: Parse your source data file.
25
+
26
+ Returns list of dicts with at minimum:
27
+ - id: unique identifier
28
+ - name: preferred display name
29
+ - type: entity type (maps to DomainTag)
30
+ - parent_id: optional, for hierarchical edges
31
+ - synonyms: optional, list of alternate names
32
+ """
33
+ records = []
34
+ # TODO: implement parsing logic
35
+ # Example TSV parsing:
36
+ # with open(data_path) as f:
37
+ # reader = csv.DictReader(f, delimiter='\t')
38
+ # for row in reader:
39
+ # records.append({
40
+ # "id": f"SRC:{row['id']}",
41
+ # "name": row["name"],
42
+ # "type": "disease",
43
+ # "parent_id": row.get("parent_id"),
44
+ # "synonyms": row.get("synonyms", "").split("|"),
45
+ # })
46
+ return records
47
+
48
+
49
+ def ingest_source(kg: KnowledgeGraph, data_path: str) -> dict:
50
+ """Parse source data and add concepts + edges to graph.
51
+
52
+ Returns summary dict.
53
+ """
54
+ records = parse_data(data_path)
55
+ concepts_added = 0
56
+ edges_added = 0
57
+
58
+ for rec in records:
59
+ # 1. Create ConceptNode
60
+ # TODO: map your entity types to DomainTag values
61
+ domain = DomainTag.DISEASE # adjust as needed
62
+
63
+ node = ConceptNode(
64
+ id=rec["id"],
65
+ preferred_name=rec["name"],
66
+ domain_tags=[domain.value],
67
+ source_vocab="your_source_name",
68
+ aliases=rec.get("synonyms", []),
69
+ )
70
+ kg.add_concept(node)
71
+ concepts_added += 1
72
+
73
+ # 2. Create hierarchical edge (if applicable)
74
+ parent_id = rec.get("parent_id")
75
+ if parent_id:
76
+ edge = Edge(
77
+ source_id=rec["id"],
78
+ target_id=parent_id,
79
+ relation_type="is_a", # or "part_of" for anatomy
80
+ source="your_source_name",
81
+ )
82
+ before = kg.G.number_of_edges()
83
+ kg.add_edge(edge)
84
+ if kg.G.number_of_edges() > before:
85
+ edges_added += 1
86
+
87
+ summary = {
88
+ "concepts_added": concepts_added,
89
+ "edges_added": edges_added,
90
+ "total_records": len(records),
91
+ }
92
+ logger.info(f"ingestion complete: {summary}")
93
+ return summary
94
+
95
+
96
+ def main():
97
+ parser = argparse.ArgumentParser(description="Ingest data from a new source")
98
+ parser.add_argument("--input", required=True, help="Path to source data file")
99
+ parser.add_argument("--graph", default=None, help="Path to existing graph JSON")
100
+ parser.add_argument("--output", default=None, help="Output graph path")
101
+ args = parser.parse_args()
102
+
103
+ logging.basicConfig(level=logging.INFO, format="%(asctime)s %(message)s")
104
+
105
+ graph_path = Path(args.graph) if args.graph else Path("core/knowledge_graph/data/knowledge_graph.json")
106
+ kg = load_graph(graph_path)
107
+
108
+ summary = ingest_source(kg, args.input)
109
+
110
+ out_path = Path(args.output) if args.output else graph_path
111
+ save_graph(kg, out_path)
112
+ logger.info(f"saved graph to {out_path}")
113
+
114
+
115
+ if __name__ == "__main__":
116
+ main()
@@ -0,0 +1,15 @@
1
+ # Knowledge Graph Builder - Python Dependencies
2
+
3
+ # Core
4
+ networkx>=3.0
5
+ requests>=2.31.0
6
+
7
+ # LLM extraction
8
+ openai>=1.0.0
9
+
10
+ # PubMed (optional, requests fallback available)
11
+ biopython>=1.81
12
+
13
+ # Atlas generation (optional)
14
+ nilearn>=0.10.0
15
+ nibabel>=5.0.0
@@ -0,0 +1,61 @@
1
+ ---
2
+ name: method-design
3
+ description: "Use this skill whenever the user wants to formalize a network architecture and derive theoretical components from a research idea. Triggers include: 'method design', 'design method', 'network architecture', 'formula derivation', 'method-design', 'theoretical framework', 'derive equations', or any request to transform IDEA.md into a detailed METHOD.md. This skill is the **mandatory interface-layer method formalizer** in NeuroClaw: it reads IDEA.md, designs concrete network structures (layers, modules, connections), performs mathematical derivations (equations, loss functions, proofs), and always outputs a structured METHOD.md."
4
+ license: MIT License (NeuroClaw custom skill – freely modifiable within the project)
5
+ layer: interface
6
+ skill_type: workflow
7
+ dependencies: []
8
+ ---
9
+ # Method Design
10
+
11
+ ## Overview
12
+ This skill implements the **Framework Formalization & Theoretical Derivation** process for the NeuroClaw method-design phase.
13
+
14
+ It acts as the Method Architect within the multi-agent framework:
15
+ - Reads the latest **IDEA.md** from the workspace.
16
+ - Designs the specific neural network structure (e.g., CNN backbone, attention modules, MRI-specific layers) tailored to the neuroscience task.
17
+ - Derives all necessary formulas (loss functions, gradients, convergence proofs, etc.) using symbolic or step-by-step reasoning.
18
+ - Produces a clean, publication-ready **METHOD.md** with sections: Architecture Diagram (text description), Detailed Layers, Mathematical Formulation, Implementation Notes, and Pseudocode.
19
+
20
+ If any part is ambiguous, it asks the user for clarification before proceeding.
21
+ **Research use only** — the output is a mathematically rigorous METHOD.md ready for experiment-controller and paper-writing.
22
+
23
+ ## Quick Reference (Method Flow)
24
+
25
+ | Step | Description | Output File |
26
+ |------|--------------------------------------|------------------------|
27
+ | 1. Read & Parse | Load and analyze IDEA.md | 01_idea_summary.md |
28
+ | 2. Architecture Design | Define network layers & modules | 02_architecture.md |
29
+ | 3. Formula Derivation | Derive equations & proofs | 03_formulas.md |
30
+ | 4. Pseudocode & Notes | Generate implementation details | 04_pseudocode.md |
31
+ | 5. Finalize | Compile and polish | METHOD.md |
32
+
33
+ ## Installation
34
+ ```bash
35
+ # Place files in: skills/method-design/
36
+ ```
37
+
38
+ ## Important Notes & Limitations
39
+ - Always starts from the latest IDEA.md; stops and prompts if missing.
40
+ - Every step saved as numbered .md files for transparency and resumption.
41
+ - Uses symbolic derivation (no hallucinated math); can call claw-shell or code tools internally for verification.
42
+ - Final output always saved as `METHOD.md` in workspace root.
43
+ - Diagrams are described in text (PlantUML/Mermaid ready); no image generation here.
44
+
45
+ ## When to Call This Skill
46
+ - Immediately after research-idea skill completes IDEA.md
47
+ - When the user wants to specify network details or mathematical foundation
48
+ - Before experiment-controller or paper-writing
49
+
50
+ ## Complementary / Related Skills
51
+ - `research-idea` → provides IDEA.md (input)
52
+ - `experiment-controller` → consumes METHOD.md
53
+ - `paper-writing` → consumes METHOD.md
54
+
55
+ ## Reference
56
+ NeuroClaw architecture (section 1.5 method-design skill).
57
+ Flow: IDEA.md parsing → architecture design → equation derivation → pseudocode → METHOD.md
58
+
59
+ Created At: 2026-03-24 00:00 HKT
60
+ Last Updated At: 2026-03-26 00:14 HKT
61
+ Author: chengwang96
@@ -0,0 +1,119 @@
1
+ ---
2
+ name: "multi-search-engine"
3
+ description: "Multi search engine integration with 17 engines (8 CN + 9 Global). Supports advanced search operators, time filters, site search, privacy engines, and WolframAlpha knowledge queries. No API keys required."
4
+ layer: base
5
+ skill_type: tool
6
+ dependencies: []
7
+ ---
8
+ # Multi Search Engine v2.0.1
9
+
10
+ Integration of 17 search engines for web crawling without API keys.
11
+
12
+ ## Search Engines
13
+
14
+ ### Domestic (8)
15
+ - **Baidu**: `https://www.baidu.com/s?wd={keyword}`
16
+ - **Bing CN**: `https://cn.bing.com/search?q={keyword}&ensearch=0`
17
+ - **Bing INT**: `https://cn.bing.com/search?q={keyword}&ensearch=1`
18
+ - **360**: `https://www.so.com/s?q={keyword}`
19
+ - **Sogou**: `https://sogou.com/web?query={keyword}`
20
+ - **WeChat**: `https://wx.sogou.com/weixin?type=2&query={keyword}`
21
+ - **Toutiao**: `https://so.toutiao.com/search?keyword={keyword}`
22
+ - **Jisilu**: `https://www.jisilu.cn/explore/?keyword={keyword}`
23
+
24
+ ### International (9)
25
+ - **Google**: `https://www.google.com/search?q={keyword}`
26
+ - **Google HK**: `https://www.google.com.hk/search?q={keyword}`
27
+ - **DuckDuckGo**: `https://duckduckgo.com/html/?q={keyword}`
28
+ - **Yahoo**: `https://search.yahoo.com/search?p={keyword}`
29
+ - **Startpage**: `https://www.startpage.com/sp/search?query={keyword}`
30
+ - **Brave**: `https://search.brave.com/search?q={keyword}`
31
+ - **Ecosia**: `https://www.ecosia.org/search?q={keyword}`
32
+ - **Qwant**: `https://www.qwant.com/?q={keyword}`
33
+ - **WolframAlpha**: `https://www.wolframalpha.com/input?i={keyword}`
34
+
35
+ ## Quick Examples
36
+
37
+ ```javascript
38
+ // Basic search
39
+ web_fetch({"url": "https://www.google.com/search?q=python+tutorial"})
40
+
41
+ // Site-specific
42
+ web_fetch({"url": "https://www.google.com/search?q=site:github.com+react"})
43
+
44
+ // File type
45
+ web_fetch({"url": "https://www.google.com/search?q=machine+learning+filetype:pdf"})
46
+
47
+ // Time filter (past week)
48
+ web_fetch({"url": "https://www.google.com/search?q=ai+news&tbs=qdr:w"})
49
+
50
+ // Privacy search
51
+ web_fetch({"url": "https://duckduckgo.com/html/?q=privacy+tools"})
52
+
53
+ // DuckDuckGo Bangs
54
+ web_fetch({"url": "https://duckduckgo.com/html/?q=!gh+tensorflow"})
55
+
56
+ // Knowledge calculation
57
+ web_fetch({"url": "https://www.wolframalpha.com/input?i=100+USD+to+CNY"})
58
+ ```
59
+
60
+ ## Advanced Operators
61
+
62
+ | Operator | Example | Description |
63
+ |----------|--------------------------|----------------------|
64
+ | `site:` | `site:github.com python` | Search within site |
65
+ | `filetype:` | `filetype:pdf report` | Specific file type |
66
+ | `""` | `"machine learning"` | Exact match |
67
+ | `-` | `python -snake` | Exclude term |
68
+ | `OR` | `cat OR dog` | Either term |
69
+
70
+ ## Time Filters
71
+
72
+ | Parameter | Description |
73
+ |-------------|-------------|
74
+ | `tbs=qdr:h` | Past hour |
75
+ | `tbs=qdr:d` | Past day |
76
+ | `tbs=qdr:w` | Past week |
77
+ | `tbs=qdr:m` | Past month |
78
+ | `tbs=qdr:y` | Past year |
79
+
80
+ ## Privacy Engines
81
+ - **DuckDuckGo**: No tracking
82
+ - **Startpage**: Google results + privacy
83
+ - **Brave**: Independent index
84
+ - **Qwant**: EU GDPR compliant
85
+
86
+ ## Bangs Shortcuts (DuckDuckGo)
87
+
88
+ | Bang | Destination |
89
+ |------|-----------------|
90
+ | `!g` | Google |
91
+ | `!gh`| GitHub |
92
+ | `!so`| Stack Overflow |
93
+ | `!w` | Wikipedia |
94
+ | `!yt`| YouTube |
95
+
96
+ ## WolframAlpha Queries
97
+ - Math: `integrate x^2 dx`
98
+ - Conversion: `100 USD to CNY`
99
+ - Stocks: `AAPL stock`
100
+ - Weather: `weather in Beijing`
101
+
102
+ ## Documentation
103
+ - `references/advanced-search.md` - Domestic search guide
104
+ - `references/international-search.md` - International search guide
105
+ - `CHANGELOG.md` - Version history
106
+
107
+ ## License
108
+ MIT
109
+
110
+ ## Complementary / Related Skills
111
+ - `academic-research-hub` → scholarly paper search
112
+
113
+ ## Reference
114
+ Core multi-engine search integration for NeuroClaw (v2.0.1).
115
+ Used as the primary literature & web search backend across all interface-layer skills.
116
+
117
+ Created At: 2026-03-24 00:00 HKT
118
+ Last Updated At: 2026-03-26 00:18 HKT
119
+ Author: chengwang96
@@ -0,0 +1,65 @@
1
+ ---
2
+ name: research-idea
3
+ description: "Use this skill whenever the user wants to generate or refine a research idea through literature search and discussion. Triggers include: 'research idea', 'brainstorm idea', 'generate idea', 'research-idea', 'idea generation', 'discuss new direction', or any request to explore literature and output to IDEA.md. This skill is the **mandatory interface-layer idea generator** in NeuroClaw: it calls networking search skills to retrieve recent papers, identifies gaps/trends, then iteratively discusses with the user to finalize a structured idea, always saving the result as IDEA.md."
4
+ license: MIT License (NeuroClaw custom skill – freely modifiable within the project)
5
+ layer: interface
6
+ skill_type: workflow
7
+ dependencies:
8
+ - multi-search-engine
9
+ - academic-research-hub
10
+ ---
11
+ # Research Idea
12
+
13
+ ## Overview
14
+ This skill implements the **Literature Search + User Discussion** process for NeuroClaw research-idea phase.
15
+
16
+ It acts as the Idea Generator within the multi-agent framework:
17
+ - Automatically calls search skills (`multi-search-engine`, `academic-research-hub`, etc.) for the latest papers (prefer last 3–6 months).
18
+ - Summarizes key trends, methods, and open gaps.
19
+ - Engages in step-by-step discussion with the user to refine novelty and feasibility.
20
+ - Saves the final structured idea as **IDEA.md** (Background, Gap, Proposed Idea, Methods Outline, Impact).
21
+
22
+ If no topic is provided, it first asks the user for a domain (e.g., MRI segmentation, world models in neuroscience).
23
+
24
+ **Research use only** — the output is a concise, actionable IDEA.md ready for method-design.
25
+
26
+ ## Quick Reference (Idea Flow)
27
+
28
+ | Step | Description | Output File |
29
+ |------|------------------------------|----------------------|
30
+ | 1. Search | Call search skills for recent literature | temp_search.md |
31
+ | 2. Analysis | Summarize trends & gaps | 01_gap_analysis.md |
32
+ | 3. Draft | Propose initial idea | 02_preliminary.md |
33
+ | 4. Discuss | Iterate with user feedback | 03_discussion.md |
34
+ | 5. Finalize | Polish and save | IDEA.md |
35
+
36
+ ## Installation
37
+ ```bash
38
+ # Place files in: skills/research-idea/
39
+ ```
40
+
41
+ ## Important Notes & Limitations
42
+ - Always uses external search skills (no LLM hallucination for literature).
43
+ - Every step saved as numbered .md files for transparency/resume.
44
+ - Requires user confirmation at discussion steps.
45
+ - Final output always saved as `IDEA.md` in workspace root.
46
+
47
+ ## When to Call This Skill
48
+ - Start of any new project
49
+ - User wants to brainstorm or pivot research direction
50
+ - Before method-design or paper-writing
51
+
52
+ ## Complementary / Related Skills
53
+ - `multi-search-engine` → core web & general literature retrieval
54
+ - `academic-research-hub` → arXiv, PubMed, Semantic Scholar paper search
55
+ - `method-design` → consumes IDEA.md
56
+ - `paper-writing` → consumes IDEA.md
57
+ - `experiment-controller` → follows finalized idea
58
+
59
+ ## Reference
60
+ NeuroClaw architecture (section 1.4 research survey skill).
61
+ Flow: search → gap analysis → proposal → user discussion → IDEA.md
62
+
63
+ Created At: 2026-03-24 20:00 HKT
64
+ Last Updated At: 2026-03-26 00:28 HKT
65
+ Author: chengwang96
@@ -0,0 +1,197 @@
1
+ ---
2
+ name: eeg-skill
3
+ description: "Use this skill whenever the user wants to load, preprocess, epoch, filter, or extract features from EEG data (resting-state, task-based, BCI, clinical, motor imagery, emotion, epilepsy, fatigue, etc.). Triggers include: 'eeg', 'EEG preprocessing', 'EEG feature extraction', 'band power', 'downsample to frequency bands', 'motor imagery BCI', 'emotion EEG', 'epilepsy detection', or any request involving .set/.edf/.bdf/.fif/.bids files."
4
+ license: MIT License (NeuroClaw custom skill – freely modifiable within the project)
5
+ layer: subagent
6
+ skill_type: modality
7
+ dependencies:
8
+ - mne-eeg-tool
9
+ - claw-shell
10
+ ---
11
+ # EEG Skill (Modality Layer)
12
+
13
+ ## Overview
14
+
15
+ `eeg-skill` is the NeuroClaw **modality-layer** interface skill responsible for all EEG data processing tasks.
16
+ It strictly follows the NeuroClaw hierarchical design principles:
17
+
18
+ - This skill **only describes WHAT needs to be done** and **which tool skill to delegate to**.
19
+ - It contains **no full implementation code**.
20
+ - All concrete execution (MNE-Python calls, torchaudio, scipy, file I/O, etc.) is delegated to the dedicated base/tool skill `mne-eeg-tool`.
21
+ - Waveform-to-spectrogram conversion uses `torchaudio.transforms.MelSpectrogram`.
22
+ - Frequency-band energy extraction uses continuous wavelet transform (`scipy.signal.cwt` with `morlet2` wavelet).
23
+
24
+ **Core workflow (never bypassed):**
25
+
26
+ 1. Identify the user-provided EEG files (BIDS, .set, .edf, .bdf, .fif, etc.).
27
+ 2. Generate a **numbered execution plan** that clearly states WHAT needs to be done and which tool skill will handle each step.
28
+ 3. Present the full plan, estimated runtime, resource requirements, and risks to the user and wait for explicit confirmation (“YES” / “execute” / “proceed”).
29
+ 4. On confirmation, delegate every step to `mne-eeg-tool` via `claw-shell`.
30
+ 5. After execution, save all outputs in a clean directory structure (`eeg_output/`).
31
+
32
+ **Research use only** — outputs are for scientific analysis only.
33
+
34
+ ## Quick Reference (Common EEG Tasks – Updated 2026-03-25)
35
+
36
+ | Task | What needs to be done | Delegate to which tool skill | Expected output |
37
+ |-------------------------------------------|----------------------------------------------------------------------------|-----------------------------------------------|------------------------------------------|
38
+ | Load & basic validation | Read raw EEG + channel locations + events + validation | `claw-shell` (via `mne-eeg-tool`) | Validation report + raw object |
39
+ | Bad-channel detection & interpolation | Auto-detect + interpolate noisy channels | `claw-shell` (via `mne-eeg-tool`) | Cleaned raw data |
40
+ | Downsampling + filtering | Resample, high-pass, notch, bandpass filtering | `claw-shell` (via `mne-eeg-tool`) | Filtered .fif files |
41
+ | Artifact removal | ICA + AutoReject + EOG/ECG regression | `claw-shell` (via `mne-eeg-tool`) | Cleaned data |
42
+ | Continuous data cleaning | Resting-state pipeline (no events) | `claw-shell` (via `mne-eeg-tool`) | Cleaned continuous data |
43
+ | Re-referencing & epoching | Average reference (CAR) / REST + epoching + baseline correction | `claw-shell` (via `mne-eeg-tool`) | Epoched .fif files |
44
+ | Waveform to Mel-Spectrogram | Convert raw waveform to Mel spectrogram using torchaudio | `claw-shell` (via `mne-eeg-tool`) | Mel-spectrogram tensors (.pt) |
45
+ | Frequency-band energy extraction | Extract δ/θ/α/β/γ band energy using CWT with morlet2 wavelet | `claw-shell` (via `mne-eeg-tool`) | Per-band power matrices (CSV / .npy) |
46
+ | Feature extraction (core) | Band power, CSP, Hjorth, sample entropy | `claw-shell` (via `mne-eeg-tool`) | Feature matrices (CSV / .npy / .npz) |
47
+ | Advanced features | Functional connectivity, ERP peaks/latency/AUC, frontal alpha asymmetry, microstates | `claw-shell` (via `mne-eeg-tool`) | Connectivity matrices, ERP CSV, asymmetry .npy, microstates .fif |
48
+ | Full end-to-end pipeline | Any combination of the above for BCI, emotion, epilepsy, fatigue, etc. | `claw-shell` + `dependency-planner` | Complete processed dataset + QC report |
49
+
50
+ ## Installation (Handled by dependency-planner)
51
+
52
+ No manual installation required.
53
+ When first used, `eeg-skill` automatically calls `dependency-planner` to create the isolated `neuroclaw-eeg` conda environment containing MNE-Python, torchaudio, scipy, and all required packages.
54
+
55
+ ## NeuroClaw recommended wrapper script
56
+
57
+ ```python
58
+ # Example snippets (for reference in mne-eeg-tool implementation)
59
+
60
+ # 1. Waveform to Mel-Spectrogram
61
+ import torch
62
+ import torchaudio.transforms as T
63
+
64
+ mel_spec = T.MelSpectrogram(
65
+ sample_rate=256, # Adjust according to your EEG sampling rate
66
+ n_fft=1024,
67
+ hop_length=256,
68
+ n_mels=128,
69
+ f_min=0.5,
70
+ f_max=60.0 # Common EEG frequency range
71
+ )
72
+ spectrogram = mel_spec(waveform) # waveform shape: (channels, time)
73
+
74
+ # 2. Frequency-band energy extraction using CWT + morlet2
75
+ import numpy as np
76
+ from scipy.signal import cwt, morlet2
77
+
78
+ def extract_band_power(signal, fs=256):
79
+ widths = np.arange(1, 128) # Adjust according to frequency range
80
+ cwt_matrix = cwt(signal, morlet2, widths)
81
+
82
+ # Example: extract delta (0.5-4 Hz), theta (4-8 Hz), alpha (8-13 Hz), beta (13-30 Hz), gamma (30-60 Hz)
83
+ delta_power = np.mean(np.abs(cwt_matrix[low_idx:high_idx])**2, axis=0)
84
+ # ... similar processing for other bands
85
+ return band_powers
86
+ ```
87
+
88
+ ## Important Notes & Limitations
89
+
90
+ - This SKILL.md contains **only high-level task descriptions and delegation instructions**.
91
+ - Waveform-to-spectrogram conversion is handled by `torchaudio.transforms.MelSpectrogram`.
92
+ - Frequency-band energy extraction is performed via continuous wavelet transform (`scipy.signal.cwt` + `morlet2` wavelet).
93
+ - Long-running operations (ICA on long recordings, CWT on high-density data, connectivity matrices, microstate analysis) are automatically routed to background mode in the `claw` tmux session.
94
+ - Execution begins **only after explicit user confirmation** of the full numbered plan.
95
+ - All outputs are saved in `./eeg_output/` with clear subfolders (raw/, filtered/, epoched/, features/, spectrograms/, etc.).
96
+
97
+ ## When to Call This Skill
98
+
99
+ - The user provides raw or partially processed EEG data and requests preprocessing, Mel-spectrogram conversion, frequency-band energy extraction, feature engineering, or a full pipeline.
100
+ - After `research-idea` or `method-design` when the experiment involves EEG data.
101
+
102
+ ## Post-Execution Verification (Harness Integration)
103
+
104
+ After EEG processing completes, this skill **automatically invokes harness-core's VerificationRunner** to validate preprocessed data quality:
105
+
106
+ **Integrated verification checks**:
107
+
108
+ ```python
109
+ from skills.harness_core import VerificationRunner, AuditLogger
110
+ import numpy as np
111
+ import mne
112
+
113
+ verifier = VerificationRunner(task_type="eeg_preprocessing")
114
+
115
+ # 1. EEG data file exists and is readable
116
+ verifier.add_check("eeg_file_integrity",
117
+ checker=lambda: verify_eeg_file_readable(output_dir),
118
+ severity="error"
119
+ )
120
+
121
+ # 2. Channel count matches expected
122
+ verifier.add_check("channel_count",
123
+ checker=lambda: verify_expected_channels(output_dir, expected_count=64),
124
+ severity="warning"
125
+ )
126
+
127
+ # 3. No excessive bad segments (after artifact removal)
128
+ verifier.add_check("artifact_removal_success",
129
+ checker=lambda: verify_bad_segments_removed(output_dir, max_pct=5),
130
+ severity="warning"
131
+ )
132
+
133
+ # 4. Data range plausible (not clipped or saturated)
134
+ verifier.add_check("data_range_plausible",
135
+ checker=lambda: verify_data_range(output_dir, min_range=-500, max_range=500),
136
+ severity="error"
137
+ )
138
+
139
+ # 5. No NaN/Inf values in preprocessed data
140
+ verifier.add_check("no_nan_inf",
141
+ checker=lambda: verify_no_nan_inf(output_dir),
142
+ severity="error"
143
+ )
144
+
145
+ # 6. Frequency spectrum reasonable (no DC offset, reasonable content)
146
+ verifier.add_check("frequency_spectrum",
147
+ checker=lambda: verify_frequency_spectrum(output_dir),
148
+ severity="warning"
149
+ )
150
+
151
+ # 7. Epoching statistics (if applicable)
152
+ verifier.add_check("epoch_statistics",
153
+ checker=lambda: verify_epoch_count_and_length(output_dir),
154
+ severity="warning"
155
+ )
156
+
157
+ # 8. Feature extraction output dimensions
158
+ verifier.add_check("feature_matrix_shape",
159
+ checker=lambda: verify_feature_matrix_shape(output_dir),
160
+ severity="warning"
161
+ )
162
+
163
+ report = verifier.run(output_dir)
164
+
165
+ # Log verification results
166
+ logger = AuditLogger(log_file=f"{output_dir}/eeg_verification.jsonl")
167
+ logger.log_validation(
168
+ task_name="eeg_preprocessing",
169
+ checks_passed=len([r for r in report.results if r.passed]),
170
+ checks_failed=len([r for r in report.results if not r.passed]),
171
+ warnings=len([r for r in report.results if r.severity == "warning" and not r.passed]),
172
+ report_summary=report.to_dict()
173
+ )
174
+
175
+ if report.failed:
176
+ raise ValueError(f"EEG preprocessing verification failed: {report.summary}")
177
+ ```
178
+
179
+ **Output files generated**:
180
+ - `{output_dir}/eeg_verification.jsonl` — structured audit log
181
+ - `{output_dir}/.eeg_verification_timestamp` — completion marker
182
+
183
+ ## Complementary / Related Skills
184
+
185
+ - `dependency-planner` + `conda-env-manager` → environment and package installation (MNE-Python + torchaudio + scipy)
186
+ - `mne-eeg-tool` → base/tool layer that contains all specific implementation code
187
+ - `harness-core` → automated verification and audit logging
188
+
189
+ ## Reference
190
+
191
+ Aligned with NeuroClaw modality-skill pattern (see `freesurfer-tool`, `wmh-segmentation`, etc.).
192
+ Core libraries: MNE-Python (main), `torchaudio.transforms.MelSpectrogram` (waveform to spectrogram), `scipy.signal.cwt` + `morlet2` (frequency band energy extraction).
193
+
194
+ ---
195
+ Created At: 2026-03-25 16:00 HKT
196
+ Last Updated At: 2026-04-05 02:01 HKT
197
+ Author: chengwang96