ホーム / 全スキル / コンテンツ制作 / repo-intake-and-plan
コンテンツ制作 · lllllllama/rigorpilot-skills

repo-intake-and-plan

README優先のディープラーニングリポジトリ再現に向けた厳密なインテイク支援ツールです。リポジトリの走査、READMEや主要プロジェクトファイルの読み込み、文書化されたコマンドの抽出、推論・評価・学習候補の分類、そして最小限の信頼できる再現計画をメインオーケストレーターに返すタスクに特化して使用します。環境構築、アセットのダウンロード、コマンドの実行、最終レポート作成、論文調査、エンドツーエンドのオーケストレーションには使用しないでください。

L4 高権限 · 段階的認可と監査V1 コミット固定コマンド実行Dual-pass Audit
Author lllllllamaGitHub lllllllama/rigorpilot-skills ↗Stars 487License MIT(仓库根 LICENSE:'MIT License / Copyright (c) 2026 Chengkun Rao';GitHub API spdx_id=MIT)Commit bd91195ad7
管理レベルは Skill の能力と推奨統制措置を示すものであり、品質や安全性の認証、利用可否の判定ではありません。使用の可否はユーザーおよび管理者が決定します。Agent 環境によって制約が異なるため、自動保護を仮定しないでください。第三者製 Skill の著作権は原著作者に帰属し、利用リスクは利用者が負います。

1仕組みと動作原理

本skillの実体は2つの確定的なPythonスクリプトです。scan_repo.pyが構造およびシグナルの走査を行い、extract_commands.pyがREADMEからコマンドを抽出・分類します。SKILL.mdは使用タイミングと出力形式を規定するのみです。コマンド抽出は「モデルにREADMEを読ませて推測させる」ものではなく、正規表現+見出しの帰属判定+ヒューリスティック分類による再現可能なパイプラインです。

skills/repo-intake-and-plan/scripts/extract_commands.py
"""Extract shell-like commands from README content and classify them."""
同一ファイル内で4つの分類カテゴリ(inference / evaluation / training / other)が定義され、SCRIPT_CATEGORY_HINTS、SETUP_PREFIXES、ASSET_PREFIXESの3つの優先度グループが存在します。「コマンド抽出」をテスト可能な純粋関数(extract_commands(readme_text, readme_dir))に落とし込むことが、このskillをCIで反復回帰テスト可能にする前提条件となっています。

走査範囲はホワイトリストで固定されています。リポジトリ全体を走査することはせず、9個の主要ファイルと7個の高シグナルディレクトリのみを検査します。その結果や警告(README欠落時の明示的な警告など)は、モデルの自由記述ではなくスクリプトから直接出力されます。

skills/repo-intake-and-plan/scripts/scan_repo.py
KEY_FILES = [ "README.md", "README", "requirements.txt", "environment.yml", "environment.yaml", "pyproject.toml", "setup.py", "setup.cfg", "Dockerfile", ]
SIGNAL_DIRSにはconfigs/config/scripts/tools/examples/notebooks/checkpointsが含まれます。warningsには'No README file was found at the repository root.'や'No common environment or packaging files were detected.'が出力されます。出力にはreadme_path、detected_files、detected_dirs、top_levelカウントが含まれ、すべてオーケストレーターが利用可能な構造化フィールドです(run_jsonがstdoutを解析)。

分類器には明確な優先順位と判定根拠があります。まずsetup/asset構文を判定し(インストールの推論誤認を防止)、次に見出しの意味、エントリポイントスクリプト名(train*.py / eval*.py / sample|generate|infer*.py)、最後にキーワード走査の順で評価します。

