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.
Files changed (442) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +98 -0
  3. package/README_CN.md +87 -0
  4. package/dsh/checkout.patch.yml +38 -0
  5. package/dsh/client.js +634 -0
  6. package/dsh/cordis.patch.yml +44 -0
  7. package/dsh/index.mjs +76 -0
  8. package/dsh/run-status.mjs +182 -0
  9. package/dsh/scope-limits.mjs +50 -0
  10. package/dsh/workbench.mjs +291 -0
  11. package/mcp-servers/claude-review/README.md +93 -0
  12. package/mcp-servers/claude-review/run_with_claude_aws.sh +49 -0
  13. package/mcp-servers/claude-review/server.py +718 -0
  14. package/mcp-servers/codex-image2/README.md +65 -0
  15. package/mcp-servers/codex-image2/server.py +893 -0
  16. package/mcp-servers/feishu-bridge/requirements.txt +1 -0
  17. package/mcp-servers/feishu-bridge/server.py +240 -0
  18. package/mcp-servers/gemini-review/README.md +171 -0
  19. package/mcp-servers/gemini-review/server.py +1856 -0
  20. package/mcp-servers/llm-chat/requirements.txt +1 -0
  21. package/mcp-servers/llm-chat/server.py +664 -0
  22. package/mcp-servers/manual-review/README.md +133 -0
  23. package/mcp-servers/manual-review/server.py +910 -0
  24. package/mcp-servers/manual-review/ui.html +279 -0
  25. package/mcp-servers/minimax-chat/requirements.txt +1 -0
  26. package/mcp-servers/minimax-chat/server.py +381 -0
  27. package/package.json +51 -0
  28. package/skills/ablation-planner/SKILL.md +123 -0
  29. package/skills/alphaxiv/SKILL.md +196 -0
  30. package/skills/analyze-results/SKILL.md +46 -0
  31. package/skills/arxiv/SKILL.md +248 -0
  32. package/skills/auto-paper-improvement-loop/SKILL.md +651 -0
  33. package/skills/auto-review-loop/SKILL.md +1137 -0
  34. package/skills/auto-review-loop-llm/SKILL.md +259 -0
  35. package/skills/auto-review-loop-minimax/SKILL.md +302 -0
  36. package/skills/citation-audit/SKILL.md +502 -0
  37. package/skills/claims-drafting/SKILL.md +227 -0
  38. package/skills/comm-lit-review/SKILL.md +297 -0
  39. package/skills/deepxiv/SKILL.md +263 -0
  40. package/skills/dse-loop/SKILL.md +296 -0
  41. package/skills/embodiment-description/SKILL.md +129 -0
  42. package/skills/exa-search/SKILL.md +205 -0
  43. package/skills/experiment-audit/SKILL.md +311 -0
  44. package/skills/experiment-bridge/SKILL.md +376 -0
  45. package/skills/experiment-plan/SKILL.md +249 -0
  46. package/skills/experiment-queue/SKILL.md +431 -0
  47. package/skills/experiment-queue/scripts/build_manifest.py +142 -0
  48. package/skills/experiment-queue/scripts/queue_manager.py +433 -0
  49. package/skills/feishu-notify/SKILL.md +156 -0
  50. package/skills/figure-description/SKILL.md +138 -0
  51. package/skills/figure-spec/SKILL.md +262 -0
  52. package/skills/figure-spec/scripts/figure_renderer.py +799 -0
  53. package/skills/formula-derivation/SKILL.md +280 -0
  54. package/skills/gemini-search/SKILL.md +231 -0
  55. package/skills/grant-proposal/SKILL.md +698 -0
  56. package/skills/idea-creator/SKILL.md +542 -0
  57. package/skills/idea-discovery/SKILL.md +521 -0
  58. package/skills/idea-discovery-robot/SKILL.md +363 -0
  59. package/skills/integrity-forensics/SKILL.md +284 -0
  60. package/skills/interview-cheatsheet/SKILL.md +245 -0
  61. package/skills/invention-structuring/SKILL.md +188 -0
  62. package/skills/jurisdiction-format/SKILL.md +192 -0
  63. package/skills/kill-argument/SKILL.md +437 -0
  64. package/skills/mermaid-diagram/SKILL.md +419 -0
  65. package/skills/meta-apply/SKILL.md +141 -0
  66. package/skills/meta-optimize/SKILL.md +437 -0
  67. package/skills/monitor-experiment/SKILL.md +140 -0
  68. package/skills/novelty-check/SKILL.md +101 -0
  69. package/skills/openalex/SKILL.md +237 -0
  70. package/skills/overleaf-sync/SKILL.md +220 -0
  71. package/skills/paper-claim-audit/SKILL.md +348 -0
  72. package/skills/paper-compile/SKILL.md +266 -0
  73. package/skills/paper-figure/SKILL.md +312 -0
  74. package/skills/paper-illustration/SKILL.md +736 -0
  75. package/skills/paper-illustration-image2/SKILL.md +391 -0
  76. package/skills/paper-illustration-image2/scripts/paper_illustration_image2.py +255 -0
  77. package/skills/paper-plan/SKILL.md +386 -0
  78. package/skills/paper-poster/SKILL.md +19 -0
  79. package/skills/paper-poster-html/DESIGN_FINAL.md +176 -0
  80. package/skills/paper-poster-html/IMPLEMENTATION_CONVENTIONS.md +161 -0
  81. package/skills/paper-poster-html/LICENSES/posterly-MIT.txt +21 -0
  82. package/skills/paper-poster-html/NOTICE.md +57 -0
  83. package/skills/paper-poster-html/SKILL.md +323 -0
  84. package/skills/paper-poster-html/scripts/_posterly/__init__.py +0 -0
  85. package/skills/paper-poster-html/scripts/_posterly/canvas.py +200 -0
  86. package/skills/paper-poster-html/scripts/_posterly/measure.py +588 -0
  87. package/skills/paper-poster-html/scripts/_posterly/polish.py +498 -0
  88. package/skills/paper-poster-html/scripts/_posterly/preflight.py +489 -0
  89. package/skills/paper-poster-html/scripts/_posterly/render.py +215 -0
  90. package/skills/paper-poster-html/scripts/_posterly/textutil.py +16 -0
  91. package/skills/paper-poster-html/scripts/_posterly/verify_final.py +171 -0
  92. package/skills/paper-poster-html/scripts/asset_check.py +897 -0
  93. package/skills/paper-poster-html/scripts/extract_pdf_figures.py +666 -0
  94. package/skills/paper-poster-html/scripts/poster_check.py +251 -0
  95. package/skills/paper-poster-html/scripts/preprocess_figures.py +238 -0
  96. package/skills/paper-poster-html/scripts/render_preview.py +217 -0
  97. package/skills/paper-poster-html/scripts/run_gates.py +556 -0
  98. package/skills/paper-poster-html/scripts/style_check.py +1324 -0
  99. package/skills/paper-poster-html/templates/COMPONENTS.md +462 -0
  100. package/skills/paper-poster-html/templates/README.md +170 -0
  101. package/skills/paper-poster-html/templates/landscape_4col.html +1032 -0
  102. package/skills/paper-poster-html/templates/landscape_hero.html +1046 -0
  103. package/skills/paper-poster-html/templates/portrait_2col.html +947 -0
  104. package/skills/paper-poster-html/templates/tokens/acl.json +9 -0
  105. package/skills/paper-poster-html/templates/tokens/cvpr.json +9 -0
  106. package/skills/paper-poster-html/templates/tokens/generic.json +9 -0
  107. package/skills/paper-poster-html/templates/tokens/iclr.json +9 -0
  108. package/skills/paper-poster-html/templates/tokens/icml.json +9 -0
  109. package/skills/paper-poster-html/templates/tokens/neurips.json +9 -0
  110. package/skills/paper-slides/SKILL.md +635 -0
  111. package/skills/paper-talk/SKILL.md +381 -0
  112. package/skills/paper-write/SKILL.md +604 -0
  113. package/skills/paper-write/templates/IEEEtran.bst +2409 -0
  114. package/skills/paper-write/templates/IEEEtran.cls +6347 -0
  115. package/skills/paper-write/templates/iclr2026.tex +84 -0
  116. package/skills/paper-write/templates/icml2025.tex +87 -0
  117. package/skills/paper-write/templates/ieee_conference.tex +89 -0
  118. package/skills/paper-write/templates/ieee_journal.tex +93 -0
  119. package/skills/paper-write/templates/math_commands.tex +48 -0
  120. package/skills/paper-write/templates/neurips2025.tex +80 -0
  121. package/skills/paper-writing/SKILL.md +916 -0
  122. package/skills/patent-novelty-check/SKILL.md +153 -0
  123. package/skills/patent-pipeline/SKILL.md +344 -0
  124. package/skills/patent-review/SKILL.md +203 -0
  125. package/skills/pixel-art/SKILL.md +137 -0
  126. package/skills/prior-art-search/SKILL.md +146 -0
  127. package/skills/proof-checker/SKILL.md +866 -0
  128. package/skills/proof-orchestrator/NOTICE.md +24 -0
  129. package/skills/proof-orchestrator/SKILL.md +254 -0
  130. package/skills/proof-orchestrator/references/audit-output-contract.md +126 -0
  131. package/skills/proof-orchestrator/references/deepseek-routing.md +74 -0
  132. package/skills/proof-orchestrator/references/dispatch-prompts.md +227 -0
  133. package/skills/proof-orchestrator/references/notation-audit.md +135 -0
  134. package/skills/proof-orchestrator/references/proof-audit-rubric.md +70 -0
  135. package/skills/proof-orchestrator/references/stress-tests.md +38 -0
  136. package/skills/proof-writer/SKILL.md +223 -0
  137. package/skills/qzcli/SKILL.md +324 -0
  138. package/skills/rebuttal/SKILL.md +376 -0
  139. package/skills/render-html/SKILL.md +316 -0
  140. package/skills/render-html/scripts/render_html.py +1006 -0
  141. package/skills/render-html/scripts/templates/academic.html +703 -0
  142. package/skills/render-html/scripts/templates/dashboard.html +333 -0
  143. package/skills/research-lit/SKILL.md +756 -0
  144. package/skills/research-pipeline/SKILL.md +384 -0
  145. package/skills/research-refine/SKILL.md +770 -0
  146. package/skills/research-refine-pipeline/SKILL.md +186 -0
  147. package/skills/research-review/SKILL.md +198 -0
  148. package/skills/research-wiki/SKILL.md +461 -0
  149. package/skills/resubmit-pipeline/SKILL.md +447 -0
  150. package/skills/result-to-claim/SKILL.md +311 -0
  151. package/skills/run-experiment/SKILL.md +313 -0
  152. package/skills/semantic-scholar/SKILL.md +236 -0
  153. package/skills/serverless-modal/SKILL.md +335 -0
  154. package/skills/shared-references/acceptance-gate.md +324 -0
  155. package/skills/shared-references/assurance-contract.md +248 -0
  156. package/skills/shared-references/capture-antipatterns.md +78 -0
  157. package/skills/shared-references/citation-discipline.md +583 -0
  158. package/skills/shared-references/compute-env-contract.md +163 -0
  159. package/skills/shared-references/effort-contract.md +183 -0
  160. package/skills/shared-references/evidence-precheck.md +65 -0
  161. package/skills/shared-references/experiment-integrity.md +49 -0
  162. package/skills/shared-references/external-cadence.md +326 -0
  163. package/skills/shared-references/fan-out-pattern.md +366 -0
  164. package/skills/shared-references/injection-hygiene.md +127 -0
  165. package/skills/shared-references/integration-contract.md +461 -0
  166. package/skills/shared-references/output-composition.md +93 -0
  167. package/skills/shared-references/output-language.md +45 -0
  168. package/skills/shared-references/output-manifest.md +49 -0
  169. package/skills/shared-references/output-versioning.md +111 -0
  170. package/skills/shared-references/patent-format-cn.md +199 -0
  171. package/skills/shared-references/patent-format-ep.md +173 -0
  172. package/skills/shared-references/patent-format-us.md +161 -0
  173. package/skills/shared-references/patent-writing-principles.md +197 -0
  174. package/skills/shared-references/prior-art-databases.md +141 -0
  175. package/skills/shared-references/resumable-runs.md +109 -0
  176. package/skills/shared-references/review-scope-limits.md +81 -0
  177. package/skills/shared-references/review-tracing.md +391 -0
  178. package/skills/shared-references/reviewer-independence.md +79 -0
  179. package/skills/shared-references/reviewer-routing.md +852 -0
  180. package/skills/shared-references/skill-governance.md +104 -0
  181. package/skills/shared-references/taste-calibration.md +85 -0
  182. package/skills/shared-references/venue-checklists.md +114 -0
  183. package/skills/shared-references/wiki-helper-resolution.md +134 -0
  184. package/skills/shared-references/writing-principles.md +525 -0
  185. package/skills/skills-codex/README.md +102 -0
  186. package/skills/skills-codex/README_CN.md +100 -0
  187. package/skills/skills-codex/ablation-planner/SKILL.md +126 -0
  188. package/skills/skills-codex/alphaxiv/SKILL.md +186 -0
  189. package/skills/skills-codex/analyze-results/SKILL.md +45 -0
  190. package/skills/skills-codex/arxiv/SKILL.md +210 -0
  191. package/skills/skills-codex/auto-paper-improvement-loop/SKILL.md +574 -0
  192. package/skills/skills-codex/auto-review-loop/SKILL.md +500 -0
  193. package/skills/skills-codex/auto-review-loop-llm/SKILL.md +247 -0
  194. package/skills/skills-codex/auto-review-loop-minimax/SKILL.md +290 -0
  195. package/skills/skills-codex/citation-audit/SKILL.md +504 -0
  196. package/skills/skills-codex/claims-drafting/SKILL.md +239 -0
  197. package/skills/skills-codex/comm-lit-review/SKILL.md +299 -0
  198. package/skills/skills-codex/comm-lit-review/references/domain-taxonomy.md +57 -0
  199. package/skills/skills-codex/comm-lit-review/references/output-template.md +37 -0
  200. package/skills/skills-codex/comm-lit-review/references/source-policy.md +99 -0
  201. package/skills/skills-codex/comm-lit-review/references/venue-tiering.md +112 -0
  202. package/skills/skills-codex/deepxiv/SKILL.md +142 -0
  203. package/skills/skills-codex/dse-loop/SKILL.md +285 -0
  204. package/skills/skills-codex/embodiment-description/SKILL.md +129 -0
  205. package/skills/skills-codex/exa-search/SKILL.md +192 -0
  206. package/skills/skills-codex/experiment-audit/SKILL.md +286 -0
  207. package/skills/skills-codex/experiment-bridge/SKILL.md +356 -0
  208. package/skills/skills-codex/experiment-plan/SKILL.md +249 -0
  209. package/skills/skills-codex/experiment-queue/SKILL.md +401 -0
  210. package/skills/skills-codex/feishu-notify/SKILL.md +155 -0
  211. package/skills/skills-codex/figure-description/SKILL.md +138 -0
  212. package/skills/skills-codex/figure-spec/SKILL.md +252 -0
  213. package/skills/skills-codex/formula-derivation/SKILL.md +280 -0
  214. package/skills/skills-codex/gemini-search/SKILL.md +205 -0
  215. package/skills/skills-codex/grant-proposal/SKILL.md +626 -0
  216. package/skills/skills-codex/idea-creator/SKILL.md +405 -0
  217. package/skills/skills-codex/idea-discovery/SKILL.md +475 -0
  218. package/skills/skills-codex/idea-discovery-robot/SKILL.md +362 -0
  219. package/skills/skills-codex/integrity-forensics/SKILL.md +106 -0
  220. package/skills/skills-codex/interview-cheatsheet/SKILL.md +245 -0
  221. package/skills/skills-codex/invention-structuring/SKILL.md +188 -0
  222. package/skills/skills-codex/jurisdiction-format/SKILL.md +192 -0
  223. package/skills/skills-codex/kill-argument/SKILL.md +403 -0
  224. package/skills/skills-codex/mermaid-diagram/SKILL.md +379 -0
  225. package/skills/skills-codex/meta-apply/SKILL.md +154 -0
  226. package/skills/skills-codex/meta-optimize/SKILL.md +348 -0
  227. package/skills/skills-codex/monitor-experiment/SKILL.md +98 -0
  228. package/skills/skills-codex/novelty-check/SKILL.md +89 -0
  229. package/skills/skills-codex/openalex/SKILL.md +228 -0
  230. package/skills/skills-codex/overleaf-sync/SKILL.md +220 -0
  231. package/skills/skills-codex/paper-claim-audit/SKILL.md +350 -0
  232. package/skills/skills-codex/paper-compile/SKILL.md +253 -0
  233. package/skills/skills-codex/paper-figure/SKILL.md +311 -0
  234. package/skills/skills-codex/paper-illustration/SKILL.md +690 -0
  235. package/skills/skills-codex/paper-illustration-image2/SKILL.md +383 -0
  236. package/skills/skills-codex/paper-illustration-image2/scripts/paper_illustration_image2.py +255 -0
  237. package/skills/skills-codex/paper-plan/SKILL.md +278 -0
  238. package/skills/skills-codex/paper-poster/SKILL.md +19 -0
  239. package/skills/skills-codex/paper-poster-html/SKILL.md +377 -0
  240. package/skills/skills-codex/paper-slides/SKILL.md +571 -0
  241. package/skills/skills-codex/paper-talk/SKILL.md +381 -0
  242. package/skills/skills-codex/paper-write/SKILL.md +411 -0
  243. package/skills/skills-codex/paper-write/templates/IEEEtran.bst +2409 -0
  244. package/skills/skills-codex/paper-write/templates/IEEEtran.cls +6347 -0
  245. package/skills/skills-codex/paper-write/templates/aaai2026.bst +1493 -0
  246. package/skills/skills-codex/paper-write/templates/aaai2026.sty +315 -0
  247. package/skills/skills-codex/paper-write/templates/aaai2026.tex +952 -0
  248. package/skills/skills-codex/paper-write/templates/acl.sty +312 -0
  249. package/skills/skills-codex/paper-write/templates/acl2026.tex +377 -0
  250. package/skills/skills-codex/paper-write/templates/acl_natbib.bst +1940 -0
  251. package/skills/skills-codex/paper-write/templates/acm.bst +3081 -0
  252. package/skills/skills-codex/paper-write/templates/acm_mm2026.tex +204 -0
  253. package/skills/skills-codex/paper-write/templates/acmart.cls +3520 -0
  254. package/skills/skills-codex/paper-write/templates/cvpr.bst +1448 -0
  255. package/skills/skills-codex/paper-write/templates/cvpr.sty +508 -0
  256. package/skills/skills-codex/paper-write/templates/cvpr2026.tex +63 -0
  257. package/skills/skills-codex/paper-write/templates/iclr2026.tex +84 -0
  258. package/skills/skills-codex/paper-write/templates/iclr2026_conference.bst +1440 -0
  259. package/skills/skills-codex/paper-write/templates/iclr2026_conference.sty +246 -0
  260. package/skills/skills-codex/paper-write/templates/icml2026.sty +767 -0
  261. package/skills/skills-codex/paper-write/templates/icml2026.tex +662 -0
  262. package/skills/skills-codex/paper-write/templates/ieee_conference.tex +89 -0
  263. package/skills/skills-codex/paper-write/templates/ieee_journal.tex +93 -0
  264. package/skills/skills-codex/paper-write/templates/math_commands.tex +48 -0
  265. package/skills/skills-codex/paper-write/templates/neurips2026.tex +493 -0
  266. package/skills/skills-codex/paper-write/templates/neurips_2026.sty +437 -0
  267. package/skills/skills-codex/paper-writing/SKILL.md +731 -0
  268. package/skills/skills-codex/patent-novelty-check/SKILL.md +153 -0
  269. package/skills/skills-codex/patent-pipeline/SKILL.md +344 -0
  270. package/skills/skills-codex/patent-review/SKILL.md +202 -0
  271. package/skills/skills-codex/pixel-art/SKILL.md +139 -0
  272. package/skills/skills-codex/prior-art-search/SKILL.md +146 -0
  273. package/skills/skills-codex/proof-checker/SKILL.md +554 -0
  274. package/skills/skills-codex/proof-orchestrator/SKILL.md +260 -0
  275. package/skills/skills-codex/proof-orchestrator/references/audit-output-contract.md +126 -0
  276. package/skills/skills-codex/proof-orchestrator/references/deepseek-routing.md +76 -0
  277. package/skills/skills-codex/proof-orchestrator/references/dispatch-prompts.md +227 -0
  278. package/skills/skills-codex/proof-orchestrator/references/notation-audit.md +135 -0
  279. package/skills/skills-codex/proof-orchestrator/references/proof-audit-rubric.md +70 -0
  280. package/skills/skills-codex/proof-orchestrator/references/stress-tests.md +38 -0
  281. package/skills/skills-codex/proof-writer/SKILL.md +222 -0
  282. package/skills/skills-codex/qzcli/SKILL.md +324 -0
  283. package/skills/skills-codex/rebuttal/SKILL.md +305 -0
  284. package/skills/skills-codex/render-html/SKILL.md +305 -0
  285. package/skills/skills-codex/render-html/scripts/__pycache__/render_html.cpython-314.pyc +0 -0
  286. package/skills/skills-codex/render-html/scripts/render_html.py +909 -0
  287. package/skills/skills-codex/render-html/scripts/templates/academic.html +342 -0
  288. package/skills/skills-codex/render-html/scripts/templates/dashboard.html +333 -0
  289. package/skills/skills-codex/research-lit/SKILL.md +464 -0
  290. package/skills/skills-codex/research-pipeline/SKILL.md +340 -0
  291. package/skills/skills-codex/research-refine/SKILL.md +721 -0
  292. package/skills/skills-codex/research-refine-pipeline/SKILL.md +186 -0
  293. package/skills/skills-codex/research-review/SKILL.md +135 -0
  294. package/skills/skills-codex/research-wiki/SKILL.md +421 -0
  295. package/skills/skills-codex/resubmit-pipeline/SKILL.md +444 -0
  296. package/skills/skills-codex/result-to-claim/SKILL.md +246 -0
  297. package/skills/skills-codex/run-experiment/SKILL.md +236 -0
  298. package/skills/skills-codex/semantic-scholar/SKILL.md +219 -0
  299. package/skills/skills-codex/serverless-modal/SKILL.md +335 -0
  300. package/skills/skills-codex/shared-references/acceptance-gate.md +336 -0
  301. package/skills/skills-codex/shared-references/assurance-contract.md +139 -0
  302. package/skills/skills-codex/shared-references/capture-antipatterns.md +84 -0
  303. package/skills/skills-codex/shared-references/citation-discipline.md +452 -0
  304. package/skills/skills-codex/shared-references/compute-env-contract.md +163 -0
  305. package/skills/skills-codex/shared-references/effort-contract.md +143 -0
  306. package/skills/skills-codex/shared-references/evidence-precheck.md +73 -0
  307. package/skills/skills-codex/shared-references/experiment-integrity.md +49 -0
  308. package/skills/skills-codex/shared-references/external-cadence.md +334 -0
  309. package/skills/skills-codex/shared-references/fan-out-pattern.md +375 -0
  310. package/skills/skills-codex/shared-references/injection-hygiene.md +132 -0
  311. package/skills/skills-codex/shared-references/integration-contract.md +372 -0
  312. package/skills/skills-codex/shared-references/output-composition.md +98 -0
  313. package/skills/skills-codex/shared-references/output-language.md +45 -0
  314. package/skills/skills-codex/shared-references/output-manifest.md +40 -0
  315. package/skills/skills-codex/shared-references/output-versioning.md +111 -0
  316. package/skills/skills-codex/shared-references/patent-format-cn.md +199 -0
  317. package/skills/skills-codex/shared-references/patent-format-ep.md +173 -0
  318. package/skills/skills-codex/shared-references/patent-format-us.md +161 -0
  319. package/skills/skills-codex/shared-references/patent-writing-principles.md +197 -0
  320. package/skills/skills-codex/shared-references/prior-art-databases.md +141 -0
  321. package/skills/skills-codex/shared-references/resumable-runs.md +125 -0
  322. package/skills/skills-codex/shared-references/review-scope-limits.md +81 -0
  323. package/skills/skills-codex/shared-references/review-tracing.md +144 -0
  324. package/skills/skills-codex/shared-references/reviewer-independence.md +66 -0
  325. package/skills/skills-codex/shared-references/reviewer-routing.md +128 -0
  326. package/skills/skills-codex/shared-references/skill-governance.md +119 -0
  327. package/skills/skills-codex/shared-references/taste-calibration.md +90 -0
  328. package/skills/skills-codex/shared-references/venue-checklists.md +73 -0
  329. package/skills/skills-codex/shared-references/wiki-helper-resolution.md +69 -0
  330. package/skills/skills-codex/shared-references/writing-principles.md +525 -0
  331. package/skills/skills-codex/slides-polish/SKILL.md +563 -0
  332. package/skills/skills-codex/specification-writing/SKILL.md +211 -0
  333. package/skills/skills-codex/system-profile/SKILL.md +103 -0
  334. package/skills/skills-codex/training-check/SKILL.md +83 -0
  335. package/skills/skills-codex/vast-gpu/SKILL.md +394 -0
  336. package/skills/skills-codex/web-debug-search/SKILL.md +334 -0
  337. package/skills/skills-codex/wiki-enrich/SKILL.md +255 -0
  338. package/skills/skills-codex/writing-systems-papers/SKILL.md +184 -0
  339. package/skills/skills-codex-claude-review/README.md +79 -0
  340. package/skills/skills-codex-claude-review/README_CN.md +78 -0
  341. package/skills/skills-codex-claude-review/auto-paper-improvement-loop/SKILL.md +581 -0
  342. package/skills/skills-codex-claude-review/auto-review-loop/SKILL.md +510 -0
  343. package/skills/skills-codex-claude-review/novelty-check/SKILL.md +102 -0
  344. package/skills/skills-codex-claude-review/paper-figure/SKILL.md +319 -0
  345. package/skills/skills-codex-claude-review/paper-plan/SKILL.md +287 -0
  346. package/skills/skills-codex-claude-review/paper-write/SKILL.md +420 -0
  347. package/skills/skills-codex-claude-review/research-refine/SKILL.md +732 -0
  348. package/skills/skills-codex-claude-review/research-review/SKILL.md +149 -0
  349. package/skills/skills-codex-gemini-review/README.md +176 -0
  350. package/skills/skills-codex-gemini-review/README_CN.md +175 -0
  351. package/skills/skills-codex-gemini-review/auto-paper-improvement-loop/SKILL.md +331 -0
  352. package/skills/skills-codex-gemini-review/auto-review-loop/SKILL.md +304 -0
  353. package/skills/skills-codex-gemini-review/grant-proposal/SKILL.md +630 -0
  354. package/skills/skills-codex-gemini-review/idea-creator/SKILL.md +263 -0
  355. package/skills/skills-codex-gemini-review/idea-discovery/SKILL.md +275 -0
  356. package/skills/skills-codex-gemini-review/idea-discovery-robot/SKILL.md +365 -0
  357. package/skills/skills-codex-gemini-review/novelty-check/SKILL.md +92 -0
  358. package/skills/skills-codex-gemini-review/paper-figure/SKILL.md +289 -0
  359. package/skills/skills-codex-gemini-review/paper-plan/SKILL.md +265 -0
  360. package/skills/skills-codex-gemini-review/paper-poster-html/SKILL.md +102 -0
  361. package/skills/skills-codex-gemini-review/paper-slides/SKILL.md +582 -0
  362. package/skills/skills-codex-gemini-review/paper-write/SKILL.md +346 -0
  363. package/skills/skills-codex-gemini-review/paper-writing/SKILL.md +312 -0
  364. package/skills/skills-codex-gemini-review/research-refine/SKILL.md +674 -0
  365. package/skills/skills-codex-gemini-review/research-review/SKILL.md +112 -0
  366. package/skills/slides-polish/SKILL.md +565 -0
  367. package/skills/specification-writing/SKILL.md +211 -0
  368. package/skills/system-profile/SKILL.md +103 -0
  369. package/skills/training-check/SKILL.md +132 -0
  370. package/skills/vast-gpu/SKILL.md +394 -0
  371. package/skills/web-debug-search/SKILL.md +334 -0
  372. package/skills/wiki-enrich/SKILL.md +257 -0
  373. package/skills/writing-systems-papers/SKILL.md +184 -0
  374. package/templates/CLAUDE_MD_TEMPLATE.md +29 -0
  375. package/templates/EXPERIMENT_LOG_TEMPLATE.md +47 -0
  376. package/templates/EXPERIMENT_PLAN_TEMPLATE.md +51 -0
  377. package/templates/EXPERIMENT_PLAN_TEMPLATE_CN.md +53 -0
  378. package/templates/FINDINGS_TEMPLATE.md +52 -0
  379. package/templates/IDEA_CANDIDATES_TEMPLATE.md +47 -0
  380. package/templates/IDEA_CANDIDATES_TEMPLATE_CN.md +47 -0
  381. package/templates/INVENTION_BRIEF_TEMPLATE.md +87 -0
  382. package/templates/MANIFEST_TEMPLATE.md +7 -0
  383. package/templates/NARRATIVE_REPORT_TEMPLATE.md +49 -0
  384. package/templates/PAPER_PLAN_TEMPLATE.md +47 -0
  385. package/templates/PATENT_CLAIMS_TEMPLATE.md +78 -0
  386. package/templates/PATENT_SPECIFICATION_TEMPLATE.md +68 -0
  387. package/templates/README.md +57 -0
  388. package/templates/RESEARCH_BRIEF_TEMPLATE.md +35 -0
  389. package/templates/RESEARCH_BRIEF_TEMPLATE_CN.md +41 -0
  390. package/templates/RESEARCH_CONTRACT_TEMPLATE.md +60 -0
  391. package/templates/claude-hooks/corpus_write_guard.json +16 -0
  392. package/templates/claude-hooks/corpus_write_guard.py +85 -0
  393. package/templates/claude-hooks/meta_logging.json +74 -0
  394. package/templates/gitignore-trace.txt +3 -0
  395. package/tools/__pycache__/check_skills_inventory.cpython-314.pyc +0 -0
  396. package/tools/arxiv_fetch.py +311 -0
  397. package/tools/capture_filter.py +126 -0
  398. package/tools/check_skills_inventory.py +273 -0
  399. package/tools/convert_skills_to_llm_chat.py +282 -0
  400. package/tools/copilot_native_evidence.py +818 -0
  401. package/tools/deepxiv_fetch.py +213 -0
  402. package/tools/evidence_check.py +212 -0
  403. package/tools/exa_search.py +425 -0
  404. package/tools/experiment_queue/README.md +118 -0
  405. package/tools/experiment_queue/build_manifest.py +44 -0
  406. package/tools/experiment_queue/queue_manager.py +44 -0
  407. package/tools/extract_paper_style.py +560 -0
  408. package/tools/figure_renderer.py +69 -0
  409. package/tools/forensics_gate.py +669 -0
  410. package/tools/generate_codex_claude_review_overrides.py +299 -0
  411. package/tools/idea_discovery_gate.py +256 -0
  412. package/tools/install_aris.ps1 +1372 -0
  413. package/tools/install_aris.sh +1370 -0
  414. package/tools/install_aris_codex.sh +1023 -0
  415. package/tools/install_aris_copilot.sh +1052 -0
  416. package/tools/iteration_log.py +143 -0
  417. package/tools/lint_skills_helpers.sh +84 -0
  418. package/tools/meta_opt/check_ready.sh +80 -0
  419. package/tools/meta_opt/log_event.sh +91 -0
  420. package/tools/meta_opt/trigger_eval.py +280 -0
  421. package/tools/meta_opt/trigger_evals.sample.json +28 -0
  422. package/tools/openalex_fetch.py +326 -0
  423. package/tools/overleaf_audit.sh +104 -0
  424. package/tools/overleaf_setup.sh +150 -0
  425. package/tools/paper_illustration_image2.py +62 -0
  426. package/tools/provenance.py +294 -0
  427. package/tools/research_wiki.py +1720 -0
  428. package/tools/review_gate.py +502 -0
  429. package/tools/run_state.py +399 -0
  430. package/tools/save_trace.sh +477 -0
  431. package/tools/semantic_scholar_fetch.py +438 -0
  432. package/tools/skill-groups.tsv +116 -0
  433. package/tools/skill_picker.py +238 -0
  434. package/tools/smart_update.ps1 +521 -0
  435. package/tools/smart_update.sh +591 -0
  436. package/tools/smart_update_codex.sh +419 -0
  437. package/tools/smart_update_copilot.sh +605 -0
  438. package/tools/threat_scan.py +222 -0
  439. package/tools/verify_paper_audits.sh +487 -0
  440. package/tools/verify_papers.py +613 -0
  441. package/tools/verify_wiki_coverage.sh +176 -0
  442. package/tools/watchdog.py +485 -0
