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,285 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: data-analysis-skill
|
|
3
|
+
name: Data Analysis
|
|
4
|
+
shortDescription: Python data analysis, visualization, statistics, and ML modeling
|
|
5
|
+
category: Data & Analysis
|
|
6
|
+
tools: [data-analyze]
|
|
7
|
+
loadingStrategy: lazy
|
|
8
|
+
tags: [data, analysis, python, visualization, statistics, ml]
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
Python data analysis guidance:
|
|
12
|
+
- **Runtime Variables**: Use DATA_FILE, FIGURES_DIR, TABLES_DIR, DATA_DIR, RESULTS_FILE (pre-defined)
|
|
13
|
+
- **STRICT OUTPUT RULE**: Generate ONLY what user requested (count nouns = count outputs)
|
|
14
|
+
- **Results Manifest**: Always call write_results() at end with outputs and summary
|
|
15
|
+
- **No Extras**: No bonus plots, summary tables, or supplementary files unless explicitly requested
|
|
16
|
+
|
|
17
|
+
## Procedures
|
|
18
|
+
|
|
19
|
+
### Critical Path Rules
|
|
20
|
+
|
|
21
|
+
#### Pre-defined Runtime Variables
|
|
22
|
+
The following variables are defined BEFORE your code runs:
|
|
23
|
+
```python
|
|
24
|
+
DATA_FILE # Absolute path to input data file
|
|
25
|
+
FIGURES_DIR # Absolute path for saving figures
|
|
26
|
+
TABLES_DIR # Absolute path for saving CSV tables
|
|
27
|
+
DATA_DIR # Absolute path for transformed data
|
|
28
|
+
RESULTS_FILE # Absolute path for results manifest JSON
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
#### Path Usage Rules (MUST FOLLOW)
|
|
32
|
+
- Use `DATA_FILE` to read input: `pd.read_csv(DATA_FILE)`
|
|
33
|
+
- Use `os.path.join(FIGURES_DIR, "name.png")` for outputs
|
|
34
|
+
- Do NOT compute or derive paths
|
|
35
|
+
- Do NOT use `os.path.dirname(__file__)`
|
|
36
|
+
- Do NOT hardcode any file paths
|
|
37
|
+
- Do NOT save to directories other than the pre-defined ones
|
|
38
|
+
|
|
39
|
+
### STRICT MINIMAL OUTPUT RULE
|
|
40
|
+
|
|
41
|
+
**This is critical—violation is a failure.**
|
|
42
|
+
|
|
43
|
+
1. Count the nouns in user request:
|
|
44
|
+
- "a plot" = 1 figure
|
|
45
|
+
- "two charts" = 2 figures
|
|
46
|
+
- "statistics" = 1 summary table
|
|
47
|
+
|
|
48
|
+
2. Generate EXACTLY that many outputs:
|
|
49
|
+
- User asks for "a plot" → produce 1 PNG, not 2, not 5
|
|
50
|
+
- User asks for "statistics" → produce 1 CSV, not 10
|
|
51
|
+
|
|
52
|
+
3. Before every `plt.savefig()` or `df.to_csv()`:
|
|
53
|
+
- Ask: "Did the user request THIS specific output?"
|
|
54
|
+
- If NO → DELETE that code
|
|
55
|
+
|
|
56
|
+
4. Do NOT create:
|
|
57
|
+
- Summary tables unless requested
|
|
58
|
+
- Intermediate DataFrames as CSV
|
|
59
|
+
- "Bonus" outputs like activity plots
|
|
60
|
+
- Supplementary analyses
|
|
61
|
+
|
|
62
|
+
### Results Manifest
|
|
63
|
+
|
|
64
|
+
Always call `write_results()` at the end:
|
|
65
|
+
|
|
66
|
+
```python
|
|
67
|
+
write_results(
|
|
68
|
+
outputs=[
|
|
69
|
+
{
|
|
70
|
+
"path": os.path.join(FIGURES_DIR, "scatter.png"),
|
|
71
|
+
"type": "figure",
|
|
72
|
+
"title": "X vs Y Scatter Plot",
|
|
73
|
+
"description": "Correlation visualization", # optional
|
|
74
|
+
"tags": ["correlation", "scatter"] # optional
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"path": os.path.join(TABLES_DIR, "stats.csv"),
|
|
78
|
+
"type": "table",
|
|
79
|
+
"title": "Summary Statistics"
|
|
80
|
+
}
|
|
81
|
+
],
|
|
82
|
+
summary={
|
|
83
|
+
"correlation": 0.85,
|
|
84
|
+
"n_rows": 1000,
|
|
85
|
+
"key_finding": "Strong positive correlation"
|
|
86
|
+
}
|
|
87
|
+
)
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Analysis Tasks
|
|
91
|
+
|
|
92
|
+
#### analyze (Statistical Analysis)
|
|
93
|
+
- Compute only the statistics explicitly requested by the user
|
|
94
|
+
- Identify correlations/outliers only when requested
|
|
95
|
+
- Print key findings to stdout
|
|
96
|
+
- Save summary as CSV table only if the user asked for file output
|
|
97
|
+
|
|
98
|
+
#### visualize (Data Visualization)
|
|
99
|
+
- Create appropriate plots for data types
|
|
100
|
+
- Use matplotlib + seaborn for publication quality
|
|
101
|
+
- Add titles, axis labels, legends
|
|
102
|
+
- Use clean style (seaborn whitegrid)
|
|
103
|
+
- Save as PNG (never plt.show())
|
|
104
|
+
|
|
105
|
+
#### transform (Data Transformation)
|
|
106
|
+
- Clean, reshape, or transform data
|
|
107
|
+
- Handle missing values, type conversions
|
|
108
|
+
- Save transformed dataset as CSV only when requested
|
|
109
|
+
- Print summary of changes
|
|
110
|
+
|
|
111
|
+
#### model (Statistical Modeling)
|
|
112
|
+
- Build statistical/ML models (sklearn, statsmodels)
|
|
113
|
+
- Report performance metrics
|
|
114
|
+
- Save results summary as CSV only when requested
|
|
115
|
+
- Print key metrics to stdout
|
|
116
|
+
|
|
117
|
+
### Code Standards
|
|
118
|
+
|
|
119
|
+
#### Required Setup
|
|
120
|
+
```python
|
|
121
|
+
import os
|
|
122
|
+
import json
|
|
123
|
+
import pandas as pd
|
|
124
|
+
import numpy as np
|
|
125
|
+
import matplotlib
|
|
126
|
+
matplotlib.use('Agg') # Non-interactive backend
|
|
127
|
+
import matplotlib.pyplot as plt
|
|
128
|
+
import seaborn as sns
|
|
129
|
+
import warnings
|
|
130
|
+
warnings.filterwarnings('ignore')
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
#### Figure Best Practices
|
|
134
|
+
```python
|
|
135
|
+
plt.figure(figsize=(10, 6), dpi=150)
|
|
136
|
+
# ... plotting code ...
|
|
137
|
+
plt.tight_layout()
|
|
138
|
+
plt.savefig(os.path.join(FIGURES_DIR, "name.png"))
|
|
139
|
+
plt.close() # Always close after saving
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
#### Data Quality Checks
|
|
143
|
+
```python
|
|
144
|
+
# Check for missing values
|
|
145
|
+
print(f"Missing values: {df.isnull().sum().sum()}")
|
|
146
|
+
|
|
147
|
+
# Check data types
|
|
148
|
+
print(df.dtypes)
|
|
149
|
+
|
|
150
|
+
# Basic statistics
|
|
151
|
+
print(df.describe())
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Examples
|
|
155
|
+
|
|
156
|
+
### Single Plot Request
|
|
157
|
+
|
|
158
|
+
User: "Create a scatter plot of column A vs column B"
|
|
159
|
+
|
|
160
|
+
```python
|
|
161
|
+
import os
|
|
162
|
+
import pandas as pd
|
|
163
|
+
import matplotlib
|
|
164
|
+
matplotlib.use('Agg')
|
|
165
|
+
import matplotlib.pyplot as plt
|
|
166
|
+
import seaborn as sns
|
|
167
|
+
|
|
168
|
+
# Read data
|
|
169
|
+
df = pd.read_csv(DATA_FILE)
|
|
170
|
+
|
|
171
|
+
# Create the ONE requested plot
|
|
172
|
+
plt.figure(figsize=(10, 6), dpi=150)
|
|
173
|
+
sns.scatterplot(data=df, x='A', y='B')
|
|
174
|
+
plt.title('A vs B')
|
|
175
|
+
plt.xlabel('A')
|
|
176
|
+
plt.ylabel('B')
|
|
177
|
+
plt.tight_layout()
|
|
178
|
+
plt.savefig(os.path.join(FIGURES_DIR, 'scatter_a_vs_b.png'))
|
|
179
|
+
plt.close()
|
|
180
|
+
|
|
181
|
+
# Write results manifest
|
|
182
|
+
write_results(
|
|
183
|
+
outputs=[
|
|
184
|
+
{"path": os.path.join(FIGURES_DIR, 'scatter_a_vs_b.png'), "type": "figure", "title": "A vs B Scatter"}
|
|
185
|
+
],
|
|
186
|
+
summary={"correlation": df['A'].corr(df['B'])}
|
|
187
|
+
)
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### Statistics Request
|
|
191
|
+
|
|
192
|
+
User: "Calculate summary statistics for the dataset"
|
|
193
|
+
|
|
194
|
+
```python
|
|
195
|
+
import os
|
|
196
|
+
import pandas as pd
|
|
197
|
+
|
|
198
|
+
df = pd.read_csv(DATA_FILE)
|
|
199
|
+
|
|
200
|
+
# Calculate statistics
|
|
201
|
+
stats = df.describe()
|
|
202
|
+
stats.to_csv(os.path.join(TABLES_DIR, 'summary_stats.csv'))
|
|
203
|
+
|
|
204
|
+
# Print to stdout
|
|
205
|
+
print("Summary Statistics:")
|
|
206
|
+
print(stats)
|
|
207
|
+
|
|
208
|
+
write_results(
|
|
209
|
+
outputs=[
|
|
210
|
+
{"path": os.path.join(TABLES_DIR, 'summary_stats.csv'), "type": "table", "title": "Summary Statistics"}
|
|
211
|
+
],
|
|
212
|
+
summary={"n_rows": len(df), "n_cols": len(df.columns)}
|
|
213
|
+
)
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### Anti-Pattern: Over-Generation
|
|
217
|
+
|
|
218
|
+
User: "Create a histogram of values"
|
|
219
|
+
|
|
220
|
+
BAD (creates 5 outputs for 1 request):
|
|
221
|
+
```python
|
|
222
|
+
# Histogram
|
|
223
|
+
plt.savefig('histogram.png')
|
|
224
|
+
# Box plot (NOT REQUESTED)
|
|
225
|
+
plt.savefig('boxplot.png')
|
|
226
|
+
# Summary stats (NOT REQUESTED)
|
|
227
|
+
stats.to_csv('stats.csv')
|
|
228
|
+
# Data sample (NOT REQUESTED)
|
|
229
|
+
df.head(100).to_csv('sample.csv')
|
|
230
|
+
# Correlation matrix (NOT REQUESTED)
|
|
231
|
+
plt.savefig('correlation.png')
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
GOOD (creates exactly 1 output):
|
|
235
|
+
```python
|
|
236
|
+
plt.figure(figsize=(10, 6), dpi=150)
|
|
237
|
+
plt.hist(df['values'], bins=30, edgecolor='black')
|
|
238
|
+
plt.title('Distribution of Values')
|
|
239
|
+
plt.xlabel('Value')
|
|
240
|
+
plt.ylabel('Frequency')
|
|
241
|
+
plt.tight_layout()
|
|
242
|
+
plt.savefig(os.path.join(FIGURES_DIR, 'histogram.png'))
|
|
243
|
+
plt.close()
|
|
244
|
+
|
|
245
|
+
write_results(
|
|
246
|
+
outputs=[{"path": os.path.join(FIGURES_DIR, 'histogram.png'), "type": "figure", "title": "Value Distribution"}]
|
|
247
|
+
)
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
## Troubleshooting
|
|
251
|
+
|
|
252
|
+
### "FileNotFoundError for data file"
|
|
253
|
+
- Use DATA_FILE variable, not hardcoded path
|
|
254
|
+
- Check: `print(DATA_FILE)` to verify path
|
|
255
|
+
- Ensure file exists before reading
|
|
256
|
+
|
|
257
|
+
### "Permission denied saving figure"
|
|
258
|
+
- Use FIGURES_DIR, TABLES_DIR, DATA_DIR only
|
|
259
|
+
- Do not save to arbitrary directories
|
|
260
|
+
- Check directory exists: `os.makedirs(FIGURES_DIR, exist_ok=True)`
|
|
261
|
+
|
|
262
|
+
### "Figure not appearing in results"
|
|
263
|
+
- Call `plt.close()` after `plt.savefig()`
|
|
264
|
+
- Use `matplotlib.use('Agg')` before importing pyplot
|
|
265
|
+
- Include figure in write_results() outputs list
|
|
266
|
+
|
|
267
|
+
### "Results manifest missing"
|
|
268
|
+
- Always call write_results() at end of script
|
|
269
|
+
- Check RESULTS_FILE path is used correctly
|
|
270
|
+
- Ensure outputs list includes all generated files
|
|
271
|
+
|
|
272
|
+
### "Too many outputs generated"
|
|
273
|
+
- Re-read user request: count the nouns
|
|
274
|
+
- Delete any code that creates unrequested outputs
|
|
275
|
+
- Ask: "Did user ask for THIS?" for each savefig/to_csv
|
|
276
|
+
|
|
277
|
+
### "Plot quality issues"
|
|
278
|
+
- Set `dpi=150` for good resolution
|
|
279
|
+
- Use `plt.tight_layout()` to prevent clipping
|
|
280
|
+
- Add proper titles and labels
|
|
281
|
+
|
|
282
|
+
### "Memory issues with large data"
|
|
283
|
+
- Use chunked reading: `pd.read_csv(DATA_FILE, chunksize=10000)`
|
|
284
|
+
- Select only needed columns
|
|
285
|
+
- Use appropriate dtypes: `dtype={'col': 'category'}`
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Build-time script: reads SKILL.md files and generates _generated.ts
|
|
4
|
+
* with inlined Markdown content as string constants.
|
|
5
|
+
*
|
|
6
|
+
* This eliminates all runtime filesystem reads, making skills work
|
|
7
|
+
* identically in unbundled ESM (tsx/node) and bundled (electron-vite).
|
|
8
|
+
*
|
|
9
|
+
* SKILL.md files remain the single source of truth.
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* node examples/research-pilot/skills/generate-skill-content.mjs
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { readFileSync, writeFileSync, readdirSync, statSync } from 'node:fs'
|
|
16
|
+
import { join, dirname } from 'node:path'
|
|
17
|
+
import { fileURLToPath } from 'node:url'
|
|
18
|
+
|
|
19
|
+
const __dirname = dirname(fileURLToPath(import.meta.url))
|
|
20
|
+
|
|
21
|
+
// Auto-discover: any subdirectory containing SKILL.md (exclude default-project-skills)
|
|
22
|
+
const skillDirs = readdirSync(__dirname).filter(name => {
|
|
23
|
+
if (name === 'default-project-skills') return false
|
|
24
|
+
if (name.startsWith('_') || name.startsWith('.')) return false
|
|
25
|
+
const fullPath = join(__dirname, name)
|
|
26
|
+
return statSync(fullPath).isDirectory() && (() => {
|
|
27
|
+
try { readFileSync(join(fullPath, 'SKILL.md'), 'utf-8'); return true } catch { return false }
|
|
28
|
+
})()
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
const exports = []
|
|
32
|
+
const entries = []
|
|
33
|
+
|
|
34
|
+
for (const dir of skillDirs.sort()) {
|
|
35
|
+
const content = readFileSync(join(__dirname, dir, 'SKILL.md'), 'utf-8')
|
|
36
|
+
const varName = dir.replace(/-([a-z])/g, (_, c) => c.toUpperCase()) + 'Content'
|
|
37
|
+
exports.push(`export const ${varName} = ${JSON.stringify(content)}`)
|
|
38
|
+
entries.push(` '${dir}': ${varName},`)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const output = `/**
|
|
42
|
+
* AUTO-GENERATED — do not edit manually.
|
|
43
|
+
* Run: node examples/research-pilot/skills/generate-skill-content.mjs
|
|
44
|
+
*
|
|
45
|
+
* Source of truth: SKILL.md files in sibling directories.
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
${exports.join('\n\n')}
|
|
49
|
+
|
|
50
|
+
/** All skill content keyed by directory name */
|
|
51
|
+
export const skillContent: Record<string, string> = {
|
|
52
|
+
${entries.join('\n')}
|
|
53
|
+
}
|
|
54
|
+
`
|
|
55
|
+
|
|
56
|
+
const outPath = join(__dirname, '_generated.ts')
|
|
57
|
+
writeFileSync(outPath, output, 'utf-8')
|
|
58
|
+
console.log(`[generate-skill-content] wrote ${outPath} (${skillDirs.length} skills: ${skillDirs.join(', ')})`)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Research Copilot Skills
|
|
3
|
+
*
|
|
4
|
+
* Re-exports the skill loader and provides metadata for UI display.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { loadAllSkills, loadBuiltinSkills, loadWorkspaceSkills, getSkillByName, buildSkillsCatalog } from './loader.js'
|
|
8
|
+
import type { SkillEntry, SkillCatalogItem } from './loader.js'
|
|
9
|
+
|
|
10
|
+
export { loadAllSkills, loadBuiltinSkills, loadWorkspaceSkills, getSkillByName, buildSkillsCatalog }
|
|
11
|
+
export type { SkillEntry, SkillCatalogItem }
|
|
12
|
+
|
|
13
|
+
/** Metadata for UI display */
|
|
14
|
+
export const researchPilotSkills = [
|
|
15
|
+
{ id: 'data-analysis-skill', name: 'Data Analysis' },
|
|
16
|
+
// builtin skills
|
|
17
|
+
{ id: 'scientific-writing', name: 'Scientific Writing' },
|
|
18
|
+
{ id: 'scientific-visualization', name: 'Scientific Visualization' },
|
|
19
|
+
{ id: 'research-grants', name: 'Research Grants' },
|
|
20
|
+
{ id: 'matplotlib', name: 'Matplotlib' },
|
|
21
|
+
{ id: 'seaborn', name: 'Seaborn' },
|
|
22
|
+
{ id: 'scholar-evaluation', name: 'Scholar Evaluation' },
|
|
23
|
+
{ id: 'rewrite-humanize', name: 'Rewrite & Humanize' }
|
|
24
|
+
]
|
|
25
|
+
|
|
26
|
+
/** Skill lookup by ID */
|
|
27
|
+
export const skillsById = Object.fromEntries(
|
|
28
|
+
researchPilotSkills.map((s) => [s.id, s])
|
|
29
|
+
) as Record<string, (typeof researchPilotSkills)[number]>
|
|
30
|
+
|
|
31
|
+
/** Get skill metadata by ID */
|
|
32
|
+
export function getSkill(id: string) {
|
|
33
|
+
return skillsById[id]
|
|
34
|
+
}
|