Skip to main content

code-analyzer

Deep analysis of ML source code repositories โ€” AST call graphs, training loop dissection, reproducibility scoring.

Source facts

Repository
orange4664/research-skills
Last source activity
March 31, 2026 at 06:15
Detected SKILL.md language
English
Stars
41
Forks
1

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
13 files

Showing SKILL.md

SKILL.md
Source instructions ยท Read-only preview
name
code-analyzer
description
Deep analysis of ML source code repositories โ€” AST call graphs, training loop dissection, reproducibility scoring.
# Code Analyzer Skill ## Purpose Perform comprehensive analysis of a cloned ML research repository to understand: - What framework it uses (PyTorch, TensorFlow, JAX, HuggingFace) - How its code is structured (classes, functions, call graphs) - How training works (optimizer, loss, scheduler, loop structure) - What configuration system it uses (argparse, Hydra, YAML, etc.) - How reproducible it is (0-100 score based on ML Code Completeness Checklist) This skill produces a structured JSON report consumed by other skills: - **code-reproducer**: Uses the reproduction plan to run experiments - **paper-presenter**: Uses AST analysis for code-theory alignment ## When to Use - After paper-downloader has cloned source code - User asks to "analyze", "understand", or "review" source code - Before running code-reproducer (to generate the reproduction plan) - When evaluating whether a codebase is worth trying to reproduce ## Quick Start ```bash # Install optional dependencies (for flowchart generation) pip install -r code-analyzer/requirements.txt # Run full analysis python code-analyzer/analyze.py workspace/<paper>/code/<repo>/ -o workspace/<paper>/code_analysis.json # With optional code2flow flowchart python code-analyzer/analyze.py <code_dir> -o analysis.json --flowchart ``` ## What It Analyzes ### 1. Framework Detection Scans imports and dependency files to identify: - PyTorch, TensorFlow, JAX, HuggingFace, Diffusers, scikit-learn - Gives confidence scores for each framework ### 2. AST Deep Analysis (Python `ast` module, PyCG-inspired) - **Function call graph**: Who calls whom - **Class hierarchy**: All classes, especially `nn.Module` subclasses - **Model layer extraction**: `self.conv1 = nn.Conv2d(...)` from `__init__` - **Key functions**: trains, forwards, losses, evaluates, samples, generates - **Import dependency graph**: Module โ†’ imported modules ### 3. Training Loop Dissection - Locates `for epoch in range(...)` training loops via AST - Identifies optimizer type (Adam, SGD, AdamW, etc.) - Identifies loss function type (CrossEntropy, MSE, custom, etc.) - Detects LR scheduler, logging framework (WandB, TensorBoard, etc.) - Extracts hyperparameters (lr, batch_size, epochs, etc.) - Detects checkpoint saving, distributed training, mixed precision ### 4. Configuration System Detection - Detects: argparse, Hydra, OmegaConf, click, fire, sacred, absl, yacs - Extracts all argparse arguments with name, type, default, help - Parses YAML/TOML config files - Consolidates key hyperparameters ### 5. Reproducibility Scoring (ML Code Completeness Checklist) Based on NeurIPS/PwC standards: | Check | Points | |-------|--------| | Dependency spec (requirements.txt) | 15 | | Training code | 15 | | Evaluation code | 10 | | Pre-trained models | 10 | | Config files | 10 | | README training commands | 10 | | Results table | 10 | | Dockerfile | 5 | | LICENSE | 5 | | .gitignore | 5 | | Tests | 5 | **Total: 100 points โ†’ Grade A/B/C/D/F** ### 6. Reproduction Plan Generation Automatically generates a step-by-step reproduction plan with shell commands. ## Output Format The JSON report contains: ```json { "framework": {"primary": "pytorch", "all": {...}}, "structure": {"total_files": 42, "total_py_files": 28}, "ast_analysis": { "model_classes": [...], "key_functions": {"train": [...], "forward": [...], "loss": [...]}, "call_graph": {"module.func": ["callee1", "callee2"]}, "stats": {"total_functions": 150, "model_classes": 3} }, "training": { "training_loops": [...], "optimizers": ["AdamW"], "loss_functions": ["CrossEntropyLoss"], "hyperparameters": {"lr": "0.001", "batch_size": "32"} }, "configs": { "config_systems": ["argparse"], "argparse_args": [{"name": "--lr", "default": "0.001"}] }, "reproducibility": { "total_score": 75, "grade": "B", "recommendations": [...] }, "reproduction_plan": [ {"step": 1, "name": "Environment Setup", "commands": [...]}, {"step": 2, "name": "Training", "commands": [...]} ] } ``` ## Dependencies - **Core**: Python 3.10+ (stdlib only โ€” `ast`, `re`, `json`, `pathlib`) - **Optional**: `code2flow` for flowchart generation (`pip install code2flow`) ## Integration with Other Skills - **Input**: Cloned source code directory (from paper-downloader) - **Output**: `code_analysis.json` used by: - `code-reproducer` โ†’ reads reproduction plan, training commands - `paper-presenter` โ†’ reads AST analysis for code-theory alignment - `result-analyzer` โ†’ reads expected metrics for comparison ## ๐Ÿ“š Reference URLs (for agent self-help) When encountering issues with code analysis, fetch these URLs: | Topic | URL | |-------|-----| | **Python `ast` module docs** | `https://docs.python.org/3/library/ast.html` | | **PyCG call graph analysis** | `https://github.com/vitsalis/PyCG` | | **PyCG paper (ICSE'21)** | `https://arxiv.org/abs/2103.00587` | | **code2flow flowcharts** | `https://github.com/scottrogowski/code2flow` | | **ML Code Completeness Checklist** | `https://medium.com/paperswithcode/ml-code-completeness-checklist-e9127b168501` | | **Papers With Code trends** | `https://paperswithcode.com/trends` | | **PyTorch model inspection** | `https://pytorch.org/docs/stable/generated/torch.nn.Module.html` | | **HuggingFace Trainer API** | `https://huggingface.co/docs/transformers/main_classes/trainer` | ### Troubleshooting AST Analysis **Problem**: AST parsing fails on a Python file. **Likely cause**: Non-standard Python syntax, encoding issues, or Python 2 code. ``` # Fetch Python ast docs: fetch_url("https://docs.python.org/3/library/ast.html") ``` ### Troubleshooting code2flow **Problem**: `code2flow` not generating flowcharts. **Solution**: Ensure `graphviz` is installed system-wide. ```bash # Windows choco install graphviz # Ubuntu apt-get install graphviz ``` ``` # Fetch code2flow docs: fetch_url("https://github.com/scottrogowski/code2flow") ``` ### Understanding Reproducibility Scores **Problem**: Need to understand why a repo scored low. ``` # Fetch the ML Code Completeness methodology: fetch_url("https://medium.com/paperswithcode/ml-code-completeness-checklist-e9127b168501") ```
View on GitHub