@@ -0,0 +1,461 @@
1
+ # Integration Contract
2
+
3
+ When one ARIS skill delegates work to another (or to persistent project
4
+ state), the coupling must be **engineered**, not assumed. This document
5
+ formalizes what every cross-skill integration inside ARIS must provide.
6
+
7
+ Rule of thumb: **SKILL.md prose can *describe* an integration; it cannot
8
+ *guarantee* one.** Any integration whose silent failure would damage the
9
+ research result needs the components below. Prose-only "MUST invoke X"
10
+ has repeatedly failed in practice — the executor skips under context
11
+ pressure and the caller has no way to detect it.
12
+
13
+ ## Known failure mode (why this contract exists)
14
+
15
+ Two bugs in the same week, same pathology:
16
+
17
+ 1. **Assurance gate bypass (2026-04-21).** `/paper-writing` ran at
18
+ `— effort: beast` silently skipped `/proof-checker`,
19
+ `/paper-claim-audit`, and `/citation-audit` because each phase's
20
+ content detector could return negative and the outer prose said
21
+ "audit is optional."
22
+ 2. **Research wiki ingest no-op (2026-04-21).** `/research-wiki init`
23
+ created `research-wiki/papers/` but no paper ever landed there:
24
+ `/arxiv`, `/alphaxiv`, `/deepxiv`, `/semantic-scholar`, `/exa-search`,
25
+ raw `Read`/`WebFetch` — none carried a wiki-ingest hook, and the two
26
+ that did (`/research-lit`, `/idea-creator`) only had soft prose
27
+ ("optional and automatic").
28
+
29
+ Both bugs ship through the same gap: **one skill "called" another via
30
+ prose without a canonical helper, a concrete artifact, or a verifier**.
31
+
32
+ ## Required components
33
+
34
+ Every integration between two ARIS skills (or between a skill and a
35
+ persistent project artifact) must provide all six:
36
+
37
+ ### 1. Activation predicate — single, explicit, observable
38
+
39
+ A one-line test that says "does this integration fire in this context?"
40
+ Must be observable from outside the LLM (a file exists, an argument is
41
+ set, an environment variable is present). Not a vibe, not "probably
42
+ relevant."
43
+
44
+ - ✅ `if [ -d research-wiki/ ]`
45
+ - ✅ `if assurance == "submission"`
46
+ - ❌ "if the user seems to want this"
47
+
48
+ ### 2. Canonical helper — one implementation, not copy-pasted
49
+
50
+ The business logic lives in **exactly one place** — a script under
51
+ `tools/` (canonical name, no path prefix), or a single subcommand of
52
+ an existing helper. Every caller invokes the same entrypoint, but
53
+ every caller must also resolve **where** that entrypoint lives,
54
+ because the helper may sit at any of:
55
+
56
+ - `<project>/.aris/tools/<helper>` — symlinked by `install_aris.sh` (Phase 0, #174)
57
+ - `<project>/tools/<helper>` — manual copy or running from inside the ARIS repo
58
+ - `$ARIS_REPO/tools/<helper>` — env var or auto-resolved from the install manifest
59
+ - `$ARIS_REPO/tools/<helper>` via `$HOME/.aris/repo` — global pointer file
60
+ (one line, absolute repo path) written by `install_aris*.{sh,ps1}` and
61
+ `smart_update*.{sh,ps1}` at install/update time; the only layer that
62
+ resolves for a global copy-install (`~/.claude/skills`) with no
63
+ project-local `.aris/` manifest (#366)
64
+
65
+ Every caller — including those primarily exercised from inside the
66
+ ARIS repo — MUST use the resolution chain. The chain's middle layer
67
+ (`tools/<helper>`) covers the in-repo case at the same code path,
68
+ with no special-casing needed. The exception that used to live here
69
+ ("helpers run from inside ARIS repo may stay plain `tools/...`")
70
+ caused the canonical user-report bug: `/paper-writing` invoked from
71
+ a downstream paper project could not find `verify_paper_audits.sh`
72
+ because the prose endorsed the hardcoded form.
73
+
74
+ #### Resolver block (lookup only — failure policy is separate)
75
+
76
+ ```bash
77
+ # Canonical strict-safe variant: works whether or not the caller has
78
+ # `set -e` enabled. The manifest read only runs when the file exists,
79
+ # and `|| true` consumes a non-zero awk exit so chain evaluation
80
+ # continues. Run `chmod +x` not required: the block uses `[ -f ]`.
81
+ cd "$(git rev-parse --show-toplevel 2>/dev/null || pwd)" || exit 1
82
+ if [ -z "${ARIS_REPO:-}" ] && [ -f .aris/installed-skills.txt ]; then
83
+ ARIS_REPO=$(awk -F'\t' '$1=="repo_root"{print $2; exit}' .aris/installed-skills.txt 2>/dev/null) || true
84
+ fi
85
+ # Layer 4: global pointer file, written by the installer/updater at
86
+ # ~/.aris/repo (#366) — covers global copy-installs with no project manifest.
87
+ if [ -z "${ARIS_REPO:-}" ] && [ -f "$HOME/.aris/repo" ]; then
88
+ ARIS_REPO=$(cat "$HOME/.aris/repo" 2>/dev/null) || true
89
+ fi
90
+ HELPER=".aris/tools/<helper>"
91
+ [ -f "$HELPER" ] || HELPER="tools/<helper>"
92
+ [ -f "$HELPER" ] || { [ -n "${ARIS_REPO:-}" ] && HELPER="$ARIS_REPO/tools/<helper>"; }
93
+ [ -f "$HELPER" ] || HELPER=""
94
+ ```
95
+
96
+ After the resolver runs, `$HELPER` is either the resolved absolute or
97
+ relative path, or the empty string. Use a semantic variable name in
98
+ real callers (`AUDIT_VERIFIER`, `TRACE_HELPER`, `WIKI_SCRIPT`,
99
+ `IMAGE2_HELPER`, …) so a single SKILL that resolves multiple helpers
100
+ does not clobber one with another.
101
+
102
+ If the SKILL is invoked from a subdirectory of a non-git project (no
103
+ `.git/` anywhere up the tree), `git rev-parse --show-toplevel` fails
104
+ and the `|| pwd` fallback keeps the resolver in the current directory.
105
+ SKILLs that need to discover `.aris/` from a deeper subdirectory MUST
106
+ either run from project root or set `$ARIS_REPO` explicitly — the
107
+ resolver intentionally does not walk parent directories.
108
+
109
+ #### Failure policy (chosen per integration)
110
+
111
+ The resolver does **not** decide what happens when the helper is
112
+ missing. Each calling SKILL must pick exactly one policy below based
113
+ on how the helper contributes to the research outcome:
114
+
115
+ **A. Load-bearing gate — unresolved helper must block.** Use for
116
+ verifiers whose exit code gates submission readiness (e.g.
117
+ `verify_paper_audits.sh` under `assurance: submission`).
118
+
119
+ ```bash
120
+ [ -n "$AUDIT_VERIFIER" ] || {
121
+ echo "ERROR: verify_paper_audits.sh not resolved at .aris/tools/, tools/, \$ARIS_REPO/tools/, or via ~/.aris/repo." >&2
122
+ echo " assurance=submission requires the verifier; aborting Final Report." >&2
123
+ echo " Fix: rerun bash tools/install_aris.sh (or smart_update.sh) to refresh ~/.aris/repo, or export ARIS_REPO." >&2
124
+ exit 1
125
+ }
126
+ ```
127
+
128
+ **B. Optional side-effect — unresolved helper warns and skips.** Use
129
+ when the SKILL's primary output is still delivered without the
130
+ helper (e.g. `research_wiki.py ingest_paper` — idea ranking still
131
+ gets produced, only the wiki side-effect is missed).
132
+
133
+ ```bash
134
+ [ -n "$WIKI_SCRIPT" ] || {
135
+ echo "WARN: research_wiki.py not resolved; primary output unaffected, wiki side-effect skipped." >&2
136
+ echo " Fix: rerun bash tools/install_aris.sh or smart_update.sh (refreshes ~/.aris/repo), export ARIS_REPO, or copy the helper to tools/." >&2
137
+ }
138
+ [ -n "$WIKI_SCRIPT" ] && python3 "$WIKI_SCRIPT" ingest_paper research-wiki/ --arxiv-id "$id"
139
+ ```
140
+
141
+ **C. Forensic helper — unresolved means write artifacts directly.**
142
+ Use when the helper produces a record the SKILL is contractually
143
+ required to leave behind (e.g. `save_trace.sh`). The fallback is
144
+ **not** "skip"; it is "write the schema artifacts inline."
145
+
146
+ ```bash
147
+ [ -n "$TRACE_HELPER" ] || {
148
+ echo "WARN: save_trace.sh not resolved; writing trace files directly per review-tracing.md schema." >&2
149
+ }
150
+ if [ -n "$TRACE_HELPER" ]; then
151
+ bash "$TRACE_HELPER" --skill "$SKILL" --purpose "$PURPOSE" --model "$MODEL" \
152
+ --thread-id "$THREAD" --prompt "$PROMPT" --response "$RESPONSE"
153
+ else
154
+ # Required fallback: write run.meta.json, request.json, response.md, meta.json
155
+ # directly per review-tracing.md schema. Do NOT silently skip unless
156
+ # `--- trace: off` was explicitly requested.
157
+ ...
158
+ fi
159
+ ```
160
+
161
+ **D1. Primary helper with first-success cascade — try N sources in
162
+ priority order, accept first success.** Use when the SKILL needs
163
+ one paper-discovery source and falls back across alternatives.
164
+
165
+ The example below is POSIX-sh safe (`${VAR:-}` defaults plus
166
+ explicit `source_used=""` init) so the same snippet works under
167
+ `#!/bin/sh`, `#!/bin/bash`, `set -e`, and `set -u`.
168
+
169
+ ```bash
170
+ source_used=""
171
+ if [ -n "${S2_FETCHER:-}" ]; then
172
+ if python3 "$S2_FETCHER" --query "$Q" > results.jsonl; then
173
+ source_used="semantic_scholar"
174
+ else
175
+ echo "WARN: semantic_scholar_fetch.py invocation failed; trying arxiv." >&2
176
+ S2_FETCHER="" # force cascade
177
+ fi
178
+ fi
179
+ if [ -z "$source_used" ] && [ -n "${ARXIV_FETCHER:-}" ]; then
180
+ echo "WARN: semantic_scholar_fetch.py not resolved or failed; falling back to arxiv_fetch.py." >&2
181
+ if python3 "$ARXIV_FETCHER" --query "$Q" > results.jsonl; then
182
+ source_used="arxiv_fallback"
183
+ fi
184
+ fi
185
+ if [ -z "$source_used" ]; then
186
+ echo "ERROR: no fetcher resolved or succeeded; cannot retrieve papers." >&2
187
+ exit 1
188
+ fi
189
+ ```
190
+
191
+ The `if helper-invocation; then ... else ...` wrapper consumes the
192
+ helper's exit code so the cascade fires even under `set -e`.
193
+
194
+ **D2. Multi-source aggregate — invoke every resolved source,
195
+ aggregate results.** Use when the SKILL ranks or dedupes across all
196
+ available sources (e.g. `/research-lit` querying S2 + arxiv +
197
+ OpenAlex + Exa). Each source's success/failure is recorded; the
198
+ SKILL proceeds with a (possibly partial) aggregate if at least one
199
+ source contributed.
200
+
201
+ The example below is POSIX-sh safe (delimited-string accumulator
202
+ instead of bash arrays, so the snippet works under `dash`,
203
+ macOS bash 3.2, etc.):
204
+
205
+ ```bash
206
+ sources_used=""
207
+ sources_count=0
208
+ append_source() {
209
+ sources_used="${sources_used:+$sources_used,}$1"
210
+ sources_count=$((sources_count + 1))
211
+ }
212
+
213
+ if [ -n "${S2_FETCHER:-}" ]; then
214
+ if python3 "$S2_FETCHER" --query "$Q" >> results.jsonl 2>>fetch.log; then
215
+ append_source "semantic_scholar"
216
+ else
217
+ echo "WARN: semantic_scholar_fetch.py failed; see fetch.log" >&2
218
+ fi
219
+ fi
220
+ if [ -n "${ARXIV_FETCHER:-}" ]; then
221
+ if python3 "$ARXIV_FETCHER" --query "$Q" >> results.jsonl 2>>fetch.log; then
222
+ append_source "arxiv"
223
+ else
224
+ echo "WARN: arxiv_fetch.py failed; see fetch.log" >&2
225
+ fi
226
+ fi
227
+ # ... repeat for openalex, exa, deepxiv ...
228
+ if [ "$sources_count" -eq 0 ]; then
229
+ echo "ERROR: no fetcher resolved or succeeded; aggregate empty." >&2
230
+ exit 1
231
+ fi
232
+ echo "Aggregated from: $sources_used" >&2
233
+ ```
234
+
235
+ Record `sources_used` (or equivalent) in the SKILL's output manifest
236
+ so downstream consumers know which sources contributed.
237
+
238
+ **E. Diagnostic / report helper — non-zero exit is captured, not propagated.**
239
+ Use when the helper's role is to surface drift to humans rather than
240
+ gate workflow correctness (e.g. `verify_wiki_coverage.sh` exits 1
241
+ when wiki coverage has gaps, but coverage is not load-bearing on any
242
+ research outcome). The SKILL records the diagnostic outcome to a
243
+ report file but does not propagate the exit code as a workflow gate.
244
+
245
+ ```bash
246
+ if [ -n "$WIKI_COVERAGE_DIAG" ]; then
247
+ # Wrap the helper call in if/then/else so `set -e` does not exit
248
+ # the SKILL when the helper exits non-zero to report gaps.
249
+ if bash "$WIKI_COVERAGE_DIAG" research-wiki/ > coverage_report.txt; then
250
+ diag_exit=0
251
+ else
252
+ diag_exit=$?
253
+ fi
254
+ echo "Coverage diagnostic written to coverage_report.txt (exit=$diag_exit)" >&2
255
+ # Do NOT propagate $diag_exit; this is a report, not a gate.
256
+ else
257
+ echo "WARN: verify_wiki_coverage.sh not resolved; coverage diagnostic skipped (non-load-bearing)." >&2
258
+ fi
259
+ ```
260
+
261
+ `wiki-helper-resolution.md` is the research-wiki-specific instance
262
+ of this generic resolver, and is the precedent for everything in §2.
263
+
264
+ #### Layer 0 — self-contained owner SKILL (Arch C, Phase 3+)
265
+
266
+ Single-owner helpers progressively migrate into the owning SKILL's
267
+ `scripts/` subdirectory (matching the Claude Code official skill
268
+ layout). When an owner SKILL invokes its own helper, it tries the
269
+ self-contained location FIRST, then falls through to the canonical
270
+ 4-layer chain so legacy users continue to work:
271
+
272
+ ```bash
273
+ # Layer 0 (owner SKILL only): self-contained at $CLAUDE_SKILL_DIR/scripts/.
274
+ HELPER=""
275
+ if [ -n "${CLAUDE_SKILL_DIR:-}" ] && [ -f "$CLAUDE_SKILL_DIR/scripts/<helper>" ]; then
276
+ HELPER="$CLAUDE_SKILL_DIR/scripts/<helper>"
277
+ fi
278
+ # Layers 1-4: fall through to the standard chain.
279
+ if [ -z "$HELPER" ]; then
280
+ # ... canonical strict-safe resolver block from above ...
281
+ fi
282
+ ```
283
+
284
+ Three properties of layer 0:
285
+
286
+ 1. **Single-skill only.** Only the owning SKILL uses layer 0. Cross-skill
287
+ helpers (`research_wiki.py` consumed by 9 SKILLs; `save_trace.sh`
288
+ by 14) stay on the shared-runtime chain because there is no single
289
+ `${CLAUDE_SKILL_DIR}` to point at.
290
+
291
+ 2. **CC 1.0+ feature.** `${CLAUDE_SKILL_DIR}` is set by Claude Code 1.0+;
292
+ on older hosts (Codex CLI, Cursor today, manual bash) it is empty
293
+ and layer 0 is skipped — the SKILL silently falls through to the
294
+ standard chain.
295
+
296
+ 3. **Backwards-compatible.** The canonical 4-layer chain still works
297
+ because Phase 3 keeps the legacy entry at `tools/<helper>` as a
298
+ thin `os.execv` shim that forwards to the canonical location. So
299
+ `.aris/tools/<helper>` (layer 1), `tools/<helper>` (layer 2),
300
+ `$ARIS_REPO/tools/<helper>` via the manifest (layer 3), and
301
+ `$ARIS_REPO/tools/<helper>` via `~/.aris/repo` (layer 4) all
302
+ resolve to a working Python script for any user who has not
303
+ re-run `install_aris.sh`.
304
+
305
+ The per-helper policy table at the end of §2 marks Phase 3 moves
306
+ with a "Phase 3.N move" note pointing at the new canonical location.
307
+
308
+ #### Per-helper policy assignments
309
+
310
+ Every helper invoked from any SKILL.md (single-skill or shared
311
+ across skills) is classified below so that downstream SKILLs in
312
+ Phase 1.2-1.7 do not have to guess. Pure developer utilities that
313
+ are never invoked from a SKILL.md — installers
314
+ (`install_aris.sh`, `install_aris_codex.sh`), update scripts
315
+ (`smart_update.sh`, `smart_update_codex.sh`), manual setup
316
+ (`overleaf_setup.sh`), generators
317
+ (`convert_skills_to_llm_chat.py`, `generate_codex_claude_review_overrides.py`),
318
+ the `meta_opt/` hook scripts, and `watchdog.py` — are out of scope.
319
+ If a future helper does not fit any policy, extend the taxonomy
320
+ here first.
321
+
322
+ | Helper (canonical name) | Policy | Rationale |
323
+ |---|---|---|
324
+ | `verify_paper_audits.sh` | A (gate) | Exit code is the source of truth for submission readiness |
325
+ | `copilot_native_evidence.py` | A (gate) | Binds `/auto-review-loop` to the current Copilot root session and revalidates the native `rubber-duck` lifecycle, actual model pair, and raw response; without verified evidence, a native verdict cannot stop the loop |
326
+ | `review_gate.py` | A (gate) | Authoritative stop/continue/escalate transition table for `/auto-review-loop`; missing helper means the loop cannot safely decide termination |
327
+ | `save_trace.sh` | C (forensic) | Trace artifacts are load-bearing for audit traceability and reviewer-independence audit |
328
+ | `research_wiki.py ingest_paper` (caller skills) | B (side-effect) | Primary output (idea ranking, paper summary) is delivered without wiki ingestion |
329
+ | `research_wiki.py` (in `/research-wiki` itself) | A (gate) | The SKILL is the wiki tool; missing helper means no functionality (Variant A in `wiki-helper-resolution.md`) |
330
+ | `verify_wiki_coverage.sh` | E (diagnostic) | Reports coverage gaps; not load-bearing on any research outcome |
331
+ | `verify_papers.py` | D1 (primary + fallback cascade) | Filters candidate papers via arXiv/CrossRef/S2 cross-checks; when unresolved **or** invocation fails, callers emit a degraded `verified_papers.json` tagging every candidate `status=unverified, method=none` with explicit WARN |
332
+ | `arxiv_fetch.py`, `semantic_scholar_fetch.py`, `deepxiv_fetch.py`, `exa_search.py`, `openalex_fetch.py` | D2 (multi-source aggregate) when SKILL queries multiple sources (e.g. `/research-lit`); D1 (cascade) when a single source suffices | Each fetcher is one paper-discovery source; SKILLs aggregate or cascade across resolved sources and record which contributed |
333
+ | `extract_paper_style.py` | A when activation predicate `literal "— style-ref:" or equivalent in $ARGUMENTS` is true; not invoked otherwise | If the user asked for style transfer and the helper is unresolved, the SKILL cannot satisfy the request |
334
+ | `paper_illustration_image2.py` (`preflight`, `finalize`, `verify`) | A (skill-local gate) | Image2 finalization cannot complete without these checks; verify exits 1 on missing artifacts and that is a skill-local gate (the parent paper-writing workflow may still continue with the alternate illustration path). **Phase 3.2 move**: canonical location is `skills/paper-illustration-image2/scripts/paper_illustration_image2.py`; `tools/paper_illustration_image2.py` retained as `os.execv` shim for legacy resolver layers. |
335
+ | `figure_renderer.py` | A (skill-local gate, single-skill) | `figure-spec` cannot produce vector SVG output without the renderer. **Phase 3.1 move**: canonical location is `skills/figure-spec/scripts/figure_renderer.py`; `tools/figure_renderer.py` retained as `os.execv` shim for legacy resolver layers. |
336
+ | `experiment_queue/queue_manager.py`, `experiment_queue/build_manifest.py` | A (skill-local gate, single-skill) | `/experiment-queue` cannot operate without these; canonical resolver applies the same chain. **Phase 3.3 move**: canonical location is `skills/experiment-queue/scripts/{queue_manager.py, build_manifest.py}`; both `tools/experiment_queue/*.py` retained as `os.execv` shims for legacy resolver layers. |
337
+ | `overleaf_audit.sh` | E (diagnostic) | Reports overleaf sync drift; surfaces gaps but does not gate the parent workflow |
338
+ | `evidence_check.py` (in `/result-to-claim`, `/paper-claim-audit`) | B (side-effect) | Deterministic pre-check that downgrades hallucinated-evidence claims before the Codex jury; if unresolved the jury still runs (warn-and-skip). A deterministic gate DRIVES, it does not ACQUIT — `verified` means the cited number exists, not that it supports the claim |
339
+ | `capture_filter.py` (in `/research-wiki` capture, `/meta-optimize` Step 3) | B (side-effect) | Anti-self-poisoning screen on durable captures; if unresolved the capture proceeds (the screen is advisory, and a passing screen is never an ACCEPT — the cross-model jury still judges) |
340
+ | `provenance.py` (in `/meta-apply`; `assert_cross_family`/`stamp`) | A (gate) | The landing acquittal: if unresolved, `/meta-apply` cannot verify author≠reviewer family and MUST refuse to land (fail-closed). `stamp()` itself raises on same-family, so an unresolved or same-family case blocks the corpus mutation |
341
+ | `run_state.py` (in `/research-pipeline`) | B (side-effect) | Resumability is a convenience; the pipeline still runs end-to-end without it (warn-and-skip, never block). Predicate = `RESUMABLE` / `— resume <run_id>` set |
342
+ | `forensics_gate.py` (in `/integrity-forensics`, `/paper-writing` Phase 5.9/6.0, `/resubmit-pipeline`) | A (gate) | Typed policy gate + append-only obligations ledger for the Anti-Autoresearch launcher; at `assurance: submission` an unresolved helper blocks the Final Report / Overleaf push (never improvise the gate). `fresh` is the one-command downstream preflight; exit code is the source of truth |
343
+ | `iteration_log.py` (in `/research-pipeline`, `/idea-discovery`) | B (side-effect) | Stall→pivot ledger is a convenience for overnight loops; the pipeline runs without it (warn-and-skip, never block). Predicate = an overnight heartbeat is driving the loop. Mainline-only for now (Codex-mirror sync pending external-cadence mirror). |
344
+
345
+ When a SKILL invokes a helper not listed above, add the row here as
346
+ part of the same commit and link the chosen policy. Inconsistency in
347
+ this table is the cheapest place to catch policy drift.
348
+
349
+ #### Examples
350
+
351
+ - ✅ Resolved-via-chain invocation: `python3 "$WIKI_SCRIPT" ingest_paper <root> --arxiv-id <id>` (where `$WIKI_SCRIPT` was set by the chain above with `<helper>=research_wiki.py`)
352
+ - ✅ Resolver block + policy A above for `verify_paper_audits.sh` (submission-gate verifier)
353
+ - ❌ Hard-coded `python3 tools/research_wiki.py …` from a downstream skill that may run in a project without `tools/` on disk — it silently exits 2 and the caller proceeds with no side effect, which is exactly the failure mode that left a real user's `research-wiki/` empty for a week.
354
+ - ❌ N skills each paraphrasing the same 10-line bash snippet. When one drifts, they all drift.
355
+
356
+ If the same 3+ lines of prose appear in more than two SKILL.md files,
357
+ factor them into a helper.
358
+
359
+ ### 3. Concrete artifact or log entry
360
+
361
+ Successful execution must leave an observable side effect: a file, a
362
+ JSON record, a log line. The artifact is the receipt — something a
363
+ third party (verifier, code reviewer, human auditor) can inspect to
364
+ answer "did this integration run?"
365
+
366
+ - ✅ `paper/PROOF_AUDIT.json` with the 6-state verdict schema
367
+ - ✅ `research-wiki/papers/<slug>.md` + `research-wiki/log.md` append
368
+ - ❌ "the model said it ran"
369
+
370
+ ### 4. Visible checklist — for long workflows
371
+
372
+ If the integration fires inside a multi-step workflow (paper-writing
373
+ Phase 6, idea-discovery Phase 7, etc.), render a **visible checkbox
374
+ block** at the start of the phase so the executor has to confront each
375
+ row before claiming done. Prose-only "MUST" inside a long SKILL.md is
376
+ the first thing to get skipped.
377
+
378
+ ```
379
+ 📋 Submission audits required before Final Report:
380
+ [ ] 1. /proof-checker → paper/PROOF_AUDIT.json
381
+ [ ] 2. /paper-claim-audit → paper/PAPER_CLAIM_AUDIT.json
382
+ [ ] 3. /citation-audit → paper/CITATION_AUDIT.json
383
+ [ ] 4. Resolve $AUDIT_VERIFIER via §2 (canonical name verify_paper_audits.sh)
384
+ then: bash "$AUDIT_VERIFIER" paper/ --assurance submission
385
+ [ ] 5. Block Final Report iff verifier exit code != 0
386
+ ```
387
+
388
+ Cheap, and empirically resists lazy skipping. Skip only for single-step
389
+ invocations (one-off skills like `/arxiv 2501.12345`).
390
+
391
+ ### 5. Backfill / repair command — explicit manual fallback
392
+
393
+ An escape hatch for when the integration didn't fire. Users must be
394
+ able to run a command that **declares** the missed inputs and ingests
395
+ them retroactively. Prefer explicit arguments over trace-scanning — the
396
+ helper should not have to guess what to backfill.
397
+
398
+ - ✅ `/research-wiki sync --arxiv-ids 2501.12345,1706.03762`
399
+ - ✅ `/research-wiki sync --from-file ids.txt`
400
+ - ⚠️ `/research-wiki sync` that scans `.aris/traces/` for arxiv IDs —
401
+ only as a best-effort secondary mode, not the primary UX, and
402
+ clearly labeled as heuristic.
403
+
404
+ ### 6. Verifier or diagnostic (only when load-bearing)
405
+
406
+ If silent failure of this integration would damage the research result
407
+ (wrong numbers shipped to a conference, claims unsupported by
408
+ evidence, citations in wrong context), a verifier script must exist
409
+ whose exit code is the source of truth for downstream gates.
410
+
411
+ - ✅ `verify_paper_audits.sh` — exit 1 blocks Final Report (resolved per §2)
412
+ - ✅ `verify_wiki_coverage.sh` — diagnostic only, reports gaps but
413
+ does not block (coverage is not load-bearing on any research
414
+ outcome; resolved per §2)
415
+
416
+ Verifiers must be **external processes** (not LLM self-report), must
417
+ validate **concrete artifacts** (§3) against a schema, and must emit a
418
+ structured report callers can parse.
419
+
420
+ A diagnostic-only verifier (no exit-1 blocking) is still valuable — it
421
+ surfaces drift to humans. But do not market a diagnostic as a gate.
422
+
423
+ ## Anti-patterns to refuse in review
424
+
425
+ When reviewing a new integration proposal, reject any of:
426
+
427
+ - **"Optional and automatic"** — contradicts itself; if it's automatic,
428
+ it's not optional. Pick one and mean it.
429
+ - **"The skill will intelligently decide"** — indecision surface, not
430
+ a predicate (§1).
431
+ - **"Copy the following 10 lines into each caller"** — missing helper
432
+ (§2); will drift within a month.
433
+ - **"The reviewer can see from the logs that..."** — if the evidence is
434
+ unstructured logs, write a schema and make it an artifact (§3).
435
+ - **"Users should remember to..."** — missing backfill (§5); humans
436
+ don't reliably remember.
437
+ - **"Trust the LLM to self-report completion"** — missing verifier (§6)
438
+ when the failure is load-bearing.
439
+
440
+ ## Known ARIS integrations under this contract
441
+
442
+ Helper names in the table below are **canonical names**; callers
443
+ resolve actual paths via §2.
444
+
445
+ | Integration | Predicate | Helper | Artifact | Checklist | Backfill | Verifier |
446
+ |---|---|---|---|---|---|---|
447
+ | Submission audits (`max`/`beast`) | `paper/.aris/assurance.txt = submission` | `verify_paper_audits.sh` + 3 audit skills emit JSON | `paper/PROOF_AUDIT.json`, `PAPER_CLAIM_AUDIT.json`, `CITATION_AUDIT.json` + `paper/.aris/audit-verifier-report.json` | Phase 6.0 pre-flight checklist | Rerun the failed audit | `verify_paper_audits.sh` (exit 1 blocks) |
448
+ | Research wiki ingest | `research-wiki/` exists | `research_wiki.py ingest_paper` | `research-wiki/papers/<slug>.md` + `log.md` entry | Step in each paper-reading skill | `research_wiki.py sync --arxiv-ids …` | `verify_wiki_coverage.sh` (diagnostic) |
449
+ | paper-illustration-image2 finalization | `paper_illustration_image2.py preflight --workspace <cwd>` returns `ok=true` | `paper_illustration_image2.py` (`preflight`, `finalize`, `verify`) | `figures/ai_generated/figure_final.png`, `latex_include.tex`, `review_log.json` | Step 0 checklist in `paper-illustration-image2` | `paper_illustration_image2.py finalize --workspace <cwd> --best-image <png>` | `paper_illustration_image2.py verify` (skill-local gate; exit 1 on missing artifacts blocks finalize claim, parent workflow may continue with the alternate illustration path) |
450
+
451
+ When adding a new cross-skill integration, add a row to the table above
452
+ and confirm all six columns are populated.
453
+
454
+ ## See Also
455
+
456
+ - `shared-references/assurance-contract.md` — implementation of the
457
+ paper-writing submission gate under this contract
458
+ - `shared-references/reviewer-independence.md` — the adjacent contract
459
+ for cross-model review (executor never filters reviewer inputs)
460
+ - `tools/verify_paper_audits.sh`, `tools/research_wiki.py ingest_paper`,
461
+ `tools/verify_wiki_coverage.sh` — current canonical helpers
@@ -0,0 +1,93 @@
1
+ # Output Composition Protocol
2
+
3
+ When a skill runs **inside an orchestrating pipeline** (e.g. `/idea-discovery`,
4
+ `/research-pipeline`, `/grant-proposal`, `/kill-argument`), its intermediate
5
+ findings should fold into the pipeline's single canonical deliverable instead of
6
+ each sub-skill scattering its own overlapping `.md` files. When the same skill
7
+ runs **on its own**, it writes its files exactly as documented — unchanged.
8
+
9
+ This protocol defines the two states, the explicit signal that switches between
10
+ them, and the **enforced default**: with no signal, behave standalone.
11
+
12
+ > Past idea-discovery runs scattered `LIT_LANDSCAPE.md` + `RESEARCH_REVIEW.md` +
13
+ > `MANIFEST.md` + multiple pilot logs whose content was *also* summarized inside
14
+ > `IDEA_REPORT.md` — pure duplication. This contract is the fix, lifted out of the
15
+ > individual skills so the ~20 skills that compose these don't each carry (and
16
+ > drift) their own copy.
17
+
18
+ ## The two states
19
+
20
+ - **Standalone (DEFAULT).** The skill writes its own output files exactly as its
21
+ SKILL.md documents. This is the behavior whenever no composed-mode signal is
22
+ present — see the fail-safe rule below.
23
+ - **Composed.** The skill is running under an orchestrator that owns one canonical
24
+ deliverable. The skill's unique findings are folded into that deliverable (as a
25
+ section, appendix, or linked sub-file the orchestrator manages); the skill does
26
+ **not** emit standalone overlapping files.
27
+
28
+ ## Composed-mode signal (explicit, fail-safe)
29
+
30
+ A skill is in composed mode **if and only if** an explicit signal is present:
31
+
32
+ 1. **Orchestrator directive (canonical signal).** The invoking skill passed
33
+ `— composed: <canonical-report-path>` in the arguments, e.g.
34
+ `— composed: idea-stage/IDEA_REPORT.md`. The value names the canonical doc to
35
+ fold into (it may not exist yet — the orchestrator creates/owns it). Orchestrators
36
+ MUST pass this directive to every sub-skill they want folded.
37
+ 2. **Escape hatch.** `— standalone` (or `— composed: false`) forces standalone even
38
+ if an orchestrator would otherwise pass the directive. Standalone always wins a
39
+ conflict.
40
+
41
+ ### Fail-safe rule (the one regression we cannot ship)
42
+
43
+ **When no `— composed:` directive is present, the skill MUST behave standalone and
44
+ write its files as normal.** This is enforced by the contract, not left to per-skill
45
+ discretion.
46
+
47
+ In particular: **the mere existence of a canonical report file (e.g. a leftover
48
+ `idea-stage/IDEA_REPORT.md` from a previous run) does NOT trigger composed mode.**
49
+ Inferring "composed" from a file on disk would silently swallow a standalone user's
50
+ output the moment they happen to have an old report around — exactly the regression
51
+ to avoid. Composed mode is a decision the orchestrator makes and signals explicitly;
52
+ a sub-skill never guesses it.
53
+
54
+ ## What "fold in" means
55
+
56
+ When in composed mode, a sub-skill:
57
+
58
+ 1. Returns / hands its unique content to the orchestrator for inlining into the
59
+ canonical deliverable, rather than writing `LIT_LANDSCAPE.md`,
60
+ `RESEARCH_REVIEW.md`, or similar standalone summaries.
61
+ 2. If it must use a scratch file mid-phase, deletes that scratch once its content is
62
+ inlined and the phase closes.
63
+ 3. Keeps **audit-trail** outputs where they belong — cross-model review traces always
64
+ go to `.aris/traces/…` per [`review-tracing.md`](review-tracing.md); the canonical
65
+ report cites the trace path instead of carrying a duplicate human-facing copy.
66
+ 4. Keeps **reusable** artifacts (a pilot script, a small results file) but discards
67
+ disposable scratch (launcher logs, smoke files, redundant `*_summary.json`) once
68
+ the numbers are in the canonical report.
69
+
70
+ ## Orchestrator responsibilities
71
+
72
+ An orchestrator that wants folding:
73
+
74
+ 1. Owns exactly one canonical deliverable and passes its path via `— composed: <path>`
75
+ to each sub-skill.
76
+ 2. Inlines each sub-skill's returned findings into the canonical deliverable (or into
77
+ a small set of stage-scoped files it explicitly manages — e.g. `refine-logs/` —
78
+ which the report *links to*, not copies).
79
+ 3. Does not create a `MANIFEST.md` for a handful of files — see the threshold in
80
+ [`output-manifest.md`](output-manifest.md). A manifest is itself a duplicate index
81
+ that has to be kept in sync.
82
+ 4. On finish, the deliverable's directory top level should be roughly: the canonical
83
+ report (+ its `.html`), any reusable script + results, and explicitly-managed
84
+ stage sub-dirs. Nothing else unless it carries content not in the report.
85
+
86
+ ## Relationship to the other output protocols
87
+
88
+ - [`output-versioning.md`](output-versioning.md) — *how* to write a file you do write
89
+ (timestamp + fixed-name copy). Composition decides *whether* a sub-skill writes a
90
+ standalone file at all.
91
+ - [`output-manifest.md`](output-manifest.md) — only maintain a manifest above the
92
+ artifact threshold; below it the manifest is itself duplication.
93
+ - [`output-language.md`](output-language.md) — orthogonal; applies in both states.
@@ -0,0 +1,45 @@
1
+ # Output Language Protocol
2
+
3
+ ## Language Detection
4
+
5
+ Determine the output language using this priority:
6
+ 1. Check `CLAUDE.md` for a `language:` field in `## Pipeline Status` — if `language: zh` or `language: cn`, output in Chinese
7
+ 2. If the user's most recent message is in Chinese, output in Chinese
8
+ 3. Default: English
9
+
10
+ ## What to Localize
11
+
12
+ - Section headings and labels
13
+ - Descriptions, analysis, commentary, recommendations
14
+ - Template boilerplate text
15
+ - Status messages and warnings
16
+
17
+ ## What NOT to Localize
18
+
19
+ - Code, shell commands, file paths, directory names
20
+ - Paper titles, author names, venue names, BibTeX entries
21
+ - Technical terms with no standard Chinese translation (keep English, optionally annotate: "attention mechanism (注意力机制)")
22
+ - LaTeX content — paper-writing workflow always outputs English for venue submission
23
+ - JSON state files — keys and structure remain English
24
+ - **Machine-parsed markers** — never localize the following, regardless of language setting:
25
+ - Markdown frontmatter keys (e.g., `outcome:`, `node_id:`, `title:`, `type:`)
26
+ - Research Wiki schema fields parsed by `tools/research_wiki.py` (e.g., `outcome: negative`, `outcome: positive`, `node_id:`)
27
+ - `MANIFEST.md` column headers and table structure
28
+ - Any field that downstream tools or scripts read programmatically
29
+
30
+ ## Skill-Specific Rules
31
+
32
+ | Skill | Language Support | Notes |
33
+ |-------|-----------------|-------|
34
+ | /idea-creator | Full | IDEA_REPORT.md follows language setting |
35
+ | /idea-discovery | Full | Inherits from sub-skills |
36
+ | /analyze-results | Full | Result analysis follows language setting |
37
+ | /auto-review-loop | Partial | AUTO_REVIEW.md follows setting; reviewer prompts stay English |
38
+ | /experiment-plan | Full | EXPERIMENT_PLAN.md follows setting |
39
+ | /experiment-bridge | Full | EXPERIMENT_RESULTS.md follows setting |
40
+ | /research-refine | Full | FINAL_PROPOSAL.md follows setting |
41
+ | /research-refine-pipeline | Full | PIPELINE_SUMMARY.md follows setting |
42
+ | /research-pipeline | Full | Inherits from sub-skills |
43
+ | /result-to-claim | Full | Claim descriptions follow setting |
44
+ | /paper-writing | Skip | Always English LaTeX for submission |
45
+ | /paper-write | Skip | Always English LaTeX |
@@ -0,0 +1,49 @@
1
+ # Output Manifest Protocol
2
+
3
+ Maintain a `MANIFEST.md` in the project root **only when a run produces more than
4
+ 15 artifacts**. Below that threshold, do not create one: a manifest for a handful
5
+ of files is itself a duplicate index that has to be kept in sync with the files it
6
+ lists — the very duplication this protocol family exists to prevent (see
7
+ [`output-composition.md`](output-composition.md)). When the threshold is met, append
8
+ one entry per output file as below.
9
+
10
+ > Threshold rationale: the original "log *every* output to MANIFEST" rule is what
11
+ > drove the `MANIFEST.md` clutter in small idea-discovery runs. A manifest earns its
12
+ > keep only when there are enough artifacts that an index genuinely helps.
13
+
14
+ ## Format
15
+
16
+ If `MANIFEST.md` does not exist, create it with this header:
17
+
18
+ ```markdown
19
+ # Research Output Manifest
20
+
21
+ > Auto-maintained by ARIS skills. Tracks all generated artifacts across the research lifecycle.
22
+
23
+ | Timestamp | Skill | File | Stage | Description |
24
+ |-----------|-------|------|-------|-------------|
25
+ ```
26
+
27
+ Then append one row per output file written:
28
+
29
+ ```
30
+ | 2025-06-15 14:30 | /idea-creator | idea-stage/IDEA_REPORT_20250615_143022.md | idea-discovery | 12 ideas generated from "LLM reasoning" direction |
31
+ | 2025-06-15 14:30 | /idea-creator | idea-stage/IDEA_REPORT.md | idea-discovery | latest copy |
32
+ ```
33
+
34
+ ## Stage Values
35
+
36
+ | Stage | Skills |
37
+ |-------|--------|
38
+ | `idea-discovery` | /idea-creator, /idea-discovery, /novelty-check, /research-review |
39
+ | `implementation` | /research-refine, /research-refine-pipeline, /experiment-plan, /experiment-bridge, /run-experiment |
40
+ | `review` | /auto-review-loop |
41
+ | `paper` | /paper-writing, /paper-write, /paper-compile |
42
+
43
+ ## Pre-flight Check
44
+
45
+ Before writing output, if the skill depends on a prerequisite file from a previous stage:
46
+ 1. Check if the prerequisite file exists at its expected stage-scoped path (e.g., `idea-stage/IDEA_REPORT.md`, `review-stage/AUTO_REVIEW.md`)
47
+ 2. If not found at the stage-scoped path, check the legacy root-level path (e.g., `./IDEA_REPORT.md`, `./AUTO_REVIEW.md`) — see [Path Fallback Rule](output-versioning.md#path-fallback-rule-backward-compatibility)
48
+ 3. If not found at either path, warn: "⚠️ Expected {file} (from {skill}) but not found. Run {skill} first?"
49
+ 4. Do not block — the user may have the file elsewhere or want to proceed anyway