dsh-aris-panel 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 +98 -0
- package/README_CN.md +87 -0
- package/dsh/checkout.patch.yml +38 -0
- package/dsh/client.js +634 -0
- package/dsh/cordis.patch.yml +44 -0
- package/dsh/index.mjs +76 -0
- package/dsh/run-status.mjs +182 -0
- package/dsh/scope-limits.mjs +50 -0
- package/dsh/workbench.mjs +291 -0
- package/mcp-servers/claude-review/README.md +93 -0
- package/mcp-servers/claude-review/run_with_claude_aws.sh +49 -0
- package/mcp-servers/claude-review/server.py +718 -0
- package/mcp-servers/codex-image2/README.md +65 -0
- package/mcp-servers/codex-image2/server.py +893 -0
- package/mcp-servers/feishu-bridge/requirements.txt +1 -0
- package/mcp-servers/feishu-bridge/server.py +240 -0
- package/mcp-servers/gemini-review/README.md +171 -0
- package/mcp-servers/gemini-review/server.py +1856 -0
- package/mcp-servers/llm-chat/requirements.txt +1 -0
- package/mcp-servers/llm-chat/server.py +664 -0
- package/mcp-servers/manual-review/README.md +133 -0
- package/mcp-servers/manual-review/server.py +910 -0
- package/mcp-servers/manual-review/ui.html +279 -0
- package/mcp-servers/minimax-chat/requirements.txt +1 -0
- package/mcp-servers/minimax-chat/server.py +381 -0
- package/package.json +51 -0
- package/skills/ablation-planner/SKILL.md +123 -0
- package/skills/alphaxiv/SKILL.md +196 -0
- package/skills/analyze-results/SKILL.md +46 -0
- package/skills/arxiv/SKILL.md +248 -0
- package/skills/auto-paper-improvement-loop/SKILL.md +651 -0
- package/skills/auto-review-loop/SKILL.md +1137 -0
- package/skills/auto-review-loop-llm/SKILL.md +259 -0
- package/skills/auto-review-loop-minimax/SKILL.md +302 -0
- package/skills/citation-audit/SKILL.md +502 -0
- package/skills/claims-drafting/SKILL.md +227 -0
- package/skills/comm-lit-review/SKILL.md +297 -0
- package/skills/deepxiv/SKILL.md +263 -0
- package/skills/dse-loop/SKILL.md +296 -0
- package/skills/embodiment-description/SKILL.md +129 -0
- package/skills/exa-search/SKILL.md +205 -0
- package/skills/experiment-audit/SKILL.md +311 -0
- package/skills/experiment-bridge/SKILL.md +376 -0
- package/skills/experiment-plan/SKILL.md +249 -0
- package/skills/experiment-queue/SKILL.md +431 -0
- package/skills/experiment-queue/scripts/build_manifest.py +142 -0
- package/skills/experiment-queue/scripts/queue_manager.py +433 -0
- package/skills/feishu-notify/SKILL.md +156 -0
- package/skills/figure-description/SKILL.md +138 -0
- package/skills/figure-spec/SKILL.md +262 -0
- package/skills/figure-spec/scripts/figure_renderer.py +799 -0
- package/skills/formula-derivation/SKILL.md +280 -0
- package/skills/gemini-search/SKILL.md +231 -0
- package/skills/grant-proposal/SKILL.md +698 -0
- package/skills/idea-creator/SKILL.md +542 -0
- package/skills/idea-discovery/SKILL.md +521 -0
- package/skills/idea-discovery-robot/SKILL.md +363 -0
- package/skills/integrity-forensics/SKILL.md +284 -0
- package/skills/interview-cheatsheet/SKILL.md +245 -0
- package/skills/invention-structuring/SKILL.md +188 -0
- package/skills/jurisdiction-format/SKILL.md +192 -0
- package/skills/kill-argument/SKILL.md +437 -0
- package/skills/mermaid-diagram/SKILL.md +419 -0
- package/skills/meta-apply/SKILL.md +141 -0
- package/skills/meta-optimize/SKILL.md +437 -0
- package/skills/monitor-experiment/SKILL.md +140 -0
- package/skills/novelty-check/SKILL.md +101 -0
- package/skills/openalex/SKILL.md +237 -0
- package/skills/overleaf-sync/SKILL.md +220 -0
- package/skills/paper-claim-audit/SKILL.md +348 -0
- package/skills/paper-compile/SKILL.md +266 -0
- package/skills/paper-figure/SKILL.md +312 -0
- package/skills/paper-illustration/SKILL.md +736 -0
- package/skills/paper-illustration-image2/SKILL.md +391 -0
- package/skills/paper-illustration-image2/scripts/paper_illustration_image2.py +255 -0
- package/skills/paper-plan/SKILL.md +386 -0
- package/skills/paper-poster/SKILL.md +19 -0
- package/skills/paper-poster-html/DESIGN_FINAL.md +176 -0
- package/skills/paper-poster-html/IMPLEMENTATION_CONVENTIONS.md +161 -0
- package/skills/paper-poster-html/LICENSES/posterly-MIT.txt +21 -0
- package/skills/paper-poster-html/NOTICE.md +57 -0
- package/skills/paper-poster-html/SKILL.md +323 -0
- package/skills/paper-poster-html/scripts/_posterly/__init__.py +0 -0
- package/skills/paper-poster-html/scripts/_posterly/canvas.py +200 -0
- package/skills/paper-poster-html/scripts/_posterly/measure.py +588 -0
- package/skills/paper-poster-html/scripts/_posterly/polish.py +498 -0
- package/skills/paper-poster-html/scripts/_posterly/preflight.py +489 -0
- package/skills/paper-poster-html/scripts/_posterly/render.py +215 -0
- package/skills/paper-poster-html/scripts/_posterly/textutil.py +16 -0
- package/skills/paper-poster-html/scripts/_posterly/verify_final.py +171 -0
- package/skills/paper-poster-html/scripts/asset_check.py +897 -0
- package/skills/paper-poster-html/scripts/extract_pdf_figures.py +666 -0
- package/skills/paper-poster-html/scripts/poster_check.py +251 -0
- package/skills/paper-poster-html/scripts/preprocess_figures.py +238 -0
- package/skills/paper-poster-html/scripts/render_preview.py +217 -0
- package/skills/paper-poster-html/scripts/run_gates.py +556 -0
- package/skills/paper-poster-html/scripts/style_check.py +1324 -0
- package/skills/paper-poster-html/templates/COMPONENTS.md +462 -0
- package/skills/paper-poster-html/templates/README.md +170 -0
- package/skills/paper-poster-html/templates/landscape_4col.html +1032 -0
- package/skills/paper-poster-html/templates/landscape_hero.html +1046 -0
- package/skills/paper-poster-html/templates/portrait_2col.html +947 -0
- package/skills/paper-poster-html/templates/tokens/acl.json +9 -0
- package/skills/paper-poster-html/templates/tokens/cvpr.json +9 -0
- package/skills/paper-poster-html/templates/tokens/generic.json +9 -0
- package/skills/paper-poster-html/templates/tokens/iclr.json +9 -0
- package/skills/paper-poster-html/templates/tokens/icml.json +9 -0
- package/skills/paper-poster-html/templates/tokens/neurips.json +9 -0
- package/skills/paper-slides/SKILL.md +635 -0
- package/skills/paper-talk/SKILL.md +381 -0
- package/skills/paper-write/SKILL.md +604 -0
- package/skills/paper-write/templates/IEEEtran.bst +2409 -0
- package/skills/paper-write/templates/IEEEtran.cls +6347 -0
- package/skills/paper-write/templates/iclr2026.tex +84 -0
- package/skills/paper-write/templates/icml2025.tex +87 -0
- package/skills/paper-write/templates/ieee_conference.tex +89 -0
- package/skills/paper-write/templates/ieee_journal.tex +93 -0
- package/skills/paper-write/templates/math_commands.tex +48 -0
- package/skills/paper-write/templates/neurips2025.tex +80 -0
- package/skills/paper-writing/SKILL.md +916 -0
- package/skills/patent-novelty-check/SKILL.md +153 -0
- package/skills/patent-pipeline/SKILL.md +344 -0
- package/skills/patent-review/SKILL.md +203 -0
- package/skills/pixel-art/SKILL.md +137 -0
- package/skills/prior-art-search/SKILL.md +146 -0
- package/skills/proof-checker/SKILL.md +866 -0
- package/skills/proof-orchestrator/NOTICE.md +24 -0
- package/skills/proof-orchestrator/SKILL.md +254 -0
- package/skills/proof-orchestrator/references/audit-output-contract.md +126 -0
- package/skills/proof-orchestrator/references/deepseek-routing.md +74 -0
- package/skills/proof-orchestrator/references/dispatch-prompts.md +227 -0
- package/skills/proof-orchestrator/references/notation-audit.md +135 -0
- package/skills/proof-orchestrator/references/proof-audit-rubric.md +70 -0
- package/skills/proof-orchestrator/references/stress-tests.md +38 -0
- package/skills/proof-writer/SKILL.md +223 -0
- package/skills/qzcli/SKILL.md +324 -0
- package/skills/rebuttal/SKILL.md +376 -0
- package/skills/render-html/SKILL.md +316 -0
- package/skills/render-html/scripts/render_html.py +1006 -0
- package/skills/render-html/scripts/templates/academic.html +703 -0
- package/skills/render-html/scripts/templates/dashboard.html +333 -0
- package/skills/research-lit/SKILL.md +756 -0
- package/skills/research-pipeline/SKILL.md +384 -0
- package/skills/research-refine/SKILL.md +770 -0
- package/skills/research-refine-pipeline/SKILL.md +186 -0
- package/skills/research-review/SKILL.md +198 -0
- package/skills/research-wiki/SKILL.md +461 -0
- package/skills/resubmit-pipeline/SKILL.md +447 -0
- package/skills/result-to-claim/SKILL.md +311 -0
- package/skills/run-experiment/SKILL.md +313 -0
- package/skills/semantic-scholar/SKILL.md +236 -0
- package/skills/serverless-modal/SKILL.md +335 -0
- package/skills/shared-references/acceptance-gate.md +324 -0
- package/skills/shared-references/assurance-contract.md +248 -0
- package/skills/shared-references/capture-antipatterns.md +78 -0
- package/skills/shared-references/citation-discipline.md +583 -0
- package/skills/shared-references/compute-env-contract.md +163 -0
- package/skills/shared-references/effort-contract.md +183 -0
- package/skills/shared-references/evidence-precheck.md +65 -0
- package/skills/shared-references/experiment-integrity.md +49 -0
- package/skills/shared-references/external-cadence.md +326 -0
- package/skills/shared-references/fan-out-pattern.md +366 -0
- package/skills/shared-references/injection-hygiene.md +127 -0
- package/skills/shared-references/integration-contract.md +461 -0
- package/skills/shared-references/output-composition.md +93 -0
- package/skills/shared-references/output-language.md +45 -0
- package/skills/shared-references/output-manifest.md +49 -0
- package/skills/shared-references/output-versioning.md +111 -0
- package/skills/shared-references/patent-format-cn.md +199 -0
- package/skills/shared-references/patent-format-ep.md +173 -0
- package/skills/shared-references/patent-format-us.md +161 -0
- package/skills/shared-references/patent-writing-principles.md +197 -0
- package/skills/shared-references/prior-art-databases.md +141 -0
- package/skills/shared-references/resumable-runs.md +109 -0
- package/skills/shared-references/review-scope-limits.md +81 -0
- package/skills/shared-references/review-tracing.md +391 -0
- package/skills/shared-references/reviewer-independence.md +79 -0
- package/skills/shared-references/reviewer-routing.md +852 -0
- package/skills/shared-references/skill-governance.md +104 -0
- package/skills/shared-references/taste-calibration.md +85 -0
- package/skills/shared-references/venue-checklists.md +114 -0
- package/skills/shared-references/wiki-helper-resolution.md +134 -0
- package/skills/shared-references/writing-principles.md +525 -0
- package/skills/skills-codex/README.md +102 -0
- package/skills/skills-codex/README_CN.md +100 -0
- package/skills/skills-codex/ablation-planner/SKILL.md +126 -0
- package/skills/skills-codex/alphaxiv/SKILL.md +186 -0
- package/skills/skills-codex/analyze-results/SKILL.md +45 -0
- package/skills/skills-codex/arxiv/SKILL.md +210 -0
- package/skills/skills-codex/auto-paper-improvement-loop/SKILL.md +574 -0
- package/skills/skills-codex/auto-review-loop/SKILL.md +500 -0
- package/skills/skills-codex/auto-review-loop-llm/SKILL.md +247 -0
- package/skills/skills-codex/auto-review-loop-minimax/SKILL.md +290 -0
- package/skills/skills-codex/citation-audit/SKILL.md +504 -0
- package/skills/skills-codex/claims-drafting/SKILL.md +239 -0
- package/skills/skills-codex/comm-lit-review/SKILL.md +299 -0
- package/skills/skills-codex/comm-lit-review/references/domain-taxonomy.md +57 -0
- package/skills/skills-codex/comm-lit-review/references/output-template.md +37 -0
- package/skills/skills-codex/comm-lit-review/references/source-policy.md +99 -0
- package/skills/skills-codex/comm-lit-review/references/venue-tiering.md +112 -0
- package/skills/skills-codex/deepxiv/SKILL.md +142 -0
- package/skills/skills-codex/dse-loop/SKILL.md +285 -0
- package/skills/skills-codex/embodiment-description/SKILL.md +129 -0
- package/skills/skills-codex/exa-search/SKILL.md +192 -0
- package/skills/skills-codex/experiment-audit/SKILL.md +286 -0
- package/skills/skills-codex/experiment-bridge/SKILL.md +356 -0
- package/skills/skills-codex/experiment-plan/SKILL.md +249 -0
- package/skills/skills-codex/experiment-queue/SKILL.md +401 -0
- package/skills/skills-codex/feishu-notify/SKILL.md +155 -0
- package/skills/skills-codex/figure-description/SKILL.md +138 -0
- package/skills/skills-codex/figure-spec/SKILL.md +252 -0
- package/skills/skills-codex/formula-derivation/SKILL.md +280 -0
- package/skills/skills-codex/gemini-search/SKILL.md +205 -0
- package/skills/skills-codex/grant-proposal/SKILL.md +626 -0
- package/skills/skills-codex/idea-creator/SKILL.md +405 -0
- package/skills/skills-codex/idea-discovery/SKILL.md +475 -0
- package/skills/skills-codex/idea-discovery-robot/SKILL.md +362 -0
- package/skills/skills-codex/integrity-forensics/SKILL.md +106 -0
- package/skills/skills-codex/interview-cheatsheet/SKILL.md +245 -0
- package/skills/skills-codex/invention-structuring/SKILL.md +188 -0
- package/skills/skills-codex/jurisdiction-format/SKILL.md +192 -0
- package/skills/skills-codex/kill-argument/SKILL.md +403 -0
- package/skills/skills-codex/mermaid-diagram/SKILL.md +379 -0
- package/skills/skills-codex/meta-apply/SKILL.md +154 -0
- package/skills/skills-codex/meta-optimize/SKILL.md +348 -0
- package/skills/skills-codex/monitor-experiment/SKILL.md +98 -0
- package/skills/skills-codex/novelty-check/SKILL.md +89 -0
- package/skills/skills-codex/openalex/SKILL.md +228 -0
- package/skills/skills-codex/overleaf-sync/SKILL.md +220 -0
- package/skills/skills-codex/paper-claim-audit/SKILL.md +350 -0
- package/skills/skills-codex/paper-compile/SKILL.md +253 -0
- package/skills/skills-codex/paper-figure/SKILL.md +311 -0
- package/skills/skills-codex/paper-illustration/SKILL.md +690 -0
- package/skills/skills-codex/paper-illustration-image2/SKILL.md +383 -0
- package/skills/skills-codex/paper-illustration-image2/scripts/paper_illustration_image2.py +255 -0
- package/skills/skills-codex/paper-plan/SKILL.md +278 -0
- package/skills/skills-codex/paper-poster/SKILL.md +19 -0
- package/skills/skills-codex/paper-poster-html/SKILL.md +377 -0
- package/skills/skills-codex/paper-slides/SKILL.md +571 -0
- package/skills/skills-codex/paper-talk/SKILL.md +381 -0
- package/skills/skills-codex/paper-write/SKILL.md +411 -0
- package/skills/skills-codex/paper-write/templates/IEEEtran.bst +2409 -0
- package/skills/skills-codex/paper-write/templates/IEEEtran.cls +6347 -0
- package/skills/skills-codex/paper-write/templates/aaai2026.bst +1493 -0
- package/skills/skills-codex/paper-write/templates/aaai2026.sty +315 -0
- package/skills/skills-codex/paper-write/templates/aaai2026.tex +952 -0
- package/skills/skills-codex/paper-write/templates/acl.sty +312 -0
- package/skills/skills-codex/paper-write/templates/acl2026.tex +377 -0
- package/skills/skills-codex/paper-write/templates/acl_natbib.bst +1940 -0
- package/skills/skills-codex/paper-write/templates/acm.bst +3081 -0
- package/skills/skills-codex/paper-write/templates/acm_mm2026.tex +204 -0
- package/skills/skills-codex/paper-write/templates/acmart.cls +3520 -0
- package/skills/skills-codex/paper-write/templates/cvpr.bst +1448 -0
- package/skills/skills-codex/paper-write/templates/cvpr.sty +508 -0
- package/skills/skills-codex/paper-write/templates/cvpr2026.tex +63 -0
- package/skills/skills-codex/paper-write/templates/iclr2026.tex +84 -0
- package/skills/skills-codex/paper-write/templates/iclr2026_conference.bst +1440 -0
- package/skills/skills-codex/paper-write/templates/iclr2026_conference.sty +246 -0
- package/skills/skills-codex/paper-write/templates/icml2026.sty +767 -0
- package/skills/skills-codex/paper-write/templates/icml2026.tex +662 -0
- package/skills/skills-codex/paper-write/templates/ieee_conference.tex +89 -0
- package/skills/skills-codex/paper-write/templates/ieee_journal.tex +93 -0
- package/skills/skills-codex/paper-write/templates/math_commands.tex +48 -0
- package/skills/skills-codex/paper-write/templates/neurips2026.tex +493 -0
- package/skills/skills-codex/paper-write/templates/neurips_2026.sty +437 -0
- package/skills/skills-codex/paper-writing/SKILL.md +731 -0
- package/skills/skills-codex/patent-novelty-check/SKILL.md +153 -0
- package/skills/skills-codex/patent-pipeline/SKILL.md +344 -0
- package/skills/skills-codex/patent-review/SKILL.md +202 -0
- package/skills/skills-codex/pixel-art/SKILL.md +139 -0
- package/skills/skills-codex/prior-art-search/SKILL.md +146 -0
- package/skills/skills-codex/proof-checker/SKILL.md +554 -0
- package/skills/skills-codex/proof-orchestrator/SKILL.md +260 -0
- package/skills/skills-codex/proof-orchestrator/references/audit-output-contract.md +126 -0
- package/skills/skills-codex/proof-orchestrator/references/deepseek-routing.md +76 -0
- package/skills/skills-codex/proof-orchestrator/references/dispatch-prompts.md +227 -0
- package/skills/skills-codex/proof-orchestrator/references/notation-audit.md +135 -0
- package/skills/skills-codex/proof-orchestrator/references/proof-audit-rubric.md +70 -0
- package/skills/skills-codex/proof-orchestrator/references/stress-tests.md +38 -0
- package/skills/skills-codex/proof-writer/SKILL.md +222 -0
- package/skills/skills-codex/qzcli/SKILL.md +324 -0
- package/skills/skills-codex/rebuttal/SKILL.md +305 -0
- package/skills/skills-codex/render-html/SKILL.md +305 -0
- package/skills/skills-codex/render-html/scripts/__pycache__/render_html.cpython-314.pyc +0 -0
- package/skills/skills-codex/render-html/scripts/render_html.py +909 -0
- package/skills/skills-codex/render-html/scripts/templates/academic.html +342 -0
- package/skills/skills-codex/render-html/scripts/templates/dashboard.html +333 -0
- package/skills/skills-codex/research-lit/SKILL.md +464 -0
- package/skills/skills-codex/research-pipeline/SKILL.md +340 -0
- package/skills/skills-codex/research-refine/SKILL.md +721 -0
- package/skills/skills-codex/research-refine-pipeline/SKILL.md +186 -0
- package/skills/skills-codex/research-review/SKILL.md +135 -0
- package/skills/skills-codex/research-wiki/SKILL.md +421 -0
- package/skills/skills-codex/resubmit-pipeline/SKILL.md +444 -0
- package/skills/skills-codex/result-to-claim/SKILL.md +246 -0
- package/skills/skills-codex/run-experiment/SKILL.md +236 -0
- package/skills/skills-codex/semantic-scholar/SKILL.md +219 -0
- package/skills/skills-codex/serverless-modal/SKILL.md +335 -0
- package/skills/skills-codex/shared-references/acceptance-gate.md +336 -0
- package/skills/skills-codex/shared-references/assurance-contract.md +139 -0
- package/skills/skills-codex/shared-references/capture-antipatterns.md +84 -0
- package/skills/skills-codex/shared-references/citation-discipline.md +452 -0
- package/skills/skills-codex/shared-references/compute-env-contract.md +163 -0
- package/skills/skills-codex/shared-references/effort-contract.md +143 -0
- package/skills/skills-codex/shared-references/evidence-precheck.md +73 -0
- package/skills/skills-codex/shared-references/experiment-integrity.md +49 -0
- package/skills/skills-codex/shared-references/external-cadence.md +334 -0
- package/skills/skills-codex/shared-references/fan-out-pattern.md +375 -0
- package/skills/skills-codex/shared-references/injection-hygiene.md +132 -0
- package/skills/skills-codex/shared-references/integration-contract.md +372 -0
- package/skills/skills-codex/shared-references/output-composition.md +98 -0
- package/skills/skills-codex/shared-references/output-language.md +45 -0
- package/skills/skills-codex/shared-references/output-manifest.md +40 -0
- package/skills/skills-codex/shared-references/output-versioning.md +111 -0
- package/skills/skills-codex/shared-references/patent-format-cn.md +199 -0
- package/skills/skills-codex/shared-references/patent-format-ep.md +173 -0
- package/skills/skills-codex/shared-references/patent-format-us.md +161 -0
- package/skills/skills-codex/shared-references/patent-writing-principles.md +197 -0
- package/skills/skills-codex/shared-references/prior-art-databases.md +141 -0
- package/skills/skills-codex/shared-references/resumable-runs.md +125 -0
- package/skills/skills-codex/shared-references/review-scope-limits.md +81 -0
- package/skills/skills-codex/shared-references/review-tracing.md +144 -0
- package/skills/skills-codex/shared-references/reviewer-independence.md +66 -0
- package/skills/skills-codex/shared-references/reviewer-routing.md +128 -0
- package/skills/skills-codex/shared-references/skill-governance.md +119 -0
- package/skills/skills-codex/shared-references/taste-calibration.md +90 -0
- package/skills/skills-codex/shared-references/venue-checklists.md +73 -0
- package/skills/skills-codex/shared-references/wiki-helper-resolution.md +69 -0
- package/skills/skills-codex/shared-references/writing-principles.md +525 -0
- package/skills/skills-codex/slides-polish/SKILL.md +563 -0
- package/skills/skills-codex/specification-writing/SKILL.md +211 -0
- package/skills/skills-codex/system-profile/SKILL.md +103 -0
- package/skills/skills-codex/training-check/SKILL.md +83 -0
- package/skills/skills-codex/vast-gpu/SKILL.md +394 -0
- package/skills/skills-codex/web-debug-search/SKILL.md +334 -0
- package/skills/skills-codex/wiki-enrich/SKILL.md +255 -0
- package/skills/skills-codex/writing-systems-papers/SKILL.md +184 -0
- package/skills/skills-codex-claude-review/README.md +79 -0
- package/skills/skills-codex-claude-review/README_CN.md +78 -0
- package/skills/skills-codex-claude-review/auto-paper-improvement-loop/SKILL.md +581 -0
- package/skills/skills-codex-claude-review/auto-review-loop/SKILL.md +510 -0
- package/skills/skills-codex-claude-review/novelty-check/SKILL.md +102 -0
- package/skills/skills-codex-claude-review/paper-figure/SKILL.md +319 -0
- package/skills/skills-codex-claude-review/paper-plan/SKILL.md +287 -0
- package/skills/skills-codex-claude-review/paper-write/SKILL.md +420 -0
- package/skills/skills-codex-claude-review/research-refine/SKILL.md +732 -0
- package/skills/skills-codex-claude-review/research-review/SKILL.md +149 -0
- package/skills/skills-codex-gemini-review/README.md +176 -0
- package/skills/skills-codex-gemini-review/README_CN.md +175 -0
- package/skills/skills-codex-gemini-review/auto-paper-improvement-loop/SKILL.md +331 -0
- package/skills/skills-codex-gemini-review/auto-review-loop/SKILL.md +304 -0
- package/skills/skills-codex-gemini-review/grant-proposal/SKILL.md +630 -0
- package/skills/skills-codex-gemini-review/idea-creator/SKILL.md +263 -0
- package/skills/skills-codex-gemini-review/idea-discovery/SKILL.md +275 -0
- package/skills/skills-codex-gemini-review/idea-discovery-robot/SKILL.md +365 -0
- package/skills/skills-codex-gemini-review/novelty-check/SKILL.md +92 -0
- package/skills/skills-codex-gemini-review/paper-figure/SKILL.md +289 -0
- package/skills/skills-codex-gemini-review/paper-plan/SKILL.md +265 -0
- package/skills/skills-codex-gemini-review/paper-poster-html/SKILL.md +102 -0
- package/skills/skills-codex-gemini-review/paper-slides/SKILL.md +582 -0
- package/skills/skills-codex-gemini-review/paper-write/SKILL.md +346 -0
- package/skills/skills-codex-gemini-review/paper-writing/SKILL.md +312 -0
- package/skills/skills-codex-gemini-review/research-refine/SKILL.md +674 -0
- package/skills/skills-codex-gemini-review/research-review/SKILL.md +112 -0
- package/skills/slides-polish/SKILL.md +565 -0
- package/skills/specification-writing/SKILL.md +211 -0
- package/skills/system-profile/SKILL.md +103 -0
- package/skills/training-check/SKILL.md +132 -0
- package/skills/vast-gpu/SKILL.md +394 -0
- package/skills/web-debug-search/SKILL.md +334 -0
- package/skills/wiki-enrich/SKILL.md +257 -0
- package/skills/writing-systems-papers/SKILL.md +184 -0
- package/templates/CLAUDE_MD_TEMPLATE.md +29 -0
- package/templates/EXPERIMENT_LOG_TEMPLATE.md +47 -0
- package/templates/EXPERIMENT_PLAN_TEMPLATE.md +51 -0
- package/templates/EXPERIMENT_PLAN_TEMPLATE_CN.md +53 -0
- package/templates/FINDINGS_TEMPLATE.md +52 -0
- package/templates/IDEA_CANDIDATES_TEMPLATE.md +47 -0
- package/templates/IDEA_CANDIDATES_TEMPLATE_CN.md +47 -0
- package/templates/INVENTION_BRIEF_TEMPLATE.md +87 -0
- package/templates/MANIFEST_TEMPLATE.md +7 -0
- package/templates/NARRATIVE_REPORT_TEMPLATE.md +49 -0
- package/templates/PAPER_PLAN_TEMPLATE.md +47 -0
- package/templates/PATENT_CLAIMS_TEMPLATE.md +78 -0
- package/templates/PATENT_SPECIFICATION_TEMPLATE.md +68 -0
- package/templates/README.md +57 -0
- package/templates/RESEARCH_BRIEF_TEMPLATE.md +35 -0
- package/templates/RESEARCH_BRIEF_TEMPLATE_CN.md +41 -0
- package/templates/RESEARCH_CONTRACT_TEMPLATE.md +60 -0
- package/templates/claude-hooks/corpus_write_guard.json +16 -0
- package/templates/claude-hooks/corpus_write_guard.py +85 -0
- package/templates/claude-hooks/meta_logging.json +74 -0
- package/templates/gitignore-trace.txt +3 -0
- package/tools/__pycache__/check_skills_inventory.cpython-314.pyc +0 -0
- package/tools/arxiv_fetch.py +311 -0
- package/tools/capture_filter.py +126 -0
- package/tools/check_skills_inventory.py +273 -0
- package/tools/convert_skills_to_llm_chat.py +282 -0
- package/tools/copilot_native_evidence.py +818 -0
- package/tools/deepxiv_fetch.py +213 -0
- package/tools/evidence_check.py +212 -0
- package/tools/exa_search.py +425 -0
- package/tools/experiment_queue/README.md +118 -0
- package/tools/experiment_queue/build_manifest.py +44 -0
- package/tools/experiment_queue/queue_manager.py +44 -0
- package/tools/extract_paper_style.py +560 -0
- package/tools/figure_renderer.py +69 -0
- package/tools/forensics_gate.py +669 -0
- package/tools/generate_codex_claude_review_overrides.py +299 -0
- package/tools/idea_discovery_gate.py +256 -0
- package/tools/install_aris.ps1 +1372 -0
- package/tools/install_aris.sh +1370 -0
- package/tools/install_aris_codex.sh +1023 -0
- package/tools/install_aris_copilot.sh +1052 -0
- package/tools/iteration_log.py +143 -0
- package/tools/lint_skills_helpers.sh +84 -0
- package/tools/meta_opt/check_ready.sh +80 -0
- package/tools/meta_opt/log_event.sh +91 -0
- package/tools/meta_opt/trigger_eval.py +280 -0
- package/tools/meta_opt/trigger_evals.sample.json +28 -0
- package/tools/openalex_fetch.py +326 -0
- package/tools/overleaf_audit.sh +104 -0
- package/tools/overleaf_setup.sh +150 -0
- package/tools/paper_illustration_image2.py +62 -0
- package/tools/provenance.py +294 -0
- package/tools/research_wiki.py +1720 -0
- package/tools/review_gate.py +502 -0
- package/tools/run_state.py +399 -0
- package/tools/save_trace.sh +477 -0
- package/tools/semantic_scholar_fetch.py +438 -0
- package/tools/skill-groups.tsv +116 -0
- package/tools/skill_picker.py +238 -0
- package/tools/smart_update.ps1 +521 -0
- package/tools/smart_update.sh +591 -0
- package/tools/smart_update_codex.sh +419 -0
- package/tools/smart_update_copilot.sh +605 -0
- package/tools/threat_scan.py +222 -0
- package/tools/verify_paper_audits.sh +487 -0
- package/tools/verify_papers.py +613 -0
- package/tools/verify_wiki_coverage.sh +176 -0
- package/tools/watchdog.py +485 -0
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: result-to-claim
|
|
3
|
+
description: Use when experiments complete to judge what claims the results support, what they don't, and what evidence is still missing. Codex MCP evaluates results against intended claims and routes to next action (pivot, supplement, or confirm). Use after experiments finish — before writing the paper or running ablations.
|
|
4
|
+
argument-hint: "[experiment-description-or-wandb-run]"
|
|
5
|
+
allowed-tools: Bash(*), Read, Grep, Glob, Write, Edit, mcp__codex__codex, mcp__codex__codex-reply
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Result-to-Claim Gate
|
|
9
|
+
|
|
10
|
+
> 🔒 **Do not wrap this skill in `/loop`, `/schedule`, or `CronCreate`.** It is
|
|
11
|
+
> verdict-bearing — it judges whether results support a claim. Re-running that
|
|
12
|
+
> verdict on a wall-clock timer adds no new signal (the verdict changes only
|
|
13
|
+
> when the *results* change, not when the clock ticks). What you actually want
|
|
14
|
+
> to schedule is the *external wait that precedes it* — experiments done → then
|
|
15
|
+
> run this gate **once**. See
|
|
16
|
+
> [`shared-references/external-cadence.md`](../shared-references/external-cadence.md).
|
|
17
|
+
|
|
18
|
+
Experiments produce numbers; this gate decides what those numbers *mean*. Collect results from available sources, get a Codex judgment, then auto-route based on the verdict.
|
|
19
|
+
|
|
20
|
+
## Context: $ARGUMENTS
|
|
21
|
+
|
|
22
|
+
## When to Use
|
|
23
|
+
|
|
24
|
+
- After a set of experiments completes (main results, not just sanity checks)
|
|
25
|
+
- Before committing to claims in a paper or review response
|
|
26
|
+
- When results are ambiguous and you need an objective second opinion
|
|
27
|
+
|
|
28
|
+
## Workflow
|
|
29
|
+
|
|
30
|
+
### Step 1: Collect Results
|
|
31
|
+
|
|
32
|
+
Gather experiment data from whatever sources are available in the project:
|
|
33
|
+
|
|
34
|
+
1. **W&B** (preferred): `wandb.Api().run("<entity>/<project>/<run_id>").history()` — metrics, training curves, comparisons
|
|
35
|
+
2. **EXPERIMENT_LOG.md**: full results table with baselines and verdicts
|
|
36
|
+
3. **EXPERIMENT_TRACKER.md**: check which experiments are DONE vs still running
|
|
37
|
+
4. **Log files**: `ssh server "tail -100 /path/to/training.log"` if no other source
|
|
38
|
+
5. **`idea-stage/docs/research_contract.md`** (legacy fallback: `docs/research_contract.md`): intended claims and experiment design
|
|
39
|
+
|
|
40
|
+
Assemble the key information:
|
|
41
|
+
- What experiments were run (method, dataset, config)
|
|
42
|
+
- Main metrics and baseline comparisons (deltas)
|
|
43
|
+
- The intended claim these experiments were designed to test
|
|
44
|
+
- Any known confounds or caveats
|
|
45
|
+
|
|
46
|
+
### Step 1.5: Deterministic evidence pre-check (before spending a Codex call)
|
|
47
|
+
|
|
48
|
+
For every claim that cites a specific number + a source file, verify the evidence
|
|
49
|
+
*exists* mechanically — no model call — to catch **hallucinated evidence** before
|
|
50
|
+
the jury runs (see [`shared-references/evidence-precheck.md`](../shared-references/evidence-precheck.md)).
|
|
51
|
+
|
|
52
|
+
**1. Build the claims list.** From the cited numbers and their result files, write
|
|
53
|
+
`[{"id", "value", "source"}, ...]` to `.aris/claims.json` (`source` is the result
|
|
54
|
+
file/glob relative to the project root; `value` is the cited number or string).
|
|
55
|
+
|
|
56
|
+
**2. Run the pre-check — this is a real step, not a suggestion.** Execute the block
|
|
57
|
+
below (resolver per integration-contract §2, **Policy B**: warn-and-skip if the helper
|
|
58
|
+
is unresolved — never block the audit):
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# Policy B = warn-and-skip: nothing here may abort the audit. cd is non-fatal, the
|
|
62
|
+
# helper run is explicitly non-blocking, no pipefail-fragile pipe.
|
|
63
|
+
cd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)" 2>/dev/null || true
|
|
64
|
+
if [ -z "${ARIS_REPO:-}" ] && [ -f .aris/installed-skills.txt ]; then
|
|
65
|
+
ARIS_REPO=$(awk -F'\t' '$1=="repo_root"{print $2; exit}' .aris/installed-skills.txt 2>/dev/null) || true
|
|
66
|
+
fi
|
|
67
|
+
if [ -z "${ARIS_REPO:-}" ] && [ -f "$HOME/.aris/repo" ]; then
|
|
68
|
+
ARIS_REPO=$(cat "$HOME/.aris/repo" 2>/dev/null) || true
|
|
69
|
+
fi
|
|
70
|
+
EVIDENCE_CHECK=".aris/tools/evidence_check.py"
|
|
71
|
+
[ -f "$EVIDENCE_CHECK" ] || EVIDENCE_CHECK="tools/evidence_check.py"
|
|
72
|
+
[ -f "$EVIDENCE_CHECK" ] || { [ -n "${ARIS_REPO:-}" ] && EVIDENCE_CHECK="$ARIS_REPO/tools/evidence_check.py"; }
|
|
73
|
+
[ -f "$EVIDENCE_CHECK" ] || EVIDENCE_CHECK=""
|
|
74
|
+
|
|
75
|
+
mkdir -p .aris
|
|
76
|
+
if [ -n "$EVIDENCE_CHECK" ]; then
|
|
77
|
+
# NB: evidence_check exits 1 when it FINDS hallucinated evidence (value_not_found /
|
|
78
|
+
# path_missing) — that is the useful signal, NOT a failure. So judge success by
|
|
79
|
+
# whether valid JSON was produced, never by exit code. `|| true` keeps set -e calm.
|
|
80
|
+
python3 "$EVIDENCE_CHECK" . --batch .aris/claims.json > .aris/evidence_precheck.json 2>.aris/evidence_precheck.err || true
|
|
81
|
+
if [ -s .aris/evidence_precheck.json ] && python3 -c "import json,sys;json.load(open('.aris/evidence_precheck.json'))" 2>/dev/null; then
|
|
82
|
+
cat .aris/evidence_precheck.json
|
|
83
|
+
else
|
|
84
|
+
echo "WARN: evidence_check produced no valid output (see .aris/evidence_precheck.err);" >&2
|
|
85
|
+
echo " pre-check skipped (Policy B); the Codex jury still runs." >&2
|
|
86
|
+
fi
|
|
87
|
+
else
|
|
88
|
+
echo "WARN: evidence_check.py not resolved at .aris/tools/, tools/, \$ARIS_REPO/tools/, or via ~/.aris/repo." >&2
|
|
89
|
+
echo " Pre-check skipped (Policy B); the Codex jury still runs. Fix: rerun" >&2
|
|
90
|
+
echo " bash tools/install_aris.sh, export ARIS_REPO, or copy the helper to tools/." >&2
|
|
91
|
+
fi
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
The output is `{"results": [{id, value, source, status, ...}], "summary": {status: n}}`
|
|
95
|
+
with `status ∈ {verified, value_not_found, path_missing, unparseable}`.
|
|
96
|
+
|
|
97
|
+
**3. Act on the statuses.** Any claim returned `value_not_found` or `path_missing` is
|
|
98
|
+
**hallucinated evidence** — mark it `claim_supported: no` with
|
|
99
|
+
`integrity_status: evidence_not_found` immediately; do NOT spend a Codex call defending a
|
|
100
|
+
number that isn't in the data. `unparseable` claims (no usable value/source) just go to
|
|
101
|
+
the jury normally.
|
|
102
|
+
|
|
103
|
+
**4. Carry the per-claim status into Step 2.** Feed a small
|
|
104
|
+
`evidence pre-check: <id> → verified | value_not_found | path_missing | unparseable`
|
|
105
|
+
table (from `.aris/evidence_precheck.json`) into the Step-2 Codex prompt so the jury knows
|
|
106
|
+
which claims have real evidence to read. If the pre-check was skipped (helper unresolved),
|
|
107
|
+
say so in that slot rather than omitting it.
|
|
108
|
+
|
|
109
|
+
`verified` here means only that the cited evidence **exists** — whether it
|
|
110
|
+
**supports** the claim is still the Codex jury's call in Step 2 (a deterministic
|
|
111
|
+
gate DRIVES, it does not ACQUIT).
|
|
112
|
+
|
|
113
|
+
### Step 2: Codex Judgment
|
|
114
|
+
|
|
115
|
+
Send the collected results to Codex for objective evaluation. Include ONLY claims that passed the Step 1.5 pre-check — claims already terminally rejected (`evidence_not_found`) keep their deterministic verdict and are NOT re-litigated here:
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
mcp__codex__codex:
|
|
119
|
+
model: gpt-5.6-sol
|
|
120
|
+
config: {"model_reasoning_effort": "ultra"}
|
|
121
|
+
prompt: |
|
|
122
|
+
RESULT-TO-CLAIM EVALUATION
|
|
123
|
+
|
|
124
|
+
I need you to judge whether experimental results support the intended claim.
|
|
125
|
+
|
|
126
|
+
Intended claim: [the claim these experiments test]
|
|
127
|
+
|
|
128
|
+
Experiments run:
|
|
129
|
+
[list experiments with method, dataset, metrics]
|
|
130
|
+
|
|
131
|
+
Results:
|
|
132
|
+
[paste key numbers, comparison deltas, significance]
|
|
133
|
+
|
|
134
|
+
Evidence pre-check (deterministic, from Step 1.5):
|
|
135
|
+
[per-claim: <id> → verified | value_not_found | path_missing.
|
|
136
|
+
A value_not_found/path_missing means the cited number is NOT in its result
|
|
137
|
+
file — treat that claim as having no evidence; do not defend it. `verified`
|
|
138
|
+
means the number exists in the file — YOU still judge whether it supports
|
|
139
|
+
the claim.]
|
|
140
|
+
|
|
141
|
+
Baselines:
|
|
142
|
+
[baseline numbers and sources — reproduced or from paper]
|
|
143
|
+
|
|
144
|
+
Known caveats:
|
|
145
|
+
[any confounding factors, limited datasets, missing comparisons]
|
|
146
|
+
|
|
147
|
+
Please evaluate:
|
|
148
|
+
1. claim_supported: yes | partial | no
|
|
149
|
+
2. what_results_support: what the data actually shows
|
|
150
|
+
3. what_results_dont_support: where the data falls short of the claim
|
|
151
|
+
4. missing_evidence: specific evidence gaps
|
|
152
|
+
5. suggested_claim_revision: if the claim should be strengthened, weakened, or reframed
|
|
153
|
+
6. next_experiments_needed: specific experiments to fill gaps (if any)
|
|
154
|
+
7. confidence: high | medium | low
|
|
155
|
+
|
|
156
|
+
Be honest. Do not inflate claims beyond what the data supports.
|
|
157
|
+
A single positive result on one dataset does not support a general claim.
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Step 3: Parse and Normalize
|
|
161
|
+
|
|
162
|
+
Extract structured fields from Codex response:
|
|
163
|
+
|
|
164
|
+
```markdown
|
|
165
|
+
- claim_supported: yes | partial | no
|
|
166
|
+
- what_results_support: "..."
|
|
167
|
+
- what_results_dont_support: "..."
|
|
168
|
+
- missing_evidence: "..."
|
|
169
|
+
- suggested_claim_revision: "..."
|
|
170
|
+
- next_experiments_needed: "..."
|
|
171
|
+
- confidence: high | medium | low
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
### Step 3.5: Check Experiment Integrity (if audit exists)
|
|
175
|
+
|
|
176
|
+
**Skip this step if `EXPERIMENT_AUDIT.json` does not exist.**
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
if EXPERIMENT_AUDIT.json exists:
|
|
180
|
+
read integrity_status from file
|
|
181
|
+
attach to verdict output:
|
|
182
|
+
integrity_status: pass | warn | fail
|
|
183
|
+
|
|
184
|
+
if integrity_status == "fail":
|
|
185
|
+
append to verdict: "[INTEGRITY CONCERN] — audit found issues, see EXPERIMENT_AUDIT.md"
|
|
186
|
+
downgrade confidence to "low" regardless of Codex judgment
|
|
187
|
+
|
|
188
|
+
if integrity_status == "warn":
|
|
189
|
+
append to verdict: "[INTEGRITY: WARN] — audit flagged potential issues"
|
|
190
|
+
else:
|
|
191
|
+
integrity_status = "unavailable"
|
|
192
|
+
verdict is labeled "provisional — no integrity audit run"
|
|
193
|
+
(this does NOT block anything — pipeline continues normally)
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
See `shared-references/experiment-integrity.md` for the full integrity protocol.
|
|
197
|
+
|
|
198
|
+
### Step 4: Route Based on Verdict
|
|
199
|
+
|
|
200
|
+
#### `no` — Claim not supported
|
|
201
|
+
|
|
202
|
+
1. Record postmortem in findings.md (Research Findings section):
|
|
203
|
+
- What was tested, what failed, hypotheses for why
|
|
204
|
+
- Constraints for future attempts (what NOT to try again)
|
|
205
|
+
2. Update CLAUDE.md Pipeline Status
|
|
206
|
+
3. Decide whether to pivot to next idea from IDEA_CANDIDATES.md or try an alternative approach
|
|
207
|
+
|
|
208
|
+
#### `partial` — Claim partially supported
|
|
209
|
+
|
|
210
|
+
1. Update the working claim to reflect what IS supported
|
|
211
|
+
2. Record the gap in findings.md
|
|
212
|
+
3. Design and run supplementary experiments to fill evidence gaps
|
|
213
|
+
4. Re-run result-to-claim after supplementary experiments complete
|
|
214
|
+
5. **Multiple rounds of `partial` on the same claim** → record analysis in findings.md, consider whether to narrow the claim scope or switch ideas
|
|
215
|
+
|
|
216
|
+
#### `yes` — Claim supported
|
|
217
|
+
|
|
218
|
+
1. Record confirmed claim in project notes
|
|
219
|
+
2. If ablation studies are incomplete → trigger `/ablation-planner`
|
|
220
|
+
3. If all evidence is in → ready for paper writing
|
|
221
|
+
|
|
222
|
+
### Step 5: Update Research Wiki (if active)
|
|
223
|
+
|
|
224
|
+
**Skip this step entirely if `research-wiki/` does not exist.**
|
|
225
|
+
|
|
226
|
+
If `research-wiki/` exists, resolve `$WIKI_SCRIPT` per the canonical
|
|
227
|
+
chain documented in
|
|
228
|
+
[`shared-references/wiki-helper-resolution.md`](../shared-references/wiki-helper-resolution.md)
|
|
229
|
+
(Variant B — warn-and-skip for caller skills). The verdict / idea-outcome
|
|
230
|
+
page edits below run on raw markdown and don't need the helper, but edges,
|
|
231
|
+
query-pack rebuild, and the log line do. **This skill never edits a claim's
|
|
232
|
+
`status` field and never creates a claim node** — claims are born (and their
|
|
233
|
+
proof `status` set) by `/proof-checker`; here we only attach experiment edges.
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
cd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)" || exit 1
|
|
237
|
+
ARIS_REPO="${ARIS_REPO:-$(awk -F'\t' '$1=="repo_root"{print $2; exit}' .aris/installed-skills.txt 2>/dev/null)}"
|
|
238
|
+
if [ -z "${ARIS_REPO:-}" ] && [ -f "$HOME/.aris/repo" ]; then
|
|
239
|
+
ARIS_REPO=$(cat "$HOME/.aris/repo" 2>/dev/null) || true
|
|
240
|
+
fi
|
|
241
|
+
WIKI_SCRIPT=".aris/tools/research_wiki.py"
|
|
242
|
+
[ -f "$WIKI_SCRIPT" ] || WIKI_SCRIPT="tools/research_wiki.py"
|
|
243
|
+
[ -f "$WIKI_SCRIPT" ] || { [ -n "${ARIS_REPO:-}" ] && WIKI_SCRIPT="$ARIS_REPO/tools/research_wiki.py"; }
|
|
244
|
+
[ -f "$WIKI_SCRIPT" ] || {
|
|
245
|
+
echo "WARN: research_wiki.py not found; verdict will be reported but wiki edges/query-pack/log will be skipped. Fix: bash tools/install_aris.sh or smart_update.sh (refreshes ~/.aris/repo), export ARIS_REPO, or cp <ARIS-repo>/tools/research_wiki.py tools/." >&2
|
|
246
|
+
WIKI_SCRIPT=""
|
|
247
|
+
}
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
```
|
|
251
|
+
if research-wiki/ exists:
|
|
252
|
+
# 1. Create/refresh the experiment node FIRST (verdict OWNER → --update-on-exist so
|
|
253
|
+
# a re-judge overwrites the stale verdict). The supports/invalidates edges in #2
|
|
254
|
+
# point FROM exp:<id>, and add_edge does NOT verify node existence — so GATE those
|
|
255
|
+
# edges on the experiment node having been born (EXP_NODE_OK), else they'd dangle
|
|
256
|
+
# (the exact bug this closes). On failure: warn, skip the wiki edges, still report.
|
|
257
|
+
EXP_NODE_OK=0
|
|
258
|
+
if [ -n "$WIKI_SCRIPT" ]; then
|
|
259
|
+
if python3 "$WIKI_SCRIPT" add_experiment research-wiki/ \
|
|
260
|
+
--slug "<exp_id>" --idea "idea:<active_idea>" \
|
|
261
|
+
--verdict "<yes|partial|no>" --confidence "<high|medium|low>" \
|
|
262
|
+
--date "<date>" --hardware "<hw>" --duration "<dur>" \
|
|
263
|
+
--metrics "<key metrics>" --reasoning "<one-line why this verdict>" \
|
|
264
|
+
--provenance "<EXPERIMENT_AUDIT.md / run dir>" --update-on-exist; then
|
|
265
|
+
EXP_NODE_OK=1 # page written + idea--tested_by-->exp edge + index/query_pack rebuilt
|
|
266
|
+
else
|
|
267
|
+
echo "WARN: add_experiment failed for <exp_id>; skipping wiki edges (verdict still reported)." >&2
|
|
268
|
+
fi
|
|
269
|
+
fi
|
|
270
|
+
|
|
271
|
+
# 2. Record empirical support as EDGES ONLY — and ONLY when the exp node was born
|
|
272
|
+
# ([ "$EXP_NODE_OK" = 1 ]), so no edge dangles off a missing node. Never edit the
|
|
273
|
+
# claim page's `status`: that is the PROOF axis (verified / refuted / unproven /
|
|
274
|
+
# sound-modulo-imports / drafted / retracted), owned by /proof-checker (the claim
|
|
275
|
+
# birth point) — "supported"/"invalidated" are NOT valid claim statuses. The claim
|
|
276
|
+
# target should ALREADY be born by /proof-checker; add_edge does not verify it.
|
|
277
|
+
for each claim resolved by this verdict (only if [ "$EXP_NODE_OK" = 1 ]):
|
|
278
|
+
if verdict == "yes":
|
|
279
|
+
python3 "$WIKI_SCRIPT" add_edge research-wiki/ --from "exp:<id>" --to "claim:<cid>" --type supports --evidence "<metric>"
|
|
280
|
+
elif verdict == "partial":
|
|
281
|
+
python3 "$WIKI_SCRIPT" add_edge research-wiki/ --from "exp:<id>" --to "claim:<cid>" --type supports --evidence "partial: <metric>"
|
|
282
|
+
else:
|
|
283
|
+
python3 "$WIKI_SCRIPT" add_edge research-wiki/ --from "exp:<id>" --to "claim:<cid>" --type invalidates --evidence "<why>"
|
|
284
|
+
|
|
285
|
+
# 3. Update idea outcome (raw markdown, helper-free)
|
|
286
|
+
Update research-wiki/ideas/<idea_id>.md:
|
|
287
|
+
- outcome: positive | mixed | negative
|
|
288
|
+
- If negative: fill "Failure / Risk Notes" and "Lessons Learned"
|
|
289
|
+
- If positive: fill "Actual Outcome" and "Reusable Components"
|
|
290
|
+
|
|
291
|
+
# 4. Rebuild + log (only if $WIKI_SCRIPT resolved)
|
|
292
|
+
[ -n "$WIKI_SCRIPT" ] && python3 "$WIKI_SCRIPT" rebuild_query_pack research-wiki/
|
|
293
|
+
[ -n "$WIKI_SCRIPT" ] && python3 "$WIKI_SCRIPT" log research-wiki/ "result-to-claim: exp:<id> verdict=<verdict> for idea:<idea_id>"
|
|
294
|
+
|
|
295
|
+
# 5. Re-ideation suggestion
|
|
296
|
+
Count failed/partial ideas since last /idea-creator run.
|
|
297
|
+
If >= 3: print "💡 3+ ideas tested since last ideation. Consider re-running /idea-creator — the wiki now knows what doesn't work."
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
## Rules
|
|
301
|
+
|
|
302
|
+
- **Codex is the judge, not CC.** CC collects evidence and routes; Codex evaluates. This prevents post-hoc rationalization.
|
|
303
|
+
- Do not inflate claims beyond what the data supports. If Codex says "partial", do not round up to "yes".
|
|
304
|
+
- A single positive result on one dataset does not support a general claim. Be honest about scope.
|
|
305
|
+
- If `confidence` is low, treat the judgment as inconclusive and add experiments rather than committing to a claim.
|
|
306
|
+
- **Fail closed if the reviewer is unavailable.** If the Codex call fails, first walk the capability fallback chain in `shared-references/reviewer-routing.md` (`gpt-5.6-sol`+`ultra` → `gpt-5.6-sol`+`xhigh` → `gpt-5.5`+`xhigh`, capability errors only). If no allowed pair succeeds: write `CLAIMS_FROM_RESULTS.md` containing ONLY the first line `verdict: REVIEW_UNAVAILABLE` (a machine-checkable gate for pipeline callers), record the same in findings.md, and STOP — CC never substitutes its own claim judgment (a loop can drive, never acquit; `acceptance-gate.md`). Downstream steps (wiki `add_experiment` edges, ablation-planner, paper claims) must not consume a run without a Codex verdict. Exception: the deterministic evidence pre-check (Step 1.5) may still terminally mark a claim `claim_supported: no` for hallucinated evidence — a deterministic rejection needs no reviewer; only SUPPORTIVE or ambiguous outcomes require one.
|
|
307
|
+
- Always record the verdict and reasoning in findings.md, regardless of outcome.
|
|
308
|
+
|
|
309
|
+
## Review Tracing
|
|
310
|
+
|
|
311
|
+
After each `mcp__codex__codex` or `mcp__codex__codex-reply` reviewer call, save the trace following `shared-references/review-tracing.md` (Policy C — forensic; never silently skip). Use `save_trace.sh` (resolved per the chain in `shared-references/integration-contract.md` §2) or write files directly to `.aris/traces/<skill>/<date>_run<NN>/`. Respect the `--- trace:` parameter (default: `full`).
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: run-experiment
|
|
3
|
+
description: Deploy and run ML experiments on local, remote, Vast.ai, or Modal serverless GPU. Use when user says "run experiment", "deploy to server", "跑实验", or needs to launch training jobs.
|
|
4
|
+
argument-hint: "[experiment-description]"
|
|
5
|
+
allowed-tools: Bash(*), Read, Grep, Glob, Edit, Write, Skill(serverless-modal)
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Run Experiment
|
|
9
|
+
|
|
10
|
+
Deploy and run ML experiment: $ARGUMENTS
|
|
11
|
+
|
|
12
|
+
## Workflow
|
|
13
|
+
|
|
14
|
+
### Step 1: Detect Environment
|
|
15
|
+
|
|
16
|
+
Read the project's `CLAUDE.md` to determine the experiment environment:
|
|
17
|
+
|
|
18
|
+
- **Local GPU** (`gpu: local`): Look for local CUDA/MPS setup info
|
|
19
|
+
- **Remote server** (`gpu: remote`): Look for SSH alias, conda env, code directory
|
|
20
|
+
- **Vast.ai** (`gpu: vast`): Check for `vast-instances.json` at project root — if a running instance exists, use it. Also check `CLAUDE.md` for a `## Vast.ai` section.
|
|
21
|
+
- **Modal** (`gpu: modal`): Serverless GPU via Modal. No SSH, no Docker, auto scale-to-zero. Delegate to `/serverless-modal`.
|
|
22
|
+
|
|
23
|
+
**Modal detection:** If `CLAUDE.md` has `gpu: modal` or a `## Modal` section, the entire deployment is handled by `/serverless-modal`. Jump to **Step 4: Deploy (Modal)** — Steps 2-3 are not needed (Modal handles code sync and GPU allocation automatically).
|
|
24
|
+
|
|
25
|
+
**Environment contract** (`../shared-references/compute-env-contract.md`): before
|
|
26
|
+
building or trusting any environment, read the provider's env ledger
|
|
27
|
+
(`.aris/compute/<provider>.md`) — an unchanged spec hash means warm-reuse, a
|
|
28
|
+
changed one means rebuild. New env → write the declarative spec first, render it
|
|
29
|
+
for this provider's shape, and never declare it ready on import-success alone:
|
|
30
|
+
run the seeded kernel witness, and after any rebuild/doc edit run the
|
|
31
|
+
agent-follows-doc pass (a fresh subagent executes the documented invocation
|
|
32
|
+
verbatim and reports doc-vs-reality divergence).
|
|
33
|
+
|
|
34
|
+
**Vast.ai detection priority:**
|
|
35
|
+
1. If `CLAUDE.md` has `gpu: vast` or a `## Vast.ai` section:
|
|
36
|
+
- If `vast-instances.json` exists and has a running instance → use that instance
|
|
37
|
+
- If no running instance → call `/vast-gpu provision` which analyzes the task, presents cost-optimized GPU options, and rents the user's choice
|
|
38
|
+
2. If no server info is found in `CLAUDE.md`, ask the user.
|
|
39
|
+
|
|
40
|
+
### Step 2: Pre-flight Check
|
|
41
|
+
|
|
42
|
+
Check GPU availability on the target machine:
|
|
43
|
+
|
|
44
|
+
**Remote (SSH):**
|
|
45
|
+
```bash
|
|
46
|
+
ssh <server> nvidia-smi --query-gpu=index,memory.used,memory.total --format=csv,noheader
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
**Remote (Vast.ai):**
|
|
50
|
+
```bash
|
|
51
|
+
ssh -p <PORT> root@<HOST> nvidia-smi --query-gpu=index,memory.used,memory.total --format=csv,noheader
|
|
52
|
+
```
|
|
53
|
+
(Read `ssh_host` and `ssh_port` from `vast-instances.json`, or run `vastai ssh-url <INSTANCE_ID>` which returns `ssh://root@HOST:PORT`)
|
|
54
|
+
|
|
55
|
+
**Local:**
|
|
56
|
+
```bash
|
|
57
|
+
nvidia-smi --query-gpu=index,memory.used,memory.total --format=csv,noheader
|
|
58
|
+
# or for Mac MPS:
|
|
59
|
+
python -c "import torch; print('MPS available:', torch.backends.mps.is_available())"
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Free GPU = memory.used < 500 MiB.
|
|
63
|
+
|
|
64
|
+
### Step 3: Sync Code (Remote Only)
|
|
65
|
+
|
|
66
|
+
Check the project's `CLAUDE.md` for a `code_sync` setting. If not specified, default to `rsync`.
|
|
67
|
+
|
|
68
|
+
#### Option A: rsync (default)
|
|
69
|
+
|
|
70
|
+
Only sync necessary files — NOT data, checkpoints, or large files:
|
|
71
|
+
```bash
|
|
72
|
+
rsync -avz --include='*.py' --exclude='*' <local_src>/ <server>:<remote_dst>/
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
#### Option B: git (when `code_sync: git` is set in CLAUDE.md)
|
|
76
|
+
|
|
77
|
+
Push local changes to remote repo, then pull on the server:
|
|
78
|
+
```bash
|
|
79
|
+
# 1. Push from local
|
|
80
|
+
git add -A && git commit -m "sync: experiment deployment" && git push
|
|
81
|
+
|
|
82
|
+
# 2. Pull on server
|
|
83
|
+
ssh <server> "cd <remote_dst> && git pull"
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Benefits: version-tracked, multi-server sync with one push, no rsync include/exclude rules needed.
|
|
87
|
+
|
|
88
|
+
#### Option C: Vast.ai instance
|
|
89
|
+
|
|
90
|
+
Sync code to the vast.ai instance (always rsync, code dir is `/workspace/project/`):
|
|
91
|
+
```bash
|
|
92
|
+
rsync -avz -e "ssh -p <PORT>" \
|
|
93
|
+
--include='*.py' --include='*.yaml' --include='*.yml' --include='*.json' \
|
|
94
|
+
--include='*.txt' --include='*.sh' --include='*/' \
|
|
95
|
+
--exclude='*.pt' --exclude='*.pth' --exclude='*.ckpt' \
|
|
96
|
+
--exclude='__pycache__' --exclude='.git' --exclude='data/' \
|
|
97
|
+
--exclude='wandb/' --exclude='outputs/' \
|
|
98
|
+
./ root@<HOST>:/workspace/project/
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Install dependencies per the env contract (ordered phases — pins first, one
|
|
102
|
+
`pip install` per phase; see `../shared-references/compute-env-contract.md`):
|
|
103
|
+
```bash
|
|
104
|
+
ssh -p <PORT> root@<HOST> "pip install -q torch==<pinned>" # phase 1: pins
|
|
105
|
+
ssh -p <PORT> root@<HOST> "pip install -q <remaining packages>" # phase 2+
|
|
106
|
+
```
|
|
107
|
+
Legacy fallback — `requirements.txt` only, no env spec: install as one phase,
|
|
108
|
+
and treat any version fight as the signal to convert to ordered phases:
|
|
109
|
+
```bash
|
|
110
|
+
scp -P <PORT> requirements.txt root@<HOST>:/workspace/
|
|
111
|
+
ssh -p <PORT> root@<HOST> "pip install -q -r /workspace/requirements.txt"
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Step 3.5: W&B Integration (when `wandb: true` in CLAUDE.md)
|
|
115
|
+
|
|
116
|
+
**Skip this step entirely if `wandb` is not set or is `false` in CLAUDE.md.**
|
|
117
|
+
|
|
118
|
+
Before deploying, ensure the experiment scripts have W&B logging:
|
|
119
|
+
|
|
120
|
+
1. **Check if wandb is already in the script** — look for `import wandb` or `wandb.init`. If present, skip to Step 4.
|
|
121
|
+
|
|
122
|
+
2. **If not present, add W&B logging** to the training script:
|
|
123
|
+
```python
|
|
124
|
+
import wandb
|
|
125
|
+
wandb.init(project=WANDB_PROJECT, name=EXP_NAME, config={...hyperparams...})
|
|
126
|
+
|
|
127
|
+
# Inside training loop:
|
|
128
|
+
wandb.log({"train/loss": loss, "train/lr": lr, "step": step})
|
|
129
|
+
|
|
130
|
+
# After eval:
|
|
131
|
+
wandb.log({"eval/loss": eval_loss, "eval/ppl": ppl, "eval/accuracy": acc})
|
|
132
|
+
|
|
133
|
+
# At end:
|
|
134
|
+
wandb.finish()
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
3. **Metrics to log** (add whichever apply to the experiment):
|
|
138
|
+
- `train/loss` — training loss per step
|
|
139
|
+
- `train/lr` — learning rate
|
|
140
|
+
- `eval/loss`, `eval/ppl`, `eval/accuracy` — eval metrics per epoch
|
|
141
|
+
- `gpu/memory_used` — GPU memory (via `torch.cuda.max_memory_allocated()`)
|
|
142
|
+
- `speed/samples_per_sec` — throughput
|
|
143
|
+
- Any custom metrics the experiment already computes
|
|
144
|
+
|
|
145
|
+
4. **Verify wandb login on the target machine:**
|
|
146
|
+
```bash
|
|
147
|
+
ssh <server> "wandb status" # should show logged in
|
|
148
|
+
# If not logged in:
|
|
149
|
+
ssh <server> "wandb login <WANDB_API_KEY>"
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
> The W&B project name and API key come from `CLAUDE.md` (see example below). The experiment name is auto-generated from the script name + timestamp.
|
|
153
|
+
|
|
154
|
+
### Step 4: Deploy
|
|
155
|
+
|
|
156
|
+
#### Remote (via SSH + screen)
|
|
157
|
+
|
|
158
|
+
For each experiment, create a dedicated screen session with GPU binding:
|
|
159
|
+
```bash
|
|
160
|
+
ssh <server> "screen -dmS <exp_name> bash -c '\
|
|
161
|
+
eval \"\$(<conda_path>/conda shell.bash hook)\" && \
|
|
162
|
+
conda activate <env> && \
|
|
163
|
+
CUDA_VISIBLE_DEVICES=<gpu_id> python <script> <args> 2>&1 | tee <log_file>'"
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
#### Vast.ai instance
|
|
167
|
+
|
|
168
|
+
No conda needed — the Docker image has the environment. Use `/workspace/project/` as working dir:
|
|
169
|
+
```bash
|
|
170
|
+
ssh -p <PORT> root@<HOST> "screen -dmS <exp_name> bash -c '\
|
|
171
|
+
cd /workspace/project && \
|
|
172
|
+
CUDA_VISIBLE_DEVICES=<gpu_id> python <script> <args> 2>&1 | tee /workspace/<log_file>'"
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
After launching, update the `experiment` field in `vast-instances.json` for this instance.
|
|
176
|
+
|
|
177
|
+
#### Modal (serverless)
|
|
178
|
+
|
|
179
|
+
When `gpu: modal` is detected, delegate to `/serverless-modal`:
|
|
180
|
+
|
|
181
|
+
1. **Analyze task** — determine VRAM needs, choose GPU, estimate cost
|
|
182
|
+
2. **Generate launcher** — create a `modal_launcher.py` that wraps the training script using `modal.Mount.from_local_dir` for code and `modal.Volume` for results
|
|
183
|
+
3. **Run** — `modal run modal_launcher.py` (runs locally, GPU executes remotely)
|
|
184
|
+
4. **Collect results** — results return via Volume or stdout, no manual download needed
|
|
185
|
+
|
|
186
|
+
Key Modal settings from `CLAUDE.md`:
|
|
187
|
+
- `modal_gpu`: GPU override (default: auto-select based on VRAM analysis)
|
|
188
|
+
- `modal_timeout`: Max seconds (default: 21600 = 6 hours)
|
|
189
|
+
- `modal_volume`: Named volume for persistent results
|
|
190
|
+
|
|
191
|
+
No SSH, no code sync, no screen sessions needed. Modal handles everything.
|
|
192
|
+
|
|
193
|
+
#### Local
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
# Linux with CUDA
|
|
197
|
+
CUDA_VISIBLE_DEVICES=<gpu_id> python <script> <args> 2>&1 | tee <log_file>
|
|
198
|
+
|
|
199
|
+
# Mac with MPS (PyTorch uses MPS automatically)
|
|
200
|
+
python <script> <args> 2>&1 | tee <log_file>
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
For local long-running jobs, use `run_in_background: true` to keep the conversation responsive.
|
|
204
|
+
|
|
205
|
+
### Step 5: Verify Launch
|
|
206
|
+
|
|
207
|
+
**Remote (SSH):**
|
|
208
|
+
```bash
|
|
209
|
+
ssh <server> "screen -ls"
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
**Remote (Vast.ai):**
|
|
213
|
+
```bash
|
|
214
|
+
ssh -p <PORT> root@<HOST> "screen -ls"
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
**Modal:**
|
|
218
|
+
```bash
|
|
219
|
+
modal app list # Check app is running
|
|
220
|
+
modal app logs <app> # Stream logs
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
**Local:**
|
|
224
|
+
Check process is running and GPU is allocated.
|
|
225
|
+
|
|
226
|
+
### Step 6: Feishu Notification (if configured)
|
|
227
|
+
|
|
228
|
+
After deployment is verified, check `~/.claude/feishu.json`:
|
|
229
|
+
- Send `experiment_done` notification: which experiments launched, which GPUs, estimated time
|
|
230
|
+
- If config absent or mode `"off"`: skip entirely (no-op)
|
|
231
|
+
|
|
232
|
+
### Step 7: Auto-Destroy Vast.ai Instance (when `gpu: vast` and `auto_destroy: true`)
|
|
233
|
+
|
|
234
|
+
**Skip this step if not using vast.ai or `auto_destroy` is `false`.**
|
|
235
|
+
|
|
236
|
+
After the experiment completes (detected via `/monitor-experiment` or screen session ending):
|
|
237
|
+
|
|
238
|
+
1. **Download results** from the instance:
|
|
239
|
+
```bash
|
|
240
|
+
rsync -avz -e "ssh -p <PORT>" root@<HOST>:/workspace/project/results/ ./results/
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
2. **Download logs**:
|
|
244
|
+
```bash
|
|
245
|
+
scp -P <PORT> root@<HOST>:/workspace/*.log ./logs/
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
3. **Destroy the instance** to stop billing:
|
|
249
|
+
```bash
|
|
250
|
+
vastai destroy instance <INSTANCE_ID>
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
4. **Update `vast-instances.json`** — mark status as `destroyed`.
|
|
254
|
+
|
|
255
|
+
5. **Report cost**:
|
|
256
|
+
```
|
|
257
|
+
Vast.ai instance <ID> auto-destroyed.
|
|
258
|
+
- Duration: ~X.X hours
|
|
259
|
+
- Estimated cost: ~$X.XX
|
|
260
|
+
- Results saved to: ./results/
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
> This ensures users are never billed for idle instances. When `auto_destroy: true` (the default), the full lifecycle is automatic: rent → setup → run → collect → destroy.
|
|
264
|
+
|
|
265
|
+
## Key Rules
|
|
266
|
+
|
|
267
|
+
- ALWAYS check GPU availability first — never blindly assign GPUs (except Modal, which manages allocation automatically)
|
|
268
|
+
- Each experiment gets its own screen session + GPU (remote) or background process (local)
|
|
269
|
+
- Use `tee` to save logs for later inspection
|
|
270
|
+
- Run deployment commands with `run_in_background: true` to keep conversation responsive
|
|
271
|
+
- Report back: which GPU, which screen/process, what command, estimated time
|
|
272
|
+
- If multiple experiments, launch them in parallel on different GPUs
|
|
273
|
+
- **Vast.ai cost awareness**: When using `gpu: vast`, always report the running cost. If `auto_destroy: true`, destroy the instance as soon as all experiments on it complete
|
|
274
|
+
- **Modal cost awareness**: Always estimate and display cost before running. Modal auto-scales to zero — no idle billing, no manual cleanup
|
|
275
|
+
|
|
276
|
+
## CLAUDE.md Example
|
|
277
|
+
|
|
278
|
+
Users should add their server info to their project's `CLAUDE.md`:
|
|
279
|
+
|
|
280
|
+
```markdown
|
|
281
|
+
## Remote Server
|
|
282
|
+
- gpu: remote # use pre-configured SSH server
|
|
283
|
+
- SSH: `ssh my-gpu-server`
|
|
284
|
+
- GPU: 4x A100 (80GB each)
|
|
285
|
+
- Conda: `eval "$(/opt/conda/bin/conda shell.bash hook)" && conda activate research`
|
|
286
|
+
- Code dir: `/home/user/experiments/`
|
|
287
|
+
- code_sync: rsync # default. Or set to "git" for git push/pull workflow
|
|
288
|
+
- wandb: false # set to "true" to auto-add W&B logging to experiment scripts
|
|
289
|
+
- wandb_project: my-project # W&B project name (required if wandb: true)
|
|
290
|
+
- wandb_entity: my-team # W&B team/user (optional, uses default if omitted)
|
|
291
|
+
|
|
292
|
+
## Vast.ai
|
|
293
|
+
- gpu: vast # rent on-demand GPU from vast.ai
|
|
294
|
+
- auto_destroy: true # auto-destroy after experiment completes (default: true)
|
|
295
|
+
- max_budget: 5.00 # optional: max total $ to spend per experiment
|
|
296
|
+
|
|
297
|
+
## Modal
|
|
298
|
+
- gpu: modal # serverless GPU via Modal (no SSH, auto scale-to-zero)
|
|
299
|
+
- modal_gpu: A100-80GB # optional: override GPU selection (default: auto-select)
|
|
300
|
+
- modal_timeout: 21600 # optional: max seconds (default: 6 hours)
|
|
301
|
+
- modal_volume: my-results # optional: named volume for results persistence
|
|
302
|
+
|
|
303
|
+
## Local Environment
|
|
304
|
+
- gpu: local # use local GPU
|
|
305
|
+
- Mac MPS / Linux CUDA
|
|
306
|
+
- Conda env: `ml` (Python 3.10 + PyTorch)
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
> **Vast.ai setup**: Run `pip install vastai && vastai set api-key YOUR_KEY`. Upload your SSH public key at https://cloud.vast.ai/manage-keys/. Set `gpu: vast` in your `CLAUDE.md` — `/run-experiment` will automatically rent an instance, run the experiment, and destroy it when done.
|
|
310
|
+
|
|
311
|
+
> **Modal setup**: Run `pip install modal && modal setup`. Bind a payment method at https://modal.com/settings (NEVER through CLI) to unlock the full $30/month free tier (without card: $5/month only). Set a workspace spending limit to prevent accidental charges. Set `gpu: modal` in your `CLAUDE.md` — ideal for users without a local GPU who need to debug code or run small-scale tests.
|
|
312
|
+
|
|
313
|
+
> **W&B setup**: Run `wandb login` on your server once (or set `WANDB_API_KEY` env var). The skill reads project/entity from CLAUDE.md and adds `wandb.init()` + `wandb.log()` to your training scripts automatically. Dashboard: `https://wandb.ai/<entity>/<project>`.
|