Skill: full-pipeline
SkillCloud & infraComplete 4-stage end-to-end research pipeline. Orchestrates idea-discovery-pipeline → deploy-experiment → auto-review-loop → generate-report. Reads RESEARCH_PLAN.md (or BRIEF.md as fallback) for context that overrides $ARGUMENTS.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Skill: full-pipeline skill
What this skill tells your AI
The instructions your AI receives, as published by grind-lab-core/night_owl_research_agent in skills/full-pipeline/SKILL.md and read by ahel’s review.
End-to-end research pipeline. You are the pipeline conductor — you sequence the four sub-skills, check gates, and persist state across sessions.
The pipeline orchestrates exactly four subskills, in order:
idea-discovery-pipeline → deploy-experiment → auto-review-loop → generate-report
Constants
- AUTO_PROCEED = true — When
true, Gate 1 auto-selects the top-ranked idea (highest pilot signal + novelty confirmed) and continues to implementation. Whenfalse, always waits for explicit user confirmation before proceeding. Passed through to/idea-discovery-pipeline. - ARXIV_DOWNLOAD = false — When
true,/lit-review(inside/idea-discovery-pipeline) downloads the top relevant arXiv PDFs. Whenfalse(default), only fetches metadata via arXiv API. Passed through to/idea-discovery-pipeline. - HUMAN_CHECKPOINT = false — When
true, the auto-review loop (Stage 3) pauses after each round's review to let you see the score and provide custom modification instructions before fixes are implemented. Whenfalse(default), the loop runs fully autonomously. Passed through to/auto-review-loop. - REVIEWER_DIFFICULTY = medium — How adversarial the reviewer is.
medium(default): standard MCP review.hard: adds reviewer memory + debate protocol.nightmare: GPT reads the repo directly viacodex exec+ memory + debate. Passed through to/auto-review-loop. - COMPACT_MODE = false — When
true, prefer compact summaries (output/PROJ_NOTES.md,output/experiment/EXPERIMENT_RESULT.md) over full logs (output/experiment/EXPERIMENT_LOG.md,output/AUTO_REVIEW_REPORT.md) on session recovery. Passed through to/auto-review-loopand/generate-report.
Override via argument, e.g.,
/full-pipeline "topic" — AUTO_PROCEED: false, human checkpoint: true, difficulty: nightmare.
Startup: Load Context, Check & Resume
Before any subskill is invoked, load the project context. All discovered files override $ARGUMENTS; $ARGUMENTS is only the primary driver when none of the context files exist or carry usable information.
- Read
CLAUDE.md— project dashboard, control flags, canonical output paths. - Read
handoff.jsonif it exists —pipeline.stage,recovery.resume_skill,recovery.read_first. - Read
memory/MEMORY.mdfor the current pipeline stage and prior token usage. - Load research context (priority order):
RESEARCH_PLAN.mdin the project root — if present and non-empty, this is the authoritative research brief (problem, method, constraints, success criteria, prior attempts). Treat it as ground truth.BRIEF.mdin the project root — ifRESEARCH_PLAN.mdis missing, readBRIEF.md(the 12-section research brief — seeCLAUDE.mdKey Files). Treat it as the authoritative brief.$ARGUMENTS— if neither file exists, or both are empty / contain only template placeholders, fall back to$ARGUMENTSas the research direction.- Both file and
$ARGUMENTSpresent: the file's details (problem, constraints, success criteria) override;$ARGUMENTSmay sharpen scope but cannot contradict the brief. If they conflict materially, surface the conflict to the user and ask which one to follow before proceeding.
- Read
output/REVIEW_STATE.jsonif it exists — resume from saved round (see/auto-review-loopresume rules). - Read the experiment status file appropriate for
COMPACT_MODE:COMPACT_MODE = true→output/PROJ_NOTES.mdandoutput/experiment/EXPERIMENT_RESULT.mdCOMPACT_MODE = false→output/experiment/EXPERIMENT_LOG.mdandoutput/experiment/EXPERIMENT_RESULT.md
- Display the resolved context (which brief was loaded, current stage, last action) and confirm with the user before proceeding.
💡 If neither
RESEARCH_PLAN.mdnorBRIEF.mdexists and$ARGUMENTSis also empty, stop and ask the user for a research direction or to create one of these files (templates:templates/RESEARCH_PLAN_TEMPLATE.md).
Stage 1 — Idea Discovery (/idea-discovery-pipeline)
Goal: Identify a tractable, novel research direction and produce an experiment plan.
Invoke the subskill, passing through control flags:
/idea-discovery-pipeline "$ARGUMENTS"
The subskill internally chains: /lit-review → /generate-idea → /novelty-check → /idea-review → /experiment-design-pipeline (which itself runs /refine-research → /experiment-design). It will read RESEARCH_PLAN.md directly in its Phase 0 — do not re-paste its contents into the prompt.
Outputs (canonical paths produced by /idea-discovery-pipeline):
output/LIT_REVIEW_REPORT.md— literature landscape and ranked gapsoutput/IDEA_REPORT.md— ranked, novelty-checked, pilot-tested ideas (top-level report)output/NOVELTY_REPORT.md— deep novelty verdictsoutput/IDEA_REVIEW_REPORT.md— external critical reviewoutput/refine-logs/FINAL_PROPOSAL.md+output/refine-logs/REFINE_REPORT.md— refined proposaloutput/EXPERIMENT_PLAN.md+output/EXPERIMENT_TRACKER.md— experiment roadmapoutput/EXP_PIPELINE_SUMMARY.md— pipeline summary
Gate 1: If AUTO_PROCEED = false, stop here and present the top ideas to the user:
📋 Idea Discovery Pipeline completed! Top ideas:
1. [Idea 1 title] — Pilot: POSITIVE (+X%), Novelty: 9/10
2. [Idea 2 title] — Pilot: WEAK POSITIVE (+Y%), Novelty: 8.3/10
3. [Idea 3 title] — Pilot: NEGATIVE, eliminated
Recommended: Idea 1. Shall I proceed with deployment?
The user may approve, pick a different idea, request changes (re-run the subskill with refined constraints), reject all (collect feedback, re-run), or stop and save state.
If AUTO_PROCEED = true, the subskill auto-selects the top idea after presenting results.
After selection, ensure the chosen idea and supporting context are recorded in RESEARCH_PLAN.md (template: templates/RESEARCH_PLAN_TEMPLATE.md) so downstream stages and future sessions inherit it.
Path bridge before Stage 2: /deploy-experiment reads output/refine-logs/EXPERIMENT_PLAN.md and output/refine-logs/FINAL_PROPOSAL.md. /idea-discovery-pipeline writes the plan to output/EXPERIMENT_PLAN.md. Before Stage 2, verify output/refine-logs/EXPERIMENT_PLAN.md exists; if it does not, copy output/EXPERIMENT_PLAN.md to that location so the deploy skill finds it. Do not relocate the original.
Update memory/MEMORY.md.
Stage 2 — Autonomous Experiment Execution (/deploy-experiment)
Goal: Run all experiments described in the plan and collect results.
Invoke the subskill:
/deploy-experiment
The subskill will:
- Read
output/refine-logs/EXPERIMENT_PLAN.md(authoritative plan) andoutput/refine-logs/FINAL_PROPOSAL.md(context). - Run the mandatory local GPU availability check (Step 0 of
/deploy-experiment) before any classification. This applies to every pilot or full experiment in this pipeline. If a local GPU (CUDA or MPS) is detected, all ML/DL runs MUST execute on it; only whenLOCAL_GPU=nonemay runs route to remote/Modal/CPU. - Classify the experiment into Track A (ML/DL on GPU) or Track B (spatial/GIScience on CPU) — or both for mixed GeoAI.
- Acquire data via
/data-downloadif any required dataset is missing fromdata/raw/. - Pre-flight environment checks (GPU re-confirmed from Step 0 for Track A, package availability for Track B).
- Launch runs (long-running jobs go to background or remote screen sessions).
- For Track B, route execution through
/spatial-analysisper claim. - Periodically invoke
/training-check(Track A with W&B) to monitor for stalls/failures.
Outputs (canonical paths produced by /deploy-experiment):
output/experiment/EXPERIMENT_RESULT.md— final per-claim results, tables, key numbersoutput/experiment/EXPERIMENT_LOG.md— chronological run log (commands, timings, failures)output/experiment/data/— visualization-ready artifacts (CSV, GeoPackage, predictions, metrics, sidecar metadata)output/experiment/figures/— quick-look figuresoutput/experiment/scripts/— runner scripts created during execution
Wait for runs to finish, then confirm EXPERIMENT_RESULT.md and EXPERIMENT_LOG.md are populated before advancing.
Update memory/MEMORY.md.
Stage 3 — Autonomous Review Loop (/auto-review-loop)
Goal: Iteratively improve work quality through adversarial review until all per-criterion floors are met and the weighted score is acceptable, or MAX_ROUNDS = 4 is reached.
Invoke the subskill, passing the chosen idea and difficulty:
/auto-review-loop "[chosen idea title] — difficulty: $REVIEWER_DIFFICULTY"
The subskill reads output/experiment/EXPERIMENT_RESULT.md, output/experiment/EXPERIMENT_LOG.md, output/refine-logs/FINAL_PROPOSAL.md, and prior review state. Each round runs: independent reviewer (Codex MCP / codex exec / Claude subagent fallback) → parse → (optional debate in hard/nightmare) → fix verification → re-evaluate. State is persisted to output/REVIEW_STATE.json at every phase boundary.
Outputs (canonical paths produced by /auto-review-loop):
output/AUTO_REVIEW_REPORT.md— cumulative review log (one entry per round)output/review-rounds/round_<N>_raw.md— verbatim raw reviewer responsesoutput/REVIEW_STATE.json— per-round scores, open weaknesses, threadId, statusoutput/METHOD_DESCRIPTION.md— concise final method description (consumed by/paper-figure-generateand/paper-draft)memory/REVIEWER_MEMORY.md(hardandnightmareonly) — persistent reviewer memory across roundsoutput/PROJ_NOTES.md(whenCOMPACT_MODE = true) — appended one-line discoveries per round
After the loop completes, read the terminal status and final score from output/REVIEW_STATE.json:
status = "completed"(POSITIVE_THRESHOLD met) → proceed to Stage 4.status = "max_rounds_reached"→ proceed to Stage 4 with the remainingopen_weaknessesflagged as limitations in the narrative.status = "blocked"(Phase B.7 circuit breaker, contract violation, or no reviewer backend) → STOP. Surfaceoutput/CONTRACT_VIOLATION.md(if any) and the blocker reason. Do not proceed to/generate-reportuntil a human resolves it.
Update memory/MEMORY.md.
Stage 4 — Report Writing (/generate-report)
Goal: Consolidate all pipeline artifacts into a single narrative rich enough to drive the downstream paper-writing-pipeline (paper-plan → paper-figure-generate → paper-draft → paper-review-loop → paper-convert).
Invoke the subskill (optionally with a focus hint):
/generate-report
The subskill reads, at minimum:
output/LIT_REVIEW_REPORT.mdoutput/IDEA_REPORT.mdandRESEARCH_PLAN.md(orBRIEF.mdif that was the active brief)output/refine-logs/FINAL_PROPOSAL.mdoutput/refine-logs/EXPERIMENT_PLAN.mdoutput/experiment/EXPERIMENT_RESULT.mdandoutput/experiment/EXPERIMENT_LOG.mdoutput/AUTO_REVIEW_REPORT.mdandoutput/REVIEW_STATE.jsonoutput/METHOD_DESCRIPTION.mdoutput/PROJ_NOTES.md(whenCOMPACT_MODE = true)data/DATA_MANIFEST.md,output/spatial-analysis/,output/figures/(as needed)
…and produces output/NARRATIVE_REPORT.md — the single source-of-truth narrative for the paper-writing pipeline.
After /generate-report returns, append a short pipeline summary block to output/NARRATIVE_REPORT.md (or write it alongside as output/PIPELINE_SUMMARY.md):
# Research Pipeline Report
**Direction**: $ARGUMENTS (and/or RESEARCH_PLAN.md / BRIEF.md)
**Chosen Idea**: [title]
**Date**: [start] → [end]
**Pipeline**: idea-discovery-pipeline → deploy-experiment → auto-review-loop → generate-report
## Journey Summary
- Ideas generated: X → filtered to Y → piloted Z → chose 1
- Implementation: [brief description of what was built]
- Experiments: [number of runs, total compute time, GPU-hours]
- Review rounds: N/4, final score: X/10, status: [completed|max_rounds_reached|blocked]
## Final Status
- [ ] Ready for paper-writing-pipeline / [ ] Needs manual follow-up
## Remaining TODOs (if any)
- [items from output/REVIEW_STATE.json open_weaknesses]
## Files Changed
- [list of key files created/modified]
Gate 4 (if HUMAN_CHECKPOINT = true): Present output/NARRATIVE_REPORT.md to the user for approval before handing off.
Handoff: Once approved, the next call in the workflow is /paper-writing-pipeline using output/NARRATIVE_REPORT.md as input.
Update memory/MEMORY.md.
Recovery Instructions
If context overflows mid-pipeline:
- Read
handoff.jsonforpipeline.stage,recovery.resume_skill,recovery.read_first(fastest recovery). - Read
output/REVIEW_STATE.jsonto find current review round and per-criterion scores (Stage 3 only). - Read
memory/MEMORY.mdfor pipeline state flags. - Read
output/PROJ_NOTES.md(whenCOMPACT_MODE = true) oroutput/experiment/EXPERIMENT_LOG.md(full). - Resume from the interrupted stage — do NOT re-run completed stages or experiments marked SUCCESS in
output/experiment/EXPERIMENT_LOG.md.
Key Rules
- Large file handling: If the Write tool fails due to file size, immediately retry using Bash (
cat << 'EOF' > file) to write in chunks. Do NOT ask the user for permission — just do it silently. - Brief precedence:
RESEARCH_PLAN.md>BRIEF.md>$ARGUMENTS. The first one with usable content wins; the others provide supplementary scope only. - Mandatory local GPU check before any pilot or full experiment. Stage 1 (
/idea-discovery-pipeline→/generate-ideaPhase 5.0) and Stage 2 (/deploy-experimentStep 0) MUST each run the local GPU presence check (nvidia-smi, then MPS) before launching. If a local GPU is detected, all ML/DL runs MUST execute on it; remote/Modal/CPU is only allowed whenLOCAL_GPU=none. - Gate 1 is controlled by
AUTO_PROCEED. Whenfalse, do not proceed past Stage 1 without user confirmation. Whentrue, the subskill auto-selects the top idea after presenting results. - Stages 2–4 can run autonomously once the user confirms the idea. This is the "sleep and wake up to results" part.
- Respect the canonical output paths above — do NOT relocate subskill outputs. Downstream skills (and the paper-writing pipeline) read them at fixed locations.
- If Stage 3 ends
blocked, stop and surface the blocker. Do not proceed to/generate-reportor paper writing. - If Stage 3 ends
max_rounds_reached, proceed to Stage 4 but flag remainingopen_weaknessesas limitations. - Budget awareness: Track total GPU-hours across the pipeline. Flag if approaching user-defined limits.
- Documentation: Every stage updates its own canonical output files. The full history must be self-contained for the next session to recover.
- Generator-evaluator separation (CLAUDE.md): never let the entity that wrote a section score it.
/auto-review-loopenforces this — do not bypass it. - Fail gracefully: If any stage fails (no good ideas, experiments crash, review loop blocked), report clearly and suggest alternatives rather than forcing forward.
Signals
- GitHub stars
- 103
- Forks
- 25
- Last commit
- May 2026
Advanced
- Catalog kind
- skill
- Gateway key
full-pipeline- Source
- github.com/grind-lab-core/night_owl_research_agent