scientific-writer 2.3.1__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.
Files changed (315) hide show
  1. scientific_writer/.claude/WRITER.md +822 -0
  2. scientific_writer/.claude/settings.local.json +30 -0
  3. scientific_writer/.claude/skills/citation-management/SKILL.md +1046 -0
  4. scientific_writer/.claude/skills/citation-management/assets/bibtex_template.bib +264 -0
  5. scientific_writer/.claude/skills/citation-management/assets/citation_checklist.md +386 -0
  6. scientific_writer/.claude/skills/citation-management/references/bibtex_formatting.md +908 -0
  7. scientific_writer/.claude/skills/citation-management/references/citation_validation.md +794 -0
  8. scientific_writer/.claude/skills/citation-management/references/google_scholar_search.md +725 -0
  9. scientific_writer/.claude/skills/citation-management/references/metadata_extraction.md +870 -0
  10. scientific_writer/.claude/skills/citation-management/references/pubmed_search.md +839 -0
  11. scientific_writer/.claude/skills/citation-management/scripts/doi_to_bibtex.py +204 -0
  12. scientific_writer/.claude/skills/citation-management/scripts/extract_metadata.py +569 -0
  13. scientific_writer/.claude/skills/citation-management/scripts/format_bibtex.py +349 -0
  14. scientific_writer/.claude/skills/citation-management/scripts/search_google_scholar.py +282 -0
  15. scientific_writer/.claude/skills/citation-management/scripts/search_pubmed.py +398 -0
  16. scientific_writer/.claude/skills/citation-management/scripts/validate_citations.py +497 -0
  17. scientific_writer/.claude/skills/clinical-reports/IMPLEMENTATION_SUMMARY.md +641 -0
  18. scientific_writer/.claude/skills/clinical-reports/README.md +236 -0
  19. scientific_writer/.claude/skills/clinical-reports/SKILL.md +1088 -0
  20. scientific_writer/.claude/skills/clinical-reports/assets/case_report_template.md +352 -0
  21. scientific_writer/.claude/skills/clinical-reports/assets/clinical_trial_csr_template.md +353 -0
  22. scientific_writer/.claude/skills/clinical-reports/assets/clinical_trial_sae_template.md +359 -0
  23. scientific_writer/.claude/skills/clinical-reports/assets/consult_note_template.md +305 -0
  24. scientific_writer/.claude/skills/clinical-reports/assets/discharge_summary_template.md +453 -0
  25. scientific_writer/.claude/skills/clinical-reports/assets/hipaa_compliance_checklist.md +395 -0
  26. scientific_writer/.claude/skills/clinical-reports/assets/history_physical_template.md +305 -0
  27. scientific_writer/.claude/skills/clinical-reports/assets/lab_report_template.md +309 -0
  28. scientific_writer/.claude/skills/clinical-reports/assets/pathology_report_template.md +249 -0
  29. scientific_writer/.claude/skills/clinical-reports/assets/quality_checklist.md +338 -0
  30. scientific_writer/.claude/skills/clinical-reports/assets/radiology_report_template.md +318 -0
  31. scientific_writer/.claude/skills/clinical-reports/assets/soap_note_template.md +253 -0
  32. scientific_writer/.claude/skills/clinical-reports/references/case_report_guidelines.md +570 -0
  33. scientific_writer/.claude/skills/clinical-reports/references/clinical_trial_reporting.md +693 -0
  34. scientific_writer/.claude/skills/clinical-reports/references/data_presentation.md +530 -0
  35. scientific_writer/.claude/skills/clinical-reports/references/diagnostic_reports_standards.md +629 -0
  36. scientific_writer/.claude/skills/clinical-reports/references/medical_terminology.md +588 -0
  37. scientific_writer/.claude/skills/clinical-reports/references/patient_documentation.md +744 -0
  38. scientific_writer/.claude/skills/clinical-reports/references/peer_review_standards.md +585 -0
  39. scientific_writer/.claude/skills/clinical-reports/references/regulatory_compliance.md +577 -0
  40. scientific_writer/.claude/skills/clinical-reports/scripts/check_deidentification.py +346 -0
  41. scientific_writer/.claude/skills/clinical-reports/scripts/compliance_checker.py +78 -0
  42. scientific_writer/.claude/skills/clinical-reports/scripts/extract_clinical_data.py +102 -0
  43. scientific_writer/.claude/skills/clinical-reports/scripts/format_adverse_events.py +103 -0
  44. scientific_writer/.claude/skills/clinical-reports/scripts/generate_report_template.py +163 -0
  45. scientific_writer/.claude/skills/clinical-reports/scripts/terminology_validator.py +133 -0
  46. scientific_writer/.claude/skills/clinical-reports/scripts/validate_case_report.py +334 -0
  47. scientific_writer/.claude/skills/clinical-reports/scripts/validate_trial_report.py +89 -0
  48. scientific_writer/.claude/skills/document-skills/docx/LICENSE.txt +30 -0
  49. scientific_writer/.claude/skills/document-skills/docx/SKILL.md +197 -0
  50. scientific_writer/.claude/skills/document-skills/docx/docx-js.md +350 -0
  51. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  52. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  53. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  54. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  55. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  56. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  57. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  58. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  59. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  60. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  61. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  62. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  63. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  64. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  65. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  66. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  67. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  68. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  69. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  70. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  71. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  72. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  73. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  74. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  75. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  76. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  77. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  78. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  79. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  80. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  81. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  82. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
  83. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  84. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  85. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  86. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  87. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  88. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  89. scientific_writer/.claude/skills/document-skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  90. scientific_writer/.claude/skills/document-skills/docx/ooxml/scripts/pack.py +159 -0
  91. scientific_writer/.claude/skills/document-skills/docx/ooxml/scripts/unpack.py +29 -0
  92. scientific_writer/.claude/skills/document-skills/docx/ooxml/scripts/validate.py +69 -0
  93. scientific_writer/.claude/skills/document-skills/docx/ooxml/scripts/validation/__init__.py +15 -0
  94. scientific_writer/.claude/skills/document-skills/docx/ooxml/scripts/validation/base.py +951 -0
  95. scientific_writer/.claude/skills/document-skills/docx/ooxml/scripts/validation/docx.py +274 -0
  96. scientific_writer/.claude/skills/document-skills/docx/ooxml/scripts/validation/pptx.py +315 -0
  97. scientific_writer/.claude/skills/document-skills/docx/ooxml/scripts/validation/redlining.py +279 -0
  98. scientific_writer/.claude/skills/document-skills/docx/ooxml.md +610 -0
  99. scientific_writer/.claude/skills/document-skills/docx/scripts/__init__.py +1 -0
  100. scientific_writer/.claude/skills/document-skills/docx/scripts/document.py +1276 -0
  101. scientific_writer/.claude/skills/document-skills/docx/scripts/templates/comments.xml +3 -0
  102. scientific_writer/.claude/skills/document-skills/docx/scripts/templates/commentsExtended.xml +3 -0
  103. scientific_writer/.claude/skills/document-skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  104. scientific_writer/.claude/skills/document-skills/docx/scripts/templates/commentsIds.xml +3 -0
  105. scientific_writer/.claude/skills/document-skills/docx/scripts/templates/people.xml +3 -0
  106. scientific_writer/.claude/skills/document-skills/docx/scripts/utilities.py +374 -0
  107. scientific_writer/.claude/skills/document-skills/pdf/LICENSE.txt +30 -0
  108. scientific_writer/.claude/skills/document-skills/pdf/SKILL.md +294 -0
  109. scientific_writer/.claude/skills/document-skills/pdf/forms.md +205 -0
  110. scientific_writer/.claude/skills/document-skills/pdf/reference.md +612 -0
  111. scientific_writer/.claude/skills/document-skills/pdf/scripts/check_bounding_boxes.py +70 -0
  112. scientific_writer/.claude/skills/document-skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
  113. scientific_writer/.claude/skills/document-skills/pdf/scripts/check_fillable_fields.py +12 -0
  114. scientific_writer/.claude/skills/document-skills/pdf/scripts/convert_pdf_to_images.py +35 -0
  115. scientific_writer/.claude/skills/document-skills/pdf/scripts/create_validation_image.py +41 -0
  116. scientific_writer/.claude/skills/document-skills/pdf/scripts/extract_form_field_info.py +152 -0
  117. scientific_writer/.claude/skills/document-skills/pdf/scripts/fill_fillable_fields.py +114 -0
  118. scientific_writer/.claude/skills/document-skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
  119. scientific_writer/.claude/skills/document-skills/pptx/LICENSE.txt +30 -0
  120. scientific_writer/.claude/skills/document-skills/pptx/SKILL.md +484 -0
  121. scientific_writer/.claude/skills/document-skills/pptx/html2pptx.md +625 -0
  122. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  123. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  124. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  125. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  126. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  127. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  128. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  129. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  130. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  131. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  132. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  133. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  134. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  135. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  136. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  137. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  138. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  139. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  140. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  141. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  142. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  143. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  144. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  145. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  146. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  147. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  148. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  149. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  150. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  151. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  152. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  153. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
  154. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  155. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  156. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  157. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  158. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  159. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  160. scientific_writer/.claude/skills/document-skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  161. scientific_writer/.claude/skills/document-skills/pptx/ooxml/scripts/pack.py +159 -0
  162. scientific_writer/.claude/skills/document-skills/pptx/ooxml/scripts/unpack.py +29 -0
  163. scientific_writer/.claude/skills/document-skills/pptx/ooxml/scripts/validate.py +69 -0
  164. scientific_writer/.claude/skills/document-skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
  165. scientific_writer/.claude/skills/document-skills/pptx/ooxml/scripts/validation/base.py +951 -0
  166. scientific_writer/.claude/skills/document-skills/pptx/ooxml/scripts/validation/docx.py +274 -0
  167. scientific_writer/.claude/skills/document-skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
  168. scientific_writer/.claude/skills/document-skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
  169. scientific_writer/.claude/skills/document-skills/pptx/ooxml.md +427 -0
  170. scientific_writer/.claude/skills/document-skills/pptx/scripts/html2pptx.js +979 -0
  171. scientific_writer/.claude/skills/document-skills/pptx/scripts/inventory.py +1020 -0
  172. scientific_writer/.claude/skills/document-skills/pptx/scripts/rearrange.py +231 -0
  173. scientific_writer/.claude/skills/document-skills/pptx/scripts/replace.py +385 -0
  174. scientific_writer/.claude/skills/document-skills/pptx/scripts/thumbnail.py +450 -0
  175. scientific_writer/.claude/skills/document-skills/xlsx/LICENSE.txt +30 -0
  176. scientific_writer/.claude/skills/document-skills/xlsx/SKILL.md +289 -0
  177. scientific_writer/.claude/skills/document-skills/xlsx/recalc.py +178 -0
  178. scientific_writer/.claude/skills/hypothesis-generation/SKILL.md +155 -0
  179. scientific_writer/.claude/skills/hypothesis-generation/assets/hypothesis_output_template.md +302 -0
  180. scientific_writer/.claude/skills/hypothesis-generation/references/experimental_design_patterns.md +327 -0
  181. scientific_writer/.claude/skills/hypothesis-generation/references/hypothesis_quality_criteria.md +196 -0
  182. scientific_writer/.claude/skills/hypothesis-generation/references/literature_search_strategies.md +505 -0
  183. scientific_writer/.claude/skills/latex-posters/README.md +417 -0
  184. scientific_writer/.claude/skills/latex-posters/SKILL.md +919 -0
  185. scientific_writer/.claude/skills/latex-posters/assets/baposter_template.tex +257 -0
  186. scientific_writer/.claude/skills/latex-posters/assets/beamerposter_template.tex +244 -0
  187. scientific_writer/.claude/skills/latex-posters/assets/poster_quality_checklist.md +358 -0
  188. scientific_writer/.claude/skills/latex-posters/assets/tikzposter_template.tex +251 -0
  189. scientific_writer/.claude/skills/latex-posters/references/latex_poster_packages.md +745 -0
  190. scientific_writer/.claude/skills/latex-posters/references/poster_content_guide.md +748 -0
  191. scientific_writer/.claude/skills/latex-posters/references/poster_design_principles.md +806 -0
  192. scientific_writer/.claude/skills/latex-posters/references/poster_layout_design.md +900 -0
  193. scientific_writer/.claude/skills/latex-posters/scripts/review_poster.sh +214 -0
  194. scientific_writer/.claude/skills/literature-review/SKILL.md +546 -0
  195. scientific_writer/.claude/skills/literature-review/assets/review_template.md +412 -0
  196. scientific_writer/.claude/skills/literature-review/references/citation_styles.md +166 -0
  197. scientific_writer/.claude/skills/literature-review/references/database_strategies.md +381 -0
  198. scientific_writer/.claude/skills/literature-review/scripts/generate_pdf.py +176 -0
  199. scientific_writer/.claude/skills/literature-review/scripts/search_databases.py +303 -0
  200. scientific_writer/.claude/skills/literature-review/scripts/verify_citations.py +222 -0
  201. scientific_writer/.claude/skills/markitdown/INSTALLATION_GUIDE.md +318 -0
  202. scientific_writer/.claude/skills/markitdown/LICENSE.txt +22 -0
  203. scientific_writer/.claude/skills/markitdown/OPENROUTER_INTEGRATION.md +359 -0
  204. scientific_writer/.claude/skills/markitdown/QUICK_REFERENCE.md +309 -0
  205. scientific_writer/.claude/skills/markitdown/README.md +184 -0
  206. scientific_writer/.claude/skills/markitdown/SKILL.md +450 -0
  207. scientific_writer/.claude/skills/markitdown/SKILL_SUMMARY.md +307 -0
  208. scientific_writer/.claude/skills/markitdown/assets/example_usage.md +463 -0
  209. scientific_writer/.claude/skills/markitdown/references/api_reference.md +399 -0
  210. scientific_writer/.claude/skills/markitdown/references/file_formats.md +542 -0
  211. scientific_writer/.claude/skills/markitdown/scripts/batch_convert.py +228 -0
  212. scientific_writer/.claude/skills/markitdown/scripts/convert_literature.py +283 -0
  213. scientific_writer/.claude/skills/markitdown/scripts/convert_with_ai.py +243 -0
  214. scientific_writer/.claude/skills/paper-2-web/SKILL.md +455 -0
  215. scientific_writer/.claude/skills/paper-2-web/references/installation.md +141 -0
  216. scientific_writer/.claude/skills/paper-2-web/references/paper2poster.md +346 -0
  217. scientific_writer/.claude/skills/paper-2-web/references/paper2video.md +305 -0
  218. scientific_writer/.claude/skills/paper-2-web/references/paper2web.md +187 -0
  219. scientific_writer/.claude/skills/paper-2-web/references/usage_examples.md +436 -0
  220. scientific_writer/.claude/skills/peer-review/SKILL.md +375 -0
  221. scientific_writer/.claude/skills/peer-review/references/common_issues.md +552 -0
  222. scientific_writer/.claude/skills/peer-review/references/reporting_standards.md +290 -0
  223. scientific_writer/.claude/skills/research-grants/README.md +285 -0
  224. scientific_writer/.claude/skills/research-grants/SKILL.md +896 -0
  225. scientific_writer/.claude/skills/research-grants/assets/budget_justification_template.md +453 -0
  226. scientific_writer/.claude/skills/research-grants/assets/nih_specific_aims_template.md +166 -0
  227. scientific_writer/.claude/skills/research-grants/assets/nsf_project_summary_template.md +92 -0
  228. scientific_writer/.claude/skills/research-grants/references/broader_impacts.md +392 -0
  229. scientific_writer/.claude/skills/research-grants/references/darpa_guidelines.md +636 -0
  230. scientific_writer/.claude/skills/research-grants/references/doe_guidelines.md +586 -0
  231. scientific_writer/.claude/skills/research-grants/references/nih_guidelines.md +851 -0
  232. scientific_writer/.claude/skills/research-grants/references/nsf_guidelines.md +570 -0
  233. scientific_writer/.claude/skills/research-grants/references/specific_aims_guide.md +458 -0
  234. scientific_writer/.claude/skills/research-lookup/README.md +116 -0
  235. scientific_writer/.claude/skills/research-lookup/SKILL.md +443 -0
  236. scientific_writer/.claude/skills/research-lookup/examples.py +174 -0
  237. scientific_writer/.claude/skills/research-lookup/lookup.py +93 -0
  238. scientific_writer/.claude/skills/research-lookup/research_lookup.py +335 -0
  239. scientific_writer/.claude/skills/research-lookup/scripts/research_lookup.py +261 -0
  240. scientific_writer/.claude/skills/scholar-evaluation/SKILL.md +254 -0
  241. scientific_writer/.claude/skills/scholar-evaluation/references/evaluation_framework.md +663 -0
  242. scientific_writer/.claude/skills/scholar-evaluation/scripts/calculate_scores.py +378 -0
  243. scientific_writer/.claude/skills/scientific-critical-thinking/SKILL.md +530 -0
  244. scientific_writer/.claude/skills/scientific-critical-thinking/references/common_biases.md +364 -0
  245. scientific_writer/.claude/skills/scientific-critical-thinking/references/evidence_hierarchy.md +484 -0
  246. scientific_writer/.claude/skills/scientific-critical-thinking/references/experimental_design.md +496 -0
  247. scientific_writer/.claude/skills/scientific-critical-thinking/references/logical_fallacies.md +478 -0
  248. scientific_writer/.claude/skills/scientific-critical-thinking/references/scientific_method.md +169 -0
  249. scientific_writer/.claude/skills/scientific-critical-thinking/references/statistical_pitfalls.md +506 -0
  250. scientific_writer/.claude/skills/scientific-schematics/SKILL.md +2035 -0
  251. scientific_writer/.claude/skills/scientific-schematics/assets/block_diagram_template.tex +199 -0
  252. scientific_writer/.claude/skills/scientific-schematics/assets/circuit_template.tex +159 -0
  253. scientific_writer/.claude/skills/scientific-schematics/assets/flowchart_template.tex +161 -0
  254. scientific_writer/.claude/skills/scientific-schematics/assets/pathway_template.tex +162 -0
  255. scientific_writer/.claude/skills/scientific-schematics/assets/tikz_styles.tex +422 -0
  256. scientific_writer/.claude/skills/scientific-schematics/references/best_practices.md +562 -0
  257. scientific_writer/.claude/skills/scientific-schematics/references/diagram_types.md +637 -0
  258. scientific_writer/.claude/skills/scientific-schematics/references/python_libraries.md +791 -0
  259. scientific_writer/.claude/skills/scientific-schematics/references/tikz_guide.md +734 -0
  260. scientific_writer/.claude/skills/scientific-schematics/scripts/circuit_generator.py +307 -0
  261. scientific_writer/.claude/skills/scientific-schematics/scripts/compile_tikz.py +292 -0
  262. scientific_writer/.claude/skills/scientific-schematics/scripts/generate_flowchart.py +281 -0
  263. scientific_writer/.claude/skills/scientific-schematics/scripts/pathway_diagram.py +406 -0
  264. scientific_writer/.claude/skills/scientific-writing/SKILL.md +443 -0
  265. scientific_writer/.claude/skills/scientific-writing/references/citation_styles.md +720 -0
  266. scientific_writer/.claude/skills/scientific-writing/references/figures_tables.md +806 -0
  267. scientific_writer/.claude/skills/scientific-writing/references/imrad_structure.md +658 -0
  268. scientific_writer/.claude/skills/scientific-writing/references/reporting_guidelines.md +748 -0
  269. scientific_writer/.claude/skills/scientific-writing/references/writing_principles.md +824 -0
  270. scientific_writer/.claude/skills/treatment-plans/README.md +488 -0
  271. scientific_writer/.claude/skills/treatment-plans/SKILL.md +1536 -0
  272. scientific_writer/.claude/skills/treatment-plans/assets/STYLING_QUICK_REFERENCE.md +185 -0
  273. scientific_writer/.claude/skills/treatment-plans/assets/chronic_disease_management_plan.tex +665 -0
  274. scientific_writer/.claude/skills/treatment-plans/assets/general_medical_treatment_plan.tex +547 -0
  275. scientific_writer/.claude/skills/treatment-plans/assets/medical_treatment_plan.sty +222 -0
  276. scientific_writer/.claude/skills/treatment-plans/assets/mental_health_treatment_plan.tex +774 -0
  277. scientific_writer/.claude/skills/treatment-plans/assets/one_page_treatment_plan.tex +193 -0
  278. scientific_writer/.claude/skills/treatment-plans/assets/pain_management_plan.tex +799 -0
  279. scientific_writer/.claude/skills/treatment-plans/assets/perioperative_care_plan.tex +753 -0
  280. scientific_writer/.claude/skills/treatment-plans/assets/quality_checklist.md +471 -0
  281. scientific_writer/.claude/skills/treatment-plans/assets/rehabilitation_treatment_plan.tex +756 -0
  282. scientific_writer/.claude/skills/treatment-plans/references/goal_setting_frameworks.md +411 -0
  283. scientific_writer/.claude/skills/treatment-plans/references/intervention_guidelines.md +507 -0
  284. scientific_writer/.claude/skills/treatment-plans/references/regulatory_compliance.md +476 -0
  285. scientific_writer/.claude/skills/treatment-plans/references/specialty_specific_guidelines.md +655 -0
  286. scientific_writer/.claude/skills/treatment-plans/references/treatment_plan_standards.md +485 -0
  287. scientific_writer/.claude/skills/treatment-plans/scripts/check_completeness.py +318 -0
  288. scientific_writer/.claude/skills/treatment-plans/scripts/generate_template.py +244 -0
  289. scientific_writer/.claude/skills/treatment-plans/scripts/timeline_generator.py +369 -0
  290. scientific_writer/.claude/skills/treatment-plans/scripts/validate_treatment_plan.py +367 -0
  291. scientific_writer/.claude/skills/venue-templates/SKILL.md +590 -0
  292. scientific_writer/.claude/skills/venue-templates/assets/grants/nih_specific_aims.tex +235 -0
  293. scientific_writer/.claude/skills/venue-templates/assets/grants/nsf_proposal_template.tex +375 -0
  294. scientific_writer/.claude/skills/venue-templates/assets/journals/nature_article.tex +171 -0
  295. scientific_writer/.claude/skills/venue-templates/assets/journals/neurips_article.tex +283 -0
  296. scientific_writer/.claude/skills/venue-templates/assets/journals/plos_one.tex +317 -0
  297. scientific_writer/.claude/skills/venue-templates/assets/posters/beamerposter_academic.tex +311 -0
  298. scientific_writer/.claude/skills/venue-templates/references/conferences_formatting.md +564 -0
  299. scientific_writer/.claude/skills/venue-templates/references/grants_requirements.md +787 -0
  300. scientific_writer/.claude/skills/venue-templates/references/journals_formatting.md +486 -0
  301. scientific_writer/.claude/skills/venue-templates/references/posters_guidelines.md +628 -0
  302. scientific_writer/.claude/skills/venue-templates/scripts/customize_template.py +206 -0
  303. scientific_writer/.claude/skills/venue-templates/scripts/query_template.py +260 -0
  304. scientific_writer/.claude/skills/venue-templates/scripts/validate_format.py +255 -0
  305. scientific_writer/__init__.py +43 -0
  306. scientific_writer/api.py +393 -0
  307. scientific_writer/cli.py +326 -0
  308. scientific_writer/core.py +275 -0
  309. scientific_writer/models.py +76 -0
  310. scientific_writer/utils.py +289 -0
  311. scientific_writer-2.3.1.dist-info/METADATA +272 -0
  312. scientific_writer-2.3.1.dist-info/RECORD +315 -0
  313. scientific_writer-2.3.1.dist-info/WHEEL +4 -0
  314. scientific_writer-2.3.1.dist-info/entry_points.txt +2 -0
  315. scientific_writer-2.3.1.dist-info/licenses/LICENSE +22 -0
