CLI kernel for bootstrapping and maintaining paper-harness projects
Project description
paperops
paperops は、AI エージェントと論文を書くためのプロジェクトハーネスである。
人間が template/ を手でコピーして使う道具ではない。主導線は pops CLI で、Agent が安全に project state を初期化・診断・更新するための execution kernel として扱う。
最小セットアップ
新規論文プロジェクト:
uvx --from paper-harness-cli pops init paper-my-topic
cd paper-my-topic
uvx --from paper-harness-cli pops doctor
既存プロジェクトを CLI 管理へ寄せる:
cd paper-my-topic
uvx --from paper-harness-cli pops setup
uvx --from paper-harness-cli pops doctor
template/ はこのリポジトリ内の source of truth であり、paper-harness-cli パッケージに bundled scaffold として同梱される。
pops は uvx --from paper-harness-cli pops ... で実行する。.venv は CLI 用ではなく、論文プロジェクトの Python 実行環境が必要な場合に make venv で作成する。
AI 前提の作業ループ
日常運用の主役は、CLI そのものではなく Agent との会話である。
- 人間が論文トピック、制約、投稿先候補、判断を伝える。
- Agent が
evidence/、claims/、review/、requests/のカードを正本として整え、notes/views/で俯瞰できるようにする。 uvx --from paper-harness-cli pops ...が init / setup / doctor / update-paperops のような決定的操作を担う。- 原稿は
manuscript/jaを中心に進め、必要な block をmanuscript/enへ同期する。 - 関連研究や外部情報源を集める場合は
/source-reach-scanで source channel と raw capture 方針を決め、/research-related-workで調査対象と field framework を作り、raw findings をrefs/research/、採用文献をrefs/summaries/と.bib、議論をnotes/related-work-map.mdへ分ける。 - 投稿前の模擬査読は
/peer-review-manuscript、実査読コメントへの返答は/respond-to-peer-reviewでreview/のカードとnotes/views/peer-review.mdへ整理する。 - 実験結果や外部ディレクトリが必要なら
refs/links.tomlとrefs/local/locations.tomlで link を解決し、runops project は MCP の read / inspect / plan tool から確認する。 - 追加解析・図表・実験要望は
requests/analysis/に残し、notes/views/research-requests.mdで俯瞰してから runops 側のresearch/paper_requests.tomlへ handoff する。 - 人間が原稿レビューやプロンプト指示を出した場合は
/integrate-writing-feedbackで feedback card にし、claim / gate / evidence / request / manuscript へ遡って反映する。 - 構成やハーネスの違和感をまだ修正に固定したくない場合は
/open-paper-scanで俯瞰し、採用する idea だけ後段の skill へ渡す。 - 共有前に
make ci、投稿前にmake pre-submitでハーネスのゲートを通す。 - 再利用可能な摩擦は
/feedback-paper-harnessで上流paperopsに戻す。
CLI の詳細は docs/cli.md を参照する。
コア設計思想
template/は個別論文リポジトリに展開される scaffold の source of truth。src/paperops/はtemplate/を展開・診断・更新する薄い CLI。evidence/は result / figure / source card の正本。raw result、figure data、analysis artifact を claim に昇格する前の証拠単位へ束ねる。claims/は claim / scientific gate / argument card の正本。Abstract、Conclusion、主要図表へ出してよい主張だけを明示する。review/とrequests/は、人間レビュー、査読コメント、追加解析、改稿依頼をカード化し、原稿への指摘を上流へ遡らせるための層。notes/はセッション継続性、外部ソース到達、関連研究、読者モデル、AI 初稿 polish、AI 利用ログ、notes/views/の俯瞰ビューを持つ共有 memory。作業用ドキュメントは日本語で書く。manuscript/jaとmanuscript/enは block ID で対応するバイリンガル原稿。refs/は raw PDF 置き場ではなく、キュレーション済みの参照知識層、関連研究の調査設計、source reach の一時領域、外部 project link 台帳。作業用ドキュメントは日本語で書く。refs/links.tomlは共有可能な link intent を持ち、個人環境の絶対パスは ignored なrefs/local/locations.tomlに分離する。submission/<venue>/は投稿先公式テンプレートと最終提出用 TeX の隔離スロット。pops update-paperopsはハーネス管理ファイルだけを扱い、下流固有のmanuscript/、notes/、refs/、submission/を自動上書きしない。
runops / 外部 project link
論文を書きながら実験結果、図表ソース、外部ノート、データセットを参照する場合、共有ファイルには絶対パスを書かず、refs/links.toml に link の意味だけを記録する。実パスは refs/local/locations.toml に置き、pops links list --resolve-local と /resolve-local-paths で解決する。
kind = "runops_project" の link は runops MCP 連携の入口である。既存結果は runops.analysis.artifacts、runops.survey.summary、runops.publication.exports.list で確認し、追加要望は requests/analysis/ に記録してから runops.paper.request.draft で検証し、人間確認後に runops project の research/paper_requests.toml へ渡す。詳細は docs/cli.md と docs/skill-catalog.md を参照する。
リポジトリ構成
src/paperops/:popsCLItemplate/: 論文プロジェクトに展開される scaffold.github/workflows/: 下流論文リポジトリから呼び出し可能な再利用可能 GitHub Actions workflow.github/ISSUE_TEMPLATE/: テンプレート改善、スキル要求、構造変更の Issue フォーム.claude/skills/,.agents/skills/: テンプレート保守用 skilldocs/: アーキテクチャ、変更ポリシー、トリアージルール、CLI と配布方針tests/:popsCLI の最小 smoke tests
スキャフォールドが最適化するもの
refs/: 生の PDF 置き場ではなく共有知識層として活用refs/source-reach/と/source-reach-scan: 外部 Web、GitHub、動画、RSS、SNS などの source channel、到達経路、raw capture、credential risk を分けるrefs/research/と/research-related-work: 関連研究の outline / field framework / raw findings / 議論を分け、採用する文献だけrefs/summaries/と.bibへ昇格/peer-review-manuscriptと/respond-to-peer-review: 模擬査読、major/minor comment、response matrix、revision plan をreview/のカードへ整理/integrate-writing-feedback: 人間の原稿レビューや自然文指示を feedback card にし、claim / gate / evidence / request / manuscript へ遡って反映notes/views/: カード正本から見た result pattern、claim-evidence、scientific gate、peer-review、request の俯瞰ビュー- 日本語・英語の原稿をブロックレベルのミラーとして追跡
submission/<venue>/: 投稿先公式テンプレートと最終提出用 TeX の分離manuscript/publication-metadata.toml、notes/ai-use.md、notes/reproducibility.md: 公開メタデータ、AI 利用開示、計算環境、図表 provenance の投稿前確認make pre-submit:make ciに加えて引用サマリー、strict mirror freshness、submission slot、スタータープレースホルダー、workflow 参照、公開メタデータ不足を検出make argument-focus-check: AI 初稿が条件数列挙、防御的 caveat、ローカル実行ログに寄りすぎていないかを advisory に検出/map-result-patterns: simulation results や figure data を本文の主張へ直接流し込む前に、result pattern / evidence packet として中間層へ束ねる/scientific-gate: 中心主張、Abstract、Conclusion、主要図表の claim readiness と人間承認を確認/polish-ai-draft: AI 初稿の定型臭を、主張・証拠・AI 利用開示を保ったまま整える/open-paper-scan: 改善指示を局所修正へ閉じる前に、原稿・読者体験・執筆ハーネスを発散的に眺めるmake citation-check: TeX 本文中の citation key と.bibの不整合を早期検出make public-terms-check/make claim-evidence-check: 内部語の公開本文混入と supported claim の evidence 対応を早期検出make mirror-freshness-check/make mirror-strict-check/make submission-drift-check: 日英 block の同期鮮度と投稿版への科学的変更戻し忘れを点検make skill-mirror-check:.agents/skills/の共通 skill 実体と.claude/skills/の Claude Code wrapper が対応しているかを点検scripts/build-ja.sh/scripts/build-en.sh:\input/\include/\includegraphics/ bibliography / style 参照の構造検証を行い、TeX 環境があれば PDF ビルドへ進む- 下流論文リポジトリ用の Issue フォーム: 原稿レビュー、エビデンス不足、ハーネス摩擦を分けて収集
- テンプレート自体の再利用可能な保守ワークフロー
- プロジェクトローカルの Claude / Codex スキル、フック、運用ルール
CLI
uvx --from paper-harness-cli pops init paper-my-topic
uvx --from paper-harness-cli pops setup
uvx --from paper-harness-cli pops doctor
uvx --from paper-harness-cli pops update-paperops --dry-run
uvx --from paper-harness-cli pops update-paperops --plan
uvx --from paper-harness-cli pops links list --resolve-local
uvx --from paper-harness-cli pops links check
uvx --from paper-harness-cli pops migrate --apply
uvx --from paper-harness-cli pops feedback
uvx --from paper-harness-cli pops version
このコマンド面は uvx 経由に一本化する。実装は小さく保ち、既存 skill と Makefile の運用を壊さないことを優先する。
version を跨ぐ scaffold 更新では、update-paperops --plan で minor checkpoint ごとの upgrade chain を確認し、必要に応じて --apply-chain で exact version の pops を順に呼び替える。詳細は docs/upgrade-policy.md を参照する。
PyPI 公開
paper-harness-cli は release publish または手動 dispatch で PyPI に公開する。
GitHub Actions の PyPI 公開 workflow は distribution を build / check し、PyPI Trusted Publishing で paper-harness-cli にアップロードする。
PyPI 側では trusted publisher として、この repository、workflow .github/workflows/publish-pypi.yml、environment pypi を設定しておく。
開発と検証
テンプレートは完全な TeX 環境を前提とせず、軽量なローカルチェックを提供する。
scripts/build-ja.sh と scripts/build-en.sh は latexmk が利用可能な場合はコンパイルを行い、そうでなければ scripts/check-tex-structure.py による構造検証にフォールバックするため、クリーンなランナーでも CI が執筆ハーネスを実行できる。
開発時のローカルセットアップは、リポジトリローカルの .venv 内の Python 3.11 以上である。
make venv
make smoke
python -m pip wheel . --no-deps -w .codex-tmp/wheelhouse
上流リファレンス
フックと設定のレイアウトは Anthropic の Claude Code ドキュメントのプロジェクト設定とフックに準拠しており、GitHub 自動化ファイルは GitHub の再利用可能ワークフローと Issue フォームのドキュメントに準拠している:
- https://code.claude.com/docs/en/settings
- https://code.claude.com/docs/en/hooks
- https://docs.github.com/en/actions/reference/workflows-and-actions/reusing-workflow-configurations
- https://docs.github.com/en/enterprise-cloud@latest/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-issue-forms
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file paper_harness_cli-0.5.0.tar.gz.
File metadata
- Download URL: paper_harness_cli-0.5.0.tar.gz
- Upload date:
- Size: 212.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9e4726cf18349f00e5476e899ede1d0f2b85dd190b1894c1daac661560c9b893
|
|
| MD5 |
fc5d91d8118dfcc7832583e6a3de9817
|
|
| BLAKE2b-256 |
adf3144c5ec15f679dad187fe233ab174a2e6a1c10466b03dafda5a2cc88766a
|
Provenance
The following attestation bundles were made for paper_harness_cli-0.5.0.tar.gz:
Publisher:
publish-pypi.yml on Nkzono99/paperops
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
paper_harness_cli-0.5.0.tar.gz -
Subject digest:
9e4726cf18349f00e5476e899ede1d0f2b85dd190b1894c1daac661560c9b893 - Sigstore transparency entry: 1922688609
- Sigstore integration time:
-
Permalink:
Nkzono99/paperops@5dd0d6e542637d83af3fac8295f755b37ffaed7b -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/Nkzono99
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@5dd0d6e542637d83af3fac8295f755b37ffaed7b -
Trigger Event:
release
-
Statement type:
File details
Details for the file paper_harness_cli-0.5.0-py3-none-any.whl.
File metadata
- Download URL: paper_harness_cli-0.5.0-py3-none-any.whl
- Upload date:
- Size: 269.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
451bbf7749d0de822cac3f2713d20762f9feb815516ed6cdafce90fa4f0392c7
|
|
| MD5 |
f51e561cebc497b6a5c8198ae09dbbf6
|
|
| BLAKE2b-256 |
c1eaecd76ca0035de81ea4505509ed1bfa2028ae6415687603aae6f526bb142e
|
Provenance
The following attestation bundles were made for paper_harness_cli-0.5.0-py3-none-any.whl:
Publisher:
publish-pypi.yml on Nkzono99/paperops
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
paper_harness_cli-0.5.0-py3-none-any.whl -
Subject digest:
451bbf7749d0de822cac3f2713d20762f9feb815516ed6cdafce90fa4f0392c7 - Sigstore transparency entry: 1922688715
- Sigstore integration time:
-
Permalink:
Nkzono99/paperops@5dd0d6e542637d83af3fac8295f755b37ffaed7b -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/Nkzono99
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@5dd0d6e542637d83af3fac8295f755b37ffaed7b -
Trigger Event:
release
-
Statement type: