Research Implement Skill
Description
Implements research code based on an existing research plan. Requires a research_plan.md to be present in the active research output directory.
Usage
/research-implement [path/to/research_plan.md]
Arguments
$ARGUMENTS— Optional path to the research plan. If not provided, searches for the most recentoutputs/*/plan/research_plan.md.
Instructions
Shared rules: Read
${CLAUDE_PLUGIN_ROOT}/shared/rules.mdbefore starting. §MCP, §Claude-Only apply to this skill. Inline fallback (if shared rules unavailable): Gemini models: gemini-3.1-pro-preview → gemini-2.5-pro → Claude. Codex: gpt-5.4. Use@filepathfor MCP file refs; subagents useReadtool.
Claude-Only Mode
See §Claude-Only in shared rules.
MCP Tool Rules
See §MCP in shared rules. Additionally:
- Context7: Primary tool for library documentation lookups during implementation.
- When to search: library API changes, implementation examples, algorithm details, dependency compatibility, debugging known issues
Step 0: Locate Research Plan
- If a path is provided in
$ARGUMENTS, use it directly. - Otherwise, find the most recent research plan:
- Glob for
outputs/*/plan/research_plan.md - Select the most recently modified one.
- Glob for
- If no plan is found, inform the user and suggest running
/magi-researchers:research-brainstormfirst, or creating a plan manually. - Read the research plan and identify:
- The output base directory (parent of
plan/) - Required algorithms/models to implement
- Programming language and framework choices (from frontmatter
languages/ecosystemfields) - Expected inputs and outputs
- Dependencies needed
- The output base directory (parent of
- Parse mode flags from
$ARGUMENTS: If invoked standalone (not from the/researchpipeline), check$ARGUMENTSfor--claude-onlyand--substituteflags. When present, all Gemini/Codex MCP calls in this skill are replaced per the Claude-Only Mode rules above. - Resolve output directory: If
.workspace.jsonexists at the output directory root, readoutput_dirfrom it and use as the base for all file operations. If absent (standalone invocation), derive the absolute output path from the location ofresearch_plan.md.
Step 1: Workspace Detection & Environment Setup
-
Check if
src/already has code (Globsrc/**/*):- If files exist, read them to understand the current ecosystem before adding anything new.
- If
src/is empty or absent, proceed with initialization.
-
Determine language and ecosystem using the following priority:
Priority Source How 1st Existing src/filesDetect package managers ( Cargo.toml,pyproject.toml,Project.toml,DESCRIPTION) and dominant file extensions2nd research_plan.mdfrontmatterRead languagesandecosystemfields3rd Domain + topic inference Autonomous selection based on research domain and algorithms If 1st and 2nd conflict (e.g., plan says Python but
src/has Rust code), the actual files win. Announce the discrepancy and proceed with the detected ecosystem. -
Initialize the ecosystem (only if
src/is empty):- Run the appropriate setup commands for the chosen language:
- Python:
uv init(if nopyproject.tomlexists) oruv add {deps} - Rust: If
src/already exists (pre-created by the pipeline), runcargo initin the output directory root (not insidesrc/) to avoid double-nesting (src/src/). The resultingsrc/main.rsis the correct layout. - R: create
DESCRIPTIONandR/subdirectory - Julia:
julia --project=src/ -e 'import Pkg; Pkg.init()' - C/C++: create
CMakeLists.txtorMakefile
- Python:
- If the chosen language/tool is not available on the host system, inform the user with the install command and stop. Do NOT attempt to install system-level tools without user approval.
- Run the appropriate setup commands for the chosen language:
-
Language selection principles (when choosing freely):
- Match the dominant language of the research domain and algorithms
- Prefer languages/libraries the research plan explicitly mentions
- Python + uv is the safe fallback when no other preference is clear
- The implementation must be runnable on a standard Ubuntu Linux system via a scripted command (no interactive install steps, no GUI-only tools, no proprietary licenses required)
Step 2: Implementation
- Follow the research plan's implementation section strictly.
- Write modular, well-structured code in
src/:- Follow the ecosystem's idiomatic project layout (e.g.,
src/main.pyfor Python,src/main.rssrc/lib.rsfor Rust,R/for R packages)
- Separate modules for distinct components (data loading, model, utilities, etc.)
- Follow the ecosystem's idiomatic project layout (e.g.,
- Implement a dry-run / fast-mode flag in the main entry point:
- The flag should reduce runtime to seconds (e.g., 1 epoch, 10 samples, minimal iterations)
- This is used by Phase 3.5 (
/research-execute) for a quick sanity check before the full run - Examples:
--dry-run,--fast,--epochs 1 --samples 10
- Use Context7 (
mcp__plugin_context7_context7__query-docs) to look up library APIs when needed. - Include docstrings/comments for all public functions explaining purpose, parameters, return values.
Step 3: Update research_plan.md Frontmatter
After implementation, update the YAML frontmatter in plan/research_plan.md to reflect the actual
execution commands. This information is consumed by Phase 3.5 (/research-execute).
Read the current frontmatter and update or add these fields:
---
title: "..."
domain: "..."
languages: ["rust", "python"] # actual languages used in src/
ecosystem: ["cargo", "uv"] # actual package managers
execution_cmd: "bash run_all.sh" # command to run the full pipeline
dry_run_cmd: "bash run_all.sh --dry-run" # fast sanity-check command (seconds)
expected_outputs: # key files that should appear in results/
- "results/metrics.csv"
- "results/model.pt"
estimated_runtime: "~30 minutes" # rough estimate for user awareness
---
If a run_all.sh (or equivalent) script does not yet exist, create it in the output directory root (not inside src/). The cwd field in execution_manifest.json should be set accordingly. Always verify that execution_cmd can be run from the directory specified by cwd.
Step 3b: Emit Execution Manifest
After updating the YAML frontmatter, also emit a structured execution_manifest.json in the output directory root. This file is the machine-readable execution contract consumed by Phase 3.5 (/research-execute).
{
"schema_version": "1.0.0",
"languages": ["rust", "python"],
"ecosystem": ["cargo", "uv"],
"execution_cmd": "bash run_all.sh",
"dry_run_cmd": "bash run_all.sh --dry-run",
"expected_outputs": [
{"path": "results/metrics.csv", "required": true},
{"path": "results/model.pt", "required": false}
],
"estimated_runtime": "~30 minutes",
"cwd": "."
}
Fields:
schema_version: Always"1.0.0"for this releaselanguages,ecosystem: Actual languages/tools used insrc/execution_cmd: Single command to run the full pipelinedry_run_cmd: Fast sanity-check command (seconds, not minutes)expected_outputs: Files that should appear inresults/after execution.required: truemeans the pipeline should warn if absent;required: falsemeans optional.estimated_runtime: Rough estimate for user awarenesscwd: Working directory relative to the output directory (optional, defaults to output directory root)
The YAML frontmatter in
research_plan.mdis retained for backward compatibility and human readability, butexecution_manifest.jsonis the authoritative machine contract.
Pre-validation: Before proceeding to Step 4, verify that the file or command referenced by execution_cmd e