skills/repo-intake-and-plan/scripts/extract_commands.py
# Unambiguous setup/asset syntax outranks generic headings such as # "Basic Example", which otherwise makes installation look like inference. if lowered.startswith(SETUP_PREFIXES + ASSET_PREFIXES): return "other"
エントリポイントスクリプト名の重み付けはコメントに明記されています:「The entrypoint script name is the strongest category signal: flags like --eval_iters on a train.py command must not flip training into evaluation (that would bypass the training-authorization gate downstream).」(エントリポイント名は最も強力なカテゴリシグナルであり、train.pyコマンドの--eval_itersフラグなどで学習が評価に反転してはならない。下流の学習認可ゲートを迂回してしまうため)。分類結果が後続の学習認可ゲートに影響し誤認が実害を生むため、意図的に保守的なルールが敷かれています。

README内で参照されている.pyエントリポイントに対して構造レベルの再確認を行います。該当スクリプト(≤512 KiB)を読み込み、optimizer.step(/backward(/train()/def train*/epochループに基づいてスコアリングし、4点以上の場合にコマンドを元の分類からtrainingへと格上げし、classification_source='entrypoint-structure'と根拠タグを記録します。

skills/repo-intake-and-plan/scripts/extract_commands.py
TRAINING_STRUCTURE_SIGNALS = [ ("optimizer-step", re.compile(r"\boptimizer\s*\.\s*step\s*\(", re.IGNORECASE), 3), ("backward-pass", re.compile(r"\.\s*backward\s*\(", re.IGNORECASE), 3), ("model-train-mode", re.compile(r"\.\s*train\s*\(", re.IGNORECASE), 2), ("train-function", re.compile(r"\bdef\s+train\w*\s*\(", re.IGNORECASE), 1), ("epoch-loop", re.compile(r"\bfor\s+\w*epoch\w*\s+in\b", re.IGNORECASE), 1), ]
ファイル読み込み前にはガードレールが存在します。referenced_python_script()がcandidate.relative_to(root)による検証を行い、リポジトリルートを逸脱するパスは直ちにNoneを返します。これによりREADME内の../を用いたリポジトリ外スクリプトの読み込みを防止します。これが本skillにおいてリポジトリ内のファイル内容を読み込む唯一のコードパスです。

「無知を認めるほど保守的に分類する」方針がリファレンスに明記されています。根拠が不十分な場合はinferredとマークし、過剰な確約を避けて曖昧さをそのまま記録します。READMEの明確な証拠はファイル名の推測よりも優先されます。

skills/repo-intake-and-plan/references/repo-scan-rules.md
## Conservative behavior - prefer explicit README evidence over filename guesses - mark guessed classifications as inferred - record ambiguity instead of overcommitting
これはSKILL.mdの「When to apply」における3番目の項目「When inference, evaluation, and training candidates must be classified conservatively.」に対応し、相互に整合性を保っています。

責務の境界が厳格に定義されています。走査と計画のみを行い、環境構築、大規模アセットのダウンロード、実質的なコマンド実行、高リスクなパッチの決定は行いません。メインオーケストレーターに提供するのは最小限の信頼できる再現提案です。

skills/repo-intake-and-plan/SKILL.md
## Clear boundaries - This skill scans and plans. - This skill is helper-tier and should usually be orchestrator-invoked. - It does not install environments. - It does not prepare large assets. - It does not execute substantive reproduction commands. - It does not decide high-risk patching.
「Output expectations」により成果物がさらに規定されています:リポジトリ構造のサマリー、文書化されたコマンド一覧、inference/evaluation/training/otherの分類、最小限の信頼できる再現提案、曖昧さとリスクの一覧。

オーケストレーターは実際にこれら2つのスクリプトを呼び出します(単なるドキュメント上の飾りではありません)。orchestrate_repro.pyはskillディレクトリを解決した後、サブプロセスとしてscan_repo.py --repo … --jsonを実行し、取得したreadme_pathを用いてextract_commands.py --readme … --jsonを実行し、その結果を再現プロセスに統合します。

skills/ai-research-reproduction/scripts/orchestrate_repro.py
scan_data = run_json(scan_script, ["--repo", str(repo_path), "--json"]) readme_path = scan_data.get("readme_path") command_data: Dict[str, Any] = {"commands": [], "counts": {}, "warnings": []} if readme_path: command_data = run_json(extract_script, ["--readme", readme_path, "--json"])
同スクリプトはこれら2つのファイルを_bundled/skills/repo-intake-and-plan/にもバンドルしており(_bundled/MANIFEST.jsonのsource/target/sha256エントリを参照)、メインskill単体インストール時にも本フェーズを実行可能です。ai-research-exploreのorchestrate_explore.pyも同様にscan_repo.pyを再利用しています。

2コア機能

01リポジトリ構造の走査(ホワイトリストに基づく主要ファイル+高シグナルディレクトリ+トップレベル件数カウント+不足項目の警告)
02READMEのコードブロックおよび`$ `プロンプト行からのシェルコマンド抽出(バックスラッシュ改行の結合と重複排除を含む)
03コマンドのinference / evaluation / training / otherへの分類、およびkind(setup/asset/smoke/run)の付与
04プレースホルダーの検出:<PATH/TO/DATASET>などの山括弧プレースホルダーを含むコマンドをそのまま実行不可と判定
05Markdown構造の認識:インラインコードブロック内の#コメントを見出しとして扱わず、単独の>をコマンドプロンプトとして扱わない(散文のコマンド誤認を防止)
06エントリポイントスクリプトの構造検証 → 必要に応じたコマンドのtrainingへの格上げ判定(根拠タグ付き)
07メインオーケストレーターに向けた最小限の信頼できる再現提案+曖昧さ・リスク一覧の出力

3外部依存関係

KindDependency / Endpoint
cliPython 3(脚本解释器;由宿主/编排器调用,脚本自身无子进程外呼)

4推奨統制措置と判定根拠

安全運用のための推奨統制措置
Agent 向け
段階的・都度認可、サンドボックス推奨
管理者向け
承認フロー、ロールバック可能、全履歴監査
判定根拠(ファイルパスと抜粋)
  • scripts/: ローカルスクリプトまたはコマンドの実行: python3 scripts/scan_repo.py --repo <path> --json(本skill同梱、読み取り専用のディレクトリ走査)
監査ノート: 両スクリプトは標準ライブラリのみで構成された読み取り専用のアナライザーです。全ディレクトリを対象とした危険パターンのトークン走査(https?://、urllib、requests、socket、subprocess、os.environ、書き込みモードのopen()で検出ゼロであり、ネットワークアクセス、環境変数やクレデンシャルの読み込み、ファイル書き込み、抽出されたコマンドの実行は一切行いません。パス処理にはリポジトリルート基準の検証があり、境界を越えるパスは即座に破棄されます。唯一留意すべき点は信頼できないリポジトリのテキストや一部のソースコードを読み込む点です。悪意のあるREADMEによって一覧や分類が誘導される可能性(例:学習コマンドを推論と偽る)はありますが、その結果は人間やオーケストレーターがレビューするための提案に過ぎず、実際の実行には下流の認可ゲートが必要となるため、安全(緑)と判定します。

5二重目の独立検証

  • [ok] skill 路径(任务书标『待定位』) — 实际相对路径 skills/repo-intake-and-plan;SKILL.md 位于该目录根。
  • [ok] 『helper 脚本』确实存在且被调用(非文档装饰) — orchestrate_repro.py:1162-1167 设定 scan_script/extract_script 并在 1173-1178 以 run_json(...) 执行;_bundled/MANIFEST.json 记录两文件打包目标与 sha256;references/skill-registry.json 的 required_files 列出两者。
  • [discrepancy] SKILL.md 未给出脚本调用示例 — SKILL.md 仅在 Notes 写 'Use `references/repo-scan-rules.md` and helper scripts under `scripts/`.',没有给命令行/参数示例;实际 CLI 契约(--repo/--json、--readme/--json)只能从脚本 argparse 与编排器调用点得到。对模型自助调用不够友好,属可改进项;不影响机制结论,已在 capabilities/how_it_works 中改用编排器调用点为证据。
  • [ok] 无网络/无凭证/无写入 — 两脚本 import 仅 argparse/json/re/pathlib/datetime/typing(scan_repo 另有 timezone);全目录 URL/urllib/requests/socket/subprocess/os.environ 扫描零命中;无写文件调用(仅 print 到 stdout)。
  • [ok] 路径越界防护 — referenced_python_script() 先 (root / path).resolve() 再 candidate.relative_to(root),越界抛 ValueError 返回 None;并有 is_file() 与 524_288 字节上限。
  • [ok] 分类优先级与注释一致 — classify() 实际顺序为 setup/asset 前缀 → 章节语义 → SCRIPT_CATEGORY_HINTS → 关键词,与文件内注释 'Unambiguous setup/asset syntax outranks generic headings' 一致;command_kind() 独立返回 setup/asset/run/smoke(--help/-h → smoke)。
  • [ok] README 定位与姊妹 helper 分工 — README.md:160 'Two helpers support orchestration: `repo-intake-and-plan` and `paper-context-resolver`.';tests/trigger_cases.json 中 'expected_top': 'repo-intake-and-plan' 的用例存在(repo_scan_only_en:'Do not run anything yet.'),与 SKILL.md 的『不执行实质命令』一致。
  • [ok] 元数据 — 本地 git HEAD bd91195ad73199b95e24532b581ff12c07dcce09(= 任务书 pin);LICENSE MIT / Copyright (c) 2026 Chengkun Rao;gh api → stars 487、last_push 2026-09-13T13:16:25Z。

6結論

  • コマンド抽出はモデルの推測ではなく検証可能な確定的プロセス:正規表現+改行結合+重複排除+見出し帰属により、category/kindおよびwarningsを伴う構造化出力を実現。
  • 保守的で説明可能な分類:カテゴリの格上げには構造的証拠スコアの基準達成が必須であり、classification_source/classification_evidenceを残すことで、学習が推論に偽装されるのを防止。
  • 信頼できないリポジトリに対する適切な入力サニタイズ:プレースホルダー認識、引用ブロックの除外、コードブロック内#の無視、リポジトリルート基準の相対パス検証、ファイルサイズ上限設定。
  • オーケストレーターによる実稼働:メインオーケストレーターおよびexploreバリアントの双方がこれらのスクリプトを実行し、_bundled/にパッケージ化(sha256付き)されているため、メインskill単体のセットアップでも実行可能。
  • クリーンな境界設計:環境構築、アセットダウンロード、コマンド実行、ファイル書き込みを行わず、走査結果は下流の認可フェーズへの助言としてのみ機能。
  • 最適な用途: README優先のあらゆるAI/ディープラーニングリポジトリの再現前処理に最適です。着手前に信頼できる構造サマリーと文書化されたコマンド一覧を取得し、推論/評価/学習のエントリポイントを保守的に識別したい場合に適しています。特に再現オーケストレーター(ai-research-reproduction)や探索パイプライン(ai-research-explore)の最初の確定的フェーズとしての利用や、自身のリポジトリに対する「READMEコマンドの利用可能性チェック」(--jsonによる機械可読出力の取得)にも適しています。
    不向きな用途: 環境構築や重みのダウンロードが必要なシナリオ(env-and-assets-bootstrapを使用すべき)、すでに実行段階に入っており特定のコマンド単体を実行したいシナリオ(minimal-run-and-audit / run-trainを使用すべき)、論文の読解・解説のみを求めるシナリオ(paper-context-resolverを使用すべき)には適しません。また、本ツールは走査と計画のみを行い最終レポートを作成しないため、エンドツーエンドの再現実行ツールとしての利用にも不適です。
    Install Agent-Ready
    ① Verified Mirror 2026-09-15
    Option A · Direct DownloadDownload repo-intake-and-plan.tar.gz
    sha256: 1953a875072a9f35…
    Option B · Copy Guide for Agent
    install.json
    Agent はこの JSON ガイドから自動的にダウンロードして検証します。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit bd91195ad7.