scientific-writer 2.1.1__py3-none-any.whl → 2.2.2__py3-none-any.whl

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.

Potentially problematic release.


This version of scientific-writer might be problematic. Click here for more details.

Files changed (311) hide show
  1. scientific_writer/.claude/settings.local.json +30 -0
  2. scientific_writer/.claude/skills/citation-management/SKILL.md +1046 -0
  3. scientific_writer/.claude/skills/citation-management/assets/bibtex_template.bib +264 -0
  4. scientific_writer/.claude/skills/citation-management/assets/citation_checklist.md +386 -0
  5. scientific_writer/.claude/skills/citation-management/references/bibtex_formatting.md +908 -0
  6. scientific_writer/.claude/skills/citation-management/references/citation_validation.md +794 -0
  7. scientific_writer/.claude/skills/citation-management/references/google_scholar_search.md +725 -0
  8. scientific_writer/.claude/skills/citation-management/references/metadata_extraction.md +870 -0
  9. scientific_writer/.claude/skills/citation-management/references/pubmed_search.md +839 -0
  10. scientific_writer/.claude/skills/citation-management/scripts/doi_to_bibtex.py +204 -0
  11. scientific_writer/.claude/skills/citation-management/scripts/extract_metadata.py +569 -0
  12. scientific_writer/.claude/skills/citation-management/scripts/format_bibtex.py +349 -0
  13. scientific_writer/.claude/skills/citation-management/scripts/search_google_scholar.py +282 -0
  14. scientific_writer/.claude/skills/citation-management/scripts/search_pubmed.py +398 -0
  15. scientific_writer/.claude/skills/citation-management/scripts/validate_citations.py +497 -0
  16. scientific_writer/.claude/skills/clinical-reports/IMPLEMENTATION_SUMMARY.md +641 -0
  17. scientific_writer/.claude/skills/clinical-reports/README.md +236 -0
  18. scientific_writer/.claude/skills/clinical-reports/SKILL.md +1088 -0
  19. scientific_writer/.claude/skills/clinical-reports/assets/case_report_template.md +352 -0
  20. scientific_writer/.claude/skills/clinical-reports/assets/clinical_trial_csr_template.md +353 -0
  21. scientific_writer/.claude/skills/clinical-reports/assets/clinical_trial_sae_template.md +359 -0
  22. scientific_writer/.claude/skills/clinical-reports/assets/consult_note_template.md +305 -0
  23. scientific_writer/.claude/skills/clinical-reports/assets/discharge_summary_template.md +453 -0
  24. scientific_writer/.claude/skills/clinical-reports/assets/hipaa_compliance_checklist.md +395 -0
  25. scientific_writer/.claude/skills/clinical-reports/assets/history_physical_template.md +305 -0
  26. scientific_writer/.claude/skills/clinical-reports/assets/lab_report_template.md +309 -0
  27. scientific_writer/.claude/skills/clinical-reports/assets/pathology_report_template.md +249 -0
  28. scientific_writer/.claude/skills/clinical-reports/assets/quality_checklist.md +338 -0
  29. scientific_writer/.claude/skills/clinical-reports/assets/radiology_report_template.md +318 -0
  30. scientific_writer/.claude/skills/clinical-reports/assets/soap_note_template.md +253 -0
  31. scientific_writer/.claude/skills/clinical-reports/references/case_report_guidelines.md +570 -0
  32. scientific_writer/.claude/skills/clinical-reports/references/clinical_trial_reporting.md +693 -0
  33. scientific_writer/.claude/skills/clinical-reports/references/data_presentation.md +530 -0
  34. scientific_writer/.claude/skills/clinical-reports/references/diagnostic_reports_standards.md +629 -0
  35. scientific_writer/.claude/skills/clinical-reports/references/medical_terminology.md +588 -0
  36. scientific_writer/.claude/skills/clinical-reports/references/patient_documentation.md +744 -0
  37. scientific_writer/.claude/skills/clinical-reports/references/peer_review_standards.md +585 -0
  38. scientific_writer/.claude/skills/clinical-reports/references/regulatory_compliance.md +577 -0
  39. scientific_writer/.claude/skills/clinical-reports/scripts/check_deidentification.py +346 -0
  40. scientific_writer/.claude/skills/clinical-reports/scripts/compliance_checker.py +78 -0
  41. scientific_writer/.claude/skills/clinical-reports/scripts/extract_clinical_data.py +102 -0
  42. scientific_writer/.claude/skills/clinical-reports/scripts/format_adverse_events.py +103 -0
  43. scientific_writer/.claude/skills/clinical-reports/scripts/generate_report_template.py +163 -0
  44. scientific_writer/.claude/skills/clinical-reports/scripts/terminology_validator.py +133 -0
  45. scientific_writer/.claude/skills/clinical-reports/scripts/validate_case_report.py +334 -0
  46. scientific_writer/.claude/skills/clinical-reports/scripts/validate_trial_report.py +89 -0
  47. scientific_writer/.claude/skills/document-skills/docx/LICENSE.txt +30 -0
  48. scientific_writer/.claude/skills/document-skills/docx/SKILL.md +197 -0
  49. scientific_writer/.claude/skills/document-skills/docx/docx-js.md +350 -0
  50. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  51. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  52. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  53. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  54. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  55. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  56. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  57. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  58. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  59. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  60. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  61. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  62. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  63. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  64. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  65. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  66. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  67. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  68. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  69. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  70. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  71. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  72. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  73. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  74. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  75. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  76. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  77. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  78. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  79. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  80. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  81. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
  82. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  83. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  84. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  85. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  86. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  87. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  88. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  89. scientific_writer/.claude/skills/document-skills/docx/ooxml/scripts/pack.py +159 -0
  90. scientific_writer/.claude/skills/document-skills/docx/ooxml/scripts/unpack.py +29 -0
  91. scientific_writer/.claude/skills/document-skills/docx/ooxml/scripts/validate.py +69 -0
  92. scientific_writer/.claude/skills/document-skills/docx/ooxml/scripts/validation/__init__.py +15 -0
  93. scientific_writer/.claude/skills/document-skills/docx/ooxml/scripts/validation/base.py +951 -0
  94. scientific_writer/.claude/skills/document-skills/docx/ooxml/scripts/validation/docx.py +274 -0
  95. scientific_writer/.claude/skills/document-skills/docx/ooxml/scripts/validation/pptx.py +315 -0
  96. scientific_writer/.claude/skills/document-skills/docx/ooxml/scripts/validation/redlining.py +279 -0
  97. scientific_writer/.claude/skills/document-skills/docx/ooxml.md +610 -0
  98. scientific_writer/.claude/skills/document-skills/docx/scripts/__init__.py +1 -0
  99. scientific_writer/.claude/skills/document-skills/docx/scripts/document.py +1276 -0
  100. scientific_writer/.claude/skills/document-skills/docx/scripts/templates/comments.xml +3 -0
  101. scientific_writer/.claude/skills/document-skills/docx/scripts/templates/commentsExtended.xml +3 -0
  102. scientific_writer/.claude/skills/document-skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  103. scientific_writer/.claude/skills/document-skills/docx/scripts/templates/commentsIds.xml +3 -0
  104. scientific_writer/.claude/skills/document-skills/docx/scripts/templates/people.xml +3 -0
  105. scientific_writer/.claude/skills/document-skills/docx/scripts/utilities.py +374 -0
  106. scientific_writer/.claude/skills/document-skills/pdf/LICENSE.txt +30 -0
  107. scientific_writer/.claude/skills/document-skills/pdf/SKILL.md +294 -0
  108. scientific_writer/.claude/skills/document-skills/pdf/forms.md +205 -0
  109. scientific_writer/.claude/skills/document-skills/pdf/reference.md +612 -0
  110. scientific_writer/.claude/skills/document-skills/pdf/scripts/check_bounding_boxes.py +70 -0
  111. scientific_writer/.claude/skills/document-skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
  112. scientific_writer/.claude/skills/document-skills/pdf/scripts/check_fillable_fields.py +12 -0
  113. scientific_writer/.claude/skills/document-skills/pdf/scripts/convert_pdf_to_images.py +35 -0
  114. scientific_writer/.claude/skills/document-skills/pdf/scripts/create_validation_image.py +41 -0
  115. scientific_writer/.claude/skills/document-skills/pdf/scripts/extract_form_field_info.py +152 -0
  116. scientific_writer/.claude/skills/document-skills/pdf/scripts/fill_fillable_fields.py +114 -0
  117. scientific_writer/.claude/skills/document-skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
  118. scientific_writer/.claude/skills/document-skills/pptx/LICENSE.txt +30 -0
  119. scientific_writer/.claude/skills/document-skills/pptx/SKILL.md +484 -0
  120. scientific_writer/.claude/skills/document-skills/pptx/html2pptx.md +625 -0
  121. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  122. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  123. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  124. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  125. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  126. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  127. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  128. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  129. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  130. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  131. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  132. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  133. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  134. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  135. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  136. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  137. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  138. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  139. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  140. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  141. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  142. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  143. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  144. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  145. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  146. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  147. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  148. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  149. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  150. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  151. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  152. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
  153. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  154. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  155. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  156. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  157. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  158. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  159. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  160. scientific_writer/.claude/skills/document-skills/pptx/ooxml/scripts/pack.py +159 -0
  161. scientific_writer/.claude/skills/document-skills/pptx/ooxml/scripts/unpack.py +29 -0
  162. scientific_writer/.claude/skills/document-skills/pptx/ooxml/scripts/validate.py +69 -0
  163. scientific_writer/.claude/skills/document-skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
  164. scientific_writer/.claude/skills/document-skills/pptx/ooxml/scripts/validation/base.py +951 -0
  165. scientific_writer/.claude/skills/document-skills/pptx/ooxml/scripts/validation/docx.py +274 -0
  166. scientific_writer/.claude/skills/document-skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
  167. scientific_writer/.claude/skills/document-skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
  168. scientific_writer/.claude/skills/document-skills/pptx/ooxml.md +427 -0
  169. scientific_writer/.claude/skills/document-skills/pptx/scripts/html2pptx.js +979 -0
  170. scientific_writer/.claude/skills/document-skills/pptx/scripts/inventory.py +1020 -0
  171. scientific_writer/.claude/skills/document-skills/pptx/scripts/rearrange.py +231 -0
  172. scientific_writer/.claude/skills/document-skills/pptx/scripts/replace.py +385 -0
  173. scientific_writer/.claude/skills/document-skills/pptx/scripts/thumbnail.py +450 -0
  174. scientific_writer/.claude/skills/document-skills/xlsx/LICENSE.txt +30 -0
  175. scientific_writer/.claude/skills/document-skills/xlsx/SKILL.md +289 -0
  176. scientific_writer/.claude/skills/document-skills/xlsx/recalc.py +178 -0
  177. scientific_writer/.claude/skills/hypothesis-generation/SKILL.md +155 -0
  178. scientific_writer/.claude/skills/hypothesis-generation/assets/hypothesis_output_template.md +302 -0
  179. scientific_writer/.claude/skills/hypothesis-generation/references/experimental_design_patterns.md +327 -0
  180. scientific_writer/.claude/skills/hypothesis-generation/references/hypothesis_quality_criteria.md +196 -0
  181. scientific_writer/.claude/skills/hypothesis-generation/references/literature_search_strategies.md +505 -0
  182. scientific_writer/.claude/skills/latex-posters/README.md +417 -0
  183. scientific_writer/.claude/skills/latex-posters/SKILL.md +919 -0
  184. scientific_writer/.claude/skills/latex-posters/assets/baposter_template.tex +257 -0
  185. scientific_writer/.claude/skills/latex-posters/assets/beamerposter_template.tex +244 -0
  186. scientific_writer/.claude/skills/latex-posters/assets/poster_quality_checklist.md +358 -0
  187. scientific_writer/.claude/skills/latex-posters/assets/tikzposter_template.tex +251 -0
  188. scientific_writer/.claude/skills/latex-posters/references/latex_poster_packages.md +745 -0
  189. scientific_writer/.claude/skills/latex-posters/references/poster_content_guide.md +748 -0
  190. scientific_writer/.claude/skills/latex-posters/references/poster_design_principles.md +806 -0
  191. scientific_writer/.claude/skills/latex-posters/references/poster_layout_design.md +900 -0
  192. scientific_writer/.claude/skills/latex-posters/scripts/review_poster.sh +214 -0
  193. scientific_writer/.claude/skills/literature-review/SKILL.md +546 -0
  194. scientific_writer/.claude/skills/literature-review/assets/review_template.md +412 -0
  195. scientific_writer/.claude/skills/literature-review/references/citation_styles.md +166 -0
  196. scientific_writer/.claude/skills/literature-review/references/database_strategies.md +381 -0
  197. scientific_writer/.claude/skills/literature-review/scripts/generate_pdf.py +176 -0
  198. scientific_writer/.claude/skills/literature-review/scripts/search_databases.py +303 -0
  199. scientific_writer/.claude/skills/literature-review/scripts/verify_citations.py +222 -0
  200. scientific_writer/.claude/skills/markitdown/INSTALLATION_GUIDE.md +318 -0
  201. scientific_writer/.claude/skills/markitdown/LICENSE.txt +22 -0
  202. scientific_writer/.claude/skills/markitdown/OPENROUTER_INTEGRATION.md +359 -0
  203. scientific_writer/.claude/skills/markitdown/QUICK_REFERENCE.md +309 -0
  204. scientific_writer/.claude/skills/markitdown/README.md +184 -0
  205. scientific_writer/.claude/skills/markitdown/SKILL.md +450 -0
  206. scientific_writer/.claude/skills/markitdown/SKILL_SUMMARY.md +307 -0
  207. scientific_writer/.claude/skills/markitdown/assets/example_usage.md +463 -0
  208. scientific_writer/.claude/skills/markitdown/references/api_reference.md +399 -0
  209. scientific_writer/.claude/skills/markitdown/references/file_formats.md +542 -0
  210. scientific_writer/.claude/skills/markitdown/scripts/batch_convert.py +228 -0
  211. scientific_writer/.claude/skills/markitdown/scripts/convert_literature.py +283 -0
  212. scientific_writer/.claude/skills/markitdown/scripts/convert_with_ai.py +243 -0
  213. scientific_writer/.claude/skills/paper-2-web/SKILL.md +455 -0
  214. scientific_writer/.claude/skills/paper-2-web/references/installation.md +141 -0
  215. scientific_writer/.claude/skills/paper-2-web/references/paper2poster.md +346 -0
  216. scientific_writer/.claude/skills/paper-2-web/references/paper2video.md +305 -0
  217. scientific_writer/.claude/skills/paper-2-web/references/paper2web.md +187 -0
  218. scientific_writer/.claude/skills/paper-2-web/references/usage_examples.md +436 -0
  219. scientific_writer/.claude/skills/peer-review/SKILL.md +375 -0
  220. scientific_writer/.claude/skills/peer-review/references/common_issues.md +552 -0
  221. scientific_writer/.claude/skills/peer-review/references/reporting_standards.md +290 -0
  222. scientific_writer/.claude/skills/research-grants/README.md +285 -0
  223. scientific_writer/.claude/skills/research-grants/SKILL.md +896 -0
  224. scientific_writer/.claude/skills/research-grants/assets/budget_justification_template.md +453 -0
  225. scientific_writer/.claude/skills/research-grants/assets/nih_specific_aims_template.md +166 -0
  226. scientific_writer/.claude/skills/research-grants/assets/nsf_project_summary_template.md +92 -0
  227. scientific_writer/.claude/skills/research-grants/references/broader_impacts.md +392 -0
  228. scientific_writer/.claude/skills/research-grants/references/darpa_guidelines.md +636 -0
  229. scientific_writer/.claude/skills/research-grants/references/doe_guidelines.md +586 -0
  230. scientific_writer/.claude/skills/research-grants/references/nih_guidelines.md +851 -0
  231. scientific_writer/.claude/skills/research-grants/references/nsf_guidelines.md +570 -0
  232. scientific_writer/.claude/skills/research-grants/references/specific_aims_guide.md +458 -0
  233. scientific_writer/.claude/skills/research-lookup/README.md +116 -0
  234. scientific_writer/.claude/skills/research-lookup/SKILL.md +443 -0
  235. scientific_writer/.claude/skills/research-lookup/examples.py +174 -0
  236. scientific_writer/.claude/skills/research-lookup/lookup.py +93 -0
  237. scientific_writer/.claude/skills/research-lookup/research_lookup.py +335 -0
  238. scientific_writer/.claude/skills/research-lookup/scripts/research_lookup.py +261 -0
  239. scientific_writer/.claude/skills/scholar-evaluation/SKILL.md +254 -0
  240. scientific_writer/.claude/skills/scholar-evaluation/references/evaluation_framework.md +663 -0
  241. scientific_writer/.claude/skills/scholar-evaluation/scripts/calculate_scores.py +378 -0
  242. scientific_writer/.claude/skills/scientific-critical-thinking/SKILL.md +530 -0
  243. scientific_writer/.claude/skills/scientific-critical-thinking/references/common_biases.md +364 -0
  244. scientific_writer/.claude/skills/scientific-critical-thinking/references/evidence_hierarchy.md +484 -0
  245. scientific_writer/.claude/skills/scientific-critical-thinking/references/experimental_design.md +496 -0
  246. scientific_writer/.claude/skills/scientific-critical-thinking/references/logical_fallacies.md +478 -0
  247. scientific_writer/.claude/skills/scientific-critical-thinking/references/scientific_method.md +169 -0
  248. scientific_writer/.claude/skills/scientific-critical-thinking/references/statistical_pitfalls.md +506 -0
  249. scientific_writer/.claude/skills/scientific-schematics/SKILL.md +2035 -0
  250. scientific_writer/.claude/skills/scientific-schematics/assets/block_diagram_template.tex +199 -0
  251. scientific_writer/.claude/skills/scientific-schematics/assets/circuit_template.tex +159 -0
  252. scientific_writer/.claude/skills/scientific-schematics/assets/flowchart_template.tex +161 -0
  253. scientific_writer/.claude/skills/scientific-schematics/assets/pathway_template.tex +162 -0
  254. scientific_writer/.claude/skills/scientific-schematics/assets/tikz_styles.tex +422 -0
  255. scientific_writer/.claude/skills/scientific-schematics/references/best_practices.md +562 -0
  256. scientific_writer/.claude/skills/scientific-schematics/references/diagram_types.md +637 -0
  257. scientific_writer/.claude/skills/scientific-schematics/references/python_libraries.md +791 -0
  258. scientific_writer/.claude/skills/scientific-schematics/references/tikz_guide.md +734 -0
  259. scientific_writer/.claude/skills/scientific-schematics/scripts/circuit_generator.py +307 -0
  260. scientific_writer/.claude/skills/scientific-schematics/scripts/compile_tikz.py +292 -0
  261. scientific_writer/.claude/skills/scientific-schematics/scripts/generate_flowchart.py +281 -0
  262. scientific_writer/.claude/skills/scientific-schematics/scripts/pathway_diagram.py +406 -0
  263. scientific_writer/.claude/skills/scientific-writing/SKILL.md +443 -0
  264. scientific_writer/.claude/skills/scientific-writing/references/citation_styles.md +720 -0
  265. scientific_writer/.claude/skills/scientific-writing/references/figures_tables.md +806 -0
  266. scientific_writer/.claude/skills/scientific-writing/references/imrad_structure.md +658 -0
  267. scientific_writer/.claude/skills/scientific-writing/references/reporting_guidelines.md +748 -0
  268. scientific_writer/.claude/skills/scientific-writing/references/writing_principles.md +824 -0
  269. scientific_writer/.claude/skills/treatment-plans/README.md +483 -0
  270. scientific_writer/.claude/skills/treatment-plans/SKILL.md +817 -0
  271. scientific_writer/.claude/skills/treatment-plans/assets/chronic_disease_management_plan.tex +636 -0
  272. scientific_writer/.claude/skills/treatment-plans/assets/general_medical_treatment_plan.tex +616 -0
  273. scientific_writer/.claude/skills/treatment-plans/assets/mental_health_treatment_plan.tex +745 -0
  274. scientific_writer/.claude/skills/treatment-plans/assets/pain_management_plan.tex +770 -0
  275. scientific_writer/.claude/skills/treatment-plans/assets/perioperative_care_plan.tex +724 -0
  276. scientific_writer/.claude/skills/treatment-plans/assets/quality_checklist.md +471 -0
  277. scientific_writer/.claude/skills/treatment-plans/assets/rehabilitation_treatment_plan.tex +727 -0
  278. scientific_writer/.claude/skills/treatment-plans/references/goal_setting_frameworks.md +411 -0
  279. scientific_writer/.claude/skills/treatment-plans/references/intervention_guidelines.md +507 -0
  280. scientific_writer/.claude/skills/treatment-plans/references/regulatory_compliance.md +476 -0
  281. scientific_writer/.claude/skills/treatment-plans/references/specialty_specific_guidelines.md +607 -0
  282. scientific_writer/.claude/skills/treatment-plans/references/treatment_plan_standards.md +456 -0
  283. scientific_writer/.claude/skills/treatment-plans/scripts/check_completeness.py +318 -0
  284. scientific_writer/.claude/skills/treatment-plans/scripts/generate_template.py +244 -0
  285. scientific_writer/.claude/skills/treatment-plans/scripts/timeline_generator.py +369 -0
  286. scientific_writer/.claude/skills/treatment-plans/scripts/validate_treatment_plan.py +367 -0
  287. scientific_writer/.claude/skills/venue-templates/SKILL.md +590 -0
  288. scientific_writer/.claude/skills/venue-templates/assets/grants/nih_specific_aims.tex +235 -0
  289. scientific_writer/.claude/skills/venue-templates/assets/grants/nsf_proposal_template.tex +375 -0
  290. scientific_writer/.claude/skills/venue-templates/assets/journals/nature_article.tex +171 -0
  291. scientific_writer/.claude/skills/venue-templates/assets/journals/neurips_article.tex +283 -0
  292. scientific_writer/.claude/skills/venue-templates/assets/journals/plos_one.tex +317 -0
  293. scientific_writer/.claude/skills/venue-templates/assets/posters/beamerposter_academic.tex +311 -0
  294. scientific_writer/.claude/skills/venue-templates/references/conferences_formatting.md +564 -0
  295. scientific_writer/.claude/skills/venue-templates/references/grants_requirements.md +787 -0
  296. scientific_writer/.claude/skills/venue-templates/references/journals_formatting.md +486 -0
  297. scientific_writer/.claude/skills/venue-templates/references/posters_guidelines.md +628 -0
  298. scientific_writer/.claude/skills/venue-templates/scripts/customize_template.py +206 -0
  299. scientific_writer/.claude/skills/venue-templates/scripts/query_template.py +260 -0
  300. scientific_writer/.claude/skills/venue-templates/scripts/validate_format.py +255 -0
  301. scientific_writer/CLAUDE.md +748 -0
  302. scientific_writer/__init__.py +2 -2
  303. scientific_writer/api.py +14 -7
  304. scientific_writer/cli.py +12 -7
  305. scientific_writer/core.py +27 -5
  306. {scientific_writer-2.1.1.dist-info → scientific_writer-2.2.2.dist-info}/METADATA +5 -1
  307. scientific_writer-2.2.2.dist-info/RECORD +312 -0
  308. scientific_writer-2.1.1.dist-info/RECORD +0 -11
  309. {scientific_writer-2.1.1.dist-info → scientific_writer-2.2.2.dist-info}/WHEEL +0 -0
  310. {scientific_writer-2.1.1.dist-info → scientific_writer-2.2.2.dist-info}/entry_points.txt +0 -0
  311. {scientific_writer-2.1.1.dist-info → scientific_writer-2.2.2.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,206 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Customize Template Script
4
+ Customize LaTeX templates with author information and project details.
5
+
6
+ Usage:
7
+ python customize_template.py --template nature_article.tex --output my_paper.tex
8
+ python customize_template.py --template nature_article.tex --title "My Research" --output my_paper.tex
9
+ python customize_template.py --interactive
10
+ """
11
+
12
+ import argparse
13
+ import re
14
+ from pathlib import Path
15
+
16
+ def get_skill_path():
17
+ """Get the path to the venue-templates skill directory."""
18
+ script_dir = Path(__file__).parent
19
+ skill_dir = script_dir.parent
20
+ return skill_dir
21
+
22
+ def find_template(template_name):
23
+ """Find template file in assets directory."""
24
+ skill_path = get_skill_path()
25
+ assets_path = skill_path / "assets"
26
+
27
+ # Search in all subdirectories
28
+ for subdir in ["journals", "posters", "grants"]:
29
+ template_path = assets_path / subdir / template_name
30
+ if template_path.exists():
31
+ return template_path
32
+
33
+ return None
34
+
35
+ def customize_template(template_path, output_path, **kwargs):
36
+ """Customize a template with provided information."""
37
+
38
+ # Read template
39
+ with open(template_path, 'r') as f:
40
+ content = f.read()
41
+
42
+ # Replace placeholders
43
+ replacements = {
44
+ 'title': (
45
+ [r'Insert Your Title Here[^}]*', r'Your [^}]*Title[^}]*Here[^}]*'],
46
+ kwargs.get('title', '')
47
+ ),
48
+ 'authors': (
49
+ [r'First Author\\textsuperscript\{1\}, Second Author[^}]*',
50
+ r'First Author.*Second Author.*Third Author'],
51
+ kwargs.get('authors', '')
52
+ ),
53
+ 'affiliations': (
54
+ [r'Department Name, Institution Name, City, State[^\\]*',
55
+ r'Department of [^,]*, University Name[^\\]*'],
56
+ kwargs.get('affiliations', '')
57
+ ),
58
+ 'email': (
59
+ [r'first\.author@university\.edu',
60
+ r'\[email protected\]'],
61
+ kwargs.get('email', '')
62
+ )
63
+ }
64
+
65
+ # Apply replacements
66
+ modified = False
67
+ for key, (patterns, replacement) in replacements.items():
68
+ if replacement:
69
+ for pattern in patterns:
70
+ if re.search(pattern, content):
71
+ content = re.sub(pattern, replacement, content, count=1)
72
+ modified = True
73
+ print(f"✓ Replaced {key}")
74
+
75
+ # Write output
76
+ with open(output_path, 'w') as f:
77
+ f.write(content)
78
+
79
+ if modified:
80
+ print(f"\n✓ Customized template saved to: {output_path}")
81
+ else:
82
+ print(f"\n⚠️ Template copied to: {output_path}")
83
+ print(" No customizations applied (no matching placeholders found or no values provided)")
84
+
85
+ print(f"\nNext steps:")
86
+ print(f"1. Open {output_path} in your LaTeX editor")
87
+ print(f"2. Replace remaining placeholders")
88
+ print(f"3. Add your content")
89
+ print(f"4. Compile with pdflatex or your preferred LaTeX compiler")
90
+
91
+ def interactive_mode():
92
+ """Run in interactive mode."""
93
+ print("\n=== Template Customization (Interactive Mode) ===\n")
94
+
95
+ # List available templates
96
+ skill_path = get_skill_path()
97
+ assets_path = skill_path / "assets"
98
+
99
+ print("Available templates:\n")
100
+ templates = []
101
+ for i, subdir in enumerate(["journals", "posters", "grants"], 1):
102
+ subdir_path = assets_path / subdir
103
+ if subdir_path.exists():
104
+ print(f"{subdir.upper()}:")
105
+ for j, template_file in enumerate(sorted(subdir_path.glob("*.tex")), 1):
106
+ templates.append(template_file)
107
+ print(f" {len(templates)}. {template_file.name}")
108
+
109
+ print()
110
+
111
+ # Select template
112
+ while True:
113
+ try:
114
+ choice = int(input(f"Select template (1-{len(templates)}): "))
115
+ if 1 <= choice <= len(templates):
116
+ template_path = templates[choice - 1]
117
+ break
118
+ else:
119
+ print(f"Please enter a number between 1 and {len(templates)}")
120
+ except ValueError:
121
+ print("Please enter a valid number")
122
+
123
+ print(f"\nSelected: {template_path.name}\n")
124
+
125
+ # Get customization info
126
+ title = input("Paper title (press Enter to skip): ").strip()
127
+ authors = input("Authors (e.g., 'John Doe, Jane Smith') (press Enter to skip): ").strip()
128
+ affiliations = input("Affiliations (press Enter to skip): ").strip()
129
+ email = input("Corresponding email (press Enter to skip): ").strip()
130
+
131
+ # Output file
132
+ default_output = f"my_{template_path.stem}.tex"
133
+ output = input(f"Output filename [{default_output}]: ").strip()
134
+ if not output:
135
+ output = default_output
136
+
137
+ output_path = Path(output)
138
+
139
+ # Customize
140
+ print()
141
+ customize_template(
142
+ template_path,
143
+ output_path,
144
+ title=title,
145
+ authors=authors,
146
+ affiliations=affiliations,
147
+ email=email
148
+ )
149
+
150
+ def main():
151
+ parser = argparse.ArgumentParser(
152
+ description="Customize LaTeX templates with author and project information",
153
+ formatter_class=argparse.RawDescriptionHelpFormatter,
154
+ epilog="""
155
+ Examples:
156
+ %(prog)s --interactive
157
+ %(prog)s --template nature_article.tex --output my_paper.tex
158
+ %(prog)s --template neurips_article.tex --title "My ML Research" --output my_neurips.tex
159
+ """
160
+ )
161
+
162
+ parser.add_argument('--template', type=str, help='Template filename')
163
+ parser.add_argument('--output', type=str, help='Output filename')
164
+ parser.add_argument('--title', type=str, help='Paper title')
165
+ parser.add_argument('--authors', type=str, help='Author names')
166
+ parser.add_argument('--affiliations', type=str, help='Institutions/affiliations')
167
+ parser.add_argument('--email', type=str, help='Corresponding author email')
168
+ parser.add_argument('--interactive', action='store_true', help='Run in interactive mode')
169
+
170
+ args = parser.parse_args()
171
+
172
+ # Interactive mode
173
+ if args.interactive:
174
+ interactive_mode()
175
+ return
176
+
177
+ # Command-line mode
178
+ if not args.template or not args.output:
179
+ print("Error: --template and --output are required (or use --interactive)")
180
+ parser.print_help()
181
+ return
182
+
183
+ # Find template
184
+ template_path = find_template(args.template)
185
+ if not template_path:
186
+ print(f"Error: Template '{args.template}' not found")
187
+ print("\nSearched in:")
188
+ skill_path = get_skill_path()
189
+ for subdir in ["journals", "posters", "grants"]:
190
+ print(f" - {skill_path}/assets/{subdir}/")
191
+ return
192
+
193
+ # Customize
194
+ output_path = Path(args.output)
195
+ customize_template(
196
+ template_path,
197
+ output_path,
198
+ title=args.title,
199
+ authors=args.authors,
200
+ affiliations=args.affiliations,
201
+ email=args.email
202
+ )
203
+
204
+ if __name__ == "__main__":
205
+ main()
206
+
@@ -0,0 +1,260 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Query Template Script
4
+ Search and retrieve venue-specific templates by name, type, or keywords.
5
+
6
+ Usage:
7
+ python query_template.py --venue "Nature" --type "article"
8
+ python query_template.py --keyword "machine learning"
9
+ python query_template.py --list-all
10
+ python query_template.py --venue "NeurIPS" --requirements
11
+ """
12
+
13
+ import argparse
14
+ import os
15
+ import json
16
+ from pathlib import Path
17
+
18
+ # Template database
19
+ TEMPLATES = {
20
+ "journals": {
21
+ "nature": {
22
+ "file": "nature_article.tex",
23
+ "full_name": "Nature",
24
+ "description": "Top-tier multidisciplinary science journal",
25
+ "page_limit": "~3000 words",
26
+ "citation_style": "Superscript numbered",
27
+ "format": "Single column"
28
+ },
29
+ "neurips": {
30
+ "file": "neurips_article.tex",
31
+ "full_name": "NeurIPS (Neural Information Processing Systems)",
32
+ "description": "Top-tier machine learning conference",
33
+ "page_limit": "8 pages + unlimited refs",
34
+ "citation_style": "Numbered [1]",
35
+ "format": "Two column",
36
+ "anonymization": "Required (double-blind)"
37
+ },
38
+ "plos_one": {
39
+ "file": "plos_one.tex",
40
+ "full_name": "PLOS ONE",
41
+ "description": "Open-access multidisciplinary journal",
42
+ "page_limit": "No limit",
43
+ "citation_style": "Vancouver [1]",
44
+ "format": "Single column"
45
+ }
46
+ },
47
+ "posters": {
48
+ "beamerposter": {
49
+ "file": "beamerposter_academic.tex",
50
+ "full_name": "Beamerposter Academic",
51
+ "description": "Classic academic conference poster using beamerposter",
52
+ "size": "A0, customizable",
53
+ "package": "beamerposter"
54
+ }
55
+ },
56
+ "grants": {
57
+ "nsf": {
58
+ "file": "nsf_proposal_template.tex",
59
+ "full_name": "NSF Standard Grant",
60
+ "description": "National Science Foundation research proposal",
61
+ "page_limit": "15 pages (project description)",
62
+ "key_sections": "Project Summary, Project Description, Broader Impacts"
63
+ },
64
+ "nih_specific_aims": {
65
+ "file": "nih_specific_aims.tex",
66
+ "full_name": "NIH Specific Aims Page",
67
+ "description": "Most critical page of NIH proposals",
68
+ "page_limit": "1 page (strictly enforced)",
69
+ "key_sections": "Hook, Hypothesis, 3 Aims, Payoff"
70
+ }
71
+ }
72
+ }
73
+
74
+ def get_skill_path():
75
+ """Get the path to the venue-templates skill directory."""
76
+ # Assume script is in .claude/skills/venue-templates/scripts/
77
+ script_dir = Path(__file__).parent
78
+ skill_dir = script_dir.parent
79
+ return skill_dir
80
+
81
+ def search_templates(venue=None, template_type=None, keyword=None):
82
+ """Search for templates matching criteria."""
83
+ results = []
84
+
85
+ for cat_name, category in TEMPLATES.items():
86
+ # Filter by type if specified
87
+ if template_type and cat_name != template_type and template_type != "all":
88
+ continue
89
+
90
+ for temp_id, template in category.items():
91
+ # Filter by venue name
92
+ if venue:
93
+ venue_lower = venue.lower()
94
+ if venue_lower not in temp_id and venue_lower not in template.get("full_name", "").lower():
95
+ continue
96
+
97
+ # Filter by keyword
98
+ if keyword:
99
+ keyword_lower = keyword.lower()
100
+ search_text = json.dumps(template).lower()
101
+ if keyword_lower not in search_text:
102
+ continue
103
+
104
+ results.append({
105
+ "id": temp_id,
106
+ "category": cat_name,
107
+ "file": template["file"],
108
+ "full_name": template.get("full_name", temp_id),
109
+ "description": template.get("description", ""),
110
+ "details": template
111
+ })
112
+
113
+ return results
114
+
115
+ def list_all_templates():
116
+ """List all available templates."""
117
+ print("\n=== AVAILABLE TEMPLATES ===\n")
118
+
119
+ for cat_name, category in TEMPLATES.items():
120
+ print(f"\n{cat_name.upper()}:")
121
+ for temp_id, template in category.items():
122
+ print(f" • {template.get('full_name', temp_id)}")
123
+ print(f" File: {template['file']}")
124
+ if "description" in template:
125
+ print(f" Description: {template['description']}")
126
+ print()
127
+
128
+ def print_template_info(template):
129
+ """Print detailed information about a template."""
130
+ print(f"\n{'='*60}")
131
+ print(f"Template: {template['full_name']}")
132
+ print(f"{'='*60}")
133
+ print(f"Category: {template['category']}")
134
+ print(f"File: {template['file']}")
135
+
136
+ details = template['details']
137
+
138
+ print(f"\nDescription: {details.get('description', 'N/A')}")
139
+
140
+ if 'page_limit' in details:
141
+ print(f"Page Limit: {details['page_limit']}")
142
+ if 'citation_style' in details:
143
+ print(f"Citation Style: {details['citation_style']}")
144
+ if 'format' in details:
145
+ print(f"Format: {details['format']}")
146
+ if 'anonymization' in details:
147
+ print(f"⚠️ Anonymization: {details['anonymization']}")
148
+ if 'size' in details:
149
+ print(f"Poster Size: {details['size']}")
150
+ if 'package' in details:
151
+ print(f"LaTeX Package: {details['package']}")
152
+ if 'key_sections' in details:
153
+ print(f"Key Sections: {details['key_sections']}")
154
+
155
+ # Print full path to template
156
+ skill_path = get_skill_path()
157
+ template_path = skill_path / "assets" / template['category'] / template['file']
158
+ print(f"\nFull Path: {template_path}")
159
+
160
+ if template_path.exists():
161
+ print("✓ Template file exists")
162
+ else:
163
+ print("✗ Template file not found")
164
+
165
+ print()
166
+
167
+ def print_requirements(venue):
168
+ """Print formatting requirements for a venue."""
169
+ results = search_templates(venue=venue)
170
+
171
+ if not results:
172
+ print(f"No templates found for venue: {venue}")
173
+ return
174
+
175
+ template = results[0] # Take first match
176
+ details = template['details']
177
+
178
+ print(f"\n{'='*60}")
179
+ print(f"FORMATTING REQUIREMENTS: {template['full_name']}")
180
+ print(f"{'='*60}\n")
181
+
182
+ if 'page_limit' in details:
183
+ print(f"📄 Page Limit: {details['page_limit']}")
184
+ if 'format' in details:
185
+ print(f"📐 Format: {details['format']}")
186
+ if 'citation_style' in details:
187
+ print(f"📚 Citation Style: {details['citation_style']}")
188
+ if 'anonymization' in details:
189
+ print(f"🔒 Anonymization: {details['anonymization']}")
190
+ if 'size' in details:
191
+ print(f"📏 Size: {details['size']}")
192
+
193
+ print(f"\n💡 For detailed requirements, see:")
194
+ skill_path = get_skill_path()
195
+
196
+ if template['category'] == "journals":
197
+ print(f" {skill_path}/references/journals_formatting.md")
198
+ elif template['category'] == "posters":
199
+ print(f" {skill_path}/references/posters_guidelines.md")
200
+ elif template['category'] == "grants":
201
+ print(f" {skill_path}/references/grants_requirements.md")
202
+
203
+ print()
204
+
205
+ def main():
206
+ parser = argparse.ArgumentParser(
207
+ description="Query venue-specific LaTeX templates",
208
+ formatter_class=argparse.RawDescriptionHelpFormatter,
209
+ epilog="""
210
+ Examples:
211
+ %(prog)s --list-all
212
+ %(prog)s --venue "Nature" --type journals
213
+ %(prog)s --keyword "machine learning"
214
+ %(prog)s --venue "NeurIPS" --requirements
215
+ """
216
+ )
217
+
218
+ parser.add_argument('--venue', type=str, help='Venue name (e.g., "Nature", "NeurIPS")')
219
+ parser.add_argument('--type', type=str, choices=['journals', 'posters', 'grants', 'all'],
220
+ help='Template type')
221
+ parser.add_argument('--keyword', type=str, help='Search keyword')
222
+ parser.add_argument('--list-all', action='store_true', help='List all available templates')
223
+ parser.add_argument('--requirements', action='store_true',
224
+ help='Show formatting requirements for venue')
225
+
226
+ args = parser.parse_args()
227
+
228
+ # List all templates
229
+ if args.list_all:
230
+ list_all_templates()
231
+ return
232
+
233
+ # Show requirements
234
+ if args.requirements:
235
+ if not args.venue:
236
+ print("Error: --requirements requires --venue")
237
+ parser.print_help()
238
+ return
239
+ print_requirements(args.venue)
240
+ return
241
+
242
+ # Search for templates
243
+ if not any([args.venue, args.type, args.keyword]):
244
+ parser.print_help()
245
+ return
246
+
247
+ results = search_templates(venue=args.venue, template_type=args.type, keyword=args.keyword)
248
+
249
+ if not results:
250
+ print("No templates found matching your criteria.")
251
+ return
252
+
253
+ print(f"\nFound {len(results)} template(s):\n")
254
+
255
+ for result in results:
256
+ print_template_info(result)
257
+
258
+ if __name__ == "__main__":
259
+ main()
260
+