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.
- package/LICENSE +21 -0
- package/README.md +190 -0
- package/app/build/icon.icns +0 -0
- package/app/build/icon.ico +0 -0
- package/app/build/icon.png +0 -0
- package/app/out/main/index.mjs +6719 -0
- package/app/out/preload/index.js +141 -0
- package/app/out/renderer/assets/Inter-Variable-Latin-8kRkwJBP.woff2 +0 -0
- package/app/out/renderer/assets/Inter-Variable-LatinExt-B_-bZUTo.woff2 +0 -0
- package/app/out/renderer/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/app/out/renderer/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/app/out/renderer/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/app/out/renderer/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/app/out/renderer/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/app/out/renderer/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/app/out/renderer/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/app/out/renderer/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/app/out/renderer/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/app/out/renderer/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/app/out/renderer/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/app/out/renderer/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/app/out/renderer/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/app/out/renderer/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/app/out/renderer/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/app/out/renderer/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/app/out/renderer/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/app/out/renderer/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/app/out/renderer/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/app/out/renderer/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/app/out/renderer/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/app/out/renderer/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/app/out/renderer/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/app/out/renderer/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/app/out/renderer/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/app/out/renderer/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/app/out/renderer/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/app/out/renderer/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/app/out/renderer/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/app/out/renderer/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/app/out/renderer/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/app/out/renderer/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/app/out/renderer/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/app/out/renderer/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/app/out/renderer/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/app/out/renderer/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/app/out/renderer/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/app/out/renderer/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/app/out/renderer/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/app/out/renderer/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/app/out/renderer/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/app/out/renderer/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/app/out/renderer/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/app/out/renderer/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/app/out/renderer/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/app/out/renderer/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/app/out/renderer/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/app/out/renderer/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/app/out/renderer/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/app/out/renderer/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/app/out/renderer/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/app/out/renderer/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/app/out/renderer/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/app/out/renderer/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/app/out/renderer/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/app/out/renderer/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/app/out/renderer/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/app/out/renderer/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/app/out/renderer/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/app/out/renderer/assets/MilkdownMarkdownEditor-bLPxrCVb.js +89821 -0
- package/app/out/renderer/assets/MilkdownMarkdownEditor-tTNRIB2K.css +2555 -0
- package/app/out/renderer/assets/Tableau10-BqnYsPR6.js +9 -0
- package/app/out/renderer/assets/apl-fqmucPXA.js +140 -0
- package/app/out/renderer/assets/arc-J47ePHZ2.js +132 -0
- package/app/out/renderer/assets/array-DgktLKBx.js +6 -0
- package/app/out/renderer/assets/asciiarmor-DucZyvP0.js +56 -0
- package/app/out/renderer/assets/asn1-BnOEsgAm.js +144 -0
- package/app/out/renderer/assets/asterisk-QAlztEwS.js +345 -0
- package/app/out/renderer/assets/blockDiagram-c4efeb88-5uRQXgQJ.js +1817 -0
- package/app/out/renderer/assets/brainfuck-DZVCuF_t.js +53 -0
- package/app/out/renderer/assets/c4Diagram-c83219d4-C4iCTPEL.js +2464 -0
- package/app/out/renderer/assets/channel-ZAmhHE3g.js +7 -0
- package/app/out/renderer/assets/classDiagram-beda092f-7NOZxq_W.js +357 -0
- package/app/out/renderer/assets/classDiagram-v2-2358418a-5fPT-cUH.js +291 -0
- package/app/out/renderer/assets/clike-xqXYL6ge.js +805 -0
- package/app/out/renderer/assets/clojure-BhXMqnxz.js +849 -0
- package/app/out/renderer/assets/clone-CsnzsYXQ.js +8 -0
- package/app/out/renderer/assets/cmake-BGaNd9E7.js +71 -0
- package/app/out/renderer/assets/cobol-4yqQntpt.js +120 -0
- package/app/out/renderer/assets/coffeescript-D2dXvhEc.js +308 -0
- package/app/out/renderer/assets/commonlisp-CF_VNHQR.js +130 -0
- package/app/out/renderer/assets/createText-1719965b-Cji7KN4K.js +4904 -0
- package/app/out/renderer/assets/crystal-DyuLTqLs.js +398 -0
- package/app/out/renderer/assets/css-c-jst79C.js +1783 -0
- package/app/out/renderer/assets/cypher-Dlu_3r4V.js +121 -0
- package/app/out/renderer/assets/d-UURgV0Ux.js +179 -0
- package/app/out/renderer/assets/diff-B_Bi2Crb.js +25 -0
- package/app/out/renderer/assets/dockerfile-Bvk733Ga.js +201 -0
- package/app/out/renderer/assets/dtd-Dy74G54E.js +114 -0
- package/app/out/renderer/assets/dylan-TSb-Nfix.js +314 -0
- package/app/out/renderer/assets/ebnf-DAomQUbD.js +139 -0
- package/app/out/renderer/assets/ecl-B59qGGVg.js +178 -0
- package/app/out/renderer/assets/edges-96097737-CD0EvAZQ.js +1844 -0
- package/app/out/renderer/assets/eiffel-Dze7nlu3.js +134 -0
- package/app/out/renderer/assets/elm-DG7jkhNZ.js +176 -0
- package/app/out/renderer/assets/erDiagram-0228fc6a-DRYXBpi7.js +1321 -0
- package/app/out/renderer/assets/erlang-BO6gOnGA.js +674 -0
- package/app/out/renderer/assets/factor-CMxFHDqz.js +65 -0
- package/app/out/renderer/assets/fcl-CDDUNjTj.js +141 -0
- package/app/out/renderer/assets/flowDb-c6c81e3f-CuoIN-Cy.js +1713 -0
- package/app/out/renderer/assets/flowDiagram-50d868cf-CPWPLOml.js +1272 -0
- package/app/out/renderer/assets/flowDiagram-v2-4f6560a1-C_R12s4S.js +33 -0
- package/app/out/renderer/assets/flowchart-elk-definition-6af322e1-BdKUSFpi.js +92921 -0
- package/app/out/renderer/assets/forth-B9D2JCeE.js +116 -0
- package/app/out/renderer/assets/fortran-CAG2BFbe.js +467 -0
- package/app/out/renderer/assets/ganttDiagram-a2739b55-ygqT5HlG.js +3399 -0
- package/app/out/renderer/assets/gas-d3KEcW3x.js +294 -0
- package/app/out/renderer/assets/gherkin-DhZlEZiy.js +115 -0
- package/app/out/renderer/assets/gitGraphDiagram-82fe8481-D97GT4iA.js +1791 -0
- package/app/out/renderer/assets/graph-DpC13d95.js +1237 -0
- package/app/out/renderer/assets/groovy-CpwJiBl7.js +223 -0
- package/app/out/renderer/assets/haskell-BlGBCCe3.js +459 -0
- package/app/out/renderer/assets/haxe-7MlzfeYV.js +514 -0
- package/app/out/renderer/assets/http-BqypyemW.js +79 -0
- package/app/out/renderer/assets/idl-4HIGJlDI.js +985 -0
- package/app/out/renderer/assets/index-4-ziknCv.js +292 -0
- package/app/out/renderer/assets/index-5325376f-Bbs7Fbqr.js +663 -0
- package/app/out/renderer/assets/index-B2jip-rk.js +2489 -0
- package/app/out/renderer/assets/index-BKTVfokE.js +312 -0
- package/app/out/renderer/assets/index-BiJbFgVG.js +118 -0
- package/app/out/renderer/assets/index-Bn433Fat.js +83 -0
- package/app/out/renderer/assets/index-BqDyyRCx.js +39679 -0
- package/app/out/renderer/assets/index-BzFMeMPn.js +158 -0
- package/app/out/renderer/assets/index-C-_uCjZJ.css +2701 -0
- package/app/out/renderer/assets/index-C1ithNW1.js +1765 -0
- package/app/out/renderer/assets/index-CAJkRYkO.js +407 -0
- package/app/out/renderer/assets/index-CleO0-yj.js +690 -0
- package/app/out/renderer/assets/index-Cq4MH3sY.js +1020 -0
- package/app/out/renderer/assets/index-CtA0Xj22.js +705 -0
- package/app/out/renderer/assets/index-CvAZkqBZ.js +83 -0
- package/app/out/renderer/assets/index-D3UDN-5c.js +152 -0
- package/app/out/renderer/assets/index-D4F9R5ao.js +179 -0
- package/app/out/renderer/assets/index-D6RguhZ5.js +328 -0
- package/app/out/renderer/assets/index-DnEowqXv.js +386 -0
- package/app/out/renderer/assets/index-K8c8Mqdy.js +98 -0
- package/app/out/renderer/assets/index-Kh14gO6K.js +62 -0
- package/app/out/renderer/assets/index-WFd2jRnA.js +333 -0
- package/app/out/renderer/assets/index-WgMfkRFp.js +313 -0
- package/app/out/renderer/assets/index-Y4lKyF6t.js +1042 -0
- package/app/out/renderer/assets/index-fx307_f1.js +643 -0
- package/app/out/renderer/assets/infoDiagram-8eee0895-ptaVSwzq.js +511 -0
- package/app/out/renderer/assets/init-ZxktEp_H.js +16 -0
- package/app/out/renderer/assets/javascript-C3MnDRiU.js +994 -0
- package/app/out/renderer/assets/journeyDiagram-c64418c1-aloEGOQp.js +1184 -0
- package/app/out/renderer/assets/julia-Bs6JJhYG.js +407 -0
- package/app/out/renderer/assets/layout-ZeuHE_aY.js +2217 -0
- package/app/out/renderer/assets/line-CAgaGl-S.js +45 -0
- package/app/out/renderer/assets/linear-DIg7lTe1.js +539 -0
- package/app/out/renderer/assets/livescript-DmzgM3Yt.js +296 -0
- package/app/out/renderer/assets/lua-8cJgIlqe.js +256 -0
- package/app/out/renderer/assets/mathematica-DNLOL9PQ.js +110 -0
- package/app/out/renderer/assets/mbox-Ga7d4MMN.js +117 -0
- package/app/out/renderer/assets/mindmap-definition-8da855dc-B8XVoUxz.js +36054 -0
- package/app/out/renderer/assets/mirc-Dma3B8rS.js +107 -0
- package/app/out/renderer/assets/mllike-DHn7xckP.js +334 -0
- package/app/out/renderer/assets/modelica-0d55jYY0.js +147 -0
- package/app/out/renderer/assets/mscgen-DdqZYINH.js +135 -0
- package/app/out/renderer/assets/mumps-Btr8VblO.js +93 -0
- package/app/out/renderer/assets/nginx-DTDtBDVN.js +141 -0
- package/app/out/renderer/assets/nsis-3zG7tgur.js +62 -0
- package/app/out/renderer/assets/ntriples-CvgOYMpL.js +153 -0
- package/app/out/renderer/assets/octave-DYBj3-tl.js +200 -0
- package/app/out/renderer/assets/ordinal-DSZU4PqD.js +76 -0
- package/app/out/renderer/assets/oz-R_e8WMIi.js +231 -0
- package/app/out/renderer/assets/pascal-GD8iposT.js +105 -0
- package/app/out/renderer/assets/path-Cp2qmpkd.js +109 -0
- package/app/out/renderer/assets/perl-DL9mHpoi.js +1105 -0
- package/app/out/renderer/assets/pieDiagram-a8764435-DlwoeBU2.js +770 -0
- package/app/out/renderer/assets/pig-C_4T4YIV.js +101 -0
- package/app/out/renderer/assets/powershell-B0suO7Vd.js +328 -0
- package/app/out/renderer/assets/properties-BR-vP1aU.js +58 -0
- package/app/out/renderer/assets/protobuf-BxgpyhoW.js +77 -0
- package/app/out/renderer/assets/pug-By0kVCfm.js +405 -0
- package/app/out/renderer/assets/puppet-Bdao66PW.js +137 -0
- package/app/out/renderer/assets/python-CvWbmiX4.js +427 -0
- package/app/out/renderer/assets/q-CrbCVq4a.js +131 -0
- package/app/out/renderer/assets/quadrantDiagram-1e28029f-BaSi1XB4.js +1200 -0
- package/app/out/renderer/assets/r-V7nswm59.js +170 -0
- package/app/out/renderer/assets/requirementDiagram-08caed73-D3EFyegZ.js +1092 -0
- package/app/out/renderer/assets/rpm-C-DLY-If.js +109 -0
- package/app/out/renderer/assets/ruby-JDKLJNK0.js +330 -0
- package/app/out/renderer/assets/sankeyDiagram-a04cb91d-Cv44AsnM.js +1174 -0
- package/app/out/renderer/assets/sas-D2UG-yhZ.js +207 -0
- package/app/out/renderer/assets/scheme-BKzrkGJD.js +222 -0
- package/app/out/renderer/assets/sequenceDiagram-c5b8d532-CuUBu-x4.js +3337 -0
- package/app/out/renderer/assets/shell-BlsXDxCn.js +222 -0
- package/app/out/renderer/assets/sieve-CjwBwOY5.js +135 -0
- package/app/out/renderer/assets/simple-mode-DMneyfDu.js +130 -0
- package/app/out/renderer/assets/smalltalk-BOIGQuhN.js +121 -0
- package/app/out/renderer/assets/solr-CwD7U71z.js +69 -0
- package/app/out/renderer/assets/sparql-DYskk2vE.js +249 -0
- package/app/out/renderer/assets/spreadsheet-Bgtt3oLP.js +87 -0
- package/app/out/renderer/assets/sql-BSrOzCRI.js +354 -0
- package/app/out/renderer/assets/stateDiagram-1ecb1508-BOU34Zp4.js +454 -0
- package/app/out/renderer/assets/stateDiagram-v2-c2b004d7-BgRoffou.js +326 -0
- package/app/out/renderer/assets/stex-B6LNC55o.js +231 -0
- package/app/out/renderer/assets/styles-b4e223ce-BMr9TPuj.js +1483 -0
- package/app/out/renderer/assets/styles-ca3715f6-DgbNw99p.js +1363 -0
- package/app/out/renderer/assets/styles-d45a18b0-DtRYKYKf.js +574 -0
- package/app/out/renderer/assets/stylus-BkS-boTH.js +565 -0
- package/app/out/renderer/assets/svgDrawCommon-b86b1483-Bein03PD.js +100 -0
- package/app/out/renderer/assets/swift-FRZi1uvB.js +291 -0
- package/app/out/renderer/assets/tcl-CUcaCdmq.js +114 -0
- package/app/out/renderer/assets/textile-BnFpjsrl.js +414 -0
- package/app/out/renderer/assets/tiddlywiki-CjprD-Qp.js +218 -0
- package/app/out/renderer/assets/tiki-B4EPSQ1G.js +265 -0
- package/app/out/renderer/assets/timeline-definition-faaaa080-BlWpLE_4.js +1212 -0
- package/app/out/renderer/assets/toml-BOuWGMcf.js +76 -0
- package/app/out/renderer/assets/troff-E1bJ0PPL.js +61 -0
- package/app/out/renderer/assets/ttcn-cfg-Dc39-fIP.js +133 -0
- package/app/out/renderer/assets/ttcn-tKd4HLu4.js +192 -0
- package/app/out/renderer/assets/turtle-Dq7-1WAf.js +124 -0
- package/app/out/renderer/assets/vb-Dp90gtsv.js +196 -0
- package/app/out/renderer/assets/vbscript-CI6_mxxU.js +479 -0
- package/app/out/renderer/assets/velocity-BwIZK1TH.js +149 -0
- package/app/out/renderer/assets/verilog-DDCYnHN8.js +430 -0
- package/app/out/renderer/assets/vhdl-DCkMIyT9.js +158 -0
- package/app/out/renderer/assets/webidl-BTLTThCm.js +204 -0
- package/app/out/renderer/assets/xquery-BgiOC5Ce.js +525 -0
- package/app/out/renderer/assets/xychartDiagram-f5964ef8-Bhga-YXm.js +1799 -0
- package/app/out/renderer/assets/yacas-b5lAVEIl.js +130 -0
- package/app/out/renderer/assets/z80-BZV19vqv.js +93 -0
- package/app/out/renderer/index.html +13 -0
- package/app/out/skills/community-builtin/README.md +29 -0
- package/app/out/skills/community-builtin/document-docx/SKILL.md +44 -0
- package/app/out/skills/community-builtin/document-docx/scripts/docx-to-markdown.sh +20 -0
- package/app/out/skills/community-builtin/document-docx/scripts/extract-docx-text.sh +28 -0
- package/app/out/skills/community-builtin/document-docx/scripts/init-docx-template.sh +32 -0
- package/app/out/skills/community-builtin/document-docx/scripts/setup-docx-tools.sh +10 -0
- package/app/out/skills/community-builtin/markitdown/SKILL.md +105 -0
- package/app/out/skills/community-builtin/markitdown/scripts/batch-convert.sh +40 -0
- package/app/out/skills/community-builtin/markitdown/scripts/convert-file.sh +24 -0
- package/app/out/skills/community-builtin/markitdown/scripts/setup-markitdown.sh +10 -0
- package/app/out/skills/community-builtin/repo-quick-audit/SKILL.md +27 -0
- package/app/out/skills/community-builtin/repo-quick-audit/scripts/audit-basics.sh +19 -0
- package/app/out/skills/research-pilot-default-project-skills/README.md +23 -0
- package/app/out/skills/research-pilot-default-project-skills/citation-management/SKILL.md +39 -0
- package/app/out/skills/research-pilot-default-project-skills/citation-management/scripts/doi-to-bibtex.sh +25 -0
- package/app/out/skills/research-pilot-default-project-skills/citation-management/scripts/normalize-bibtex-keys.sh +51 -0
- package/app/out/skills/research-pilot-default-project-skills/citation-management/scripts/setup-citation-tools.sh +10 -0
- package/app/out/skills/research-pilot-default-project-skills/citation-management/scripts/validate-bib.sh +31 -0
- package/app/out/skills/research-pilot-default-project-skills/matplotlib/SKILL.md +34 -0
- package/app/out/skills/research-pilot-default-project-skills/matplotlib/references/api_reference.md +412 -0
- package/app/out/skills/research-pilot-default-project-skills/matplotlib/references/common_issues.md +563 -0
- package/app/out/skills/research-pilot-default-project-skills/matplotlib/references/plot_types.md +476 -0
- package/app/out/skills/research-pilot-default-project-skills/matplotlib/references/styling_guide.md +589 -0
- package/app/out/skills/research-pilot-default-project-skills/matplotlib/references/subagent_quickstart.md +30 -0
- package/app/out/skills/research-pilot-default-project-skills/matplotlib/scripts/plot_template.py +401 -0
- package/app/out/skills/research-pilot-default-project-skills/matplotlib/scripts/style_configurator.py +409 -0
- package/app/out/skills/research-pilot-default-project-skills/research-grants/SKILL.md +38 -0
- package/app/out/skills/research-pilot-default-project-skills/research-grants/scripts/check-grant-compliance.sh +40 -0
- package/app/out/skills/research-pilot-default-project-skills/research-grants/scripts/grant-summary-card.sh +32 -0
- package/app/out/skills/research-pilot-default-project-skills/research-grants/scripts/init-grant-structure.sh +70 -0
- package/app/package.json +77 -0
- package/bin/cli.mjs +56 -0
- package/lib/README.md +145 -0
- package/lib/skills/_generated.ts +13 -0
- package/lib/skills/builtin/brainstorming-research-ideas/SKILL.md +280 -0
- package/lib/skills/builtin/coding/SKILL.md +114 -0
- package/lib/skills/builtin/creative-thinking-for-research/SKILL.md +273 -0
- package/lib/skills/builtin/matplotlib/SKILL.md +361 -0
- package/lib/skills/builtin/matplotlib/references/api_reference.md +412 -0
- package/lib/skills/builtin/matplotlib/references/common_issues.md +563 -0
- package/lib/skills/builtin/matplotlib/references/plot_types.md +476 -0
- package/lib/skills/builtin/matplotlib/references/styling_guide.md +589 -0
- package/lib/skills/builtin/matplotlib/scripts/plot_template.py +401 -0
- package/lib/skills/builtin/matplotlib/scripts/style_configurator.py +409 -0
- package/lib/skills/builtin/paper-writing/SKILL.md +554 -0
- package/lib/skills/builtin/paper-writing/references/checklists.md +524 -0
- package/lib/skills/builtin/paper-writing/references/citation-workflow.md +562 -0
- package/lib/skills/builtin/paper-writing/references/reviewer-guidelines.md +462 -0
- package/lib/skills/builtin/paper-writing/references/sources.md +189 -0
- package/lib/skills/builtin/paper-writing/references/systems-conferences.md +260 -0
- package/lib/skills/builtin/paper-writing/references/writing-guide.md +476 -0
- package/lib/skills/builtin/paper-writing/templates/README.md +408 -0
- package/lib/skills/builtin/paper-writing/templates/aaai2026/README.md +534 -0
- package/lib/skills/builtin/paper-writing/templates/aaai2026/aaai2026-unified-supp.tex +144 -0
- package/lib/skills/builtin/paper-writing/templates/aaai2026/aaai2026-unified-template.tex +952 -0
- package/lib/skills/builtin/paper-writing/templates/aaai2026/aaai2026.bib +111 -0
- package/lib/skills/builtin/paper-writing/templates/aaai2026/aaai2026.bst +1493 -0
- package/lib/skills/builtin/paper-writing/templates/aaai2026/aaai2026.sty +315 -0
- package/lib/skills/builtin/paper-writing/templates/acl/README.md +50 -0
- package/lib/skills/builtin/paper-writing/templates/acl/acl.sty +312 -0
- package/lib/skills/builtin/paper-writing/templates/acl/acl_latex.tex +377 -0
- package/lib/skills/builtin/paper-writing/templates/acl/acl_lualatex.tex +101 -0
- package/lib/skills/builtin/paper-writing/templates/acl/acl_natbib.bst +1940 -0
- package/lib/skills/builtin/paper-writing/templates/acl/anthology.bib.txt +26 -0
- package/lib/skills/builtin/paper-writing/templates/acl/custom.bib +70 -0
- package/lib/skills/builtin/paper-writing/templates/acl/formatting.md +326 -0
- package/lib/skills/builtin/paper-writing/templates/asplos2027/main.tex +459 -0
- package/lib/skills/builtin/paper-writing/templates/asplos2027/references.bib +135 -0
- package/lib/skills/builtin/paper-writing/templates/colm2025/README.md +3 -0
- package/lib/skills/builtin/paper-writing/templates/colm2025/colm2025_conference.bib +11 -0
- package/lib/skills/builtin/paper-writing/templates/colm2025/colm2025_conference.bst +1440 -0
- package/lib/skills/builtin/paper-writing/templates/colm2025/colm2025_conference.pdf +0 -0
- package/lib/skills/builtin/paper-writing/templates/colm2025/colm2025_conference.sty +218 -0
- package/lib/skills/builtin/paper-writing/templates/colm2025/colm2025_conference.tex +305 -0
- package/lib/skills/builtin/paper-writing/templates/colm2025/fancyhdr.sty +485 -0
- package/lib/skills/builtin/paper-writing/templates/colm2025/math_commands.tex +508 -0
- package/lib/skills/builtin/paper-writing/templates/colm2025/natbib.sty +1246 -0
- package/lib/skills/builtin/paper-writing/templates/iclr2026/fancyhdr.sty +485 -0
- package/lib/skills/builtin/paper-writing/templates/iclr2026/iclr2026_conference.bib +24 -0
- package/lib/skills/builtin/paper-writing/templates/iclr2026/iclr2026_conference.bst +1440 -0
- package/lib/skills/builtin/paper-writing/templates/iclr2026/iclr2026_conference.pdf +0 -0
- package/lib/skills/builtin/paper-writing/templates/iclr2026/iclr2026_conference.sty +246 -0
- package/lib/skills/builtin/paper-writing/templates/iclr2026/iclr2026_conference.tex +414 -0
- package/lib/skills/builtin/paper-writing/templates/iclr2026/math_commands.tex +508 -0
- package/lib/skills/builtin/paper-writing/templates/iclr2026/natbib.sty +1246 -0
- package/lib/skills/builtin/paper-writing/templates/icml2026/algorithm.sty +79 -0
- package/lib/skills/builtin/paper-writing/templates/icml2026/algorithmic.sty +201 -0
- package/lib/skills/builtin/paper-writing/templates/icml2026/example_paper.bib +75 -0
- package/lib/skills/builtin/paper-writing/templates/icml2026/example_paper.pdf +0 -0
- package/lib/skills/builtin/paper-writing/templates/icml2026/example_paper.tex +662 -0
- package/lib/skills/builtin/paper-writing/templates/icml2026/fancyhdr.sty +864 -0
- package/lib/skills/builtin/paper-writing/templates/icml2026/icml2026.bst +1443 -0
- package/lib/skills/builtin/paper-writing/templates/icml2026/icml2026.sty +767 -0
- package/lib/skills/builtin/paper-writing/templates/icml2026/icml_numpapers.pdf +0 -0
- package/lib/skills/builtin/paper-writing/templates/neurips2025/Makefile +36 -0
- package/lib/skills/builtin/paper-writing/templates/neurips2025/extra_pkgs.tex +53 -0
- package/lib/skills/builtin/paper-writing/templates/neurips2025/main.tex +38 -0
- package/lib/skills/builtin/paper-writing/templates/neurips2025/neurips.sty +382 -0
- package/lib/skills/builtin/paper-writing/templates/nsdi2027/main.tex +426 -0
- package/lib/skills/builtin/paper-writing/templates/nsdi2027/references.bib +151 -0
- package/lib/skills/builtin/paper-writing/templates/nsdi2027/usenix-2020-09.sty +83 -0
- package/lib/skills/builtin/paper-writing/templates/osdi2026/main.tex +429 -0
- package/lib/skills/builtin/paper-writing/templates/osdi2026/references.bib +150 -0
- package/lib/skills/builtin/paper-writing/templates/osdi2026/usenix-2020-09.sty +83 -0
- package/lib/skills/builtin/paper-writing/templates/sosp2026/main.tex +532 -0
- package/lib/skills/builtin/paper-writing/templates/sosp2026/references.bib +148 -0
- package/lib/skills/builtin/research-grants/SKILL.md +958 -0
- package/lib/skills/builtin/research-grants/assets/budget_justification_template.md +453 -0
- package/lib/skills/builtin/research-grants/assets/nih_specific_aims_template.md +166 -0
- package/lib/skills/builtin/research-grants/assets/nsf_project_summary_template.md +92 -0
- package/lib/skills/builtin/research-grants/references/README.md +285 -0
- package/lib/skills/builtin/research-grants/references/broader_impacts.md +392 -0
- package/lib/skills/builtin/research-grants/references/darpa_guidelines.md +636 -0
- package/lib/skills/builtin/research-grants/references/doe_guidelines.md +586 -0
- package/lib/skills/builtin/research-grants/references/nih_guidelines.md +851 -0
- package/lib/skills/builtin/research-grants/references/nsf_guidelines.md +570 -0
- package/lib/skills/builtin/research-grants/references/nstc_guidelines.md +733 -0
- package/lib/skills/builtin/research-grants/references/specific_aims_guide.md +458 -0
- package/lib/skills/builtin/rewrite-humanize/SKILL.md +116 -0
- package/lib/skills/builtin/rewrite-humanize/references/cs-venue-tone.md +57 -0
- package/lib/skills/builtin/rewrite-humanize/references/lexicon.md +50 -0
- package/lib/skills/builtin/scholar-evaluation/SKILL.md +300 -0
- package/lib/skills/builtin/scholar-evaluation/references/evaluation_framework.md +663 -0
- package/lib/skills/builtin/scholar-evaluation/scripts/calculate_scores.py +379 -0
- package/lib/skills/builtin/scientific-schematics/SKILL.md +603 -0
- package/lib/skills/builtin/scientific-schematics/references/QUICK_REFERENCE.md +182 -0
- package/lib/skills/builtin/scientific-schematics/references/README.md +292 -0
- package/lib/skills/builtin/scientific-schematics/references/best_practices.md +560 -0
- package/lib/skills/builtin/scientific-schematics/scripts/__pycache__/generate_schematic.cpython-312.pyc +0 -0
- package/lib/skills/builtin/scientific-schematics/scripts/__pycache__/generate_schematic_ai.cpython-312.pyc +0 -0
- package/lib/skills/builtin/scientific-schematics/scripts/example_usage.sh +85 -0
- package/lib/skills/builtin/scientific-schematics/scripts/generate_schematic.py +141 -0
- package/lib/skills/builtin/scientific-schematics/scripts/generate_schematic_ai.py +910 -0
- package/lib/skills/builtin/scientific-visualization/SKILL.md +749 -0
- package/lib/skills/builtin/scientific-visualization/assets/color_palettes.py +197 -0
- package/lib/skills/builtin/scientific-visualization/assets/nature.mplstyle +63 -0
- package/lib/skills/builtin/scientific-visualization/assets/presentation.mplstyle +61 -0
- package/lib/skills/builtin/scientific-visualization/assets/publication.mplstyle +68 -0
- package/lib/skills/builtin/scientific-visualization/references/color_palettes.md +348 -0
- package/lib/skills/builtin/scientific-visualization/references/journal_requirements.md +320 -0
- package/lib/skills/builtin/scientific-visualization/references/matplotlib_examples.md +620 -0
- package/lib/skills/builtin/scientific-visualization/references/publication_guidelines.md +205 -0
- package/lib/skills/builtin/scientific-visualization/scripts/figure_export.py +343 -0
- package/lib/skills/builtin/scientific-visualization/scripts/style_presets.py +416 -0
- package/lib/skills/builtin/scientific-writing/SKILL.md +745 -0
- package/lib/skills/builtin/scientific-writing/assets/REPORT_FORMATTING_GUIDE.md +574 -0
- package/lib/skills/builtin/scientific-writing/assets/scientific_report.sty +606 -0
- package/lib/skills/builtin/scientific-writing/assets/scientific_report_template.tex +449 -0
- package/lib/skills/builtin/scientific-writing/references/citation_styles.md +720 -0
- package/lib/skills/builtin/scientific-writing/references/figures_tables.md +806 -0
- package/lib/skills/builtin/scientific-writing/references/imrad_structure.md +686 -0
- package/lib/skills/builtin/scientific-writing/references/professional_report_formatting.md +664 -0
- package/lib/skills/builtin/scientific-writing/references/reporting_guidelines.md +748 -0
- package/lib/skills/builtin/scientific-writing/references/writing_principles.md +824 -0
- package/lib/skills/builtin/seaborn/SKILL.md +674 -0
- package/lib/skills/builtin/seaborn/references/examples.md +822 -0
- package/lib/skills/builtin/seaborn/references/function_reference.md +770 -0
- package/lib/skills/builtin/seaborn/references/objects_interface.md +964 -0
- package/lib/skills/data-analysis/SKILL.md +285 -0
- package/lib/skills/generate-skill-content.mjs +58 -0
- package/lib/skills/index.ts +34 -0
- package/lib/skills/loader.ts +452 -0
- package/package.json +62 -0
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: creative-thinking-for-research
|
|
3
|
+
description: Eight cognitive science frameworks for generating genuinely novel research directions. Use when stuck in a local optimum, when brainstorming-research-ideas alone yields only incremental candidates, or when you need deeper cognitive disruption.
|
|
4
|
+
category: Research Ideation
|
|
5
|
+
depends: [brainstorming-research-ideas]
|
|
6
|
+
tags: [Creative Thinking, Research Ideation, Analogical Reasoning, Problem Reformulation, Cognitive Science]
|
|
7
|
+
triggers: [creative thinking, novel ideas, think outside the box, stuck, local optimum, breakthrough, 创新思维, 跳出框架, 创造性思考]
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Creative Thinking for Research
|
|
11
|
+
|
|
12
|
+
Eight empirically grounded frameworks from cognitive science, applied to CS and AI research. Unlike ad-hoc brainstorming, each framework is backed by decades of creativity research — from Koestler's bisociation to Kauffman's adjacent possible. They target distinct cognitive operations: combining, reformulating, analogizing, constraining, inverting, abstracting, exploring boundaries, and holding contradictions.
|
|
13
|
+
|
|
14
|
+
## Overview
|
|
15
|
+
|
|
16
|
+
This skill provides deeper cognitive engines for generating truly novel research directions. While `brainstorming-research-ideas` provides operational workflows (diverge → converge → refine) and practical filters, this skill provides the cognitive frameworks that power creative leaps. Use them together: creative-thinking to generate raw insight, brainstorming-research-ideas to structure and evaluate it.
|
|
17
|
+
|
|
18
|
+
## When to Use This Skill
|
|
19
|
+
|
|
20
|
+
- The `brainstorming-research-ideas` skill produced only incremental candidates — you need deeper cognitive disruption.
|
|
21
|
+
- Multiple sessions of investigation have produced diminishing returns — you may be stuck in a local optimum.
|
|
22
|
+
- The user explicitly asked for "novel" or "creative" directions.
|
|
23
|
+
- You need to justify a significant pivot in research focus.
|
|
24
|
+
|
|
25
|
+
**Do NOT use this skill when**:
|
|
26
|
+
- You need structured project-level brainstorming workflows — use `brainstorming-research-ideas` instead.
|
|
27
|
+
- You have a well-defined research question and need execution guidance — proceed with normal task execution.
|
|
28
|
+
- You need a literature survey — use the `literature-search` tool directly.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Framework 1: Combinatorial Creativity (Bisociation)
|
|
33
|
+
|
|
34
|
+
Novel ideas arise from combining existing concepts in unexpected ways. Arthur Koestler called this **bisociation** — connecting two previously unrelated frames of reference, distinct from routine association within a single frame.
|
|
35
|
+
|
|
36
|
+
**Why it works**: Meta-research consistently shows that breadth of knowledge is a precursor to creative output. The combination itself is the creative act.
|
|
37
|
+
|
|
38
|
+
**Systematic Bisociation Workflow**:
|
|
39
|
+
|
|
40
|
+
1. **Select two domains** — one from current research, one from an adjacent field
|
|
41
|
+
2. **List core primitives** in each domain (5-10 fundamental concepts per domain)
|
|
42
|
+
3. **Create a cross-product matrix**: row = concepts from Domain A, column = concepts from Domain B
|
|
43
|
+
4. **For each cell**, ask: "What would it mean to apply A's concept to B's problem?"
|
|
44
|
+
5. **Filter**: Which combinations produce a non-trivial, testable research question?
|
|
45
|
+
6. **Validate structural depth**: Is the connection mechanistic or merely metaphorical?
|
|
46
|
+
|
|
47
|
+
**Cross-Product Example**:
|
|
48
|
+
|
|
49
|
+
| | Caching | Load Balancing | Fault Tolerance |
|
|
50
|
+
|---|---------|---------------|-----------------|
|
|
51
|
+
| **Natural Selection** | Evict least-fit entries | Adaptive allocation via fitness | Population-level redundancy |
|
|
52
|
+
| **Immune Memory** | Learned threat signatures | Distributed detection | Self/non-self discrimination |
|
|
53
|
+
| **Symbiosis** | Cooperative prefetching | Mutualistic resource sharing | Co-dependent resilience |
|
|
54
|
+
|
|
55
|
+
**Quality Test**: A strong bisociation is not a surface metaphor ("the network is like a brain") but a structural mapping where the mechanism transfers ("attention mechanisms implement selective gating analogous to cognitive attention filtering").
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Framework 2: Problem Reformulation (Representational Change)
|
|
60
|
+
|
|
61
|
+
Gestalt psychologists identified that breakthroughs often come not from solving the problem as stated, but from **re-representing the problem itself**. Kaplan and Simon's work on insight shows that changing the problem space is often where creativity lives.
|
|
62
|
+
|
|
63
|
+
**The Key Shift**: From "How do I solve this problem?" to "Am I even thinking about this problem correctly?"
|
|
64
|
+
|
|
65
|
+
**Reformulation Strategies**:
|
|
66
|
+
|
|
67
|
+
| Strategy | Example |
|
|
68
|
+
|----------|---------|
|
|
69
|
+
| **Change the objective** | "Make the algorithm faster" → "Eliminate the need for this computation" |
|
|
70
|
+
| **Change the formalism** | Graph problem → linear algebra problem (spectral methods) |
|
|
71
|
+
| **Change the granularity** | Per-token prediction → per-span prediction |
|
|
72
|
+
| **Change the agent** | "How should the model learn?" → "How should the data teach?" (curriculum learning) |
|
|
73
|
+
| **Change the timescale** | Real-time optimization → amortized inference |
|
|
74
|
+
| **Invert the direction** | Forward simulation → inverse problem (learning from observations) |
|
|
75
|
+
|
|
76
|
+
**Application**: State your current research problem in one sentence. Identify the hidden assumptions — formalism, objective, granularity, agent. For each assumption, generate the alternative: "What if [opposite]?" A reformulation that makes a hard problem easy is often a publishable insight.
|
|
77
|
+
|
|
78
|
+
**Classic CS Examples**:
|
|
79
|
+
- **PageRank**: Reformulated "find important pages" from content analysis to graph eigenvalue problem
|
|
80
|
+
- **Dropout**: Reformulated "prevent overfitting" from regularization to approximate ensemble
|
|
81
|
+
- **Attention**: Reformulated "handle long sequences" from remembering everything to selectively querying
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Framework 3: Analogical Reasoning (Structure-Mapping)
|
|
86
|
+
|
|
87
|
+
Dedre Gentner's **structure-mapping theory**: surface-level analogies are common but weak; **structural or relational analogies** — where the deep causal structure maps across domains — produce the most powerful insights.
|
|
88
|
+
|
|
89
|
+
**Levels of Analogical Depth**:
|
|
90
|
+
|
|
91
|
+
| Level | Description | Value | Example |
|
|
92
|
+
|-------|-------------|-------|---------|
|
|
93
|
+
| **Surface** | Things look similar | Low | "A neural network is like a brain" |
|
|
94
|
+
| **Relational** | Relationships between entities match | Medium | "Attention allocation parallels economic resource allocation" |
|
|
95
|
+
| **Structural** | Deep causal mechanisms map | High | "Diffusion models reverse thermodynamic processes; stat-mech math directly applies" |
|
|
96
|
+
|
|
97
|
+
**Structure-Mapping Workflow**:
|
|
98
|
+
|
|
99
|
+
1. **Describe your problem** using only relational/causal language (strip domain-specific nouns)
|
|
100
|
+
2. **Search for structural matches**: What other systems solve a structurally similar problem? Use the `literature-search` tool to search the source domain.
|
|
101
|
+
3. **Pick the most distant match** with genuine structural fidelity
|
|
102
|
+
4. **Map the solution mechanism**: How does the source domain solve this?
|
|
103
|
+
5. **Transfer and adapt**: What changes when you bring that mechanism into your domain?
|
|
104
|
+
6. **Generate predictions**: The analogy should tell you something you didn't already know — formulate as a concrete validation experiment
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## Framework 4: Constraint Manipulation (Boden's Framework)
|
|
109
|
+
|
|
110
|
+
Margaret Boden's framework distinguishes three forms of creativity:
|
|
111
|
+
|
|
112
|
+
| Type | Operation | CS Example |
|
|
113
|
+
|------|-----------|------------|
|
|
114
|
+
| **Exploratory** | Search within the existing conceptual space | Hyperparameter tuning, architecture search within a fixed paradigm |
|
|
115
|
+
| **Combinational** | Combine elements from different spaces | Multi-task learning, neuro-symbolic methods |
|
|
116
|
+
| **Transformational** | Change the rules of the space itself | Dropping the assumption that training requires labels (self-supervised learning) |
|
|
117
|
+
|
|
118
|
+
**Transformational creativity is the rarest and highest-impact.** It happens when you change what is even considered a valid solution.
|
|
119
|
+
|
|
120
|
+
**Constraint Analysis Workflow**:
|
|
121
|
+
|
|
122
|
+
1. **List the constraints** of your current approach (5-10):
|
|
123
|
+
- Computational, Methodological, Architectural, Evaluative
|
|
124
|
+
2. **Classify each**:
|
|
125
|
+
- **Hard**: Physically or logically necessary (cannot violate)
|
|
126
|
+
- **Soft**: Convention or historical accident (can question)
|
|
127
|
+
- **Hidden**: Not stated but implicitly assumed (most fertile for innovation)
|
|
128
|
+
3. **For each soft/hidden constraint**: What if relaxed? What if tightened? What if replaced entirely?
|
|
129
|
+
4. **The most productive move** is often exposing and dropping a hidden constraint
|
|
130
|
+
|
|
131
|
+
**Classic Constraint Transformations**:
|
|
132
|
+
- "Data must fit in memory" → dropped → streaming algorithms, external memory
|
|
133
|
+
- "Training requires human labels" → dropped → self-supervised learning
|
|
134
|
+
- "Models must be deterministic" → dropped → variational methods, diffusion
|
|
135
|
+
- "Inference must happen in one pass" → dropped → iterative refinement, chain-of-thought
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Framework 5: Negation and Inversion
|
|
140
|
+
|
|
141
|
+
Take a core assumption and negate it. Formalized in De Bono's lateral thinking and the **TRIZ methodology**.
|
|
142
|
+
|
|
143
|
+
**The Pattern**: "What if [widely held assumption] is wrong, unnecessary, or invertible?"
|
|
144
|
+
|
|
145
|
+
**Systematic Negation Workflow**:
|
|
146
|
+
|
|
147
|
+
1. **List 5-10 core assumptions** in the current research area (the things "everyone knows")
|
|
148
|
+
2. **Negate each one** and ask: What system would you build?
|
|
149
|
+
3. **Evaluate each negation**:
|
|
150
|
+
- Incoherent → discard
|
|
151
|
+
- Already explored → use `literature-search` to check if conditions have changed
|
|
152
|
+
- Unexplored and coherent → candidate research direction
|
|
153
|
+
|
|
154
|
+
**Negation Hall of Fame in CS**:
|
|
155
|
+
|
|
156
|
+
| Assumption | Negation | Result |
|
|
157
|
+
|-----------|----------|--------|
|
|
158
|
+
| "We need strong consistency" | What if we don't? | Eventual consistency, CRDTs |
|
|
159
|
+
| "We need exact answers" | What if approximate is fine? | Sketches, LSH, approximate nearest neighbors |
|
|
160
|
+
| "Labels are necessary" | What if we learn without them? | Self-supervised learning, contrastive methods |
|
|
161
|
+
| "More parameters = more compute" | What if we don't use all parameters? | Mixture of Experts, sparse models |
|
|
162
|
+
| "Training and inference are separate" | What if the model keeps learning? | Online learning, test-time training |
|
|
163
|
+
| "Errors must be prevented" | What if we embrace and correct them? | Speculative decoding, self-correction |
|
|
164
|
+
|
|
165
|
+
**TRIZ-Inspired Principles for CS**:
|
|
166
|
+
|
|
167
|
+
| TRIZ Principle | CS Application |
|
|
168
|
+
|---------------|----------------|
|
|
169
|
+
| **Inversion** | Reverse the process (generative vs. discriminative) |
|
|
170
|
+
| **Segmentation** | Break monolithic into modular (microservices, mixture of experts) |
|
|
171
|
+
| **Merging** | Combine separate steps (end-to-end learning) |
|
|
172
|
+
| **Universality** | One component serves multiple functions (multi-task models) |
|
|
173
|
+
| **Nesting** | Place one system inside another (meta-learning) |
|
|
174
|
+
| **Dynamization** | Make static things adaptive (dynamic architectures, adaptive computation) |
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## Framework 6: Abstraction and Generalization Laddering
|
|
179
|
+
|
|
180
|
+
Moving up and down the abstraction ladder is a fundamental creative act. Polya's heuristics: *"Can you solve a more general problem? A more specific one? An analogous one?"*
|
|
181
|
+
|
|
182
|
+
| Move | Question | Outcome |
|
|
183
|
+
|------|----------|---------|
|
|
184
|
+
| **Generalize** | "Is my solution a special case of something broader?" | Framework papers, unifying theories |
|
|
185
|
+
| **Specialize** | "What happens when I add extreme constraints?" | Niche applications, surprising edge cases |
|
|
186
|
+
| **Analogize** | "Where else does this abstract pattern appear?" | Cross-domain transfer (see Framework 3) |
|
|
187
|
+
|
|
188
|
+
**Application**: For any research finding, replace each specific element with a variable. Ask: under what conditions does this hold? If the general principle is novel → that is the contribution. Specialization under extreme constraints reveals the method's true assumptions — failures become key validation questions.
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Framework 7: The Adjacent Possible (Kauffman / Johnson)
|
|
193
|
+
|
|
194
|
+
Stuart Kauffman's concept: innovation happens at the boundary of what is currently reachable — the **adjacent possible**. New ideas become thinkable once their prerequisites exist.
|
|
195
|
+
|
|
196
|
+
**Adjacent Possible Mapping Workflow**:
|
|
197
|
+
|
|
198
|
+
1. **List recent enablers** (use `literature-search` and `web-search` to surface these):
|
|
199
|
+
- New hardware capabilities (longer context, faster inference, new accelerators)
|
|
200
|
+
- New datasets or benchmarks
|
|
201
|
+
- New open-source tools or frameworks
|
|
202
|
+
- New theoretical results
|
|
203
|
+
- New regulatory or social conditions
|
|
204
|
+
2. **For each enabler, ask**: "What was previously impossible or impractical that this now permits?"
|
|
205
|
+
3. **Combine enablers**: The most powerful adjacent possibles arise from the intersection of multiple new enablers
|
|
206
|
+
4. **Check for competition**: If many groups can see the same adjacent possible, speed or a unique angle matters
|
|
207
|
+
|
|
208
|
+
**Timing Signal**: If the idea requires technology that doesn't exist yet → beyond the adjacent possible, park it. If the idea could have been done 3+ years ago → someone probably did, check the literature. The sweet spot is ideas that became feasible in the last 6-18 months.
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Framework 8: Janusian and Dialectical Thinking
|
|
213
|
+
|
|
214
|
+
Albert Rothenberg's studies of eminent creators: **holding two contradictory ideas simultaneously** is a hallmark of creative thinking. This mode doesn't resolve contradictions by choosing a side — it generates new frameworks that transcend the opposition.
|
|
215
|
+
|
|
216
|
+
| Contradiction | Resolution | Impact |
|
|
217
|
+
|--------------|------------|--------|
|
|
218
|
+
| Consistency AND Availability | CAP theorem + practical middle grounds (Raft, CRDTs) | Foundation of distributed systems |
|
|
219
|
+
| Security AND Usability | Zero-knowledge proofs | Enabled private computation |
|
|
220
|
+
| Expressiveness AND Tractability | Probabilistic programming | New programming paradigm |
|
|
221
|
+
| Memorization AND Generalization | Grokking | New understanding of learning dynamics |
|
|
222
|
+
| Compression AND Quality | Neural codecs with learned priors | Redefined compression research |
|
|
223
|
+
|
|
224
|
+
**Dialectical Thinking Workflow**:
|
|
225
|
+
|
|
226
|
+
1. **Identify a binary** in your research area: A vs. B (two approaches, goals, or paradigms treated as opposites)
|
|
227
|
+
2. **Resist choosing a side**. Instead ask:
|
|
228
|
+
- "What would a system look like that achieves both A and B?"
|
|
229
|
+
- "Under what conditions is the A-B trade-off not fundamental?"
|
|
230
|
+
- "Is the opposition an artifact of how we formalized the problem?"
|
|
231
|
+
3. **Seek synthesis**: The resolution often requires a new abstraction that reframes the relationship
|
|
232
|
+
4. **Test the synthesis**: Formulate as a concrete experiment — can you demonstrate empirically that both goals are achievable?
|
|
233
|
+
|
|
234
|
+
---
|
|
235
|
+
|
|
236
|
+
## Combined Creative Thinking Protocol
|
|
237
|
+
|
|
238
|
+
These frameworks are most powerful in combination. Use this protocol for deep creative thinking when individual lenses are insufficient.
|
|
239
|
+
|
|
240
|
+
### Phase 1: Map the Space
|
|
241
|
+
1. **Constraint Manipulation** (F4): List all constraints of the current paradigm. Mark which are hard, soft, hidden.
|
|
242
|
+
2. **Adjacent Possible** (F7): Use `literature-search` and `web-search` to list recent enablers that change the feasibility landscape.
|
|
243
|
+
|
|
244
|
+
Save the constraint map and enabler list as note artifacts.
|
|
245
|
+
|
|
246
|
+
### Phase 2: Generate Disruptions
|
|
247
|
+
3. **Negation** (F5): Negate 3 soft/hidden constraints. What systems emerge?
|
|
248
|
+
4. **Bisociation** (F1): Pick a distant field and create a cross-product matrix with your domain.
|
|
249
|
+
5. **Problem Reformulation** (F2): Restate your problem 3 different ways (change objective, formalism, agent).
|
|
250
|
+
|
|
251
|
+
### Phase 3: Deepen Promising Leads
|
|
252
|
+
6. **Analogical Reasoning** (F3): For each promising idea, find a structural analogy and extract predictions.
|
|
253
|
+
7. **Abstraction Laddering** (F6): Move each idea up (generalize) and down (specialize).
|
|
254
|
+
8. **Janusian Thinking** (F8): Identify any tensions. Can you synthesize rather than choose?
|
|
255
|
+
|
|
256
|
+
### Phase 4: Evaluate
|
|
257
|
+
Apply the two-sentence test (from `brainstorming-research-ideas`, Framework 10):
|
|
258
|
+
> "**[Domain] currently struggles with [problem] because [reason].** We [approach] by [mechanism], which works because [insight]."
|
|
259
|
+
|
|
260
|
+
Any idea that survives all four phases → present to the user as a refined research direction with concrete next steps.
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## Common Creative Blocks and Unblocking Strategies
|
|
265
|
+
|
|
266
|
+
| Block | Symptom | Framework to Apply |
|
|
267
|
+
|-------|---------|-------------------|
|
|
268
|
+
| **Fixation** | Cannot stop thinking about the problem one way | Problem Reformulation (F2) — force a different representation |
|
|
269
|
+
| **Tunnel vision** | All ideas come from the same literature cluster | Bisociation (F1) or Analogical Reasoning (F3) — import from elsewhere |
|
|
270
|
+
| **Self-censoring** | Dismissing ideas as implausible before exploring | Negation (F5) — implausible is the point; evaluate after generating |
|
|
271
|
+
| **Incrementalism** | Every candidate is "+2% on benchmark X" | Constraint Manipulation (F4) — change the rules, not the parameters |
|
|
272
|
+
| **Analysis paralysis** | Too many options, cannot commit a direction | Adjacent Possible (F7) — what is feasible right now given project constraints? |
|
|
273
|
+
| **False dichotomy** | Stuck choosing between two approaches | Janusian Thinking (F8) — seek synthesis, not selection |
|
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: matplotlib
|
|
3
|
+
description: Low-level plotting library for full customization. Use when you need fine-grained control over every plot element, creating novel plot types, or integrating with specific scientific workflows. Export to PNG/PDF/SVG for publication. For quick statistical plots use seaborn; for interactive plots use plotly; for publication-ready multi-panel figures with journal styling, use scientific-visualization.
|
|
4
|
+
category: Visualization
|
|
5
|
+
tags: [science, visualization]
|
|
6
|
+
triggers: [matplotlib, plt.plot, custom plot, plot from scratch, fine-grained plot control]
|
|
7
|
+
license: https://github.com/matplotlib/matplotlib/tree/main/LICENSE
|
|
8
|
+
metadata:
|
|
9
|
+
skill-author: K-Dense Inc.
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Matplotlib
|
|
13
|
+
|
|
14
|
+
## Overview
|
|
15
|
+
|
|
16
|
+
Matplotlib is Python's foundational visualization library for creating static, animated, and interactive plots. This skill provides guidance on using matplotlib effectively, covering both the pyplot interface (MATLAB-style) and the object-oriented API (Figure/Axes), along with best practices for creating publication-quality visualizations.
|
|
17
|
+
|
|
18
|
+
## When to Use This Skill
|
|
19
|
+
|
|
20
|
+
This skill should be used when:
|
|
21
|
+
- Creating any type of plot or chart (line, scatter, bar, histogram, heatmap, contour, etc.)
|
|
22
|
+
- Generating scientific or statistical visualizations
|
|
23
|
+
- Customizing plot appearance (colors, styles, labels, legends)
|
|
24
|
+
- Creating multi-panel figures with subplots
|
|
25
|
+
- Exporting visualizations to various formats (PNG, PDF, SVG, etc.)
|
|
26
|
+
- Building interactive plots or animations
|
|
27
|
+
- Working with 3D visualizations
|
|
28
|
+
- Integrating plots into Jupyter notebooks or GUI applications
|
|
29
|
+
|
|
30
|
+
## Core Concepts
|
|
31
|
+
|
|
32
|
+
### The Matplotlib Hierarchy
|
|
33
|
+
|
|
34
|
+
Matplotlib uses a hierarchical structure of objects:
|
|
35
|
+
|
|
36
|
+
1. **Figure** - The top-level container for all plot elements
|
|
37
|
+
2. **Axes** - The actual plotting area where data is displayed (one Figure can contain multiple Axes)
|
|
38
|
+
3. **Artist** - Everything visible on the figure (lines, text, ticks, etc.)
|
|
39
|
+
4. **Axis** - The number line objects (x-axis, y-axis) that handle ticks and labels
|
|
40
|
+
|
|
41
|
+
### Two Interfaces
|
|
42
|
+
|
|
43
|
+
**1. pyplot Interface (Implicit, MATLAB-style)**
|
|
44
|
+
```python
|
|
45
|
+
import matplotlib.pyplot as plt
|
|
46
|
+
|
|
47
|
+
plt.plot([1, 2, 3, 4])
|
|
48
|
+
plt.ylabel('some numbers')
|
|
49
|
+
plt.show()
|
|
50
|
+
```
|
|
51
|
+
- Convenient for quick, simple plots
|
|
52
|
+
- Maintains state automatically
|
|
53
|
+
- Good for interactive work and simple scripts
|
|
54
|
+
|
|
55
|
+
**2. Object-Oriented Interface (Explicit)**
|
|
56
|
+
```python
|
|
57
|
+
import matplotlib.pyplot as plt
|
|
58
|
+
|
|
59
|
+
fig, ax = plt.subplots()
|
|
60
|
+
ax.plot([1, 2, 3, 4])
|
|
61
|
+
ax.set_ylabel('some numbers')
|
|
62
|
+
plt.show()
|
|
63
|
+
```
|
|
64
|
+
- **Recommended for most use cases**
|
|
65
|
+
- More explicit control over figure and axes
|
|
66
|
+
- Better for complex figures with multiple subplots
|
|
67
|
+
- Easier to maintain and debug
|
|
68
|
+
|
|
69
|
+
## Common Workflows
|
|
70
|
+
|
|
71
|
+
### 1. Basic Plot Creation
|
|
72
|
+
|
|
73
|
+
**Single plot workflow:**
|
|
74
|
+
```python
|
|
75
|
+
import matplotlib.pyplot as plt
|
|
76
|
+
import numpy as np
|
|
77
|
+
|
|
78
|
+
# Create figure and axes (OO interface - RECOMMENDED)
|
|
79
|
+
fig, ax = plt.subplots(figsize=(10, 6))
|
|
80
|
+
|
|
81
|
+
# Generate and plot data
|
|
82
|
+
x = np.linspace(0, 2*np.pi, 100)
|
|
83
|
+
ax.plot(x, np.sin(x), label='sin(x)')
|
|
84
|
+
ax.plot(x, np.cos(x), label='cos(x)')
|
|
85
|
+
|
|
86
|
+
# Customize
|
|
87
|
+
ax.set_xlabel('x')
|
|
88
|
+
ax.set_ylabel('y')
|
|
89
|
+
ax.set_title('Trigonometric Functions')
|
|
90
|
+
ax.legend()
|
|
91
|
+
ax.grid(True, alpha=0.3)
|
|
92
|
+
|
|
93
|
+
# Save and/or display
|
|
94
|
+
plt.savefig('plot.png', dpi=300, bbox_inches='tight')
|
|
95
|
+
plt.show()
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 2. Multiple Subplots
|
|
99
|
+
|
|
100
|
+
**Creating subplot layouts:**
|
|
101
|
+
```python
|
|
102
|
+
# Method 1: Regular grid
|
|
103
|
+
fig, axes = plt.subplots(2, 2, figsize=(12, 10))
|
|
104
|
+
axes[0, 0].plot(x, y1)
|
|
105
|
+
axes[0, 1].scatter(x, y2)
|
|
106
|
+
axes[1, 0].bar(categories, values)
|
|
107
|
+
axes[1, 1].hist(data, bins=30)
|
|
108
|
+
|
|
109
|
+
# Method 2: Mosaic layout (more flexible)
|
|
110
|
+
fig, axes = plt.subplot_mosaic([['left', 'right_top'],
|
|
111
|
+
['left', 'right_bottom']],
|
|
112
|
+
figsize=(10, 8))
|
|
113
|
+
axes['left'].plot(x, y)
|
|
114
|
+
axes['right_top'].scatter(x, y)
|
|
115
|
+
axes['right_bottom'].hist(data)
|
|
116
|
+
|
|
117
|
+
# Method 3: GridSpec (maximum control)
|
|
118
|
+
from matplotlib.gridspec import GridSpec
|
|
119
|
+
fig = plt.figure(figsize=(12, 8))
|
|
120
|
+
gs = GridSpec(3, 3, figure=fig)
|
|
121
|
+
ax1 = fig.add_subplot(gs[0, :]) # Top row, all columns
|
|
122
|
+
ax2 = fig.add_subplot(gs[1:, 0]) # Bottom two rows, first column
|
|
123
|
+
ax3 = fig.add_subplot(gs[1:, 1:]) # Bottom two rows, last two columns
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### 3. Plot Types and Use Cases
|
|
127
|
+
|
|
128
|
+
**Line plots** - Time series, continuous data, trends
|
|
129
|
+
```python
|
|
130
|
+
ax.plot(x, y, linewidth=2, linestyle='--', marker='o', color='blue')
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
**Scatter plots** - Relationships between variables, correlations
|
|
134
|
+
```python
|
|
135
|
+
ax.scatter(x, y, s=sizes, c=colors, alpha=0.6, cmap='viridis')
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**Bar charts** - Categorical comparisons
|
|
139
|
+
```python
|
|
140
|
+
ax.bar(categories, values, color='steelblue', edgecolor='black')
|
|
141
|
+
# For horizontal bars:
|
|
142
|
+
ax.barh(categories, values)
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**Histograms** - Distributions
|
|
146
|
+
```python
|
|
147
|
+
ax.hist(data, bins=30, edgecolor='black', alpha=0.7)
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**Heatmaps** - Matrix data, correlations
|
|
151
|
+
```python
|
|
152
|
+
im = ax.imshow(matrix, cmap='coolwarm', aspect='auto')
|
|
153
|
+
plt.colorbar(im, ax=ax)
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
**Contour plots** - 3D data on 2D plane
|
|
157
|
+
```python
|
|
158
|
+
contour = ax.contour(X, Y, Z, levels=10)
|
|
159
|
+
ax.clabel(contour, inline=True, fontsize=8)
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
**Box plots** - Statistical distributions
|
|
163
|
+
```python
|
|
164
|
+
ax.boxplot([data1, data2, data3], labels=['A', 'B', 'C'])
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
**Violin plots** - Distribution densities
|
|
168
|
+
```python
|
|
169
|
+
ax.violinplot([data1, data2, data3], positions=[1, 2, 3])
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
For comprehensive plot type examples and variations, refer to `@skill/references/plot_types.md`.
|
|
173
|
+
|
|
174
|
+
### 4. Styling and Customization
|
|
175
|
+
|
|
176
|
+
**Color specification methods:**
|
|
177
|
+
- Named colors: `'red'`, `'blue'`, `'steelblue'`
|
|
178
|
+
- Hex codes: `'#FF5733'`
|
|
179
|
+
- RGB tuples: `(0.1, 0.2, 0.3)`
|
|
180
|
+
- Colormaps: `cmap='viridis'`, `cmap='plasma'`, `cmap='coolwarm'`
|
|
181
|
+
|
|
182
|
+
**Using style sheets:**
|
|
183
|
+
```python
|
|
184
|
+
plt.style.use('seaborn-v0_8-darkgrid') # Apply predefined style
|
|
185
|
+
# Available styles: 'ggplot', 'bmh', 'fivethirtyeight', etc.
|
|
186
|
+
print(plt.style.available) # List all available styles
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
**Customizing with rcParams:**
|
|
190
|
+
```python
|
|
191
|
+
plt.rcParams['font.size'] = 12
|
|
192
|
+
plt.rcParams['axes.labelsize'] = 14
|
|
193
|
+
plt.rcParams['axes.titlesize'] = 16
|
|
194
|
+
plt.rcParams['xtick.labelsize'] = 10
|
|
195
|
+
plt.rcParams['ytick.labelsize'] = 10
|
|
196
|
+
plt.rcParams['legend.fontsize'] = 12
|
|
197
|
+
plt.rcParams['figure.titlesize'] = 18
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**Text and annotations:**
|
|
201
|
+
```python
|
|
202
|
+
ax.text(x, y, 'annotation', fontsize=12, ha='center')
|
|
203
|
+
ax.annotate('important point', xy=(x, y), xytext=(x+1, y+1),
|
|
204
|
+
arrowprops=dict(arrowstyle='->', color='red'))
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
For detailed styling options and colormap guidelines, see `@skill/references/styling_guide.md`.
|
|
208
|
+
|
|
209
|
+
### 5. Saving Figures
|
|
210
|
+
|
|
211
|
+
**Export to various formats:**
|
|
212
|
+
```python
|
|
213
|
+
# High-resolution PNG for presentations/papers
|
|
214
|
+
plt.savefig('figure.png', dpi=300, bbox_inches='tight', facecolor='white')
|
|
215
|
+
|
|
216
|
+
# Vector format for publications (scalable)
|
|
217
|
+
plt.savefig('figure.pdf', bbox_inches='tight')
|
|
218
|
+
plt.savefig('figure.svg', bbox_inches='tight')
|
|
219
|
+
|
|
220
|
+
# Transparent background
|
|
221
|
+
plt.savefig('figure.png', dpi=300, bbox_inches='tight', transparent=True)
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
**Important parameters:**
|
|
225
|
+
- `dpi`: Resolution (300 for publications, 150 for web, 72 for screen)
|
|
226
|
+
- `bbox_inches='tight'`: Removes excess whitespace
|
|
227
|
+
- `facecolor='white'`: Ensures white background (useful for transparent themes)
|
|
228
|
+
- `transparent=True`: Transparent background
|
|
229
|
+
|
|
230
|
+
### 6. Working with 3D Plots
|
|
231
|
+
|
|
232
|
+
```python
|
|
233
|
+
from mpl_toolkits.mplot3d import Axes3D
|
|
234
|
+
|
|
235
|
+
fig = plt.figure(figsize=(10, 8))
|
|
236
|
+
ax = fig.add_subplot(111, projection='3d')
|
|
237
|
+
|
|
238
|
+
# Surface plot
|
|
239
|
+
ax.plot_surface(X, Y, Z, cmap='viridis')
|
|
240
|
+
|
|
241
|
+
# 3D scatter
|
|
242
|
+
ax.scatter(x, y, z, c=colors, marker='o')
|
|
243
|
+
|
|
244
|
+
# 3D line plot
|
|
245
|
+
ax.plot(x, y, z, linewidth=2)
|
|
246
|
+
|
|
247
|
+
# Labels
|
|
248
|
+
ax.set_xlabel('X Label')
|
|
249
|
+
ax.set_ylabel('Y Label')
|
|
250
|
+
ax.set_zlabel('Z Label')
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
## Best Practices
|
|
254
|
+
|
|
255
|
+
### 1. Interface Selection
|
|
256
|
+
- **Use the object-oriented interface** (fig, ax = plt.subplots()) for production code
|
|
257
|
+
- Reserve pyplot interface for quick interactive exploration only
|
|
258
|
+
- Always create figures explicitly rather than relying on implicit state
|
|
259
|
+
|
|
260
|
+
### 2. Figure Size and DPI
|
|
261
|
+
- Set figsize at creation: `fig, ax = plt.subplots(figsize=(10, 6))`
|
|
262
|
+
- Use appropriate DPI for output medium:
|
|
263
|
+
- Screen/notebook: 72-100 dpi
|
|
264
|
+
- Web: 150 dpi
|
|
265
|
+
- Print/publications: 300 dpi
|
|
266
|
+
|
|
267
|
+
### 3. Layout Management
|
|
268
|
+
- Use `constrained_layout=True` or `tight_layout()` to prevent overlapping elements
|
|
269
|
+
- `fig, ax = plt.subplots(constrained_layout=True)` is recommended for automatic spacing
|
|
270
|
+
|
|
271
|
+
### 4. Colormap Selection
|
|
272
|
+
- **Sequential** (viridis, plasma, inferno): Ordered data with consistent progression
|
|
273
|
+
- **Diverging** (coolwarm, RdBu): Data with meaningful center point (e.g., zero)
|
|
274
|
+
- **Qualitative** (tab10, Set3): Categorical/nominal data
|
|
275
|
+
- Avoid rainbow colormaps (jet) - they are not perceptually uniform
|
|
276
|
+
|
|
277
|
+
### 5. Accessibility
|
|
278
|
+
- Use colorblind-friendly colormaps (viridis, cividis)
|
|
279
|
+
- Add patterns/hatching for bar charts in addition to colors
|
|
280
|
+
- Ensure sufficient contrast between elements
|
|
281
|
+
- Include descriptive labels and legends
|
|
282
|
+
|
|
283
|
+
### 6. Performance
|
|
284
|
+
- For large datasets, use `rasterized=True` in plot calls to reduce file size
|
|
285
|
+
- Use appropriate data reduction before plotting (e.g., downsample dense time series)
|
|
286
|
+
- For animations, use blitting for better performance
|
|
287
|
+
|
|
288
|
+
### 7. Code Organization
|
|
289
|
+
```python
|
|
290
|
+
# Good practice: Clear structure
|
|
291
|
+
def create_analysis_plot(data, title):
|
|
292
|
+
"""Create standardized analysis plot."""
|
|
293
|
+
fig, ax = plt.subplots(figsize=(10, 6), constrained_layout=True)
|
|
294
|
+
|
|
295
|
+
# Plot data
|
|
296
|
+
ax.plot(data['x'], data['y'], linewidth=2)
|
|
297
|
+
|
|
298
|
+
# Customize
|
|
299
|
+
ax.set_xlabel('X Axis Label', fontsize=12)
|
|
300
|
+
ax.set_ylabel('Y Axis Label', fontsize=12)
|
|
301
|
+
ax.set_title(title, fontsize=14, fontweight='bold')
|
|
302
|
+
ax.grid(True, alpha=0.3)
|
|
303
|
+
|
|
304
|
+
return fig, ax
|
|
305
|
+
|
|
306
|
+
# Use the function
|
|
307
|
+
fig, ax = create_analysis_plot(my_data, 'My Analysis')
|
|
308
|
+
plt.savefig('analysis.png', dpi=300, bbox_inches='tight')
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
## Quick Reference Scripts
|
|
312
|
+
|
|
313
|
+
This skill includes helper scripts in the `@skill/scripts/` directory:
|
|
314
|
+
|
|
315
|
+
### `plot_template.py`
|
|
316
|
+
Template script demonstrating various plot types with best practices. Use this as a starting point for creating new visualizations.
|
|
317
|
+
|
|
318
|
+
**Usage:**
|
|
319
|
+
```bash
|
|
320
|
+
python @skill/scripts/plot_template.py
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
### `style_configurator.py`
|
|
324
|
+
Interactive utility to configure matplotlib style preferences and generate custom style sheets.
|
|
325
|
+
|
|
326
|
+
**Usage:**
|
|
327
|
+
```bash
|
|
328
|
+
python @skill/scripts/style_configurator.py
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
## Detailed References
|
|
332
|
+
|
|
333
|
+
For comprehensive information, consult the reference documents:
|
|
334
|
+
|
|
335
|
+
- **`@skill/references/plot_types.md`** - Complete catalog of plot types with code examples and use cases
|
|
336
|
+
- **`@skill/references/styling_guide.md`** - Detailed styling options, colormaps, and customization
|
|
337
|
+
- **`@skill/references/api_reference.md`** - Core classes and methods reference
|
|
338
|
+
- **`@skill/references/common_issues.md`** - Troubleshooting guide for common problems
|
|
339
|
+
|
|
340
|
+
## Integration with Other Tools
|
|
341
|
+
|
|
342
|
+
Matplotlib integrates well with:
|
|
343
|
+
- **NumPy/Pandas** - Direct plotting from arrays and DataFrames
|
|
344
|
+
- **Seaborn** - High-level statistical visualizations built on matplotlib
|
|
345
|
+
- **Jupyter** - Interactive plotting with `%matplotlib inline` or `%matplotlib widget`
|
|
346
|
+
- **GUI frameworks** - Embedding in Tkinter, Qt, wxPython applications
|
|
347
|
+
|
|
348
|
+
## Common Gotchas
|
|
349
|
+
|
|
350
|
+
1. **Overlapping elements**: Use `constrained_layout=True` or `tight_layout()`
|
|
351
|
+
2. **State confusion**: Use OO interface to avoid pyplot state machine issues
|
|
352
|
+
3. **Memory issues with many figures**: Close figures explicitly with `plt.close(fig)`
|
|
353
|
+
4. **Font warnings**: Install fonts or suppress warnings with `plt.rcParams['font.sans-serif']`
|
|
354
|
+
5. **DPI confusion**: Remember that figsize is in inches, not pixels: `pixels = dpi * inches`
|
|
355
|
+
|
|
356
|
+
## Additional Resources
|
|
357
|
+
|
|
358
|
+
- Official documentation: https://matplotlib.org/
|
|
359
|
+
- Gallery: https://matplotlib.org/stable/gallery/index.html
|
|
360
|
+
- Cheatsheets: https://matplotlib.org/cheatsheets/
|
|
361
|
+
- Tutorials: https://matplotlib.org/stable/tutorials/index.html
|