research-copilot 0.1.0

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 (395) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +190 -0
  3. package/app/build/icon.icns +0 -0
  4. package/app/build/icon.ico +0 -0
  5. package/app/build/icon.png +0 -0
  6. package/app/out/main/index.mjs +6719 -0
  7. package/app/out/preload/index.js +141 -0
  8. package/app/out/renderer/assets/Inter-Variable-Latin-8kRkwJBP.woff2 +0 -0
  9. package/app/out/renderer/assets/Inter-Variable-LatinExt-B_-bZUTo.woff2 +0 -0
  10. package/app/out/renderer/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  11. package/app/out/renderer/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  12. package/app/out/renderer/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  13. package/app/out/renderer/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  14. package/app/out/renderer/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  15. package/app/out/renderer/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  16. package/app/out/renderer/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  17. package/app/out/renderer/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  18. package/app/out/renderer/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  19. package/app/out/renderer/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  20. package/app/out/renderer/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  21. package/app/out/renderer/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  22. package/app/out/renderer/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  23. package/app/out/renderer/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  24. package/app/out/renderer/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  25. package/app/out/renderer/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  26. package/app/out/renderer/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  27. package/app/out/renderer/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  28. package/app/out/renderer/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  29. package/app/out/renderer/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  30. package/app/out/renderer/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  31. package/app/out/renderer/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  32. package/app/out/renderer/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  33. package/app/out/renderer/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  34. package/app/out/renderer/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  35. package/app/out/renderer/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  36. package/app/out/renderer/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  37. package/app/out/renderer/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  38. package/app/out/renderer/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  39. package/app/out/renderer/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  40. package/app/out/renderer/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  41. package/app/out/renderer/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  42. package/app/out/renderer/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  43. package/app/out/renderer/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  44. package/app/out/renderer/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  45. package/app/out/renderer/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  46. package/app/out/renderer/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  47. package/app/out/renderer/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  48. package/app/out/renderer/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  49. package/app/out/renderer/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  50. package/app/out/renderer/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  51. package/app/out/renderer/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  52. package/app/out/renderer/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  53. package/app/out/renderer/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  54. package/app/out/renderer/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  55. package/app/out/renderer/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  56. package/app/out/renderer/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  57. package/app/out/renderer/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  58. package/app/out/renderer/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  59. package/app/out/renderer/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  60. package/app/out/renderer/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  61. package/app/out/renderer/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  62. package/app/out/renderer/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  63. package/app/out/renderer/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  64. package/app/out/renderer/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  65. package/app/out/renderer/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  66. package/app/out/renderer/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  67. package/app/out/renderer/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  68. package/app/out/renderer/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  69. package/app/out/renderer/assets/MilkdownMarkdownEditor-bLPxrCVb.js +89821 -0
  70. package/app/out/renderer/assets/MilkdownMarkdownEditor-tTNRIB2K.css +2555 -0
  71. package/app/out/renderer/assets/Tableau10-BqnYsPR6.js +9 -0
  72. package/app/out/renderer/assets/apl-fqmucPXA.js +140 -0
  73. package/app/out/renderer/assets/arc-J47ePHZ2.js +132 -0
  74. package/app/out/renderer/assets/array-DgktLKBx.js +6 -0
  75. package/app/out/renderer/assets/asciiarmor-DucZyvP0.js +56 -0
  76. package/app/out/renderer/assets/asn1-BnOEsgAm.js +144 -0
  77. package/app/out/renderer/assets/asterisk-QAlztEwS.js +345 -0
  78. package/app/out/renderer/assets/blockDiagram-c4efeb88-5uRQXgQJ.js +1817 -0
  79. package/app/out/renderer/assets/brainfuck-DZVCuF_t.js +53 -0
  80. package/app/out/renderer/assets/c4Diagram-c83219d4-C4iCTPEL.js +2464 -0
  81. package/app/out/renderer/assets/channel-ZAmhHE3g.js +7 -0
  82. package/app/out/renderer/assets/classDiagram-beda092f-7NOZxq_W.js +357 -0
  83. package/app/out/renderer/assets/classDiagram-v2-2358418a-5fPT-cUH.js +291 -0
  84. package/app/out/renderer/assets/clike-xqXYL6ge.js +805 -0
  85. package/app/out/renderer/assets/clojure-BhXMqnxz.js +849 -0
  86. package/app/out/renderer/assets/clone-CsnzsYXQ.js +8 -0
  87. package/app/out/renderer/assets/cmake-BGaNd9E7.js +71 -0
  88. package/app/out/renderer/assets/cobol-4yqQntpt.js +120 -0
  89. package/app/out/renderer/assets/coffeescript-D2dXvhEc.js +308 -0
  90. package/app/out/renderer/assets/commonlisp-CF_VNHQR.js +130 -0
  91. package/app/out/renderer/assets/createText-1719965b-Cji7KN4K.js +4904 -0
  92. package/app/out/renderer/assets/crystal-DyuLTqLs.js +398 -0
  93. package/app/out/renderer/assets/css-c-jst79C.js +1783 -0
  94. package/app/out/renderer/assets/cypher-Dlu_3r4V.js +121 -0
  95. package/app/out/renderer/assets/d-UURgV0Ux.js +179 -0
  96. package/app/out/renderer/assets/diff-B_Bi2Crb.js +25 -0
  97. package/app/out/renderer/assets/dockerfile-Bvk733Ga.js +201 -0
  98. package/app/out/renderer/assets/dtd-Dy74G54E.js +114 -0
  99. package/app/out/renderer/assets/dylan-TSb-Nfix.js +314 -0
  100. package/app/out/renderer/assets/ebnf-DAomQUbD.js +139 -0
  101. package/app/out/renderer/assets/ecl-B59qGGVg.js +178 -0
  102. package/app/out/renderer/assets/edges-96097737-CD0EvAZQ.js +1844 -0
  103. package/app/out/renderer/assets/eiffel-Dze7nlu3.js +134 -0
  104. package/app/out/renderer/assets/elm-DG7jkhNZ.js +176 -0
  105. package/app/out/renderer/assets/erDiagram-0228fc6a-DRYXBpi7.js +1321 -0
  106. package/app/out/renderer/assets/erlang-BO6gOnGA.js +674 -0
  107. package/app/out/renderer/assets/factor-CMxFHDqz.js +65 -0
  108. package/app/out/renderer/assets/fcl-CDDUNjTj.js +141 -0
  109. package/app/out/renderer/assets/flowDb-c6c81e3f-CuoIN-Cy.js +1713 -0
  110. package/app/out/renderer/assets/flowDiagram-50d868cf-CPWPLOml.js +1272 -0
  111. package/app/out/renderer/assets/flowDiagram-v2-4f6560a1-C_R12s4S.js +33 -0
  112. package/app/out/renderer/assets/flowchart-elk-definition-6af322e1-BdKUSFpi.js +92921 -0
  113. package/app/out/renderer/assets/forth-B9D2JCeE.js +116 -0
  114. package/app/out/renderer/assets/fortran-CAG2BFbe.js +467 -0
  115. package/app/out/renderer/assets/ganttDiagram-a2739b55-ygqT5HlG.js +3399 -0
  116. package/app/out/renderer/assets/gas-d3KEcW3x.js +294 -0
  117. package/app/out/renderer/assets/gherkin-DhZlEZiy.js +115 -0
  118. package/app/out/renderer/assets/gitGraphDiagram-82fe8481-D97GT4iA.js +1791 -0
  119. package/app/out/renderer/assets/graph-DpC13d95.js +1237 -0
  120. package/app/out/renderer/assets/groovy-CpwJiBl7.js +223 -0
  121. package/app/out/renderer/assets/haskell-BlGBCCe3.js +459 -0
  122. package/app/out/renderer/assets/haxe-7MlzfeYV.js +514 -0
  123. package/app/out/renderer/assets/http-BqypyemW.js +79 -0
  124. package/app/out/renderer/assets/idl-4HIGJlDI.js +985 -0
  125. package/app/out/renderer/assets/index-4-ziknCv.js +292 -0
  126. package/app/out/renderer/assets/index-5325376f-Bbs7Fbqr.js +663 -0
  127. package/app/out/renderer/assets/index-B2jip-rk.js +2489 -0
  128. package/app/out/renderer/assets/index-BKTVfokE.js +312 -0
  129. package/app/out/renderer/assets/index-BiJbFgVG.js +118 -0
  130. package/app/out/renderer/assets/index-Bn433Fat.js +83 -0
  131. package/app/out/renderer/assets/index-BqDyyRCx.js +39679 -0
  132. package/app/out/renderer/assets/index-BzFMeMPn.js +158 -0
  133. package/app/out/renderer/assets/index-C-_uCjZJ.css +2701 -0
  134. package/app/out/renderer/assets/index-C1ithNW1.js +1765 -0
  135. package/app/out/renderer/assets/index-CAJkRYkO.js +407 -0
  136. package/app/out/renderer/assets/index-CleO0-yj.js +690 -0
  137. package/app/out/renderer/assets/index-Cq4MH3sY.js +1020 -0
  138. package/app/out/renderer/assets/index-CtA0Xj22.js +705 -0
  139. package/app/out/renderer/assets/index-CvAZkqBZ.js +83 -0
  140. package/app/out/renderer/assets/index-D3UDN-5c.js +152 -0
  141. package/app/out/renderer/assets/index-D4F9R5ao.js +179 -0
  142. package/app/out/renderer/assets/index-D6RguhZ5.js +328 -0
  143. package/app/out/renderer/assets/index-DnEowqXv.js +386 -0
  144. package/app/out/renderer/assets/index-K8c8Mqdy.js +98 -0
  145. package/app/out/renderer/assets/index-Kh14gO6K.js +62 -0
  146. package/app/out/renderer/assets/index-WFd2jRnA.js +333 -0
  147. package/app/out/renderer/assets/index-WgMfkRFp.js +313 -0
  148. package/app/out/renderer/assets/index-Y4lKyF6t.js +1042 -0
  149. package/app/out/renderer/assets/index-fx307_f1.js +643 -0
  150. package/app/out/renderer/assets/infoDiagram-8eee0895-ptaVSwzq.js +511 -0
  151. package/app/out/renderer/assets/init-ZxktEp_H.js +16 -0
  152. package/app/out/renderer/assets/javascript-C3MnDRiU.js +994 -0
  153. package/app/out/renderer/assets/journeyDiagram-c64418c1-aloEGOQp.js +1184 -0
  154. package/app/out/renderer/assets/julia-Bs6JJhYG.js +407 -0
  155. package/app/out/renderer/assets/layout-ZeuHE_aY.js +2217 -0
  156. package/app/out/renderer/assets/line-CAgaGl-S.js +45 -0
  157. package/app/out/renderer/assets/linear-DIg7lTe1.js +539 -0
  158. package/app/out/renderer/assets/livescript-DmzgM3Yt.js +296 -0
  159. package/app/out/renderer/assets/lua-8cJgIlqe.js +256 -0
  160. package/app/out/renderer/assets/mathematica-DNLOL9PQ.js +110 -0
  161. package/app/out/renderer/assets/mbox-Ga7d4MMN.js +117 -0
  162. package/app/out/renderer/assets/mindmap-definition-8da855dc-B8XVoUxz.js +36054 -0
  163. package/app/out/renderer/assets/mirc-Dma3B8rS.js +107 -0
  164. package/app/out/renderer/assets/mllike-DHn7xckP.js +334 -0
  165. package/app/out/renderer/assets/modelica-0d55jYY0.js +147 -0
  166. package/app/out/renderer/assets/mscgen-DdqZYINH.js +135 -0
  167. package/app/out/renderer/assets/mumps-Btr8VblO.js +93 -0
  168. package/app/out/renderer/assets/nginx-DTDtBDVN.js +141 -0
  169. package/app/out/renderer/assets/nsis-3zG7tgur.js +62 -0
  170. package/app/out/renderer/assets/ntriples-CvgOYMpL.js +153 -0
  171. package/app/out/renderer/assets/octave-DYBj3-tl.js +200 -0
  172. package/app/out/renderer/assets/ordinal-DSZU4PqD.js +76 -0
  173. package/app/out/renderer/assets/oz-R_e8WMIi.js +231 -0
  174. package/app/out/renderer/assets/pascal-GD8iposT.js +105 -0
  175. package/app/out/renderer/assets/path-Cp2qmpkd.js +109 -0
  176. package/app/out/renderer/assets/perl-DL9mHpoi.js +1105 -0
  177. package/app/out/renderer/assets/pieDiagram-a8764435-DlwoeBU2.js +770 -0
  178. package/app/out/renderer/assets/pig-C_4T4YIV.js +101 -0
  179. package/app/out/renderer/assets/powershell-B0suO7Vd.js +328 -0
  180. package/app/out/renderer/assets/properties-BR-vP1aU.js +58 -0
  181. package/app/out/renderer/assets/protobuf-BxgpyhoW.js +77 -0
  182. package/app/out/renderer/assets/pug-By0kVCfm.js +405 -0
  183. package/app/out/renderer/assets/puppet-Bdao66PW.js +137 -0
  184. package/app/out/renderer/assets/python-CvWbmiX4.js +427 -0
  185. package/app/out/renderer/assets/q-CrbCVq4a.js +131 -0
  186. package/app/out/renderer/assets/quadrantDiagram-1e28029f-BaSi1XB4.js +1200 -0
  187. package/app/out/renderer/assets/r-V7nswm59.js +170 -0
  188. package/app/out/renderer/assets/requirementDiagram-08caed73-D3EFyegZ.js +1092 -0
  189. package/app/out/renderer/assets/rpm-C-DLY-If.js +109 -0
  190. package/app/out/renderer/assets/ruby-JDKLJNK0.js +330 -0
  191. package/app/out/renderer/assets/sankeyDiagram-a04cb91d-Cv44AsnM.js +1174 -0
  192. package/app/out/renderer/assets/sas-D2UG-yhZ.js +207 -0
  193. package/app/out/renderer/assets/scheme-BKzrkGJD.js +222 -0
  194. package/app/out/renderer/assets/sequenceDiagram-c5b8d532-CuUBu-x4.js +3337 -0
  195. package/app/out/renderer/assets/shell-BlsXDxCn.js +222 -0
  196. package/app/out/renderer/assets/sieve-CjwBwOY5.js +135 -0
  197. package/app/out/renderer/assets/simple-mode-DMneyfDu.js +130 -0
  198. package/app/out/renderer/assets/smalltalk-BOIGQuhN.js +121 -0
  199. package/app/out/renderer/assets/solr-CwD7U71z.js +69 -0
  200. package/app/out/renderer/assets/sparql-DYskk2vE.js +249 -0
  201. package/app/out/renderer/assets/spreadsheet-Bgtt3oLP.js +87 -0
  202. package/app/out/renderer/assets/sql-BSrOzCRI.js +354 -0
  203. package/app/out/renderer/assets/stateDiagram-1ecb1508-BOU34Zp4.js +454 -0
  204. package/app/out/renderer/assets/stateDiagram-v2-c2b004d7-BgRoffou.js +326 -0
  205. package/app/out/renderer/assets/stex-B6LNC55o.js +231 -0
  206. package/app/out/renderer/assets/styles-b4e223ce-BMr9TPuj.js +1483 -0
  207. package/app/out/renderer/assets/styles-ca3715f6-DgbNw99p.js +1363 -0
  208. package/app/out/renderer/assets/styles-d45a18b0-DtRYKYKf.js +574 -0
  209. package/app/out/renderer/assets/stylus-BkS-boTH.js +565 -0
  210. package/app/out/renderer/assets/svgDrawCommon-b86b1483-Bein03PD.js +100 -0
  211. package/app/out/renderer/assets/swift-FRZi1uvB.js +291 -0
  212. package/app/out/renderer/assets/tcl-CUcaCdmq.js +114 -0
  213. package/app/out/renderer/assets/textile-BnFpjsrl.js +414 -0
  214. package/app/out/renderer/assets/tiddlywiki-CjprD-Qp.js +218 -0
  215. package/app/out/renderer/assets/tiki-B4EPSQ1G.js +265 -0
  216. package/app/out/renderer/assets/timeline-definition-faaaa080-BlWpLE_4.js +1212 -0
  217. package/app/out/renderer/assets/toml-BOuWGMcf.js +76 -0
  218. package/app/out/renderer/assets/troff-E1bJ0PPL.js +61 -0
  219. package/app/out/renderer/assets/ttcn-cfg-Dc39-fIP.js +133 -0
  220. package/app/out/renderer/assets/ttcn-tKd4HLu4.js +192 -0
  221. package/app/out/renderer/assets/turtle-Dq7-1WAf.js +124 -0
  222. package/app/out/renderer/assets/vb-Dp90gtsv.js +196 -0
  223. package/app/out/renderer/assets/vbscript-CI6_mxxU.js +479 -0
  224. package/app/out/renderer/assets/velocity-BwIZK1TH.js +149 -0
  225. package/app/out/renderer/assets/verilog-DDCYnHN8.js +430 -0
  226. package/app/out/renderer/assets/vhdl-DCkMIyT9.js +158 -0
  227. package/app/out/renderer/assets/webidl-BTLTThCm.js +204 -0
  228. package/app/out/renderer/assets/xquery-BgiOC5Ce.js +525 -0
  229. package/app/out/renderer/assets/xychartDiagram-f5964ef8-Bhga-YXm.js +1799 -0
  230. package/app/out/renderer/assets/yacas-b5lAVEIl.js +130 -0
  231. package/app/out/renderer/assets/z80-BZV19vqv.js +93 -0
  232. package/app/out/renderer/index.html +13 -0
  233. package/app/out/skills/community-builtin/README.md +29 -0
  234. package/app/out/skills/community-builtin/document-docx/SKILL.md +44 -0
  235. package/app/out/skills/community-builtin/document-docx/scripts/docx-to-markdown.sh +20 -0
  236. package/app/out/skills/community-builtin/document-docx/scripts/extract-docx-text.sh +28 -0
  237. package/app/out/skills/community-builtin/document-docx/scripts/init-docx-template.sh +32 -0
  238. package/app/out/skills/community-builtin/document-docx/scripts/setup-docx-tools.sh +10 -0
  239. package/app/out/skills/community-builtin/markitdown/SKILL.md +105 -0
  240. package/app/out/skills/community-builtin/markitdown/scripts/batch-convert.sh +40 -0
  241. package/app/out/skills/community-builtin/markitdown/scripts/convert-file.sh +24 -0
  242. package/app/out/skills/community-builtin/markitdown/scripts/setup-markitdown.sh +10 -0
  243. package/app/out/skills/community-builtin/repo-quick-audit/SKILL.md +27 -0
  244. package/app/out/skills/community-builtin/repo-quick-audit/scripts/audit-basics.sh +19 -0
  245. package/app/out/skills/research-pilot-default-project-skills/README.md +23 -0
  246. package/app/out/skills/research-pilot-default-project-skills/citation-management/SKILL.md +39 -0
  247. package/app/out/skills/research-pilot-default-project-skills/citation-management/scripts/doi-to-bibtex.sh +25 -0
  248. package/app/out/skills/research-pilot-default-project-skills/citation-management/scripts/normalize-bibtex-keys.sh +51 -0
  249. package/app/out/skills/research-pilot-default-project-skills/citation-management/scripts/setup-citation-tools.sh +10 -0
  250. package/app/out/skills/research-pilot-default-project-skills/citation-management/scripts/validate-bib.sh +31 -0
  251. package/app/out/skills/research-pilot-default-project-skills/matplotlib/SKILL.md +34 -0
  252. package/app/out/skills/research-pilot-default-project-skills/matplotlib/references/api_reference.md +412 -0
  253. package/app/out/skills/research-pilot-default-project-skills/matplotlib/references/common_issues.md +563 -0
  254. package/app/out/skills/research-pilot-default-project-skills/matplotlib/references/plot_types.md +476 -0
  255. package/app/out/skills/research-pilot-default-project-skills/matplotlib/references/styling_guide.md +589 -0
  256. package/app/out/skills/research-pilot-default-project-skills/matplotlib/references/subagent_quickstart.md +30 -0
  257. package/app/out/skills/research-pilot-default-project-skills/matplotlib/scripts/plot_template.py +401 -0
  258. package/app/out/skills/research-pilot-default-project-skills/matplotlib/scripts/style_configurator.py +409 -0
  259. package/app/out/skills/research-pilot-default-project-skills/research-grants/SKILL.md +38 -0
  260. package/app/out/skills/research-pilot-default-project-skills/research-grants/scripts/check-grant-compliance.sh +40 -0
  261. package/app/out/skills/research-pilot-default-project-skills/research-grants/scripts/grant-summary-card.sh +32 -0
  262. package/app/out/skills/research-pilot-default-project-skills/research-grants/scripts/init-grant-structure.sh +70 -0
  263. package/app/package.json +77 -0
  264. package/bin/cli.mjs +56 -0
  265. package/lib/README.md +145 -0
  266. package/lib/skills/_generated.ts +13 -0
  267. package/lib/skills/builtin/brainstorming-research-ideas/SKILL.md +280 -0
  268. package/lib/skills/builtin/coding/SKILL.md +114 -0
  269. package/lib/skills/builtin/creative-thinking-for-research/SKILL.md +273 -0
  270. package/lib/skills/builtin/matplotlib/SKILL.md +361 -0
  271. package/lib/skills/builtin/matplotlib/references/api_reference.md +412 -0
  272. package/lib/skills/builtin/matplotlib/references/common_issues.md +563 -0
  273. package/lib/skills/builtin/matplotlib/references/plot_types.md +476 -0
  274. package/lib/skills/builtin/matplotlib/references/styling_guide.md +589 -0
  275. package/lib/skills/builtin/matplotlib/scripts/plot_template.py +401 -0
  276. package/lib/skills/builtin/matplotlib/scripts/style_configurator.py +409 -0
  277. package/lib/skills/builtin/paper-writing/SKILL.md +554 -0
  278. package/lib/skills/builtin/paper-writing/references/checklists.md +524 -0
  279. package/lib/skills/builtin/paper-writing/references/citation-workflow.md +562 -0
  280. package/lib/skills/builtin/paper-writing/references/reviewer-guidelines.md +462 -0
  281. package/lib/skills/builtin/paper-writing/references/sources.md +189 -0
  282. package/lib/skills/builtin/paper-writing/references/systems-conferences.md +260 -0
  283. package/lib/skills/builtin/paper-writing/references/writing-guide.md +476 -0
  284. package/lib/skills/builtin/paper-writing/templates/README.md +408 -0
  285. package/lib/skills/builtin/paper-writing/templates/aaai2026/README.md +534 -0
  286. package/lib/skills/builtin/paper-writing/templates/aaai2026/aaai2026-unified-supp.tex +144 -0
  287. package/lib/skills/builtin/paper-writing/templates/aaai2026/aaai2026-unified-template.tex +952 -0
  288. package/lib/skills/builtin/paper-writing/templates/aaai2026/aaai2026.bib +111 -0
  289. package/lib/skills/builtin/paper-writing/templates/aaai2026/aaai2026.bst +1493 -0
  290. package/lib/skills/builtin/paper-writing/templates/aaai2026/aaai2026.sty +315 -0
  291. package/lib/skills/builtin/paper-writing/templates/acl/README.md +50 -0
  292. package/lib/skills/builtin/paper-writing/templates/acl/acl.sty +312 -0
  293. package/lib/skills/builtin/paper-writing/templates/acl/acl_latex.tex +377 -0
  294. package/lib/skills/builtin/paper-writing/templates/acl/acl_lualatex.tex +101 -0
  295. package/lib/skills/builtin/paper-writing/templates/acl/acl_natbib.bst +1940 -0
  296. package/lib/skills/builtin/paper-writing/templates/acl/anthology.bib.txt +26 -0
  297. package/lib/skills/builtin/paper-writing/templates/acl/custom.bib +70 -0
  298. package/lib/skills/builtin/paper-writing/templates/acl/formatting.md +326 -0
  299. package/lib/skills/builtin/paper-writing/templates/asplos2027/main.tex +459 -0
  300. package/lib/skills/builtin/paper-writing/templates/asplos2027/references.bib +135 -0
  301. package/lib/skills/builtin/paper-writing/templates/colm2025/README.md +3 -0
  302. package/lib/skills/builtin/paper-writing/templates/colm2025/colm2025_conference.bib +11 -0
  303. package/lib/skills/builtin/paper-writing/templates/colm2025/colm2025_conference.bst +1440 -0
  304. package/lib/skills/builtin/paper-writing/templates/colm2025/colm2025_conference.pdf +0 -0
  305. package/lib/skills/builtin/paper-writing/templates/colm2025/colm2025_conference.sty +218 -0
  306. package/lib/skills/builtin/paper-writing/templates/colm2025/colm2025_conference.tex +305 -0
  307. package/lib/skills/builtin/paper-writing/templates/colm2025/fancyhdr.sty +485 -0
  308. package/lib/skills/builtin/paper-writing/templates/colm2025/math_commands.tex +508 -0
  309. package/lib/skills/builtin/paper-writing/templates/colm2025/natbib.sty +1246 -0
  310. package/lib/skills/builtin/paper-writing/templates/iclr2026/fancyhdr.sty +485 -0
  311. package/lib/skills/builtin/paper-writing/templates/iclr2026/iclr2026_conference.bib +24 -0
  312. package/lib/skills/builtin/paper-writing/templates/iclr2026/iclr2026_conference.bst +1440 -0
  313. package/lib/skills/builtin/paper-writing/templates/iclr2026/iclr2026_conference.pdf +0 -0
  314. package/lib/skills/builtin/paper-writing/templates/iclr2026/iclr2026_conference.sty +246 -0
  315. package/lib/skills/builtin/paper-writing/templates/iclr2026/iclr2026_conference.tex +414 -0
  316. package/lib/skills/builtin/paper-writing/templates/iclr2026/math_commands.tex +508 -0
  317. package/lib/skills/builtin/paper-writing/templates/iclr2026/natbib.sty +1246 -0
  318. package/lib/skills/builtin/paper-writing/templates/icml2026/algorithm.sty +79 -0
  319. package/lib/skills/builtin/paper-writing/templates/icml2026/algorithmic.sty +201 -0
  320. package/lib/skills/builtin/paper-writing/templates/icml2026/example_paper.bib +75 -0
  321. package/lib/skills/builtin/paper-writing/templates/icml2026/example_paper.pdf +0 -0
  322. package/lib/skills/builtin/paper-writing/templates/icml2026/example_paper.tex +662 -0
  323. package/lib/skills/builtin/paper-writing/templates/icml2026/fancyhdr.sty +864 -0
  324. package/lib/skills/builtin/paper-writing/templates/icml2026/icml2026.bst +1443 -0
  325. package/lib/skills/builtin/paper-writing/templates/icml2026/icml2026.sty +767 -0
  326. package/lib/skills/builtin/paper-writing/templates/icml2026/icml_numpapers.pdf +0 -0
  327. package/lib/skills/builtin/paper-writing/templates/neurips2025/Makefile +36 -0
  328. package/lib/skills/builtin/paper-writing/templates/neurips2025/extra_pkgs.tex +53 -0
  329. package/lib/skills/builtin/paper-writing/templates/neurips2025/main.tex +38 -0
  330. package/lib/skills/builtin/paper-writing/templates/neurips2025/neurips.sty +382 -0
  331. package/lib/skills/builtin/paper-writing/templates/nsdi2027/main.tex +426 -0
  332. package/lib/skills/builtin/paper-writing/templates/nsdi2027/references.bib +151 -0
  333. package/lib/skills/builtin/paper-writing/templates/nsdi2027/usenix-2020-09.sty +83 -0
  334. package/lib/skills/builtin/paper-writing/templates/osdi2026/main.tex +429 -0
  335. package/lib/skills/builtin/paper-writing/templates/osdi2026/references.bib +150 -0
  336. package/lib/skills/builtin/paper-writing/templates/osdi2026/usenix-2020-09.sty +83 -0
  337. package/lib/skills/builtin/paper-writing/templates/sosp2026/main.tex +532 -0
  338. package/lib/skills/builtin/paper-writing/templates/sosp2026/references.bib +148 -0
  339. package/lib/skills/builtin/research-grants/SKILL.md +958 -0
  340. package/lib/skills/builtin/research-grants/assets/budget_justification_template.md +453 -0
  341. package/lib/skills/builtin/research-grants/assets/nih_specific_aims_template.md +166 -0
  342. package/lib/skills/builtin/research-grants/assets/nsf_project_summary_template.md +92 -0
  343. package/lib/skills/builtin/research-grants/references/README.md +285 -0
  344. package/lib/skills/builtin/research-grants/references/broader_impacts.md +392 -0
  345. package/lib/skills/builtin/research-grants/references/darpa_guidelines.md +636 -0
  346. package/lib/skills/builtin/research-grants/references/doe_guidelines.md +586 -0
  347. package/lib/skills/builtin/research-grants/references/nih_guidelines.md +851 -0
  348. package/lib/skills/builtin/research-grants/references/nsf_guidelines.md +570 -0
  349. package/lib/skills/builtin/research-grants/references/nstc_guidelines.md +733 -0
  350. package/lib/skills/builtin/research-grants/references/specific_aims_guide.md +458 -0
  351. package/lib/skills/builtin/rewrite-humanize/SKILL.md +116 -0
  352. package/lib/skills/builtin/rewrite-humanize/references/cs-venue-tone.md +57 -0
  353. package/lib/skills/builtin/rewrite-humanize/references/lexicon.md +50 -0
  354. package/lib/skills/builtin/scholar-evaluation/SKILL.md +300 -0
  355. package/lib/skills/builtin/scholar-evaluation/references/evaluation_framework.md +663 -0
  356. package/lib/skills/builtin/scholar-evaluation/scripts/calculate_scores.py +379 -0
  357. package/lib/skills/builtin/scientific-schematics/SKILL.md +603 -0
  358. package/lib/skills/builtin/scientific-schematics/references/QUICK_REFERENCE.md +182 -0
  359. package/lib/skills/builtin/scientific-schematics/references/README.md +292 -0
  360. package/lib/skills/builtin/scientific-schematics/references/best_practices.md +560 -0
  361. package/lib/skills/builtin/scientific-schematics/scripts/__pycache__/generate_schematic.cpython-312.pyc +0 -0
  362. package/lib/skills/builtin/scientific-schematics/scripts/__pycache__/generate_schematic_ai.cpython-312.pyc +0 -0
  363. package/lib/skills/builtin/scientific-schematics/scripts/example_usage.sh +85 -0
  364. package/lib/skills/builtin/scientific-schematics/scripts/generate_schematic.py +141 -0
  365. package/lib/skills/builtin/scientific-schematics/scripts/generate_schematic_ai.py +910 -0
  366. package/lib/skills/builtin/scientific-visualization/SKILL.md +749 -0
  367. package/lib/skills/builtin/scientific-visualization/assets/color_palettes.py +197 -0
  368. package/lib/skills/builtin/scientific-visualization/assets/nature.mplstyle +63 -0
  369. package/lib/skills/builtin/scientific-visualization/assets/presentation.mplstyle +61 -0
  370. package/lib/skills/builtin/scientific-visualization/assets/publication.mplstyle +68 -0
  371. package/lib/skills/builtin/scientific-visualization/references/color_palettes.md +348 -0
  372. package/lib/skills/builtin/scientific-visualization/references/journal_requirements.md +320 -0
  373. package/lib/skills/builtin/scientific-visualization/references/matplotlib_examples.md +620 -0
  374. package/lib/skills/builtin/scientific-visualization/references/publication_guidelines.md +205 -0
  375. package/lib/skills/builtin/scientific-visualization/scripts/figure_export.py +343 -0
  376. package/lib/skills/builtin/scientific-visualization/scripts/style_presets.py +416 -0
  377. package/lib/skills/builtin/scientific-writing/SKILL.md +745 -0
  378. package/lib/skills/builtin/scientific-writing/assets/REPORT_FORMATTING_GUIDE.md +574 -0
  379. package/lib/skills/builtin/scientific-writing/assets/scientific_report.sty +606 -0
  380. package/lib/skills/builtin/scientific-writing/assets/scientific_report_template.tex +449 -0
  381. package/lib/skills/builtin/scientific-writing/references/citation_styles.md +720 -0
  382. package/lib/skills/builtin/scientific-writing/references/figures_tables.md +806 -0
  383. package/lib/skills/builtin/scientific-writing/references/imrad_structure.md +686 -0
  384. package/lib/skills/builtin/scientific-writing/references/professional_report_formatting.md +664 -0
  385. package/lib/skills/builtin/scientific-writing/references/reporting_guidelines.md +748 -0
  386. package/lib/skills/builtin/scientific-writing/references/writing_principles.md +824 -0
  387. package/lib/skills/builtin/seaborn/SKILL.md +674 -0
  388. package/lib/skills/builtin/seaborn/references/examples.md +822 -0
  389. package/lib/skills/builtin/seaborn/references/function_reference.md +770 -0
  390. package/lib/skills/builtin/seaborn/references/objects_interface.md +964 -0
  391. package/lib/skills/data-analysis/SKILL.md +285 -0
  392. package/lib/skills/generate-skill-content.mjs +58 -0
  393. package/lib/skills/index.ts +34 -0
  394. package/lib/skills/loader.ts +452 -0
  395. package/package.json +62 -0
