@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,64 @@
1
+ ---
2
+ name: beautiful-log
3
+ description: "Use this skill after a conversation or task is completed when the user wants a clean, beautiful HTML chat log. It keeps only direct NeuroClaw <-> User dialogue, filters out tool calls / internal traces / SKILL.md reading notes, and renders distinct colored message cards for each side."
4
+ license: MIT License (NeuroClaw custom skill - freely modifiable within the project)
5
+ layer: base
6
+ skill_type: tool
7
+ dependencies: []
8
+ ---
9
+ # Beautiful Log (Dialogue-to-HTML)
10
+
11
+ ## Overview
12
+ `beautiful-log` converts a conversation transcript into a clean, shareable HTML report.
13
+
14
+ It is designed for research logging and progress tracking, while removing noisy execution traces.
15
+
16
+ This skill:
17
+ - Keeps only direct dialogue between **User** and **NeuroClaw**.
18
+ - Filters out tool/system/internal content (for example: tool calls, file-read traces, SKILL.md parsing notes, hidden reasoning traces).
19
+ - Renders a polished HTML page with **different background colors** for User and NeuroClaw messages.
20
+ - Preserves message order and basic formatting (line breaks, code blocks as plain text).
21
+
22
+ ## When to Call This Skill
23
+ - A task is finished and the user wants a readable conversation archive.
24
+ - The user asks for an exportable discussion record.
25
+ - Weekly or daily research summary requires clean chat evidence.
26
+
27
+ ## Core Workflow (Never Bypassed)
28
+ 1. Receive input transcript file path (JSON, JSONL, or simple Markdown text export).
29
+ 2. Parse and normalize messages to a unified schema: `role`, `content`, `timestamp` (optional).
30
+ 3. Keep only `user` and `assistant` / `neuroclaw` roles.
31
+ 4. Remove internal/tool/system traces.
32
+ 5. Generate HTML cards:
33
+ - User: warm light background card.
34
+ - NeuroClaw: cool light background card.
35
+ 6. Save output HTML to user-specified location.
36
+ 7. Return summary: kept messages, filtered messages, output path.
37
+
38
+ ## Input / Output
39
+ - Input: conversation export file (recommended JSON/JSONL).
40
+ - Output: standalone HTML file (no external assets required).
41
+
42
+ ## Recommended Script
43
+ Use:
44
+ - `scripts/beautiful_log.py`
45
+
46
+ Example:
47
+ ```bash
48
+ python skills/beautiful-log/scripts/beautiful_log.py \
49
+ --input logs/session_2026-04-05.jsonl \
50
+ --output logs/session_2026-04-05_beautiful.html \
51
+ --title "NeuroClaw Session Log"
52
+ ```
53
+
54
+ ## Safety and Data Rules
55
+ - Do not include hidden reasoning or tool internals in final export.
56
+ - Keep only direct dialogue content.
57
+ - If sensitive information appears in user messages, recommend manual redaction before sharing externally.
58
+
59
+ ## Complementary / Related Skills
60
+ - `claw-shell` (safe command execution)
61
+
62
+ Created At: 2026-04-05 23:26 HKT
63
+ Last Updated At: 2026-04-05 23:26 HKT
64
+ Author: chengwang96
@@ -0,0 +1,274 @@
1
+ #!/usr/bin/env python3
2
+ """Generate a clean HTML conversation log for NeuroClaw sessions.
3
+
4
+ This script keeps only direct User <-> NeuroClaw dialogue and filters
5
+ system/tool/internal traces when they are available in the transcript format.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import argparse
11
+ import html
12
+ import json
13
+ from datetime import datetime
14
+ from pathlib import Path
15
+ from typing import Any, Dict, Iterable, List, Optional
16
+
17
+ ALLOWED_ROLES = {"user", "assistant", "neuroclaw"}
18
+
19
+
20
+ def _normalize_role(raw_role: Optional[str]) -> str:
21
+ if not raw_role:
22
+ return ""
23
+ role = str(raw_role).strip().lower()
24
+ if role in {"assistant", "neuroclaw", "ai", "copilot"}:
25
+ return "assistant"
26
+ if role in {"user", "human"}:
27
+ return "user"
28
+ return role
29
+
30
+
31
+ def _extract_text(content: Any) -> str:
32
+ if content is None:
33
+ return ""
34
+
35
+ if isinstance(content, str):
36
+ return content.strip()
37
+
38
+ if isinstance(content, list):
39
+ parts: List[str] = []
40
+ for item in content:
41
+ if isinstance(item, str):
42
+ parts.append(item)
43
+ elif isinstance(item, dict):
44
+ text = item.get("text") or item.get("content")
45
+ if isinstance(text, str):
46
+ parts.append(text)
47
+ return "\n".join(p.strip() for p in parts if p and p.strip())
48
+
49
+ if isinstance(content, dict):
50
+ text = content.get("text") or content.get("content")
51
+ if isinstance(text, str):
52
+ return text.strip()
53
+
54
+ return ""
55
+
56
+
57
+ def _extract_message(item: Dict[str, Any]) -> Optional[Dict[str, str]]:
58
+ role = _normalize_role(item.get("role") or item.get("sender") or item.get("author"))
59
+ if role not in ALLOWED_ROLES:
60
+ return None
61
+
62
+ text = _extract_text(item.get("content") or item.get("message") or item.get("text"))
63
+ if not text:
64
+ return None
65
+
66
+ # Filter obvious internal/tool traces that may leak into assistant content.
67
+ lowered = text.lower()
68
+ blocked_markers = [
69
+ "tool call",
70
+ "read_file",
71
+ "list_dir",
72
+ "apply_patch",
73
+ "internal reasoning",
74
+ "skill.md",
75
+ "trace id",
76
+ ]
77
+ if any(marker in lowered for marker in blocked_markers):
78
+ return None
79
+
80
+ timestamp = str(item.get("timestamp") or item.get("time") or "")
81
+ return {"role": role, "content": text, "timestamp": timestamp}
82
+
83
+
84
+ def _load_json(path: Path) -> Iterable[Dict[str, Any]]:
85
+ data = json.loads(path.read_text(encoding="utf-8"))
86
+ if isinstance(data, list):
87
+ return [obj for obj in data if isinstance(obj, dict)]
88
+
89
+ if isinstance(data, dict):
90
+ for key in ("messages", "conversation", "items", "chat"):
91
+ value = data.get(key)
92
+ if isinstance(value, list):
93
+ return [obj for obj in value if isinstance(obj, dict)]
94
+
95
+ return []
96
+
97
+
98
+ def _load_jsonl(path: Path) -> Iterable[Dict[str, Any]]:
99
+ rows: List[Dict[str, Any]] = []
100
+ for line in path.read_text(encoding="utf-8").splitlines():
101
+ text = line.strip()
102
+ if not text:
103
+ continue
104
+ try:
105
+ obj = json.loads(text)
106
+ except json.JSONDecodeError:
107
+ continue
108
+ if isinstance(obj, dict):
109
+ rows.append(obj)
110
+ return rows
111
+
112
+
113
+ def _load_markdown(path: Path) -> Iterable[Dict[str, Any]]:
114
+ messages: List[Dict[str, Any]] = []
115
+ current_role = ""
116
+ buffer: List[str] = []
117
+
118
+ for line in path.read_text(encoding="utf-8").splitlines():
119
+ stripped = line.strip()
120
+ if stripped.lower().startswith(("user:", "neuroclaw:", "assistant:")):
121
+ if current_role and buffer:
122
+ messages.append({"role": current_role, "content": "\n".join(buffer).strip()})
123
+ head, body = stripped.split(":", 1)
124
+ current_role = _normalize_role(head)
125
+ buffer = [body.strip()] if body.strip() else []
126
+ elif current_role:
127
+ buffer.append(line)
128
+
129
+ if current_role and buffer:
130
+ messages.append({"role": current_role, "content": "\n".join(buffer).strip()})
131
+
132
+ return messages
133
+
134
+
135
+ def load_messages(path: Path) -> List[Dict[str, str]]:
136
+ suffix = path.suffix.lower()
137
+ if suffix == ".json":
138
+ raw = _load_json(path)
139
+ elif suffix == ".jsonl":
140
+ raw = _load_jsonl(path)
141
+ elif suffix in {".md", ".txt"}:
142
+ raw = _load_markdown(path)
143
+ else:
144
+ raise ValueError(f"Unsupported input format: {suffix}")
145
+
146
+ result: List[Dict[str, str]] = []
147
+ for item in raw:
148
+ normalized = _extract_message(item)
149
+ if normalized is not None:
150
+ result.append(normalized)
151
+ return result
152
+
153
+
154
+ def render_html(messages: List[Dict[str, str]], title: str) -> str:
155
+ generated_at = datetime.now().astimezone().isoformat(timespec="seconds")
156
+
157
+ cards: List[str] = []
158
+ for msg in messages:
159
+ role = msg["role"]
160
+ speaker = "User" if role == "user" else "NeuroClaw"
161
+ css = "msg-user" if role == "user" else "msg-neuroclaw"
162
+ timestamp = html.escape(msg["timestamp"]) if msg["timestamp"] else ""
163
+ meta = f"<div class=\"meta\">{speaker}{(' · ' + timestamp) if timestamp else ''}</div>"
164
+ body = html.escape(msg["content"]).replace("\n", "<br>")
165
+ cards.append(f"<article class=\"msg {css}\">{meta}<div class=\"body\">{body}</div></article>")
166
+
167
+ cards_html = "\n".join(cards) if cards else "<p class=\"empty\">No direct User/NeuroClaw dialogue found.</p>"
168
+
169
+ return f"""<!doctype html>
170
+ <html lang=\"en\">
171
+ <head>
172
+ <meta charset=\"utf-8\" />
173
+ <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />
174
+ <title>{html.escape(title)}</title>
175
+ <style>
176
+ :root {{
177
+ --bg: #f7f8fb;
178
+ --panel: #ffffff;
179
+ --text: #1f2430;
180
+ --muted: #5a6475;
181
+ --user-bg: #fff4de;
182
+ --user-border: #f4c46a;
183
+ --nc-bg: #e8f3ff;
184
+ --nc-border: #8cb9ff;
185
+ }}
186
+ * {{ box-sizing: border-box; }}
187
+ body {{
188
+ margin: 0;
189
+ background: linear-gradient(180deg, #f3f6fb 0%, #f8fafc 100%);
190
+ color: var(--text);
191
+ font-family: "Segoe UI", "Helvetica Neue", Arial, sans-serif;
192
+ line-height: 1.55;
193
+ }}
194
+ .wrap {{
195
+ max-width: 980px;
196
+ margin: 0 auto;
197
+ padding: 32px 20px 48px;
198
+ }}
199
+ .hero {{
200
+ background: var(--panel);
201
+ border: 1px solid #e7ebf3;
202
+ border-radius: 14px;
203
+ padding: 18px 20px;
204
+ box-shadow: 0 8px 30px rgba(31, 36, 48, 0.06);
205
+ margin-bottom: 18px;
206
+ }}
207
+ h1 {{ margin: 0 0 8px; font-size: 1.35rem; }}
208
+ .sub {{ color: var(--muted); font-size: 0.94rem; }}
209
+ .msg {{
210
+ border-radius: 14px;
211
+ border: 1px solid transparent;
212
+ padding: 14px 16px;
213
+ margin: 12px 0;
214
+ box-shadow: 0 4px 14px rgba(20, 24, 34, 0.05);
215
+ }}
216
+ .msg-user {{ background: var(--user-bg); border-color: var(--user-border); }}
217
+ .msg-neuroclaw {{ background: var(--nc-bg); border-color: var(--nc-border); }}
218
+ .meta {{ font-size: 0.83rem; color: #3f4a5d; font-weight: 600; margin-bottom: 6px; }}
219
+ .body {{ white-space: normal; word-break: break-word; }}
220
+ .empty {{
221
+ color: #6b7486;
222
+ font-style: italic;
223
+ background: #fff;
224
+ border: 1px dashed #c8d2e5;
225
+ border-radius: 10px;
226
+ padding: 12px;
227
+ }}
228
+ footer {{
229
+ margin-top: 22px;
230
+ color: #667086;
231
+ font-size: 0.82rem;
232
+ }}
233
+ </style>
234
+ </head>
235
+ <body>
236
+ <main class=\"wrap\">
237
+ <section class=\"hero\">
238
+ <h1>{html.escape(title)}</h1>
239
+ <div class=\"sub\">Beautiful dialogue log containing only direct User and NeuroClaw messages.</div>
240
+ </section>
241
+ {cards_html}
242
+ <footer>Generated at {html.escape(generated_at)}.</footer>
243
+ </main>
244
+ </body>
245
+ </html>
246
+ """
247
+
248
+
249
+ def main() -> None:
250
+ parser = argparse.ArgumentParser(description="Generate a beautiful HTML log for NeuroClaw dialogue.")
251
+ parser.add_argument("--input", required=True, help="Input transcript file (.json, .jsonl, .md, .txt)")
252
+ parser.add_argument("--output", required=True, help="Output HTML path")
253
+ parser.add_argument("--title", default="NeuroClaw Conversation Log", help="HTML page title")
254
+ args = parser.parse_args()
255
+
256
+ input_path = Path(args.input).expanduser().resolve()
257
+ output_path = Path(args.output).expanduser().resolve()
258
+
259
+ if not input_path.exists():
260
+ raise FileNotFoundError(f"Input file does not exist: {input_path}")
261
+
262
+ messages = load_messages(input_path)
263
+ html_text = render_html(messages, args.title)
264
+
265
+ output_path.parent.mkdir(parents=True, exist_ok=True)
266
+ output_path.write_text(html_text, encoding="utf-8")
267
+
268
+ print(f"Input: {input_path}")
269
+ print(f"Output: {output_path}")
270
+ print(f"Kept messages: {len(messages)}")
271
+
272
+
273
+ if __name__ == "__main__":
274
+ main()
@@ -0,0 +1,130 @@
1
+ ---
2
+ name: ethoclaw-daily-paper
3
+ description: "Search arXiv and PubMed for research papers, rank candidates by title only, then read the title and abstract of the selected Top 5 in a single session and write a Markdown digest directly."
4
+ ---
5
+
6
+ # Top 5 Digest
7
+
8
+ Use the bundled scripts. Prefer a single-session workflow.
9
+
10
+ ## Default operating mode
11
+
12
+ The default flow is:
13
+
14
+ 1. Run retrieval once.
15
+ 2. Read `candidate_titles.md` only and choose Top 5 by title.
16
+ 3. After Top 5 is fixed, read only those 5 papers' titles and abstracts.
17
+ 4. Write or render the final Markdown directly.
18
+
19
+ Do not default to a parent session plus sub-session split.
20
+ Do not default to reading the full candidate pool for ranking.
21
+ Do not default to building large intermediate review artifacts unless the user asks.
22
+
23
+ ## Required output style
24
+
25
+ For each selected paper, the output should include:
26
+
27
+ - title
28
+ - selection reason
29
+ - one digest block
30
+
31
+ That single digest block should still cover the background, methods, main findings, significance, and limitations, but it should be written as one continuous explanation. You may use natural paragraph breaks for readability.
32
+
33
+ The digest should be written from the English title and abstract. If the abstract is not enough to support a strong claim, say so explicitly inside the digest.
34
+
35
+ ## Recommended single-session workflow
36
+
37
+ 1. Review `assets/config.template.yaml` only if the user wants narrower or broader coverage.
38
+ 2. Run:
39
+
40
+ ```bash
41
+ <python3-interpreter> scripts/run_pipeline.py --output-dir ./runs/20260318-daily/work
42
+ ```
43
+
44
+ 3. Read:
45
+ - `work/candidate_titles.md`
46
+
47
+ 4. Choose Top 5 using titles only.
48
+
49
+ 5. Render a direct final-digest skeleton from the selected indexes:
50
+
51
+ ```bash
52
+ <python3-interpreter> scripts/build_top5_digest.py \
53
+ --input ./runs/20260318-daily/work/merged.json \
54
+ --paper-indexes 1,2,3,4,5 \
55
+ --direct-md-output ./runs/20260318-daily/work/final_digest.md \
56
+ --generator-label same-agent
57
+ ```
58
+
59
+ 6. Open `work/final_digest.md`.
60
+
61
+ 7. For each selected paper:
62
+ - read the English title already present in the section header
63
+ - read the English abstract already embedded in that section
64
+ - write the title, selection reason, and a single digest block directly into the same Markdown file
65
+
66
+ 8. When complete, copy the Markdown into the desired output path.
67
+
68
+ ## Optional JSON workflow
69
+
70
+ If you still want a structured intermediate packet, use:
71
+
72
+ ```bash
73
+ <python3-interpreter> scripts/build_top5_digest.py \
74
+ --input ./runs/20260318-daily/work/merged.json \
75
+ --paper-indexes 1,2,3,4,5 \
76
+ --agent-json-output ./runs/20260318-daily/work/top5_agent_packet.json \
77
+ --review-md-output ./runs/20260318-daily/work/top5_agent_packet.md
78
+ ```
79
+
80
+ Then fill the JSON and render:
81
+
82
+ ```bash
83
+ <python3-interpreter> scripts/build_top5_digest.py \
84
+ --from-agent-json ./runs/20260318-daily/work/top5_agent_packet.json \
85
+ --output ./runs/20260318-daily/work/final_digest.md \
86
+ --generator-label same-agent
87
+ ```
88
+
89
+ Use this only when a structured intermediate artifact is genuinely helpful.
90
+
91
+ ## Resources
92
+
93
+ ### `scripts/run_pipeline.py`
94
+
95
+ - One-shot retrieval entry point.
96
+ - Writes `arxiv.json`, `pubmed.json`, `merged.json`, `candidate_pool.md`, and `candidate_titles.md`.
97
+ - `candidate_titles.md` is the default ranking surface.
98
+
99
+ ### `scripts/build_top5_digest.py`
100
+
101
+ - Builds an optional structured packet for the selected papers.
102
+ - Can render the final digest from a completed packet.
103
+ - Can now also render a final Markdown skeleton directly from `merged.json` and selected indexes with `--direct-md-output`.
104
+
105
+ ### `assets/top5_digest_template.md`
106
+
107
+ - Final Markdown wrapper.
108
+ - Keep placeholder names unchanged unless the rendering script changes too.
109
+
110
+ ### `assets/config.template.yaml`
111
+
112
+ - Tune queries, include keywords, exclude keywords, and source weights.
113
+
114
+ ## Writing guidance
115
+
116
+ When drafting the digest:
117
+
118
+ - keep the wording precise rather than promotional
119
+ - preserve species, brain regions, behavioral paradigms, and recording or manipulation methods when available
120
+ - make findings concrete rather than generic
121
+ - explain why the paper matters for neuroethology or behavioral neuroscience
122
+ - call out uncertainty when the abstract alone is insufficient
123
+ - do not split the digest with subsection headings; if needed, use one or two natural paragraph breaks only
124
+
125
+ ## Notes
126
+
127
+ - Use any working Python 3 interpreter on the current machine. On some Windows setups this may be a full interpreter path rather than `python3`.
128
+ - Keep PubMed weighting above arXiv when published papers should outrank preprints.
129
+ - The time-consuming part is usually agent writing, not retrieval, so keep ranking title-only unless the user asks for deeper triage.
130
+ - Do not call an external summarization API.
@@ -0,0 +1,54 @@
1
+ # Neuroethology Top 5 digest config
2
+
3
+ query: all:((neuroethology OR neuroscience OR "behavioral neuroscience" OR "behavioural neuroscience" OR "neural circuit" OR electrophysiology OR "calcium imaging" OR "neural recording" OR "neural decoding") AND (behavior OR behaviour OR "animal behavior" OR "animal behaviour" OR locomotion OR vocalization OR courtship OR foraging OR decision-making OR zebrafish OR drosophila OR rodent OR mouse OR songbird OR bat OR primate))
4
+ pubmed_query: (((neuroethology[tiab] OR neuroscience[tiab] OR "behavioral neuroscience"[tiab] OR "behavioural neuroscience"[tiab] OR "Neural Circuits"[mh] OR electrophysiology[tiab] OR "calcium imaging"[tiab] OR "neural recording"[tiab] OR "neural decoding"[tiab])) AND (("Behavior, Animal"[mh] OR behavior[tiab] OR behaviour[tiab] OR "animal behavior"[tiab] OR "animal behaviour"[tiab] OR locomotion[tiab] OR vocalization[tiab] OR courtship[tiab] OR foraging[tiab] OR decision-making[tiab]) AND (zebrafish[tiab] OR drosophila[tiab] OR rodent[tiab] OR mouse[tiab] OR songbird[tiab] OR bat[tiab] OR primate[tiab] OR animal[tiab])))
5
+ max_results: 80
6
+ pubmed_max_results: 80
7
+ source_weight_pubmed: 1.25
8
+ source_weight_arxiv: 1.0
9
+
10
+ include_keywords:
11
+ - neuroethology
12
+ - behavioral neuroscience
13
+ - behavioural neuroscience
14
+ - animal behavior
15
+ - animal behaviour
16
+ - neural circuit
17
+ - neural activity
18
+ - electrophysiology
19
+ - calcium imaging
20
+ - neural recording
21
+ - neural decoding
22
+ - behavior analysis
23
+ - locomotion
24
+ - vocalization
25
+ - courtship
26
+ - foraging
27
+ - decision-making
28
+ - social behavior
29
+ - zebrafish
30
+ - drosophila
31
+ - rodent
32
+ - mouse
33
+ - songbird
34
+ - bat
35
+ - primate
36
+
37
+ exclude_keywords:
38
+ - large language model
39
+ - llm
40
+ - robot
41
+ - robotic
42
+ - robotics
43
+ - quadruped
44
+ - quadrupedal
45
+ - text-to-image
46
+ - image generation
47
+ - diffusion model for images
48
+ - recommender system
49
+ - blood glucose
50
+ - scleral
51
+ - stock prediction
52
+ - benchmark only
53
+ - jailbreak
54
+ - code generation
@@ -0,0 +1,5 @@
1
+ # Top 5 Papers in Neuroethology — Literature Digest
2
+
3
+ - Generated at:{{generated_at}}
4
+
5
+ {{papers}}