@@ -0,0 +1,289 @@
1
+ """Utility functions for scientific writer."""
2
+
3
+ from pathlib import Path
4
+ from typing import List, Dict, Any, Optional
5
+ import re
6
+
7
+
8
+ def find_existing_papers(output_folder: Path) -> List[Dict[str, Any]]:
9
+ """
10
+ Get all existing paper directories with their metadata.
11
+
12
+ Args:
13
+ output_folder: Path to the paper outputs folder.
14
+
15
+ Returns:
16
+ List of dicts with path, name, and timestamp info.
17
+ """
18
+ papers = []
19
+ if not output_folder.exists():
20
+ return papers
21
+
22
+ for paper_dir in output_folder.iterdir():
23
+ if paper_dir.is_dir():
24
+ papers.append({
25
+ 'path': paper_dir,
26
+ 'name': paper_dir.name,
27
+ 'mtime': paper_dir.stat().st_mtime
28
+ })
29
+
30
+ # Sort by modification time (most recent first)
31
+ papers.sort(key=lambda x: x['mtime'], reverse=True)
32
+ return papers
33
+
34
+
35
+ def detect_paper_reference(user_input: str, existing_papers: List[Dict[str, Any]]) -> Optional[Path]:
36
+ """
37
+ Try to detect if the user is referring to an existing paper.
38
+
39
+ Args:
40
+ user_input: User's input text.
41
+ existing_papers: List of existing paper dictionaries.
42
+
43
+ Returns:
44
+ The paper path if found, None otherwise.
45
+ """
46
+ if not existing_papers:
47
+ return None
48
+
49
+ user_input_lower = user_input.lower()
50
+
51
+ # Keywords that suggest continuing with existing work
52
+ continuation_keywords = [
53
+ "continue", "update", "edit", "revise", "modify", "change",
54
+ "add to", "fix", "improve", "review", "the paper", "this paper",
55
+ "my paper", "current paper", "previous paper", "last paper",
56
+ "poster", "the poster", "my poster", "compile", "generate pdf"
57
+ ]
58
+
59
+ # Keywords that suggest searching for/looking up an existing paper
60
+ search_keywords = [
61
+ "look for", "find", "search for", "where is", "which paper",
62
+ "show me", "open", "locate", "get"
63
+ ]
64
+
65
+ # Keywords that explicitly indicate a new paper
66
+ new_paper_keywords = [
67
+ "new paper", "start fresh", "start afresh", "create new",
68
+ "different paper", "another paper", "write a new"
69
+ ]
70
+
71
+ # If user explicitly wants a new paper, return None
72
+ if any(keyword in user_input_lower for keyword in new_paper_keywords):
73
+ return None
74
+
75
+ # Check if user mentions continuation or search keywords
76
+ has_continuation_keyword = any(keyword in user_input_lower for keyword in continuation_keywords)
77
+ has_search_keyword = any(keyword in user_input_lower for keyword in search_keywords)
78
+
79
+ # Try to find paper by name/topic keywords
80
+ best_match = None
81
+ best_match_score = 0
82
+
83
+ for paper in existing_papers:
84
+ paper_name = paper['name'].lower()
85
+ # Extract topic from directory name (format: YYYYMMDD_HHMMSS_topic)
86
+ parts = paper_name.split('_', 2)
87
+ if len(parts) >= 3:
88
+ topic = parts[2].replace('_', ' ')
89
+ # Check if topic words appear in user input
90
+ topic_words = topic.split()
91
+ matches = sum(1 for word in topic_words if len(word) > 3 and word in user_input_lower)
92
+
93
+ # Keep track of best match
94
+ if matches > best_match_score:
95
+ best_match_score = matches
96
+ best_match = paper['path']
97
+
98
+ # If we have a strong match (2+ topic words), return it
99
+ # This is especially important for search keywords
100
+ if matches >= 2 and (has_search_keyword or has_continuation_keyword):
101
+ return paper['path']
102
+
103
+ # If we found any match with search keywords, return the best one
104
+ if has_search_keyword and best_match_score > 0:
105
+ return best_match
106
+
107
+ # If user used continuation keywords but no specific match, use most recent paper
108
+ if has_continuation_keyword and existing_papers:
109
+ return existing_papers[0]['path']
110
+
111
+ return None
112
+
113
+
114
+ def scan_paper_directory(paper_dir: Path) -> Dict[str, Any]:
115
+ """
116
+ Scan a paper directory and collect all file information.
117
+
118
+ Args:
119
+ paper_dir: Path to the paper directory.
120
+
121
+ Returns:
122
+ Dictionary with comprehensive file information.
123
+ """
124
+ result = {
125
+ 'pdf_final': None,
126
+ 'tex_final': None,
127
+ 'pdf_drafts': [],
128
+ 'tex_drafts': [],
129
+ 'bibliography': None,
130
+ 'figures': [],
131
+ 'data': [],
132
+ 'progress_log': None,
133
+ 'summary': None,
134
+ }
135
+
136
+ if not paper_dir.exists():
137
+ return result
138
+
139
+ # Scan final/ directory
140
+ final_dir = paper_dir / "final"
141
+ if final_dir.exists():
142
+ for file in final_dir.iterdir():
143
+ if file.is_file():
144
+ if file.suffix == '.pdf':
145
+ result['pdf_final'] = str(file)
146
+ elif file.suffix == '.tex':
147
+ result['tex_final'] = str(file)
148
+
149
+ # Scan drafts/ directory
150
+ drafts_dir = paper_dir / "drafts"
151
+ if drafts_dir.exists():
152
+ for file in sorted(drafts_dir.iterdir()):
153
+ if file.is_file():
154
+ if file.suffix == '.pdf':
155
+ result['pdf_drafts'].append(str(file))
156
+ elif file.suffix == '.tex':
157
+ result['tex_drafts'].append(str(file))
158
+
159
+ # Scan references/ directory
160
+ references_dir = paper_dir / "references"
161
+ if references_dir.exists():
162
+ bib_file = references_dir / "references.bib"
163
+ if bib_file.exists():
164
+ result['bibliography'] = str(bib_file)
165
+
166
+ # Scan figures/ directory
167
+ figures_dir = paper_dir / "figures"
168
+ if figures_dir.exists():
169
+ for file in sorted(figures_dir.iterdir()):
170
+ if file.is_file():
171
+ result['figures'].append(str(file))
172
+
173
+ # Scan data/ directory
174
+ data_dir = paper_dir / "data"
175
+ if data_dir.exists():
176
+ for file in sorted(data_dir.iterdir()):
177
+ if file.is_file():
178
+ result['data'].append(str(file))
179
+
180
+ # Check for progress.md and SUMMARY.md
181
+ progress_file = paper_dir / "progress.md"
182
+ if progress_file.exists():
183
+ result['progress_log'] = str(progress_file)
184
+
185
+ summary_file = paper_dir / "SUMMARY.md"
186
+ if summary_file.exists():
187
+ result['summary'] = str(summary_file)
188
+
189
+ return result
190
+
191
+
192
+ def count_citations_in_bib(bib_file: Optional[str]) -> int:
193
+ """
194
+ Count the number of citations in a BibTeX file.
195
+
196
+ Args:
197
+ bib_file: Path to the .bib file.
198
+
199
+ Returns:
200
+ Number of citations found.
201
+ """
202
+ if not bib_file or not Path(bib_file).exists():
203
+ return 0
204
+
205
+ try:
206
+ with open(bib_file, 'r', encoding='utf-8') as f:
207
+ content = f.read()
208
+ # Count @article, @book, @inproceedings, etc.
209
+ matches = re.findall(r'@\w+\s*{', content)
210
+ return len(matches)
211
+ except Exception:
212
+ return 0
213
+
214
+
215
+ def extract_citation_style(bib_file: Optional[str]) -> str:
216
+ """
217
+ Try to extract citation style from BibTeX file or paper metadata.
218
+
219
+ Args:
220
+ bib_file: Path to the .bib file.
221
+
222
+ Returns:
223
+ Citation style name (default: "BibTeX").
224
+ """
225
+ # This is a simple heuristic - in practice, the style might be
226
+ # specified in the LaTeX file or progress log
227
+ return "BibTeX"
228
+
229
+
230
+ def count_words_in_tex(tex_file: Optional[str]) -> Optional[int]:
231
+ """
232
+ Estimate word count in a LaTeX file.
233
+
234
+ Args:
235
+ tex_file: Path to the .tex file.
236
+
237
+ Returns:
238
+ Estimated word count, or None if file doesn't exist.
239
+ """
240
+ if not tex_file or not Path(tex_file).exists():
241
+ return None
242
+
243
+ try:
244
+ with open(tex_file, 'r', encoding='utf-8') as f:
245
+ content = f.read()
246
+
247
+ # Remove LaTeX commands
248
+ content = re.sub(r'\\[a-zA-Z]+(\[.*?\])?(\{.*?\})?', '', content)
249
+ # Remove comments
250
+ content = re.sub(r'%.*', '', content)
251
+ # Remove special characters
252
+ content = re.sub(r'[{}$\\]', '', content)
253
+
254
+ # Count words
255
+ words = content.split()
256
+ return len(words)
257
+ except Exception:
258
+ return None
259
+
260
+
261
+ def extract_title_from_tex(tex_file: Optional[str]) -> Optional[str]:
262
+ """
263
+ Extract title from a LaTeX file.
264
+
265
+ Args:
266
+ tex_file: Path to the .tex file.
267
+
268
+ Returns:
269
+ Title string, or None if not found.
270
+ """
271
+ if not tex_file or not Path(tex_file).exists():
272
+ return None
273
+
274
+ try:
275
+ with open(tex_file, 'r', encoding='utf-8') as f:
276
+ content = f.read()
277
+
278
+ # Look for \title{...}
279
+ match = re.search(r'\\title\s*\{([^}]+)\}', content)
280
+ if match:
281
+ title = match.group(1)
282
+ # Clean up LaTeX commands in title
283
+ title = re.sub(r'\\[a-zA-Z]+(\[.*?\])?(\{.*?\})?', '', title)
284
+ return title.strip()
285
+ except Exception:
286
+ pass
287
+
288
+ return None
289
+
@@ -0,0 +1,272 @@
1
+ Metadata-Version: 2.4
2
+ Name: scientific-writer
3
+ Version: 2.3.1
4
+ Summary: AI-powered scientific writing with programmatic API and CLI - powered by Claude Sonnet 4.5 and the Claude Agents SDK
5
+ License: MIT
6
+ License-File: LICENSE
7
+ Requires-Python: >=3.10
8
+ Requires-Dist: claude-agent-sdk>=0.1.0
9
+ Requires-Dist: python-dotenv>=1.0.0
10
+ Requires-Dist: requests>=2.31.0
11
+ Description-Content-Type: text/markdown
12
+
13
+ # Claude Scientific Writer
14
+
15
+ [![PyPI version](https://img.shields.io/pypi/v/scientific-writer.svg)](https://pypi.org/project/scientific-writer/)
16
+ [![Total Downloads](https://static.pepy.tech/badge/scientific-writer)](https://pepy.tech/project/scientific-writer)
17
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
18
+
19
+ A Python package and CLI for generating publication-ready scientific papers, reports, posters, grant proposals, and more academic documents with Claude Sonnet 4.5. Features real-time research lookup, intelligent paper detection, and comprehensive document conversion. Version 2.0 adds a fully typed, programmatic API while keeping the CLI 100% backward compatible.
20
+
21
+ **✨ What's New in v2.0+**
22
+ - Programmatic Python API with async support
23
+ - Research lookup with Perplexity Sonar Pro
24
+ - Intelligent paper detection (auto-resume editing)
25
+ - Clinical reports (case reports, diagnostic reports, trial reports, HIPAA compliance)
26
+ - Grant proposal generation (NSF, NIH, DOE, DARPA)
27
+ - Research posters with LaTeX
28
+ - Scientific schematics (CONSORT, circuits, pathways)
29
+ - Document conversion (15+ formats with MarkItDown)
30
+ - ScholarEval peer review framework
31
+
32
+ ## Quick Start
33
+
34
+ ### Prerequisites
35
+ - Python 3.10-3.12
36
+ - ANTHROPIC_API_KEY (required), OPENROUTER_API_KEY (optional for research lookup)
37
+
38
+ ### Install
39
+
40
+ #### Option 1: Install from PyPI (Recommended)
41
+ ```bash
42
+ pip install scientific-writer
43
+ ```
44
+
45
+ #### Option 2: Install from source with uv
46
+ ```bash
47
+ git clone https://github.com/yourusername/claude-scientific-writer.git
48
+ cd claude-scientific-writer
49
+ uv sync
50
+ ```
51
+
52
+ ### Configure API keys
53
+ ```bash
54
+ # .env file (recommended)
55
+ echo "ANTHROPIC_API_KEY=your_key" > .env
56
+ echo "OPENROUTER_API_KEY=your_openrouter_key" >> .env
57
+ # or export in your shell
58
+ export ANTHROPIC_API_KEY='your_key'
59
+ ```
60
+
61
+ ### Use the CLI
62
+ ```bash
63
+ # If installed via pip
64
+ scientific-writer
65
+
66
+ # If installed from source with uv
67
+ uv run scientific-writer
68
+ ```
69
+
70
+ ### Use the Python API
71
+ ```python
72
+ import asyncio
73
+ from scientific_writer import generate_paper
74
+
75
+ async def main():
76
+ async for update in generate_paper("Create a Nature paper on CRISPR gene editing"):
77
+ if update["type"] == "progress":
78
+ print(f"[{update['percentage']}%] {update['message']}")
79
+ else:
80
+ print(f"PDF: {update['files']['pdf_final']}")
81
+
82
+ asyncio.run(main())
83
+ ```
84
+
85
+ ## Features
86
+
87
+ ### 📝 Document Generation
88
+ - **Scientific papers** with IMRaD structure (Nature, Science, NeurIPS, etc.)
89
+ - **Clinical reports** (case reports, diagnostic reports, trial reports, patient documentation)
90
+ - **Research posters** using LaTeX (beamerposter, tikzposter, baposter)
91
+ - **Grant proposals** (NSF, NIH, DOE, DARPA) with agency-specific formatting
92
+ - **Literature reviews** with systematic citation management
93
+ - **Scientific schematics** (CONSORT diagrams, circuit diagrams, biological pathways)
94
+
95
+ ### 🤖 AI-Powered Capabilities
96
+ - **Real-time research lookup** using Perplexity Sonar Pro (via OpenRouter)
97
+ - **Intelligent paper detection** - automatically identifies references to existing papers
98
+ - **Peer review feedback** with quantitative ScholarEval framework (8-dimension scoring)
99
+ - **Iterative editing** with context-aware revision suggestions
100
+
101
+ ### 🔧 Developer-Friendly
102
+ - **Programmatic API** - Full async Python API with type hints
103
+ - **CLI interface** - Interactive command-line tool with progress tracking
104
+ - **Progress streaming** - Real-time updates during generation
105
+ - **Comprehensive results** - JSON output with metadata, file paths, citations
106
+
107
+ ### 📦 Data & File Integration
108
+ - **Automatic data handling** - Drop files in `data/`, auto-sorted to `figures/` or `data/`
109
+ - **Document conversion** - PDF, DOCX, PPTX, XLSX to Markdown with MarkItDown
110
+ - **Bibliography management** - Automatic BibTeX generation and citation formatting
111
+ - **Figure integration** - Images automatically referenced and organized
112
+
113
+ ## Typical Workflow
114
+
115
+ ### CLI Usage
116
+ 1. Place figures and data in `data/` at the project root (images → `figures/`, files → `data/` automatically)
117
+ 2. Run `scientific-writer` and describe what you want
118
+ 3. Follow progress updates; outputs saved to `paper_outputs/<timestamp>_<topic>/`
119
+
120
+ ```bash
121
+ # Start a new paper
122
+ > Create a Nature paper on CRISPR gene editing with 5 key references
123
+
124
+ # Continue editing (automatically detected)
125
+ > Add a methods section about the experimental setup
126
+
127
+ # Reference existing paper by topic
128
+ > Find the acoustics paper and add a conclusion section
129
+
130
+ # Generate a grant proposal
131
+ > Write an NSF proposal for quantum computing research
132
+
133
+ # Create a research poster
134
+ > Generate a conference poster from my paper
135
+ ```
136
+
137
+ ### API Usage
138
+ ```python
139
+ import asyncio
140
+ from scientific_writer import generate_paper
141
+
142
+ async def main():
143
+ async for update in generate_paper(
144
+ query="Create a NeurIPS paper on transformers",
145
+ data_files=["results.csv", "figure.png"],
146
+ output_dir="./my_papers"
147
+ ):
148
+ if update["type"] == "progress":
149
+ print(f"[{update['percentage']}%] {update['message']}")
150
+ else:
151
+ print(f"✓ PDF: {update['files']['pdf_final']}")
152
+
153
+ asyncio.run(main())
154
+ ```
155
+
156
+ ## Quick Reference
157
+
158
+ ### Common Commands
159
+
160
+ | Task | Command Example |
161
+ |------|----------------|
162
+ | **Scientific Paper** | `> Create a Nature paper on CRISPR gene editing` |
163
+ | **Clinical Report** | `> Create a clinical case report for rare disease presentation` |
164
+ | **Grant Proposal** | `> Write an NSF proposal for quantum computing research` |
165
+ | **Research Poster** | `> Generate a conference poster from my paper` |
166
+ | **Literature Review** | `> Create a literature review on machine learning in healthcare` |
167
+ | **Peer Review** | `> Evaluate this paper using the ScholarEval framework` |
168
+ | **Continue Editing** | `> Add a methods section` (automatically continues current paper) |
169
+ | **Find Existing Paper** | `> Find the acoustics paper and add a conclusion` |
170
+ | **New Paper** | `> new paper on climate change` (explicitly start fresh) |
171
+
172
+ ### Research Lookup Examples
173
+
174
+ ```bash
175
+ # Recent research (auto-triggers research lookup)
176
+ > Create a paper on recent advances in quantum computing (2024)
177
+
178
+ # Fact verification
179
+ > What are the current success rates for CAR-T therapy?
180
+
181
+ # Literature search
182
+ > Find 10 recent papers on transformer architectures from 2023-2024
183
+ ```
184
+
185
+ ### Document Types
186
+
187
+ | Type | Example |
188
+ |------|---------|
189
+ | **Papers** | Nature, Science, NeurIPS, ICML, IEEE, ACM |
190
+ | **Clinical Reports** | Case reports, diagnostic reports, trial reports, patient notes |
191
+ | **Grants** | NSF, NIH R01/R21/K, DOE, DARPA |
192
+ | **Posters** | Conference posters (A0, A1, custom sizes) |
193
+ | **Reviews** | Systematic literature reviews |
194
+ | **Schematics** | CONSORT diagrams, circuits, biological pathways |
195
+
196
+ ### File Handling
197
+
198
+ ```bash
199
+ # 1. Drop files in data/ folder
200
+ cp results.csv ~/Documents/claude-scientific-writer/data/
201
+ cp figure.png ~/Documents/claude-scientific-writer/data/
202
+
203
+ # 2. Files are auto-sorted:
204
+ # Images (png, jpg, svg) → figures/
205
+ # Data (csv, json, txt) → data/
206
+
207
+ # 3. Reference in paper
208
+ > Create a paper analyzing the experimental results in results.csv
209
+ ```
210
+
211
+ ### API Quick Start
212
+
213
+ ```python
214
+ import asyncio
215
+ from scientific_writer import generate_paper
216
+
217
+ # Simple usage
218
+ async for update in generate_paper("Create a Nature paper on CRISPR"):
219
+ if update["type"] == "result":
220
+ print(f"PDF: {update['files']['pdf_final']}")
221
+
222
+ # With data files
223
+ async for update in generate_paper(
224
+ query="Analyze experimental results",
225
+ data_files=["results.csv", "figure.png"],
226
+ output_dir="./papers"
227
+ ):
228
+ if update["type"] == "progress":
229
+ print(f"[{update['percentage']}%] {update['message']}")
230
+ ```
231
+
232
+ ## Documentation
233
+
234
+ ### User Guides
235
+ - [📖 Complete Features Guide](docs/FEATURES.md) - Comprehensive overview of all capabilities
236
+ - [🔧 API Reference](docs/API.md) - Full programmatic API documentation
237
+ - [🎯 Skills Overview](docs/SKILLS.md) - All available skills and tools
238
+ - [🐛 Troubleshooting](docs/TROUBLESHOOTING.md) - Common issues and solutions
239
+
240
+ ### Developer Resources
241
+ - [💻 Development Guide](docs/DEVELOPMENT.md) - Contributing and development setup
242
+ - [📦 Releasing Guide](docs/RELEASING.md) - Versioning and publishing
243
+ - [📋 Release Notes](CHANGELOG.md) - Version history and updates
244
+ - [🤖 System Instructions](CLAUDE.md) - Agent instructions (advanced)
245
+
246
+ ## Versioning and Publishing (short)
247
+ Use `uv` and the helper scripts:
248
+ - Bump version (keeps pyproject + __init__ in sync): `uv run scripts/bump_version.py [patch|minor|major]`
249
+ - Build and publish: `uv run scripts/publish.py` (or `--bump patch|minor|major`)
250
+ See [docs/RELEASING.md](docs/RELEASING.md) for prerequisites, dry runs, tagging, and verification.
251
+
252
+ ## Migration (v1.x -> v2.0)
253
+ - CLI remains unchanged (scientific-writer).
254
+ - New programmatic API: from scientific_writer import generate_paper.
255
+ - Legacy single-file script is replaced by a proper package; no action needed for CLI users.
256
+
257
+ ## License
258
+ MIT - see LICENSE.
259
+
260
+ ## Support
261
+ - Open an issue on GitHub
262
+ - See [docs/TROUBLESHOOTING.md](docs/TROUBLESHOOTING.md) for common problems
263
+
264
+ ## ⭐ Show Your Support
265
+
266
+ If you find this project helpful for your research or work, please consider giving it a star on GitHub! It helps others discover the tool and motivates continued development. Thank you! 🙏
267
+
268
+ ![GitHub stars](https://img.shields.io/github/stars/K-Dense-AI/claude-scientific-writer?style=social)
269
+
270
+ ## Star History
271
+
272
+ [![Star History Chart](https://api.star-history.com/svg?repos=K-Dense-AI/claude-scientific-writer&type=Date)](https://star-history.com/#K-Dense-AI/claude-scientific-writer&Date)