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,161 @@
|
|
|
1
|
+
# paper-poster-html 实现约定(所有实现 agent 必读)
|
|
2
|
+
|
|
3
|
+
配合 DESIGN_FINAL.md(规格)使用。本文档定死跨文件契约——实现时**逐字遵守**,
|
|
4
|
+
有疑问按本文档,不要自由发挥。
|
|
5
|
+
|
|
6
|
+
## A. CSS Token 契约(templates + tokens/*.json + style_check 三方共享)
|
|
7
|
+
|
|
8
|
+
`:root` 中的 token block 必须被注释 `/* ===== DESIGN TOKENS ===== */` 和
|
|
9
|
+
`/* ===== END DESIGN TOKENS ===== */` 包围(style_check 靠这对注释定位 token block)。
|
|
10
|
+
|
|
11
|
+
颜色 token(只有这些地方允许出现颜色字面量):
|
|
12
|
+
```css
|
|
13
|
+
--accent: #2D5F8B; --accent-deep: #1F4566; --accent-light: #E8F1F8; --accent-soft: #D7E5F0;
|
|
14
|
+
--gold: #C9A24A; --gold-soft: #FFF7E0;
|
|
15
|
+
--text-primary: #1A1A1A; --text-secondary: #555555; --text-muted: #888888;
|
|
16
|
+
--bg-page: #F6F2F0; --bg-card: #FFFFFF; --bg-card-tint: #FAFAFB; --bg-emphasis: var(--accent-light);
|
|
17
|
+
--border-soft: #D8D8D8; --border-strong: var(--accent);
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
字号 scale(9 档,模板内所有 font-size 必须引用之一;`calc(var(--fs-N) * k)` 仅许
|
|
21
|
+
COMPONENTS.md 预定义 variant 使用):
|
|
22
|
+
```css
|
|
23
|
+
--fs-1: calc(9 * var(--u)); /* 微标签 */ --fs-2: calc(10 * var(--u)); /* 小 caption */
|
|
24
|
+
--fs-3: calc(11 * var(--u)); /* caption/表格 */ --fs-4: calc(12 * var(--u)); /* 正文 */
|
|
25
|
+
--fs-5: calc(13 * var(--u)); /* 公式/强调 */ --fs-6: calc(15 * var(--u)); /* 副标题 */
|
|
26
|
+
--fs-7: calc(16 * var(--u)); /* 节标题 */ --fs-8: calc(22 * var(--u)); /* banner 数字 */
|
|
27
|
+
--fs-9: calc(32 * var(--u)); /* 主标题 */
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
单位:`--u: 1.6px`(screen)/ `@media print { :root { --u: 1mm } }`。其余尺寸一律
|
|
31
|
+
`calc(N * var(--u))`,hairline 可用裸 px(≤2px)。
|
|
32
|
+
|
|
33
|
+
## B. HTML 属性契约
|
|
34
|
+
|
|
35
|
+
| 属性 | 用途 | 谁检查 |
|
|
36
|
+
|------|------|--------|
|
|
37
|
+
| `data-measure-role="poster|header|banner|body|column|card|hero|footer-strip|footer"` | vendored measure 的定位锚(原契约,勿改) | poster_check measure |
|
|
38
|
+
| `data-source="paper"` + `data-asset-id="<manifest id>"` | 标记来自论文的图 | asset_check + style_check 豁免 |
|
|
39
|
+
| `data-color-exempt="logo"` | logo/印章 SVG 的调色豁免 | style_check |
|
|
40
|
+
| `data-fig-layout="beside-text"` | 图文并排的 AR 门 opt-out(vendored) | poster_check polish |
|
|
41
|
+
|
|
42
|
+
**模板和最终 poster 中禁止任何 `style=` 属性**(零容忍,style_check 规则 2 实现成这样,
|
|
43
|
+
简单可靠)。例外:`data-color-exempt="logo"` 元素的内部 SVG 标记、`data-source="paper"`
|
|
44
|
+
的 `<img>` 上仅允许 `style="width: NN%"`(AR 调宽)。
|
|
45
|
+
为此模板必须自带 utility classes(替代 posterly 模板里的 inline style):
|
|
46
|
+
```css
|
|
47
|
+
.fs-1 … .fs-9 /* font-size: var(--fs-N) */
|
|
48
|
+
.mt-1 … .mt-6 /* margin-top: calc(N * var(--u)) */
|
|
49
|
+
.mb-1 … .mb-4 /* margin-bottom */
|
|
50
|
+
.w-45 .w-50 … .w-100 /* 图宽 45%…100%,步长 5 */
|
|
51
|
+
.text-secondary .text-muted .nowrap .text-center
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## C. CLI 契约(scripts/)
|
|
55
|
+
|
|
56
|
+
全部 Python 3.10+,只用 stdlib + 已确认可用的 PyMuPDF(fitz)/PIL/playwright(lazy import,
|
|
57
|
+
缺失时给可读错误+降级指引)。每个脚本 `--help` 完整。exit code:0=pass,1=hard fail,2=用法/环境错误。
|
|
58
|
+
|
|
59
|
+
### style_check.py
|
|
60
|
+
```
|
|
61
|
+
python3 style_check.py POSTER.html [--tokens TOKENS.json] [--json OUT.json]
|
|
62
|
+
[--no-render] # 跳过渲染门(规则4、12 标 SKIPPED)
|
|
63
|
+
```
|
|
64
|
+
实现 DESIGN_FINAL §3 的 12 条规则 + §12.5 nit 1。源门(规则 1-3,5-11)纯静态解析
|
|
65
|
+
(html.parser + 正则提 CSS);渲染门(规则 4、12)用 playwright 取 computed style。
|
|
66
|
+
色相聚类:rgba→HSL;非中性= alpha≥0.10 且 S≥0.18;greedy 聚类半径 18°(色环距离);
|
|
67
|
+
聚类数 ≤2 且每类中心落在 tokens 的 accent/gold hue ±22°(hue_centers 来自 --tokens JSON,
|
|
68
|
+
缺省从 :root 解析 --accent/--gold 算)。
|
|
69
|
+
JSON 输出:`{"gate":"style","status":"PASS|FAIL|WARN","rules":[{"id":1,"severity":"hard","status":"PASS","detail":"..."}]}`
|
|
70
|
+
|
|
71
|
+
### asset_check.py
|
|
72
|
+
```
|
|
73
|
+
python3 asset_check.py POSTER.html --manifest FIGURE_MANIFEST.json [--json OUT.json]
|
|
74
|
+
[--min-paper-figs 2] [--min-fig-area 0.015] [--min-total-area 0.12]
|
|
75
|
+
[--waive-total-area] # 纯理论论文 waiver(DESIGN_FINAL §12.5 nit 2)
|
|
76
|
+
[--no-render] # 面积检查降级为 natural-size 估算
|
|
77
|
+
```
|
|
78
|
+
检查:≥N 张 data-source="paper" 且 manifest 里 from_paper=true;每张渲染面积 ≥ poster 1.5%;
|
|
79
|
+
总面积 ≥ body 12%(可 waive);natural_px ≥ rendered px 1.5×(WARN 在 <2×);
|
|
80
|
+
manifest 必填字段齐全(见 D);文件存在且 sha256 匹配。
|
|
81
|
+
|
|
82
|
+
### run_gates.py
|
|
83
|
+
```
|
|
84
|
+
python3 run_gates.py POSTER.html [--report GATE_REPORT.json] [--fail-fast]
|
|
85
|
+
[--strict-polish] [--tokens TOKENS.json] [--manifest FIGURE_MANIFEST.json]
|
|
86
|
+
[--waive-total-area] [--no-render]
|
|
87
|
+
```
|
|
88
|
+
canonical order:preflight → style → asset → measure → polish。默认 accumulate。
|
|
89
|
+
子门以 subprocess 调同目录脚本(sys.executable;poster_check.py 子命令用其 CLI)。
|
|
90
|
+
GATE_REPORT.json 严格按 DESIGN_FINAL §7 schema(canvas 信息从 POSTER_STATE.json 读,
|
|
91
|
+
读不到则从 @page 解析,source 标 "page-rule")。汇总 overall=PASS/FAIL + hard_failures + warnings。
|
|
92
|
+
|
|
93
|
+
### extract_pdf_figures.py
|
|
94
|
+
```
|
|
95
|
+
python3 extract_pdf_figures.py PAPER.pdf --out DIR [--dpi 350]
|
|
96
|
+
contact-sheet # 整页缩略 contact sheet + 自动候选框
|
|
97
|
+
crop --page P --bbox x0,y0,x1,y1 --name ID [--caption-hint "..."]
|
|
98
|
+
auto # 自动检测大图块候选(图/表),输出候选列表
|
|
99
|
+
```
|
|
100
|
+
bbox 单位 = PDF points(72dpi 坐标,fitz 默认)。crop 模式渲染该区域至 --dpi,写 PNG 到
|
|
101
|
+
DIR,并 upsert FIGURE_MANIFEST.json(同目录上级)。contact-sheet 写 DIR/contact_sheet_pNN.png。
|
|
102
|
+
|
|
103
|
+
### preprocess_figures.py
|
|
104
|
+
```
|
|
105
|
+
python3 preprocess_figures.py IMG... [--autocrop] [--pad 6] [--min-px 1200 700] [--manifest M.json]
|
|
106
|
+
```
|
|
107
|
+
PIL autocrop 白边(ImageChops.difference vs 白底,留 --pad px),报告 natural size,
|
|
108
|
+
低于 --min-px 给 WARN;改动后同步更新 manifest 的 natural_px/sha256。
|
|
109
|
+
|
|
110
|
+
## D. FIGURE_MANIFEST.json schema
|
|
111
|
+
|
|
112
|
+
```json
|
|
113
|
+
{
|
|
114
|
+
"schema_version": 1,
|
|
115
|
+
"source_pdf": {"path": "…", "sha256": "…"},
|
|
116
|
+
"figures": [
|
|
117
|
+
{"asset_id": "fig_method", "file": "assets/paper_figures/fig_method.png",
|
|
118
|
+
"from_paper": true, "page": 3, "bbox": [72.0, 100.0, 520.0, 380.0], "dpi": 350,
|
|
119
|
+
"sha256": "…", "natural_px": [2178, 1362], "caption_hint": "Figure 2: …"}
|
|
120
|
+
]
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## E. 模板改造配方(posterly → ARIS fork)
|
|
125
|
+
|
|
126
|
+
对 3 个模板各做(以上游 posterly 仓库的 templates/*.html 为底):
|
|
127
|
+
1. 文件头注释:保留原说明,追加 "Adapted from posterly (MIT, © 2026 Ruishuo Chen) — see LICENSES/ & NOTICE.md; ARIS modifications: flat de-gradient, --fs token scale, zero-inline-style utilities, data-source/data-color-exempt contracts."
|
|
128
|
+
2. **去渐变**:`.poster::before` 顶条 → 纯色 `var(--accent)`;`.framework-banner`、
|
|
129
|
+
`.takeaways-strip` 背景 → 纯 `var(--bg-emphasis)`;`.callout.gold` → 纯 `var(--gold)`。
|
|
130
|
+
`.poster` 的 radial tint(alpha≤0.06)保留。
|
|
131
|
+
3. **token block**:按 §A 注释包围;加 --fs-1..9;所有 font-size 改 var(--fs-N)。
|
|
132
|
+
4. **消灭 inline style**:模板正文里所有 `style="…"` 换成 §B utility classes(在 CSS 段新增)。
|
|
133
|
+
5. **图组件**:`.figure img` 的 TODO 注释里写明契约:`<img src="assets/paper_figures/x.png" data-source="paper" data-asset-id="x" class="w-95">`。
|
|
134
|
+
6. logo 槽注释写明 `data-color-exempt="logo"`。
|
|
135
|
+
7. `data-measure-role` 一律保留。
|
|
136
|
+
8. @page 默认值保留(60×36in / 24×36in),在头注释加"画布重定位:同步改 @page 与 .poster 的
|
|
137
|
+
width/height(各一处),ICLR 2026 main = 185cm 90cm landscape 示例"。
|
|
138
|
+
9. eqn 组件加 variant `.eqn--large`(font-size: calc(var(--fs-5) * 1.25),预定义 calc 豁免)。
|
|
139
|
+
10. 自检:改完后模板里 grep 不到 `linear-gradient`、`style="`(除 §B 两个例外注释示例)、
|
|
140
|
+
裸 `#hex`(token block 与 logo SVG 例外)。
|
|
141
|
+
|
|
142
|
+
## F. tokens/*.json schema
|
|
143
|
+
|
|
144
|
+
```json
|
|
145
|
+
{"name": "generic",
|
|
146
|
+
"accent": {"base": "#2D5F8B", "deep": "#1F4566", "light": "#E8F1F8", "soft": "#D7E5F0"},
|
|
147
|
+
"gold": {"base": "#C9A24A", "soft": "#FFF7E0"},
|
|
148
|
+
"neutrals": {"text_primary": "#1A1A1A", "text_secondary": "#555555", "text_muted": "#888888",
|
|
149
|
+
"bg_page": "#F6F2F0", "bg_card": "#FFFFFF", "bg_card_tint": "#FAFAFB",
|
|
150
|
+
"border_soft": "#D8D8D8"},
|
|
151
|
+
"hue_centers": {"accent": 210, "gold": 43}}
|
|
152
|
+
```
|
|
153
|
+
venue 包约束:accent S≤0.55、L∈[0.25,0.45]、禁 H 250–285;gold 全包固定 generic 值;
|
|
154
|
+
light/soft 从 base 推(同 hue 低饱和高亮度)。bg_page 可随 accent 微调暖/冷但 ΔE 要小。
|
|
155
|
+
|
|
156
|
+
## G. 测试基线
|
|
157
|
+
|
|
158
|
+
上游 posterly 仓库的 examples/hello_world/poster.html 是全门 PASS 的参照(vendored 四门)。
|
|
159
|
+
新脚本写完后:style_check 对 hello_world 允许 FAIL(它有 inline style——posterly 原版风格),
|
|
160
|
+
但对我们改造后的模板(填充前)源门必须 PASS;run_gates 对脚手架预期 measure FAIL(未填充),
|
|
161
|
+
这是正常的(模板=脚手架)。
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Ruishuo Chen
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# NOTICE — third-party provenance
|
|
2
|
+
|
|
3
|
+
`paper-poster-html` vendors part of **posterly** and adds ARIS-specific components on top.
|
|
4
|
+
This file records the vendor boundary so upstream sync stays clean and attribution is preserved.
|
|
5
|
+
|
|
6
|
+
## Vendored from posterly (MIT)
|
|
7
|
+
|
|
8
|
+
- **Upstream**: posterly — https://github.com/Chenruishuo/posterly
|
|
9
|
+
- **License**: MIT, © 2026 Ruishuo Chen. Full text: `LICENSES/posterly-MIT.txt`.
|
|
10
|
+
- **Why vendored** (DESIGN_FINAL §0): the posterly tools are copied into this skill, not pulled
|
|
11
|
+
as an external dependency and not rewritten — so the skill is self-contained and the original
|
|
12
|
+
measurement/render logic is preserved unchanged.
|
|
13
|
+
|
|
14
|
+
Vendored, **unmodified** components (the vendor boundary — keep diffs minimal across syncs):
|
|
15
|
+
|
|
16
|
+
| Path | Origin in posterly |
|
|
17
|
+
|------|--------------------|
|
|
18
|
+
| `scripts/poster_check.py` | `tools/poster_check.py` (measure / preflight / polish / verify-final) |
|
|
19
|
+
| `scripts/render_preview.py` | `tools/render_preview.py` (Playwright print render) |
|
|
20
|
+
| `scripts/_posterly/` | `tools/_posterly/` internal modules (measure, render, polish, preflight, canvas, verify_final, textutil) |
|
|
21
|
+
|
|
22
|
+
Vendored and **adapted** (templates):
|
|
23
|
+
|
|
24
|
+
| Path | Origin | ARIS modifications |
|
|
25
|
+
|------|--------|--------------------|
|
|
26
|
+
| `templates/landscape_4col.html` | `templates/landscape_4col_neutral.html` | flat de-gradient, `--fs-*` token scale, zero-inline-style utility classes, `data-source`/`data-color-exempt` contracts |
|
|
27
|
+
| `templates/landscape_hero.html` | `templates/landscape_hero_neutral.html` | (same modifications) |
|
|
28
|
+
| `templates/portrait_2col.html` | `templates/portrait_2col_neutral.html` | (same modifications) |
|
|
29
|
+
|
|
30
|
+
The component **class names** are inherited verbatim from posterly; the catalog in
|
|
31
|
+
`templates/COMPONENTS.md` therefore describes both the originals and the ARIS forks.
|
|
32
|
+
|
|
33
|
+
## ARIS-side additions (not from posterly)
|
|
34
|
+
|
|
35
|
+
These are original ARIS work, layered on top of the vendored base:
|
|
36
|
+
|
|
37
|
+
- `scripts/style_check.py` — style hard-gate, 12 rules (DESIGN_FINAL §3 / §12.5 nit 1).
|
|
38
|
+
- `scripts/asset_check.py` — real-figure provenance gate (DESIGN_FINAL §4).
|
|
39
|
+
- `scripts/run_gates.py` — runs all gates in canonical order, writes `GATE_REPORT.json`
|
|
40
|
+
(DESIGN_FINAL §7).
|
|
41
|
+
- `scripts/extract_pdf_figures.py` — PDF → contact sheet → candidate crops (DESIGN_FINAL §4).
|
|
42
|
+
- `scripts/preprocess_figures.py` — autocrop / format-convert / resolution check.
|
|
43
|
+
- `templates/tokens/*.json` — generic + venue color packs (generic, iclr, icml, neurips, cvpr,
|
|
44
|
+
acl).
|
|
45
|
+
- `templates/COMPONENTS.md`, `templates/README.md`, this `NOTICE.md`.
|
|
46
|
+
- The template modifications listed above (de-gradient, token scale, zero-inline-style
|
|
47
|
+
utilities, contract attributes).
|
|
48
|
+
|
|
49
|
+
## Upstream-sync rule
|
|
50
|
+
|
|
51
|
+
When pulling new posterly releases, **preserve the vendor boundary**: re-vendor the unmodified
|
|
52
|
+
files (`scripts/poster_check.py`, `scripts/render_preview.py`, `scripts/_posterly/`) as drop-in
|
|
53
|
+
replacements, and re-apply the documented template adaptations on top of the new neutral
|
|
54
|
+
templates. Do **not** fold ARIS additions into the vendored files — keep `style_check.py`,
|
|
55
|
+
`asset_check.py`, `run_gates.py`, `extract_pdf_figures.py`, `preprocess_figures.py`, the token
|
|
56
|
+
packs, and the docs as separate ARIS-owned files so the posterly diff stays clean and
|
|
57
|
+
re-syncable.
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: paper-poster-html
|
|
3
|
+
description: "DEFAULT poster pipeline — build an academic conference poster (ICML/NeurIPS/ICLR/CVPR/...) as a single HTML/CSS file with measurement-driven hard gates, real paper figures, a two-hue design-token system, and print-ready PDF via headless Chromium. Use when the user says \"做海报\", \"poster\", \"conference poster\", \"paper poster\", or asks to design/redo a research poster. Supersedes the retired LaTeX /paper-poster."
|
|
4
|
+
argument-hint: "[paper-dir-or-pdf] [— venue: ICLR, canvas: 185x90cm landscape, venue-colors: true]"
|
|
5
|
+
allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob, WebFetch, WebSearch, AskUserQuestion, mcp__codex__codex
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Paper Poster (HTML): measurement-gated poster generation
|
|
9
|
+
|
|
10
|
+
One HTML file styled for an exact print canvas (`@page { size: W H }`), rendered to PDF
|
|
11
|
+
via Playwright print emulation. **Iterate by measuring, not eyeballing** — the screen
|
|
12
|
+
preview lies; only print emulation at the correct viewport tells the truth. Core gate
|
|
13
|
+
machinery is adapted from [posterly](https://github.com/Chenruishuo/posterly) (MIT, ©
|
|
14
|
+
2026 Ruishuo Chen — see `NOTICE.md` and `LICENSES/posterly-MIT.txt`); ARIS adds style
|
|
15
|
+
discipline gates, figure-provenance gates, the cross-model review loop, and the
|
|
16
|
+
anti-patch-loop fix vocabulary.
|
|
17
|
+
|
|
18
|
+
## Why this skill exists (the failure it prevents)
|
|
19
|
+
|
|
20
|
+
A predecessor pipeline produced a poster with **30+ colors, zero real paper figures, a
|
|
21
|
+
screen-pixel canvas, and tiny formulas floating in oversized boxes**, then spent 12+
|
|
22
|
+
review rounds making it *worse* — each round added a new badge color or bespoke SVG
|
|
23
|
+
patch. The cure is structural, not exhortative:
|
|
24
|
+
|
|
25
|
+
1. **Hard gates run before any aesthetic opinion** (alignment, style, assets must PASS
|
|
26
|
+
first — a reviewer never sees an unmeasured poster).
|
|
27
|
+
2. **A closed fix vocabulary** — visual-review fixes can only touch design tokens,
|
|
28
|
+
whole catalogued components, content rebalance, assets, or canvas choice. New inline
|
|
29
|
+
styles / new hex values / bespoke decorations are structurally forbidden.
|
|
30
|
+
3. **Two-hue discipline as a machine check**, not a style suggestion.
|
|
31
|
+
4. **Real paper figures with provenance manifest**, or the gate fails.
|
|
32
|
+
|
|
33
|
+
## Mental model
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
paper (.tex / PDF) ──► content plan + claim→evidence audit (codex, fresh)
|
|
37
|
+
│
|
|
38
|
+
figures extracted ─────────┤ FIGURE_MANIFEST.json (provenance, sha256)
|
|
39
|
+
(real paper figures ONLY) ▼
|
|
40
|
+
template scaffold ──► fill ──► run_gates.py ◄─── HARD, loop here
|
|
41
|
+
preflight → style → asset → measure → polish
|
|
42
|
+
│ all hard gates PASS
|
|
43
|
+
▼
|
|
44
|
+
Claude visual review (≤3 issues × ≤3 rounds, fix-vocabulary only)
|
|
45
|
+
│ score ≥ 9
|
|
46
|
+
▼
|
|
47
|
+
codex final cross-model review (fresh thread, full HTML+PDF)
|
|
48
|
+
│ pass
|
|
49
|
+
▼
|
|
50
|
+
verify-final → poster.pdf + GATE_REPORT.json
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Constants
|
|
54
|
+
|
|
55
|
+
- **SKILL_SCRIPTS** = `${CLAUDE_SKILL_DIR}/scripts` — all helpers are single-owner and
|
|
56
|
+
ship inside this skill (Arch C). If the directory is missing the install is broken:
|
|
57
|
+
abort and tell the user to re-install the skill (Policy A — the gates ARE the skill;
|
|
58
|
+
never improvise replacements).
|
|
59
|
+
- **REVIEWER_MODEL** = `gpt-5.6-sol`, reasoning `xhigh`, **fresh thread per review call**
|
|
60
|
+
(`mcp__codex__codex`, never `codex-reply` across review boundaries).
|
|
61
|
+
- **CANVAS** — from the venue's official spec, looked up live in Phase 0. Never assume.
|
|
62
|
+
(Known anchor: ICLR 2026 main = 185×90 cm landscape per its official printing
|
|
63
|
+
service; ICML/NeurIPS commonly 60×36 in landscape; workshop posters often 61×91 cm
|
|
64
|
+
portrait. Specs change yearly — verify.)
|
|
65
|
+
- **PALETTE** — default = `templates/tokens/generic.json` (slate-blue `#2D5F8B` accent
|
|
66
|
+
+ gold `#C9A24A` highlight + neutrals) for **all** venues. Venue packs are opt-in via
|
|
67
|
+
`— venue-colors: true`. Purple-dominant accents (hue 250–285) are banned unless the
|
|
68
|
+
user passes `— allow-purple: true`.
|
|
69
|
+
- **AUTO_PROCEED = false** — wait for explicit confirmation at every 🚦 checkpoint.
|
|
70
|
+
- **OUTPUT_DIR** = `poster_html/` in the working directory.
|
|
71
|
+
|
|
72
|
+
## Workflow
|
|
73
|
+
|
|
74
|
+
### Phase 0 — Resume, dependencies, venue spec
|
|
75
|
+
|
|
76
|
+
1. **Resume**: if `poster_html/POSTER_STATE.json` exists with `status: in_progress`
|
|
77
|
+
(< 24 h), resume from the saved phase.
|
|
78
|
+
2. **Dependencies** (degradation chain, in order):
|
|
79
|
+
- Playwright + bundled Chromium → if missing, `python3 -m playwright install
|
|
80
|
+
chromium` → if install fails but system Chrome exists, scripts fall back to
|
|
81
|
+
`channel="chrome"` → if all fail: you may produce the content plan and scaffold
|
|
82
|
+
only, label everything **"not print verified"**, and must NOT emit a final PDF.
|
|
83
|
+
- `pdfinfo` missing → PyMuPDF reads PDF dimensions. At least one of
|
|
84
|
+
pdftoppm / PyMuPDF must exist for PNG review renders.
|
|
85
|
+
- MathJax: download `tex-svg.js` once into `poster_html/assets/mathjax/` and
|
|
86
|
+
reference it locally in the HTML. CDN is acceptable only for drafts; the measure
|
|
87
|
+
gate hard-fails on unrendered MathJax either way.
|
|
88
|
+
3. **Venue spec lookup (live)**: consult the venue's official poster-instructions page
|
|
89
|
+
(search + fetch). Extract dimensions, orientation, font floor, logo policy,
|
|
90
|
+
anonymity rules, file format. Record `{spec, source_url, retrieved}` into
|
|
91
|
+
`POSTER_STATE.json` — specs change yearly; never reuse a cached spec silently.
|
|
92
|
+
|
|
93
|
+
**🚦 Checkpoint**: echo the venue spec table (canvas, orientation, source URL) and the
|
|
94
|
+
chosen template. Wait.
|
|
95
|
+
|
|
96
|
+
### Phase 0.5 — Design discovery (one AskUserQuestion batch)
|
|
97
|
+
|
|
98
|
+
Ask once, ≤4 questions: layout template (from `templates/README.md`), palette
|
|
99
|
+
(default generic pack / venue pack / custom within constraints), logos + venue mark
|
|
100
|
+
(paths or "none" — never fabricate; check the venue's logo policy), QR target (paper /
|
|
101
|
+
code / project page / none — generate **offline** with `qrencode` or python-`qrcode`;
|
|
102
|
+
never a remote QR-service URL). Persist answers in `POSTER_STATE.json` as
|
|
103
|
+
`design_decisions` — re-read before any later "improvement" so deliberate choices are
|
|
104
|
+
never reverted.
|
|
105
|
+
|
|
106
|
+
### Phase 1 — Paper ingest, content plan, claim audit
|
|
107
|
+
|
|
108
|
+
1. Read the paper source (`.tex` ideal; PDF otherwise). Extract: title/authors/affils,
|
|
109
|
+
the 3–5 headline numbers, core method (equations verbatim), main results
|
|
110
|
+
(tables/figures and what they show), takeaways. Build
|
|
111
|
+
`poster_html/POSTER_CONTENT_PLAN.md` — what goes in which column, word budget per
|
|
112
|
+
card. **Target density** (excluding table cells, captions, author line, footer):
|
|
113
|
+
standard poster **550–850 words**; dense theory+empirical poster **750–1050 words**,
|
|
114
|
+
allowed only when ≥2 compact components are used (`eqn-anatomy`, `flow-strip`,
|
|
115
|
+
`derived-col`, `claim-pills`, `keybox--4`). Warn yourself below 500 words on a
|
|
116
|
+
4-column landscape (it will read as sparse next to professionally dense posters)
|
|
117
|
+
unless the template is hero/visual-first; warn above 1100 unless the user asked for
|
|
118
|
+
dense mode. Bullets ≤ 8 words when possible — density comes from *structure*, not
|
|
119
|
+
long prose. **Prefer compact structure over prose**: if the paper contains an
|
|
120
|
+
explicit objective, algorithm, theorem mechanism, or baseline comparison, extract at
|
|
121
|
+
least two of: (1) empirical objective / loss stack; (2) term-by-term equation
|
|
122
|
+
anatomy; (3) a method-flow strip grounded in paper variables; (4) a derived-Δ column
|
|
123
|
+
for method-vs-baseline rows; (5) a 4-up implementation/theory keybox; (6) a
|
|
124
|
+
claim/evidence pill table for numeric-heavy posters. **Do not invent an algorithm.**
|
|
125
|
+
If the paper has only an objective, label the component "objective flow" or "loss
|
|
126
|
+
anatomy", never "algorithm".
|
|
127
|
+
2. **Cross-model content audit** (fresh codex thread, `xhigh`): give it the content
|
|
128
|
+
plan path + paper source path(s) — paths only, no summaries — and ask for a
|
|
129
|
+
claim→evidence table: `| claim on poster | paper file:line | paper says (verbatim) |
|
|
130
|
+
match? |` with match ∈ {OK, NUMERIC-MISMATCH, OVERCLAIM, MISSING-PRECONDITION,
|
|
131
|
+
NOT-IN-PAPER, SCOPE-NARROWED}. Save to `poster_html/CLAIM_EVIDENCE.md`.
|
|
132
|
+
3. Fix every non-OK row or record it as a user-acknowledged tradeoff.
|
|
133
|
+
|
|
134
|
+
**🚦 Checkpoint**: content plan + audit summary. Wait.
|
|
135
|
+
|
|
136
|
+
### Phase 2 — Real paper figures (provenance-gated)
|
|
137
|
+
|
|
138
|
+
Source preference chain:
|
|
139
|
+
1. Paper source `figures/` (vector SVG/PDF → convert to SVG via
|
|
140
|
+
`inkscape`/`pdf2svg` if available, else rasterize ≥ 2× rendered px).
|
|
141
|
+
2. PDF-only: `extract_pdf_figures.py contact-sheet` + `auto` to list candidate
|
|
142
|
+
regions → pick crops (**🚦 human confirms crop choices**) → `crop` at 300–450 DPI.
|
|
143
|
+
3. Last resort: user supplies explicit `page,x0,y0,x1,y1` bboxes.
|
|
144
|
+
|
|
145
|
+
Then `preprocess_figures.py --autocrop` every asset. Every paper-derived image gets a
|
|
146
|
+
`FIGURE_MANIFEST.json` entry (source hash, page, bbox, dpi, sha256, natural_px) and is
|
|
147
|
+
embedded as `<img data-source="paper" data-asset-id="...">`.
|
|
148
|
+
|
|
149
|
+
**Hard rule**: ≥ 2 paper-derived visuals or the asset gate fails. Theory-only papers
|
|
150
|
+
may waive the *total-area* rule (`--waive-total-area`) at a human checkpoint — never
|
|
151
|
+
silently. Never draw bespoke decorative SVG "figures" as substitutes.
|
|
152
|
+
|
|
153
|
+
**Figure-area bands** (asset gate, fractions of *body*): total target **14–22 %**
|
|
154
|
+
(warn < 12 % / > 24 %, hard < 10 % / > 28 %); per ordinary figure target 4–8 % (warn
|
|
155
|
+
> 10 %, hard > 13 %); `figure--duo` combined 8–12 %. Hero templates pass `--hero`
|
|
156
|
+
(centerpiece may take 30–40 %). The failure mode is symmetric: too small reads as
|
|
157
|
+
decoration, too big crowds out content. Sibling figures that share axes or tell a
|
|
158
|
+
before→after story belong in one `figure--duo` card, not two cards.
|
|
159
|
+
|
|
160
|
+
### Phase 3 — Scaffold + tokens
|
|
161
|
+
|
|
162
|
+
`cp templates/<chosen>.html poster_html/poster.html`; retarget `@page` + `.poster`
|
|
163
|
+
dims to the venue canvas (two edits, same values); apply the chosen token pack onto the
|
|
164
|
+
`:root` DESIGN TOKENS block; fill content per the plan; embed manifest figures.
|
|
165
|
+
Run `preflight` + `style_check` — both must PASS before any layout iteration. (A fresh
|
|
166
|
+
scaffold is *expected* to fail `measure` — that gate judges a filled poster.)
|
|
167
|
+
|
|
168
|
+
### Phase 4 — Layout hard loop
|
|
169
|
+
|
|
170
|
+
After every layout change:
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
python3 "$SKILL_SCRIPTS/run_gates.py" poster_html/poster.html \
|
|
174
|
+
--tokens <pack.json> --manifest poster_html/FIGURE_MANIFEST.json \
|
|
175
|
+
--report poster_html/GATE_REPORT.json
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Canonical order: preflight → style → asset → measure → polish. Targets: column-bottom
|
|
179
|
+
**spread < 5 px** (aim < 3), footer gap ∈ [30, 50] px, intercard gap ∈ [12, 50] px,
|
|
180
|
+
canvas-fill ∈ [95, 101] %, poster bbox aligned to page within ±2 px. Fix guidance for
|
|
181
|
+
each failure mode lives in the gate output and `templates/COMPONENTS.md`. **Do not
|
|
182
|
+
proceed while any hard gate fails. Do not let a reviewer see an unmeasured poster.**
|
|
183
|
+
Balance under-filled columns with *content from the paper* (Gate C), never with
|
|
184
|
+
whitespace, `space-between`, or stretched cards.
|
|
185
|
+
|
|
186
|
+
### Phase 5 — Claude visual review (gated aesthetics)
|
|
187
|
+
|
|
188
|
+
Render and read the result yourself:
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
python3 "$SKILL_SCRIPTS/render_preview.py" poster_html/poster.html
|
|
192
|
+
pdftoppm -r 100 poster_html/poster_preview.pdf poster_html/review_full -png -f 1 -l 1
|
|
193
|
+
# plus 2-4 region crops at higher res (header / one column / equations) via PIL
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
**Calibrate first** (`../shared-references/taste-calibration.md`): if
|
|
197
|
+
**human-curated** `references/good/` + `references/bad/` exist under this skill
|
|
198
|
+
dir (or the project supplies its own pair), score those 3+3 reference posters
|
|
199
|
+
on the axes below BEFORE the target, anchoring the scale. Never select, search
|
|
200
|
+
for, or generate anchors yourself; if no reference sets exist, proceed
|
|
201
|
+
uncalibrated and mark `CALIBRATION: none` — never fabricate anchor scores.
|
|
202
|
+
Axes (weights sum 1.0): Design 0.35 · Craft 0.30 · Functionality 0.20 ·
|
|
203
|
+
Originality 0.15. Mapping: `SCORE = min(round(1 + 9 × COMPOSITE), lowest
|
|
204
|
+
triggered cap)` — caps apply AFTER the mapping, and the loop's `Score ≥ 9`
|
|
205
|
+
threshold below always reads this final capped `SCORE`, never the raw
|
|
206
|
+
composite.
|
|
207
|
+
|
|
208
|
+
Score strictly 1–10. **Critical caps** (hard floors — a calibrated composite
|
|
209
|
+
never overrides them): < 2 real paper figures → ≤ 3; broken canvas /
|
|
210
|
+
clipped content / unreadable math → ≤ 4; ≥ 4 visible hue families or gradient-heavy
|
|
211
|
+
header → ≤ 4; large blank cards or columns → ≤ 5; fabricated visual claim → ≤ 3.
|
|
212
|
+
Checks: posterly-showcase gestalt (would this hang next to a professionally designed
|
|
213
|
+
poster without looking like a patched dashboard?), single-accent discipline, real
|
|
214
|
+
figures readable and central, print hierarchy (title → headline stats → figures →
|
|
215
|
+
detail), column fill, **equation prominence** (no tiny math in oversized boxes),
|
|
216
|
+
serif-body/sans-display pairing, no gradient kitsch, component consistency, 60-second
|
|
217
|
+
narrative. Output format:
|
|
218
|
+
|
|
219
|
+
```
|
|
220
|
+
SCORE: N/10 (= min(round(1 + 9 × COMPOSITE), lowest cap); drives the loop)
|
|
221
|
+
COMPOSITE: 0.xx (weighted; list the four per-axis scores)
|
|
222
|
+
CALIBRATION: anchored | none
|
|
223
|
+
GAP: <which reference poster the target falls short of / exceeds, on which axis, and why — one paragraph; omit only when CALIBRATION: none>
|
|
224
|
+
CAPS_TRIGGERED: ...
|
|
225
|
+
TOP_ISSUES: (max 3)
|
|
226
|
+
ALLOWED_FIX_TYPE per issue: token | component | rebalance | asset | template/canvas
|
|
227
|
+
PATCH_LOOP_RISK: low | medium | high
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
Loop: fix (fix vocabulary below) → re-run Phase 4 gates → re-score. **≤ 3 issues per
|
|
231
|
+
round, ≤ 3 rounds.** Score ≥ 9 → Phase 6. Still < 9 after 3 rounds → STOP patching;
|
|
232
|
+
escalate to template / canvas / content re-choice (back to Phase 3) or a human
|
|
233
|
+
decision. Never enter round 4 of cosmetic patching.
|
|
234
|
+
|
|
235
|
+
#### Fix vocabulary (closed set — the anti-patch-loop core)
|
|
236
|
+
|
|
237
|
+
Allowed: **(a)** edit a `:root` token value; **(b)** swap/remove/add a whole component
|
|
238
|
+
instance from `templates/COMPONENTS.md`; **(c)** content rebalance (move a card across
|
|
239
|
+
columns, trim/grow text *from the paper*, resize a figure within its AR band);
|
|
240
|
+
**(d)** template/canvas re-choice; **(e)** global edits to an existing component's CSS
|
|
241
|
+
that reference only tokens; **(f)** switching predefined variants (`.eqn--large`,
|
|
242
|
+
`.card--compact`, `.figure--wide`, `.nowrap`, …); **(g)** asset fixes (re-crop, swap
|
|
243
|
+
for a clearer figure from the same paper, re-preprocess).
|
|
244
|
+
|
|
245
|
+
Forbidden: new inline styles, new hex values anywhere, bespoke decorative SVG,
|
|
246
|
+
per-element font-size overrides. **A new component may not be born inside the visual
|
|
247
|
+
loop** — stop, get a human checkpoint, add it to `COMPONENTS.md`, re-run from Phase 3.
|
|
248
|
+
|
|
249
|
+
### Phase 6 — Codex final review (fresh thread, cross-model)
|
|
250
|
+
|
|
251
|
+
All hard gates PASS + polish warnings zero-or-waived + visual ≥ 9 first. Then a fresh
|
|
252
|
+
codex thread (`xhigh`) reviews the **final artifacts** (not the content plan):
|
|
253
|
+
`poster.html`, the rendered PDF/PNG, the paper source, `GATE_REPORT.json`,
|
|
254
|
+
`CLAIM_EVIDENCE.md` — paths only, no executor framing. It checks: (1) fidelity &
|
|
255
|
+
overclaims **re-checked on final text** (polish introduces new claims), (2) residue
|
|
256
|
+
(`\ref{`, `TODO`, raw `<` in math, missing images, remote URLs), (3) visual rhetoric
|
|
257
|
+
(headline numbers prominent, banner readable from 2 m), (4) gate-log coherence. The
|
|
258
|
+
reviewer recommends; it does not edit. Any fix → back through Phase 4/5 gates — never
|
|
259
|
+
straight to re-review.
|
|
260
|
+
|
|
261
|
+
### Phase 7 — Final verification + report
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
python3 "$SKILL_SCRIPTS/poster_check.py" verify-final poster_html/poster_preview.pdf \
|
|
265
|
+
--from-html poster_html/poster.html --max-size-mb 20
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
Page count 1, dimensions match `@page`, size ≤ 20 MB, no TODO/residue, no remote
|
|
269
|
+
assets. Report: PDF path, final spread px, footer-gap range, gate summary table,
|
|
270
|
+
unresolved waivers, codex verdict. Update `POSTER_STATE.json` → `done`.
|
|
271
|
+
|
|
272
|
+
## State persistence
|
|
273
|
+
|
|
274
|
+
`poster_html/POSTER_STATE.json`: `{phase, venue, canvas{w,h,orientation,source_url,
|
|
275
|
+
retrieved}, template, token_pack, design_decisions{...}, figures_selected[],
|
|
276
|
+
visual_rounds, codex_threads{audit, final}, status, timestamp}` — written after every
|
|
277
|
+
phase; enables compact-recovery resume.
|
|
278
|
+
|
|
279
|
+
## Key rules
|
|
280
|
+
|
|
281
|
+
- **Measure, don't eyeball.** No layout claim without `run_gates.py` output.
|
|
282
|
+
- **Gates before aesthetics.** Claude/codex review only ever sees a poster whose hard
|
|
283
|
+
gates PASS. This ordering is what kills the patch-loop death spiral.
|
|
284
|
+
- **Never invent paper numbers or figures.** Numbers come from the paper source;
|
|
285
|
+
visuals carry manifest provenance. Fabrication = critical cap ≤ 3.
|
|
286
|
+
- **Two hues, one system.** Accent + gold + neutrals. The style gate enforces it;
|
|
287
|
+
don't negotiate with the gate.
|
|
288
|
+
- **Real figures are the poster.** A poster without the paper's own figures is a
|
|
289
|
+
dashboard, not a poster.
|
|
290
|
+
- **Fix vocabulary is closed.** If a fix isn't expressible as token / component /
|
|
291
|
+
rebalance / asset / canvas, it's the wrong fix.
|
|
292
|
+
- **Cross-model verdicts.** Claude drives the loop and scores visuals; acceptance of
|
|
293
|
+
content fidelity comes from the fresh codex thread (a loop can drive, never acquit).
|
|
294
|
+
- **Preserve user decisions.** Re-read `design_decisions` before "improving" anything.
|
|
295
|
+
- **Vendor boundary.** `poster_check.py`, `render_preview.py`, `_posterly/` are
|
|
296
|
+
vendored from posterly — keep diffs minimal; ARIS-side logic goes in the new
|
|
297
|
+
scripts, not in vendored files.
|
|
298
|
+
|
|
299
|
+
## Review tracing
|
|
300
|
+
|
|
301
|
+
Save every codex reviewer call's trace per `shared-references/review-tracing.md` to
|
|
302
|
+
`.aris/traces/paper-poster-html/<date>_run<NN>/` (audit + final threads, raw responses).
|
|
303
|
+
|
|
304
|
+
## Output contract
|
|
305
|
+
|
|
306
|
+
```
|
|
307
|
+
poster_html/
|
|
308
|
+
├── poster.html # single-file source of truth
|
|
309
|
+
├── poster_preview.pdf # print-emulated, verify-final-checked
|
|
310
|
+
├── poster_preview.png # thumbnail
|
|
311
|
+
├── POSTER_STATE.json # resume state
|
|
312
|
+
├── GATE_REPORT.json # canonical gate ledger (schema v1)
|
|
313
|
+
├── POSTER_CONTENT_PLAN.md # what-goes-where + word budgets
|
|
314
|
+
├── CLAIM_EVIDENCE.md # codex claim→evidence audit
|
|
315
|
+
├── FIGURE_MANIFEST.json # figure provenance (sha256, page, bbox, dpi)
|
|
316
|
+
└── assets/{paper_figures,logos,qr,mathjax}/
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
## When NOT to use
|
|
320
|
+
|
|
321
|
+
- Slides, not a poster → `/paper-talk` / `/slides-polish`.
|
|
322
|
+
- The paper's headline isn't stable yet — fix the paper first; a poster amplifies
|
|
323
|
+
whatever story it's given.
|
|
File without changes
|