@@ -0,0 +1,589 @@
1
+ # Matplotlib Styling Guide
2
+
3
+ Comprehensive guide for styling and customizing matplotlib visualizations.
4
+
5
+ ## Colormaps
6
+
7
+ ### Colormap Categories
8
+
9
+ **1. Perceptually Uniform Sequential**
10
+ Best for ordered data that progresses from low to high values.
11
+ - `viridis` (default, colorblind-friendly)
12
+ - `plasma`
13
+ - `inferno`
14
+ - `magma`
15
+ - `cividis` (optimized for colorblind viewers)
16
+
17
+ **Usage:**
18
+ ```python
19
+ im = ax.imshow(data, cmap='viridis')
20
+ scatter = ax.scatter(x, y, c=values, cmap='plasma')
21
+ ```
22
+
23
+ **2. Sequential**
24
+ Traditional colormaps for ordered data.
25
+ - `Blues`, `Greens`, `Reds`, `Oranges`, `Purples`
26
+ - `YlOrBr`, `YlOrRd`, `OrRd`, `PuRd`
27
+ - `BuPu`, `GnBu`, `PuBu`, `YlGnBu`
28
+
29
+ **3. Diverging**
30
+ Best for data with a meaningful center point (e.g., zero, mean).
31
+ - `coolwarm` (blue to red)
32
+ - `RdBu` (red-blue)
33
+ - `RdYlBu` (red-yellow-blue)
34
+ - `RdYlGn` (red-yellow-green)
35
+ - `PiYG`, `PRGn`, `BrBG`, `PuOr`, `RdGy`
36
+
37
+ **Usage:**
38
+ ```python
39
+ # Center colormap at zero
40
+ im = ax.imshow(data, cmap='coolwarm', vmin=-1, vmax=1)
41
+ ```
42
+
43
+ **4. Qualitative**
44
+ Best for categorical/nominal data without inherent ordering.
45
+ - `tab10` (10 distinct colors)
46
+ - `tab20` (20 distinct colors)
47
+ - `Set1`, `Set2`, `Set3`
48
+ - `Pastel1`, `Pastel2`
49
+ - `Dark2`, `Accent`, `Paired`
50
+
51
+ **Usage:**
52
+ ```python
53
+ colors = plt.cm.tab10(np.linspace(0, 1, n_categories))
54
+ for i, category in enumerate(categories):
55
+ ax.plot(x, y[i], color=colors[i], label=category)
56
+ ```
57
+
58
+ **5. Cyclic**
59
+ Best for cyclic data (e.g., phase, angle).
60
+ - `twilight`
61
+ - `twilight_shifted`
62
+ - `hsv`
63
+
64
+ ### Colormap Best Practices
65
+
66
+ 1. **Avoid `jet` colormap** - Not perceptually uniform, misleading
67
+ 2. **Use perceptually uniform colormaps** - `viridis`, `plasma`, `cividis`
68
+ 3. **Consider colorblind users** - Use `viridis`, `cividis`, or test with colorblind simulators
69
+ 4. **Match colormap to data type**:
70
+ - Sequential: increasing/decreasing data
71
+ - Diverging: data with meaningful center
72
+ - Qualitative: categories
73
+ 5. **Reverse colormaps** - Add `_r` suffix: `viridis_r`, `coolwarm_r`
74
+
75
+ ### Creating Custom Colormaps
76
+
77
+ ```python
78
+ from matplotlib.colors import LinearSegmentedColormap
79
+
80
+ # From color list
81
+ colors = ['blue', 'white', 'red']
82
+ n_bins = 100
83
+ cmap = LinearSegmentedColormap.from_list('custom', colors, N=n_bins)
84
+
85
+ # From RGB values
86
+ colors = [(0, 0, 1), (1, 1, 1), (1, 0, 0)] # RGB tuples
87
+ cmap = LinearSegmentedColormap.from_list('custom', colors)
88
+
89
+ # Use the custom colormap
90
+ ax.imshow(data, cmap=cmap)
91
+ ```
92
+
93
+ ### Discrete Colormaps
94
+
95
+ ```python
96
+ import matplotlib.colors as mcolors
97
+
98
+ # Create discrete colormap from continuous
99
+ cmap = plt.cm.viridis
100
+ bounds = np.linspace(0, 10, 11)
101
+ norm = mcolors.BoundaryNorm(bounds, cmap.N)
102
+ im = ax.imshow(data, cmap=cmap, norm=norm)
103
+ ```
104
+
105
+ ## Style Sheets
106
+
107
+ ### Using Built-in Styles
108
+
109
+ ```python
110
+ # List available styles
111
+ print(plt.style.available)
112
+
113
+ # Apply a style
114
+ plt.style.use('seaborn-v0_8-darkgrid')
115
+
116
+ # Apply multiple styles (later styles override earlier ones)
117
+ plt.style.use(['seaborn-v0_8-whitegrid', 'seaborn-v0_8-poster'])
118
+
119
+ # Temporarily use a style
120
+ with plt.style.context('ggplot'):
121
+ fig, ax = plt.subplots()
122
+ ax.plot(x, y)
123
+ ```
124
+
125
+ ### Popular Built-in Styles
126
+
127
+ - `default` - Matplotlib's default style
128
+ - `classic` - Classic matplotlib look (pre-2.0)
129
+ - `seaborn-v0_8-*` - Seaborn-inspired styles
130
+ - `seaborn-v0_8-darkgrid`, `seaborn-v0_8-whitegrid`
131
+ - `seaborn-v0_8-dark`, `seaborn-v0_8-white`
132
+ - `seaborn-v0_8-ticks`, `seaborn-v0_8-poster`, `seaborn-v0_8-talk`
133
+ - `ggplot` - ggplot2-inspired style
134
+ - `bmh` - Bayesian Methods for Hackers style
135
+ - `fivethirtyeight` - FiveThirtyEight style
136
+ - `grayscale` - Grayscale style
137
+
138
+ ### Creating Custom Style Sheets
139
+
140
+ Create a file named `custom_style.mplstyle`:
141
+
142
+ ```
143
+ # custom_style.mplstyle
144
+
145
+ # Figure
146
+ figure.figsize: 10, 6
147
+ figure.dpi: 100
148
+ figure.facecolor: white
149
+
150
+ # Font
151
+ font.family: sans-serif
152
+ font.sans-serif: Arial, Helvetica
153
+ font.size: 12
154
+
155
+ # Axes
156
+ axes.labelsize: 14
157
+ axes.titlesize: 16
158
+ axes.facecolor: white
159
+ axes.edgecolor: black
160
+ axes.linewidth: 1.5
161
+ axes.grid: True
162
+ axes.axisbelow: True
163
+
164
+ # Grid
165
+ grid.color: gray
166
+ grid.linestyle: --
167
+ grid.linewidth: 0.5
168
+ grid.alpha: 0.3
169
+
170
+ # Lines
171
+ lines.linewidth: 2
172
+ lines.markersize: 8
173
+
174
+ # Ticks
175
+ xtick.labelsize: 10
176
+ ytick.labelsize: 10
177
+ xtick.direction: in
178
+ ytick.direction: in
179
+ xtick.major.size: 6
180
+ ytick.major.size: 6
181
+ xtick.minor.size: 3
182
+ ytick.minor.size: 3
183
+
184
+ # Legend
185
+ legend.fontsize: 12
186
+ legend.frameon: True
187
+ legend.framealpha: 0.8
188
+ legend.fancybox: True
189
+
190
+ # Savefig
191
+ savefig.dpi: 300
192
+ savefig.bbox: tight
193
+ savefig.facecolor: white
194
+ ```
195
+
196
+ Load and use:
197
+ ```python
198
+ plt.style.use('path/to/custom_style.mplstyle')
199
+ ```
200
+
201
+ ## rcParams Configuration
202
+
203
+ ### Global Configuration
204
+
205
+ ```python
206
+ import matplotlib.pyplot as plt
207
+
208
+ # Configure globally
209
+ plt.rcParams['figure.figsize'] = (10, 6)
210
+ plt.rcParams['font.size'] = 12
211
+ plt.rcParams['axes.labelsize'] = 14
212
+
213
+ # Or update multiple at once
214
+ plt.rcParams.update({
215
+ 'figure.figsize': (10, 6),
216
+ 'font.size': 12,
217
+ 'axes.labelsize': 14,
218
+ 'axes.titlesize': 16,
219
+ 'lines.linewidth': 2
220
+ })
221
+ ```
222
+
223
+ ### Temporary Configuration
224
+
225
+ ```python
226
+ # Context manager for temporary changes
227
+ with plt.rc_context({'font.size': 14, 'lines.linewidth': 2.5}):
228
+ fig, ax = plt.subplots()
229
+ ax.plot(x, y)
230
+ ```
231
+
232
+ ### Common rcParams
233
+
234
+ **Figure settings:**
235
+ ```python
236
+ plt.rcParams['figure.figsize'] = (10, 6)
237
+ plt.rcParams['figure.dpi'] = 100
238
+ plt.rcParams['figure.facecolor'] = 'white'
239
+ plt.rcParams['figure.edgecolor'] = 'white'
240
+ plt.rcParams['figure.autolayout'] = False
241
+ plt.rcParams['figure.constrained_layout.use'] = True
242
+ ```
243
+
244
+ **Font settings:**
245
+ ```python
246
+ plt.rcParams['font.family'] = 'sans-serif'
247
+ plt.rcParams['font.sans-serif'] = ['Arial', 'Helvetica', 'DejaVu Sans']
248
+ plt.rcParams['font.size'] = 12
249
+ plt.rcParams['font.weight'] = 'normal'
250
+ ```
251
+
252
+ **Axes settings:**
253
+ ```python
254
+ plt.rcParams['axes.facecolor'] = 'white'
255
+ plt.rcParams['axes.edgecolor'] = 'black'
256
+ plt.rcParams['axes.linewidth'] = 1.5
257
+ plt.rcParams['axes.grid'] = True
258
+ plt.rcParams['axes.labelsize'] = 14
259
+ plt.rcParams['axes.titlesize'] = 16
260
+ plt.rcParams['axes.labelweight'] = 'normal'
261
+ plt.rcParams['axes.spines.top'] = True
262
+ plt.rcParams['axes.spines.right'] = True
263
+ ```
264
+
265
+ **Line settings:**
266
+ ```python
267
+ plt.rcParams['lines.linewidth'] = 2
268
+ plt.rcParams['lines.linestyle'] = '-'
269
+ plt.rcParams['lines.marker'] = 'None'
270
+ plt.rcParams['lines.markersize'] = 6
271
+ ```
272
+
273
+ **Save settings:**
274
+ ```python
275
+ plt.rcParams['savefig.dpi'] = 300
276
+ plt.rcParams['savefig.format'] = 'png'
277
+ plt.rcParams['savefig.bbox'] = 'tight'
278
+ plt.rcParams['savefig.pad_inches'] = 0.1
279
+ plt.rcParams['savefig.transparent'] = False
280
+ ```
281
+
282
+ ## Color Palettes
283
+
284
+ ### Named Color Sets
285
+
286
+ ```python
287
+ # Tableau colors
288
+ tableau_colors = plt.cm.tab10.colors
289
+
290
+ # CSS4 colors (subset)
291
+ css_colors = ['steelblue', 'coral', 'teal', 'goldenrod', 'crimson']
292
+
293
+ # Manual definition
294
+ custom_colors = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd']
295
+ ```
296
+
297
+ ### Color Cycles
298
+
299
+ ```python
300
+ # Set default color cycle
301
+ from cycler import cycler
302
+ colors = ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728']
303
+ plt.rcParams['axes.prop_cycle'] = cycler(color=colors)
304
+
305
+ # Or combine color and line style
306
+ plt.rcParams['axes.prop_cycle'] = cycler(color=colors) + cycler(linestyle=['-', '--', ':', '-.'])
307
+ ```
308
+
309
+ ### Palette Generation
310
+
311
+ ```python
312
+ # Evenly spaced colors from colormap
313
+ n_colors = 5
314
+ colors = plt.cm.viridis(np.linspace(0, 1, n_colors))
315
+
316
+ # Use in plot
317
+ for i, (x, y) in enumerate(data):
318
+ ax.plot(x, y, color=colors[i])
319
+ ```
320
+
321
+ ## Typography
322
+
323
+ ### Font Configuration
324
+
325
+ ```python
326
+ # Set font family
327
+ plt.rcParams['font.family'] = 'serif'
328
+ plt.rcParams['font.serif'] = ['Times New Roman', 'DejaVu Serif']
329
+
330
+ # Or sans-serif
331
+ plt.rcParams['font.family'] = 'sans-serif'
332
+ plt.rcParams['font.sans-serif'] = ['Arial', 'Helvetica']
333
+
334
+ # Or monospace
335
+ plt.rcParams['font.family'] = 'monospace'
336
+ plt.rcParams['font.monospace'] = ['Courier New', 'DejaVu Sans Mono']
337
+ ```
338
+
339
+ ### Font Properties in Text
340
+
341
+ ```python
342
+ from matplotlib import font_manager
343
+
344
+ # Specify font properties
345
+ ax.text(x, y, 'Text',
346
+ fontsize=14,
347
+ fontweight='bold', # 'normal', 'bold', 'heavy', 'light'
348
+ fontstyle='italic', # 'normal', 'italic', 'oblique'
349
+ fontfamily='serif')
350
+
351
+ # Use specific font file
352
+ prop = font_manager.FontProperties(fname='path/to/font.ttf')
353
+ ax.text(x, y, 'Text', fontproperties=prop)
354
+ ```
355
+
356
+ ### Mathematical Text
357
+
358
+ ```python
359
+ # LaTeX-style math
360
+ ax.set_title(r'$\alpha > \beta$')
361
+ ax.set_xlabel(r'$\mu \pm \sigma$')
362
+ ax.text(x, y, r'$\int_0^\infty e^{-x} dx = 1$')
363
+
364
+ # Subscripts and superscripts
365
+ ax.set_ylabel(r'$y = x^2 + 2x + 1$')
366
+ ax.text(x, y, r'$x_1, x_2, \ldots, x_n$')
367
+
368
+ # Greek letters
369
+ ax.text(x, y, r'$\alpha, \beta, \gamma, \delta, \epsilon$')
370
+ ```
371
+
372
+ ### Using Full LaTeX
373
+
374
+ ```python
375
+ # Enable full LaTeX rendering (requires LaTeX installation)
376
+ plt.rcParams['text.usetex'] = True
377
+ plt.rcParams['text.latex.preamble'] = r'\usepackage{amsmath}'
378
+
379
+ ax.set_title(r'\textbf{Bold Title}')
380
+ ax.set_xlabel(r'Time $t$ (s)')
381
+ ```
382
+
383
+ ## Spines and Grids
384
+
385
+ ### Spine Customization
386
+
387
+ ```python
388
+ # Hide specific spines
389
+ ax.spines['top'].set_visible(False)
390
+ ax.spines['right'].set_visible(False)
391
+
392
+ # Move spine position
393
+ ax.spines['left'].set_position(('outward', 10))
394
+ ax.spines['bottom'].set_position(('data', 0))
395
+
396
+ # Change spine color and width
397
+ ax.spines['left'].set_color('red')
398
+ ax.spines['bottom'].set_linewidth(2)
399
+ ```
400
+
401
+ ### Grid Customization
402
+
403
+ ```python
404
+ # Basic grid
405
+ ax.grid(True)
406
+
407
+ # Customized grid
408
+ ax.grid(True, which='major', linestyle='--', linewidth=0.8, alpha=0.3)
409
+ ax.grid(True, which='minor', linestyle=':', linewidth=0.5, alpha=0.2)
410
+
411
+ # Grid for specific axis
412
+ ax.grid(True, axis='x') # Only vertical lines
413
+ ax.grid(True, axis='y') # Only horizontal lines
414
+
415
+ # Grid behind or in front of data
416
+ ax.set_axisbelow(True) # Grid behind data
417
+ ```
418
+
419
+ ## Legend Customization
420
+
421
+ ### Legend Positioning
422
+
423
+ ```python
424
+ # Location strings
425
+ ax.legend(loc='best') # Automatic best position
426
+ ax.legend(loc='upper right')
427
+ ax.legend(loc='upper left')
428
+ ax.legend(loc='lower right')
429
+ ax.legend(loc='lower left')
430
+ ax.legend(loc='center')
431
+ ax.legend(loc='upper center')
432
+ ax.legend(loc='lower center')
433
+ ax.legend(loc='center left')
434
+ ax.legend(loc='center right')
435
+
436
+ # Precise positioning (bbox_to_anchor)
437
+ ax.legend(bbox_to_anchor=(1.05, 1), loc='upper left') # Outside plot area
438
+ ax.legend(bbox_to_anchor=(0.5, -0.15), loc='upper center', ncol=3) # Below plot
439
+ ```
440
+
441
+ ### Legend Styling
442
+
443
+ ```python
444
+ ax.legend(
445
+ fontsize=12,
446
+ frameon=True, # Show frame
447
+ framealpha=0.9, # Frame transparency
448
+ fancybox=True, # Rounded corners
449
+ shadow=True, # Shadow effect
450
+ ncol=2, # Number of columns
451
+ title='Legend Title', # Legend title
452
+ title_fontsize=14, # Title font size
453
+ edgecolor='black', # Frame edge color
454
+ facecolor='white' # Frame background color
455
+ )
456
+ ```
457
+
458
+ ### Custom Legend Entries
459
+
460
+ ```python
461
+ from matplotlib.lines import Line2D
462
+
463
+ # Create custom legend handles
464
+ custom_lines = [Line2D([0], [0], color='red', lw=2),
465
+ Line2D([0], [0], color='blue', lw=2, linestyle='--'),
466
+ Line2D([0], [0], marker='o', color='w', markerfacecolor='green', markersize=10)]
467
+
468
+ ax.legend(custom_lines, ['Label 1', 'Label 2', 'Label 3'])
469
+ ```
470
+
471
+ ## Layout and Spacing
472
+
473
+ ### Constrained Layout
474
+
475
+ ```python
476
+ # Preferred method (automatic adjustment)
477
+ fig, axes = plt.subplots(2, 2, constrained_layout=True)
478
+ ```
479
+
480
+ ### Tight Layout
481
+
482
+ ```python
483
+ # Alternative method
484
+ fig, axes = plt.subplots(2, 2)
485
+ plt.tight_layout(pad=1.5, h_pad=2.0, w_pad=2.0)
486
+ ```
487
+
488
+ ### Manual Adjustment
489
+
490
+ ```python
491
+ # Fine-grained control
492
+ plt.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.1,
493
+ hspace=0.3, wspace=0.4)
494
+ ```
495
+
496
+ ## Professional Publication Style
497
+
498
+ Example configuration for publication-quality figures:
499
+
500
+ ```python
501
+ # Publication style configuration
502
+ plt.rcParams.update({
503
+ # Figure
504
+ 'figure.figsize': (8, 6),
505
+ 'figure.dpi': 100,
506
+ 'savefig.dpi': 300,
507
+ 'savefig.bbox': 'tight',
508
+ 'savefig.pad_inches': 0.1,
509
+
510
+ # Font
511
+ 'font.family': 'sans-serif',
512
+ 'font.sans-serif': ['Arial', 'Helvetica'],
513
+ 'font.size': 11,
514
+
515
+ # Axes
516
+ 'axes.labelsize': 12,
517
+ 'axes.titlesize': 14,
518
+ 'axes.linewidth': 1.5,
519
+ 'axes.grid': False,
520
+ 'axes.spines.top': False,
521
+ 'axes.spines.right': False,
522
+
523
+ # Lines
524
+ 'lines.linewidth': 2,
525
+ 'lines.markersize': 8,
526
+
527
+ # Ticks
528
+ 'xtick.labelsize': 10,
529
+ 'ytick.labelsize': 10,
530
+ 'xtick.major.size': 6,
531
+ 'ytick.major.size': 6,
532
+ 'xtick.major.width': 1.5,
533
+ 'ytick.major.width': 1.5,
534
+ 'xtick.direction': 'in',
535
+ 'ytick.direction': 'in',
536
+
537
+ # Legend
538
+ 'legend.fontsize': 10,
539
+ 'legend.frameon': True,
540
+ 'legend.framealpha': 1.0,
541
+ 'legend.edgecolor': 'black'
542
+ })
543
+ ```
544
+
545
+ ## Dark Theme
546
+
547
+ ```python
548
+ # Dark background style
549
+ plt.style.use('dark_background')
550
+
551
+ # Or manual configuration
552
+ plt.rcParams.update({
553
+ 'figure.facecolor': '#1e1e1e',
554
+ 'axes.facecolor': '#1e1e1e',
555
+ 'axes.edgecolor': 'white',
556
+ 'axes.labelcolor': 'white',
557
+ 'text.color': 'white',
558
+ 'xtick.color': 'white',
559
+ 'ytick.color': 'white',
560
+ 'grid.color': 'gray',
561
+ 'legend.facecolor': '#1e1e1e',
562
+ 'legend.edgecolor': 'white'
563
+ })
564
+ ```
565
+
566
+ ## Color Accessibility
567
+
568
+ ### Colorblind-Friendly Palettes
569
+
570
+ ```python
571
+ # Use colorblind-friendly colormaps
572
+ colorblind_friendly = ['viridis', 'plasma', 'cividis']
573
+
574
+ # Colorblind-friendly discrete colors
575
+ cb_colors = ['#0173B2', '#DE8F05', '#029E73', '#CC78BC',
576
+ '#CA9161', '#949494', '#ECE133', '#56B4E9']
577
+
578
+ # Test with simulation tools or use these validated palettes
579
+ ```
580
+
581
+ ### High Contrast
582
+
583
+ ```python
584
+ # Ensure sufficient contrast
585
+ plt.rcParams['axes.edgecolor'] = 'black'
586
+ plt.rcParams['axes.linewidth'] = 2
587
+ plt.rcParams['xtick.major.width'] = 2
588
+ plt.rcParams['ytick.major.width'] = 2
589
+ ```