← 返回 Skills 市场
ewankeynes

Code Refactor For Reproducibility

作者 ewankeynes · GitHub ↗ · v0.1.0 · MIT-0
cross-platform ✓ 安全检测通过
275
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install code-refactor-for-reproducibility
功能描述
Use when refactoring research code for publication, adding documentation to existing analysis scripts, creating reproducible computational workflows, or prep...
使用说明 (SKILL.md)

Research Code Reproducibility Refactoring Tool

Workflow Overview

Follow this sequence when refactoring a research codebase:

  1. Analyze — identify reproducibility issues in existing code
  2. Refactor — apply documentation, parameterization, and error handling
  3. Specify environment — pin dependencies and create environment files
  4. Validate — run tests and verify behaviour is unchanged

Step 1: Analyze Code for Reproducibility Issues

Read each source file and check for the following problems. Document findings before making any changes.

Checklist: missing docstrings · hardcoded absolute paths · missing random seeds · bare except: clauses · unpinned imports · unexplained magic numbers

Example — detecting issues manually:

import ast, pathlib

def find_hardcoded_paths(source: str) -> list[str]:
    """Return string literals that look like absolute paths."""
    tree = ast.parse(source)
    return [
        node.s for node in ast.walk(tree)
        if isinstance(node, ast.Constant)
        and isinstance(node.s, str)
        and node.s.startswith("/")
    ]

source = pathlib.Path("analysis.py").read_text()
print(find_hardcoded_paths(source))

Step 2: Refactor for Best Practices

Apply improvements in place. Always back up originals first.

2a. Add docstrings

# Before
def load_data(path):
    import pandas as pd
    return pd.read_csv(path)

# After
def load_data(path: str) -> "pd.DataFrame":
    """Load a CSV dataset from disk.

    Parameters
    ----------
    path : str
        Path to the CSV file (relative to project root).

    Returns
    -------
    pd.DataFrame
        Raw dataset with original column names preserved.
    """
    import pandas as pd
    return pd.read_csv(path)

2b. Parameterize hardcoded values

from pathlib import Path
import argparse

def parse_args():
    parser = argparse.ArgumentParser()
    parser.add_argument("--data", type=Path, default=Path("data/raw.csv"))
    parser.add_argument("--output", type=Path, default=Path("results/"))
    return parser.parse_args()

args = parse_args()
df = pd.read_csv(args.data)
args.output.mkdir(parents=True, exist_ok=True)

2c. Set random seeds

import random
import numpy as np

SEED = 42  # document this constant at module level

random.seed(SEED)
np.random.seed(SEED)

# scikit-learn
from sklearn.ensemble import RandomForestClassifier
clf = RandomForestClassifier(random_state=SEED)

# PyTorch
import torch
torch.manual_seed(SEED)
torch.backends.cudnn.deterministic = True

2d. Add error handling and logging

import logging
from pathlib import Path

logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s")
logger = logging.getLogger(__name__)

def load_data(path: Path) -> "pd.DataFrame":
    """Load dataset with validation."""
    import pandas as pd
    if not path.exists():
        raise FileNotFoundError(f"Data file not found: {path}")
    logger.info("Loading data from %s", path)
    df = pd.read_csv(path)
    if df.empty:
        raise ValueError(f"Loaded dataframe is empty: {path}")
    logger.info("Loaded %d rows, %d columns", *df.shape)
    return df

Step 3: Generate Environment Specifications

See references/environment-setup.md for full Dockerfile and Conda environment templates.

requirements.txt (pip)

pip install pipreqs
pipreqs src/ --output requirements.txt --force

Verify resolution:

python -m venv .venv_test && source .venv_test/bin/activate
pip install -r requirements.txt
python -c "import pandas, numpy, sklearn"
deactivate && rm -rf .venv_test

environment.yml (Conda)

name: my-research-env
channels:
  - conda-forge
  - defaults
dependencies:
  - python=3.9
  - numpy=1.24.3
  - pandas=2.0.1
  - scikit-learn=1.2.2
  - matplotlib=3.7.1
  - pip:
    - some-pip-only-package==0.5.0
conda env create -f environment.yml
conda activate my-research-env

Step 4: Create Documentation

README structure

Generate a README.md containing at minimum:

## Requirements
\x3C!-- List Python version and key packages with versions -->

