Recommend New Approaches
Synthesize training artifacts into a prioritized list of research directions, modeling ideas, and loss function modifications — sorted by expected impact.
Invocation
Arguments ($ARGUMENTS) are interpreted as:
--out-dir DIR — directory containing run artifacts (default: ./reports/e2e-run); the skill reads any JSON files found here
--run-id ID — run ID shared across orchestrated run
--model PATH — explicit path to trained model or checkpoint (overrides auto-discovery)
--eval-results PATH — path to check-eval.json (default: <out-dir>/check-eval.json)
--train-results PATH — path to train-model.json (default: <out-dir>/train-model.json)
--explain-results PATH — path to explain-model.json (default: <out-dir>/explain-model.json)
--task-description TEXT — plain-language description of the task and business context (augments artifact data)
--autoresearch — if set, attempt to use autoresearch for automated literature-grounded suggestions (requires autoresearch installed)
Target: $ARGUMENTS
Your responsibilities
1. Load and synthesize run artifacts
Collect all available signals from --out-dir or explicit paths:
train-model.json — final metrics, hyperparameters, early stopping info, training duration, best checkpoint
check-eval.json — task scores, baseline deltas, regressions, best gains
explain-model.json — top features, PDP shapes, bias audit findings, unexpected patterns
babysit-training.json — anomalies detected during training (NaN/OOM/divergence/stalled)
check-dataset-quality.json — dataset profile, class imbalance, data quality findings
review-target.json — task type, leakage risks, split strategy
plan-experiment.json — original hypothesis, model family, HP search space
If no artifacts are found, ask for at least one of --eval-results or --train-results before proceeding. Work with partial data when only some artifacts are present — note which signals were unavailable.
2. Diagnose the current model's weaknesses
Before generating ideas, build a brief diagnostic picture:
- Performance gap: how far is the model from the promotion threshold or an ideal score?
- Training dynamics: did training converge smoothly, plateau early, or show instability?
- Evaluation patterns: which tasks/slices/classes underperform? Any regressions vs. baseline?
- Feature signal: are top features plausible? Any unexpected patterns or bias findings?
- Data constraints: class imbalance, small dataset, noisy labels, distribution shift signals?
This diagnostic shapes the recommendations — don't skip it even if only one artifact is available.
3. Generate recommendations
Produce 5–15 specific, actionable recommendations across these categories:
| Category |
Examples |
architecture |
model family change, depth/width, attention mechanism, inductive biases |
loss |
focal loss for imbalance, label smoothing, contrastive objectives, auxiliary heads |
data |
augmentation strategy, oversampling/undersampling, semi-supervised data, synthetic data |
training |
learning rate schedule, warmup, gradient clipping, mixed precision, longer training |
regularization |
dropout rate, weight decay, early stopping patience, data augmentation as regularizer |
other |
ensembling, distillation, transfer from related task, feature interaction terms |
For each recommendation:
- Ground it in a specific signal from the artifacts (e.g., "eval_loss plateaued at step 2800 → suggest cosine annealing with restarts")
- Estimate expected impact (
high / medium / low) based on the gap between current performance and where this idea could take it
- Estimate effort (
high / medium / low) based on implementation complexity and compute cost
- Provide a concrete
next_command when possible (e.g., a CLI flag change, a one-liner code edit, or a training command)
Sort all recommendations by expected_impact descending, breaking ties by effort ascending (high impact + low effort first).
4. Optionally run autoresearch
If --autoresearch is set, read the autoresearch repo and attempt to use it to run some of the recommendations you generated if they fit the autoresearch use case (iterations that take less than 5 mins but can run many of them)
uv run autoresearch "<task description derived from artifacts>" --max-papers 10 --output <out-dir>/autoresearch-results.json
Parse the results and merge any literature-grounded suggestions into the recommendation list, tagging them with "source": "autoresearch". If autoresearch is unavailable or fails, log a warning and continue with artifact-only recommendations.
Even without --autoresearch, you may draw on your knowledge of relevant ML literature to support recommendations — cite paper names or techniques by name where helpful.
5. Output a prioritized report
After generating recommendations, produce a readable summary:
Recommended Next Approaches
===========================
Model: <checkpoint or model ID>
Task: <task_type> — <primary_metric>=<score> (baseline delta: <delta>)
Diagnostic: <2-3 sentence summary of key weaknesses>
Top Recommendations (sorted by expected impact):
#1 [HIGH impact / LOW effort] — <category>: <idea title>
Rationale: <why this matters given the artifacts>
Next step: <concrete command or code change>
#2 [HIGH impact / MEDIUM effort] — <category>: <idea title>
...
Decision: CONDITIONAL
Confidence: medium
Use CONDITIONAL as the decision (these are forward-looking suggestions, not a hard gate). Use GO if the model already looks strong and only minor improvements remain.
JSON artifact
Write recommend-new-approaches.json to --out-dir (or ./ if invoked standalone) following the schema in ../../references/schemas.md. Use vocabulary from ../../references/vocabulary.md.
Key fields to populate:
decision: CONDITIONAL in most cases (recommendations exist); GO if model is already near-optimal
model, task_type, primary_metric, current_score, baseline_score, performance_gap
diagnostic_summary: 2–3 sentence summary of key weaknesses
recommendations: array sorted by expected_impact descending — see schema for full shape
autoresearch_used: true / false
autoresearch_path: path to autoresearch output file, or null
artifacts_used: list of artifact paths that were loaded
Example session
/ml-skills:recommend-new-approaches --out-dir ./reports/run-001
Loading artifacts from ./reports/run-001:
✓ train-model.json — eval_loss=0.312, eval_f1=0.891 (early stopped at step 3200, patience=3)
✓ check-eval.json — f1=0.891 vs. baseline 0.712 (+0.179); no regressions
✓ explain-model.json — top feature: transaction_amount_zscore; bias: disparate_impact=0.72 (failed)
✗ plan-experiment.json — not found, skipping
Diagnostic:
Model trained well (F1 +0.179 over baseline) but stopped early at 32% of planned steps,
suggesting the LR schedule may be too aggressive. Bias audit failed on disparate_impact (0.72 < 0.80),
and the top feature shows heavy reliance on a single zscore — possible brittleness to distribution shift.
Recommended Next Approaches
===========================
Model: ./checkpoints/checkpoint-2800
Task: classification — eval_f1=0.891 (baseline delta: +0.179)
#1 [HIGH impact / LOW effort] — training: Cosine annealing with warm restarts
Rationale: Early stopping triggered at step 3200 (patience=3) — LR plateau likely cause.
Cosine restarts let training escape local minima without manual tuning.
Next step: uv run train.py --lr_scheduler cosine_with_restarts --warmup_steps 200
#2 [HIGH impact / MEDIUM effort] — loss: Add fairness regularization term
Rationale: disparate_impact=0.72 failed the 0.80 threshold. Adversarial debiasing or
a fairness penalty on the loss can close the gap without major accuracy loss.
Next step: Add FairLearn or AIF360 constraint wrapper around the training objective.
#3 [MEDIUM impact / LOW effort] — regularization: Increase early stopping patience to 7
Rationale: patience=3 may be too tight — model stopped before plateau confirmed.
A patience of 5–10 is common for tasks with noisy eval metrics.
Next step: --early-stop-patience 7
...
Decision: CONDITIONAL
Confidence: medium
Artifact: ./reports/run-001/recommend-new-approaches.json
Additional resources
1---2name: recommend-new-approaches3description: Recommend new research approaches, modeling ideas, and loss function modifications after a training run completes. Use this skill whenever you want to know what to try next, get modeling improvement suggestions, explore research ideas, suggest architecture changes, propose loss function modifications, or brainstorm next experiments based on the trained model and its metrics. Invoke automatically at the end of orchestrate-e2e or after check-eval to close the loop on every run with actionable next steps. Also use when the user asks "what should I try next?", "how can I improve this model?", "what experiments should I run?", or "what are some ideas to improve performance?".4---56# Recommend New Approaches78Synthesize training artifacts into a prioritized list of research directions, modeling ideas, and loss function modifications — sorted by expected impact.910## Invocation1112Arguments (`$ARGUMENTS`) are interpreted as:1314- `--out-dir DIR` — directory containing run artifacts (default: `./reports/e2e-run`); the skill reads any JSON files found here15- `--run-id ID` — run ID shared across orchestrated run16- `--model PATH` — explicit path to trained model or checkpoint (overrides auto-discovery)17- `--eval-results PATH` — path to `check-eval.json` (default: `<out-dir>/check-eval.json`)18- `--train-results PATH` — path to `train-model.json` (default: `<out-dir>/train-model.json`)19- `--explain-results PATH` — path to `explain-model.json` (default: `<out-dir>/explain-model.json`)20- `--task-description TEXT` — plain-language description of the task and business context (augments artifact data)21- `--autoresearch` — if set, attempt to use [autoresearch](https://github.com/karpathy/autoresearch) for automated literature-grounded suggestions (requires `autoresearch` installed)2223Target: `$ARGUMENTS`2425## Your responsibilities2627### 1. Load and synthesize run artifacts2829Collect all available signals from `--out-dir` or explicit paths:3031- `train-model.json` — final metrics, hyperparameters, early stopping info, training duration, best checkpoint32- `check-eval.json` — task scores, baseline deltas, regressions, best gains33- `explain-model.json` — top features, PDP shapes, bias audit findings, unexpected patterns34- `babysit-training.json` — anomalies detected during training (NaN/OOM/divergence/stalled)35- `check-dataset-quality.json` — dataset profile, class imbalance, data quality findings36- `review-target.json` — task type, leakage risks, split strategy37- `plan-experiment.json` — original hypothesis, model family, HP search space3839If no artifacts are found, ask for at least one of `--eval-results` or `--train-results` before proceeding. Work with partial data when only some artifacts are present — note which signals were unavailable.4041### 2. Diagnose the current model's weaknesses4243Before generating ideas, build a brief diagnostic picture:4445- **Performance gap**: how far is the model from the promotion threshold or an ideal score?46- **Training dynamics**: did training converge smoothly, plateau early, or show instability?47- **Evaluation patterns**: which tasks/slices/classes underperform? Any regressions vs. baseline?48- **Feature signal**: are top features plausible? Any unexpected patterns or bias findings?49- **Data constraints**: class imbalance, small dataset, noisy labels, distribution shift signals?5051This diagnostic shapes the recommendations — don't skip it even if only one artifact is available.5253### 3. Generate recommendations5455Produce **5–15 specific, actionable recommendations** across these categories:5657| Category | Examples |58|---|---|59| `architecture` | model family change, depth/width, attention mechanism, inductive biases |60| `loss` | focal loss for imbalance, label smoothing, contrastive objectives, auxiliary heads |61| `data` | augmentation strategy, oversampling/undersampling, semi-supervised data, synthetic data |62| `training` | learning rate schedule, warmup, gradient clipping, mixed precision, longer training |63| `regularization` | dropout rate, weight decay, early stopping patience, data augmentation as regularizer |64| `other` | ensembling, distillation, transfer from related task, feature interaction terms |6566For each recommendation:6768- Ground it in a specific signal from the artifacts (e.g., "eval_loss plateaued at step 2800 → suggest cosine annealing with restarts")69- Estimate **expected impact** (`high` / `medium` / `low`) based on the gap between current performance and where this idea could take it70- Estimate **effort** (`high` / `medium` / `low`) based on implementation complexity and compute cost71- Provide a concrete `next_command` when possible (e.g., a CLI flag change, a one-liner code edit, or a training command)7273Sort all recommendations by `expected_impact` descending, breaking ties by `effort` ascending (high impact + low effort first).7475### 4. Optionally run autoresearch7677If `--autoresearch` is set, read the [autoresearch](https://github.com/karpathy/autoresearch) repo and attempt to use it to run some of the recommendations you generated if they fit the autoresearch use case (iterations that take less than 5 mins but can run many of them)7879```bash80uv run autoresearch "<task description derived from artifacts>" --max-papers 10 --output <out-dir>/autoresearch-results.json81```8283Parse the results and merge any literature-grounded suggestions into the recommendation list, tagging them with `"source": "autoresearch"`. If `autoresearch` is unavailable or fails, log a warning and continue with artifact-only recommendations.8485Even without `--autoresearch`, you may draw on your knowledge of relevant ML literature to support recommendations — cite paper names or techniques by name where helpful.8687### 5. Output a prioritized report8889After generating recommendations, produce a readable summary:9091```text92Recommended Next Approaches93===========================94Model: <checkpoint or model ID>95Task: <task_type> — <primary_metric>=<score> (baseline delta: <delta>)96Diagnostic: <2-3 sentence summary of key weaknesses>9798Top Recommendations (sorted by expected impact):99100#1 [HIGH impact / LOW effort] — <category>: <idea title>101 Rationale: <why this matters given the artifacts>102 Next step: <concrete command or code change>103104#2 [HIGH impact / MEDIUM effort] — <category>: <idea title>105 ...106107Decision: CONDITIONAL108Confidence: medium109```110111Use `CONDITIONAL` as the decision (these are forward-looking suggestions, not a hard gate). Use `GO` if the model already looks strong and only minor improvements remain.112113### JSON artifact114115Write `recommend-new-approaches.json` to `--out-dir` (or `./` if invoked standalone) following the schema in [../../references/schemas.md](../../references/schemas.md). Use vocabulary from [../../references/vocabulary.md](../../references/vocabulary.md).116117Key fields to populate:118119- `decision`: `CONDITIONAL` in most cases (recommendations exist); `GO` if model is already near-optimal120- `model`, `task_type`, `primary_metric`, `current_score`, `baseline_score`, `performance_gap`121- `diagnostic_summary`: 2–3 sentence summary of key weaknesses122- `recommendations`: array sorted by `expected_impact` descending — see schema for full shape123- `autoresearch_used`: `true` / `false`124- `autoresearch_path`: path to autoresearch output file, or `null`125- `artifacts_used`: list of artifact paths that were loaded126127## Example session128129```130/ml-skills:recommend-new-approaches --out-dir ./reports/run-001131132Loading artifacts from ./reports/run-001:133 ✓ train-model.json — eval_loss=0.312, eval_f1=0.891 (early stopped at step 3200, patience=3)134 ✓ check-eval.json — f1=0.891 vs. baseline 0.712 (+0.179); no regressions135 ✓ explain-model.json — top feature: transaction_amount_zscore; bias: disparate_impact=0.72 (failed)136 ✗ plan-experiment.json — not found, skipping137138Diagnostic:139 Model trained well (F1 +0.179 over baseline) but stopped early at 32% of planned steps,140 suggesting the LR schedule may be too aggressive. Bias audit failed on disparate_impact (0.72 < 0.80),141 and the top feature shows heavy reliance on a single zscore — possible brittleness to distribution shift.142143Recommended Next Approaches144===========================145Model: ./checkpoints/checkpoint-2800146Task: classification — eval_f1=0.891 (baseline delta: +0.179)147148#1 [HIGH impact / LOW effort] — training: Cosine annealing with warm restarts149 Rationale: Early stopping triggered at step 3200 (patience=3) — LR plateau likely cause.150 Cosine restarts let training escape local minima without manual tuning.151 Next step: uv run train.py --lr_scheduler cosine_with_restarts --warmup_steps 200152153#2 [HIGH impact / MEDIUM effort] — loss: Add fairness regularization term154 Rationale: disparate_impact=0.72 failed the 0.80 threshold. Adversarial debiasing or155 a fairness penalty on the loss can close the gap without major accuracy loss.156 Next step: Add FairLearn or AIF360 constraint wrapper around the training objective.157158#3 [MEDIUM impact / LOW effort] — regularization: Increase early stopping patience to 7159 Rationale: patience=3 may be too tight — model stopped before plateau confirmed.160 A patience of 5–10 is common for tasks with noisy eval metrics.161 Next step: --early-stop-patience 7162163...164165Decision: CONDITIONAL166Confidence: medium167168Artifact: ./reports/run-001/recommend-new-approaches.json169```170171## Additional resources172173- [autoresearch](https://github.com/karpathy/autoresearch) — automated literature-grounded research ideation174- [check-eval](../check-eval/SKILL.md) — evaluation results (primary input)175- [explain-model](../explain-model/SKILL.md) — feature importance and bias (supporting input)176- [train-model](../train-model/SKILL.md) — training artifacts (supporting input)177- [../../references/schemas.md](../../references/schemas.md) — JSON artifact schema178- [../../references/vocabulary.md](../../references/vocabulary.md) — canonical enum values