
Explore Code
Run conservative, isolated exploratory code adaptations on a branch or worktree when reproduction work explicitly authorizes experiments, with auditable artifacts in explore_outputs.
Overview
explore-code is an agent skill most often used in Build (also Operate) that performs conservative exploratory code adaptations on an isolated branch and writes standardized explore_outputs artifacts.
Install
npx skills add https://github.com/lllllllama/rigorpilot-skills --skill explore-codeWhat is this skill?
- Requires an isolated branch or worktree before any exploratory edits
- Writes CHANGESET.md, TOP_RUNS.md, and status.json into explore_outputs
- Records current_research, experiment branch, and source repo references when transplanting modules
- Prefers smallest viable adaptation over broad rewrites
- Explicitly not the end-to-end current_research explore orchestrator
- Outputs CHANGESET.md, TOP_RUNS.md, and status.json into explore_outputs
Adoption & trust: 32.3k installs on skills.sh; 412 GitHub stars; 1/3 security scanners passed (skills.sh audits).
What problem does it solve?
You need to try a small code adaptation during research reproduction without contaminating the trusted baseline or overstating what the experiment proved.
Who is it for?
Authorized exploratory tweaks to a DL repo during RigorPilot Improve, with full audit trail and smallest-change discipline.
Skip if: Default reproduction runs, silent baseline edits, large refactors, or claiming reproduction success from exploratory branches without orchestrator approval.
When should I use this skill?
Exploratory code changes have been explicitly authorized and work must stay on an isolated branch or worktree.
What do I get? / Deliverables
You get a documented exploratory changeset on an isolated branch with CHANGESET.md, TOP_RUNS.md, and status.json suitable for human review before any merge or reproduction claim.
- CHANGESET.md
- TOP_RUNS.md
- status.json in explore_outputs
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Exploratory code changes sit in the build phase as agent-guided adaptations to a research codebase, not as a standalone ship or launch task. agent-tooling is the canonical shelf because the skill is a leaf Rigor Improve mode that instructs the agent how to adapt code under strict policy, not a full reproduction orchestrator.
Where it fits
Transplant a small module on an experiment branch while recording source references for later human review.
Adjust a config or script path conservatively after repro execution failed, without touching the trusted baseline branch.
Summarize exploratory TOP runs into status.json before deciding whether to promote a patch into the main reproduction line.
How it compares
Use as a gated leaf skill after ai-research-reproduction authorizes experiments—not as a substitute for the full reproduce orchestrator.
Common Questions / FAQ
Who is explore-code for?
Solo builders and indie researchers using RigorPilot who need agent-guided exploratory code changes on an isolated branch with written evidence, not informal chat edits.
When should I use explore-code?
During build-phase reproduction or operate-phase iteration when exploratory code changes were explicitly authorized, you are on a branch or worktree, and you need conservative adaptations plus explore_outputs files—not during initial README intake or paper-only questions.
Is explore-code safe to install?
It encodes conservative isolation and anti-overclaim rules; review the Security Audits panel on this page and treat any code changes as requiring your repo permissions and human review before merge.
Workflow Chain
Requires first: ai research reproduction
SKILL.md
READMESKILL.md - Explore Code
display_name: Rigor Improve short_description: Rigor Improve implementation leaf mode for isolated exploratory code adaptations. default_prompt: On an isolated branch or worktree, make exploratory code adaptations conservatively, summarize the changes, and write CHANGESET.md TOP_RUNS.md and status.json into explore_outputs. # Rigor Improve Code Policy ## Purpose Use this skill only when exploratory code changes have been explicitly authorized. ## Requirements - keep work on an isolated branch or worktree - record `current_research` and experiment branch - record source repository references when transplanting modules - prefer the smallest viable adaptation over broad rewrites - treat results as exploratory candidates, not trusted conclusions ## Avoid - modifying the trusted baseline by default - claiming reproduction success from exploratory changes - freeform large-scale refactors - using this skill as the end-to-end `current_research` explore orchestrator #!/usr/bin/env python3 """Build a conservative exploratory code-change plan.""" from __future__ import annotations import argparse import json import re from pathlib import Path from typing import Any, Dict, List SKIP_PARTS = { "__pycache__", ".git", "repro_outputs", "train_outputs", "analysis_outputs", "debug_outputs", "explore_outputs", "tmp", } CODE_SUFFIXES = {".py", ".yaml", ".yml", ".json", ".toml", ".ini"} MODEL_PATTERN = re.compile(r"(model|network|backbone|encoder|decoder|adapter|lora|head|loss)", re.IGNORECASE) TRAIN_PATTERN = re.compile(r"(train|trainer|optim|loss|config)", re.IGNORECASE) TASK_KEYWORDS = { "classification": ("class", "imagenet", "knn", "linear", "log_regression"), "segmentation": ("seg", "segment", "mask", "ade20k", "m2f", "mask2former"), "detection": ("det", "detect", "detr", "coco", "box"), "depth": ("depth", "nyu", "dpt", "depther"), "text": ("text", "token", "clip", "dinotxt"), "pretrain": ("pretrain", "ssl", "teacher", "student", "gram", "distillation"), } COMMON_TOKENS = {"py", "yaml", "yml", "json", "toml", "ini", "run", "train", "eval", "config", "configs"} def load_variant_spec(path: str) -> Dict[str, Any]: if not path: return {} return json.loads(Path(path).resolve().read_text(encoding="utf-8-sig")) def load_structured_payload(path: str) -> Any: if not path: return {} return json.loads(Path(path).resolve().read_text(encoding="utf-8-sig")) def normalize_task_family(value: Any) -> str: return str(value or "").strip().lower() def focus_tokens(current_research: str, task_family: str) -> List[str]: tokens: List[str] = [] for part in re.split(r"[^a-zA-Z0-9]+", current_research.lower()): if part and part not in COMMON_TOKENS and len(part) > 2: tokens.append(part) if task_family: tokens.append(task_family) tokens.extend(TASK_KEYWORDS.get(task_family, ())) ordered: List[str] = [] for token in tokens: if token not in ordered: ordered.append(token) return ordered[:20] def score_path(rel: str, task_family: str, tokens: List[str]) -> int: score = 0 if MODEL_PATTERN.search(rel): score += 5 if TRAIN_PATTERN.search(rel): score += 3 if rel.endswith(".py"): score += 1 lower = rel.lower() for token in TASK_KEYWORDS.get(task_family, ()): if token in lower: score += 4 for token in tokens: if token in lower: score += 2 if current_research_dir(rel, tokens): score += 3 return score def current_research_dir(rel: str, tokens: List[str]) -> bool: lower = rel.lower() slash_hits = [token for token in tokens if token in lower] return len(slash_hits) >= 2 def collect_candidate_edit_targets(repo: Path, current_research: str, task_family: str) -> List[str]: tokens = focus_tokens(current_research, task_family) scored: List[tuple[int, str]] = []