## Installation
```bash
conda env create -f environment.yml
conda activate my-research-env

Data

\x3C!-- Describe input data format, source, and where to place files -->

Running the Analysis

python main.py --data data/raw.csv --output results/

Expected Outputs

\x3C!-- Describe files created and how to interpret them -->

Reproducing Results

  • Random seed: 42 (set in config.py)
  • Hardware: results validated on CPU; GPU results may differ slightly

---

## Step 5: Validate Reproducibility

After all changes, verify that behaviour is unchanged:

```bash
# 1. Run the full pipeline and capture output checksums
python main.py --data data/raw.csv --output results/
md5sum results/*.csv > checksums_refactored.md5
diff checksums_original.md5 checksums_refactored.md5

# 2. Run unit tests
pytest tests/ -v --tb=short

# 3. Confirm determinism across two clean runs
python main.py --output results_run1/
python main.py --output results_run2/
diff -r results_run1/ results_run2/

Reproducibility verification checklist:

  • Output checksums match pre-refactor baseline
  • All tests pass
  • Pipeline runs twice and produces identical outputs
  • requirements.txt / environment.yml installs cleanly in a fresh environment
  • No absolute paths remain in source files
  • Random seeds are set and documented
  • All public functions have docstrings
  • README contains complete reproduction instructions

Best Practices Summary

Practice
Relative paths only
Pin dependency versions
Set random seeds
Docstrings on all public functions
Validate outputs against a baseline
Automate environment setup

References

  • references/guide.md — Comprehensive user guide
  • references/environment-setup.md — Dockerfile and full environment templates
  • references/examples/ — Working code examples
  • references/api-docs/ — Complete API documentation

Skill ID: 455 | Version: 1.0 | License: MIT

安全使用建议
This skill appears coherent for refactoring research code, but exercise normal caution before running it: 1) Review scripts/main.py yourself to confirm there are no hidden network calls or actions you don't expect (the included portion is local file I/O and templating). 2) Run it inside an isolated environment (virtualenv, conda env, or disposable VM/container) when installing dependencies and executing automated refactors. 3) Back up your project before letting the skill modify files (SKILL.md itself recommends backups). 4) Note that allowed-tools (Read/Write/Bash/Edit) grant the agent file and shell access — only use on repositories you intend it to read/write. 5) The requirements.txt lists 'src' (unusual) — verify what will be installed by pip to avoid pulling unexpected packages. If you want extra assurance, inspect the whole scripts/main.py file for any network or subprocess usage before running.
功能分析
Type: OpenClaw Skill Name: code-refactor-for-reproducibility Version: 0.1.0 The skill bundle is a legitimate tool designed to refactor research code into a reproducible format for scientific publication. The core logic in `scripts/main.py` and instructions in `SKILL.md` focus on analyzing code structure, generating standardized project layouts (e.g., Nature/Science templates), and documenting environment dependencies. While the tool collects system metadata like the hostname and uses `subprocess` to run `pip freeze` for reproducibility logs, these actions are well-aligned with its stated purpose and lack any evidence of data exfiltration or malicious intent.
能力评估
Purpose & Capability
The name/description match the provided SKILL.md and the included scripts/main.py: both focus on analyzing source files, adding documentation, generating project scaffolding, and validating reproducibility. The resources requested (none) align with the described purpose.
Instruction Scope
Runtime instructions are narrowly focused on reading project source files, generating environment specs, running local tests, and verifying outputs (md5sum/diff/pytest). These actions are appropriate for code refactoring and reproducibility work and do not direct the agent to read unrelated system files or transmit data to external endpoints.
Install Mechanism
There is no install spec (instruction-only skill) and the only included code is scripts/main.py. The SKILL.md suggests creating virtual environments and installing dependencies with pip/conda — standard for this use case. No downloads from arbitrary URLs or extraction steps are present.
Credentials
The skill declares no required environment variables, credentials, or config paths. The SKILL.md and code do not reference secrets or external service tokens. This is proportionate to the tool's functionality.
Persistence & Privilege
always is false and the skill does not request persistent elevated privileges or modify other skills' configurations. Allowed tools include read/write/bash/edit which are expected for a refactoring workflow; however these imply the agent will have filesystem and shell access when invoked.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install code-refactor-for-reproducibility
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /code-refactor-for-reproducibility 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v0.1.0
- Initial release of "code-refactor-for-reproducibility" skill. - Provides structured workflow for making research code publication-ready and reproducible. - Adds step-by-step guidance on code analysis, refactoring (docstrings, parameterization, error handling), environment specification, documentation, and validation. - Includes detailed checklists, code examples, and best practices for ensuring computational reproducibility. - Supplies templates and instructions for README, requirements.txt, environment.yml, and reproducibility verification. - References comprehensive user guides and example resources.
元数据
Slug code-refactor-for-reproducibility
版本 0.1.0
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 1
常见问题

Code Refactor For Reproducibility 是什么?

Use when refactoring research code for publication, adding documentation to existing analysis scripts, creating reproducible computational workflows, or prep... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 275 次。

如何安装 Code Refactor For Reproducibility?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install code-refactor-for-reproducibility」即可一键安装,无需额外配置。

Code Refactor For Reproducibility 是免费的吗?

是的,Code Refactor For Reproducibility 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Code Refactor For Reproducibility 支持哪些平台?

Code Refactor For Reproducibility 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Code Refactor For Reproducibility?

由 ewankeynes(@ewankeynes)开发并维护,当前版本 v0.1.0。

💬 留言讨论