
Repo Intake And Plan
Scan an ML research repository, extract README commands, and recommend the smallest trustworthy inference or evaluation reproduction target.
npx skills add https://github.com/lllllllama/ai-paper-reproduction-skill --skill repo-intake-and-plan| Installs | 140k |
|---|---|
| GitHub stars | ★ 412 |
| Security audit | 3 / 3 scanners passed |
| Last updated | May 27, 2026 |
| Repository | lllllllama/ai-paper-reproduction-skill ↗ |
Related skills
FAQ
Is Repo Intake And Plan safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.
SKILL.md
display_name: Rigor Intake short_description: Rigor Intake helper for scanning a repo and recommending the smallest trustworthy reproduction target. default_prompt: Scan this repository, read the README and common project files, extract documented commands, classify inference evaluation and training paths, and recommend the smallest trustworthy reproduction target. # Repo Scan Rules ## Primary files Always check these first when present: - `README.md` - `README` - `requirements.txt` - `environment.yml` - `environment.yaml` - `pyproject.toml` - `setup.py` - `setup.cfg` - `Dockerfile` ## High-signal directories Inspect for command or configuration clues: - `configs/` - `config/` - `scripts/` - `tools/` - `examples/` - `notebooks/` - `checkpoints/` ## Extraction priorities 1. explicit README commands 2. setup instructions 3. documented inference or demo entrypoints 4. documented evaluation entrypoints 5. documented training entrypoints 6. config references and asset path hints ## Classification guidance - `inference`: demo, predict, generate, sample, infer, test-time forward use - `evaluation`: eval, validate, benchmark, score, reproduce metrics - `training`: train, finetune, pretrain, launch long-running experiments - `other`: install, download, preprocess, export, convert, utility ## Conservative behavior - prefer explicit README evidence over filename guesses - mark guessed classifications as inferred - record ambiguity instead of overcommitting #!/usr/bin/env python3 """Extract shell-like commands from README content and classify them.""" from __future__ import annotations import argparse import json import re from pathlib import Path from typing import Dict, List, Optional CODE_BLOCK_RE = re.compile(r"```(?P<lang>[^\n`]*)\n(?P<body>.*?)```", re.DOTALL | re.IGNORECASE) INLINE_CMD_RE = re.compile(r"^\s*(?:\$|>|PS> )\s*(.+)$") HEADING_RE = re.compile(r"^(?P<marks>#{1,6})\s+(?P<title>.+?)\s*$") COMMAND_PREFIXES = ( "python ", "python3 ", "pip ", "pip3 ", "conda ", "bash ", "sh ", "chmod ", "export ", "set ", "CUDA_VISIBLE_DEVICES=", "./", "accelerate ", "torchrun ", "deepspeed ", "make ", "docker ", ) def collect_headings(readme_text: str) -> List[Dict[str, object]]: headings: List[Dict[str, object]] = [] offset = 0 for line in readme_text.splitlines(keepends=True): matched = HEADING_RE.match(line.strip()) if matched: headings.append( { "offset": offset, "level": len(matched.group("marks")), "title": matched.group("title").strip(), } ) offset += len(line) return headings def nearest_heading(headings: List[Dict[str, object]], offset: int) -> Optional[str]: current: Optional[str] = None for heading in headings: if int(heading["offset"]) > offset: break current = str(heading["title"]) return current def infer_section_category(section: Optional[str]) -> Optional[str]: if not section: return None lowered = section.lower() if any(word in lowered for word in ["inference", "usage", "demo", "example", "text-to-image", "image-to-image", "transcribe"]): return "inference" if any(word in lowered for word in ["evaluation", "evaluate", "benchmark", "metrics", "validation"]): return "evaluation" if any(word in lowered for word in ["training", "train", "finetune", "fine-tune", "pretrain"]): return "training" return None def infer_section_kind(section: Optional[str]) -> Optional[str]: if not section: return None lowered = section.lower() if any(word in lowered for word in ["install", "installation", "setup", "environment", "requirements"]): return "setup" if any(word in lowered for word in ["download", "checkpoint", "weights", "dataset", "data preparation"]): retur