recursive-training
Purpose
Use this skill after a repository has accumulated completed recursive-mode runs and you want to turn repeated successes or failures into durable, repo-local guidance.
The canonical workflow still lives in /.recursive/RECURSIVE.md. This skill owns only the training, loading, and memory-discipline layer that sits around completed runs.
When to use it
Use recursive-training to:
- extract cross-run learnings from completed recursive-mode runs
- keep those learnings in
/.recursive/memory/instead of ad hoc mirrors - refresh memory after Phase 8 locks
- load only the most relevant prior learnings before a new run starts
- provide startup guidance without mutating the memory plane
Hard rules
- Repository-local only. Training data and extracted memory stay inside the current repo.
- No parameter updates. Learning happens through files in
/.recursive/memory/, not model mutation. /.recursive/memory/is the only canonical store. Pointer files are bootstrap-managed and non-authoritative.- All markdown under
/.recursive/run/<run-id>/is eligible training input, not just00-08. - Group runs by subsystem only. The extractor assigns task types per learning item.
- Use contrastive extraction when both winners and losers exist; fall back to winner-only extraction for high-quality repos.
- Every extracted item must remain evidence-grounded in completed runs.
- Training scripts do not own
AGENTS.md; bootstrap owns bridge-file updates.
Training model
recursive-training combines two ideas:
- ReasoningBank-style memory items for structured, reusable extracted guidance
- Training-free GRPO-style comparison for contrastive winner/loser extraction when variance exists
At a high level:
- Parse all markdown artifacts from completed runs.
- Infer the dominant subsystem from changed paths and evidence across those artifacts.
- Classify each subsystem group as contrastive, winner-only, or insufficient.
- Ask the extractor for structured learning items.
- Write those items into:
/.recursive/memory/domains/<subsystem>.md/.recursive/memory/training/<task-type>.md
- Refresh the memory registry/startup guidance without treating pointer files as authoritative memory.
For the full schema, grouping logic, evidence signals, and extraction contracts, see:
references/memory-architecture.mdreferences/phase8-and-loading.md
Phase 8 and loading boundary
Phase 8 records the current run's observations in 08-memory-impact.md.
Training then turns many completed runs into cross-run memory.
That means:
08-memory-impact.mdis run-local capturerecursive-training-phase8-trigger.pyis the handoff after Phase 8 locksrecursive-training-grpo.pybuilds prompts and writes memory after extractionrecursive-training-extract.pyevaluates prompts (required companion; not optional)recursive-training-loader.pyis the canonical retrieval path before later runsrecursive-training-sync.pyprints startup guidance without mutating the memory plane
Extractor wiring (first match wins):
--response-file/ sibling<prompt>.response.jsonfor agent-operated offline evaluationRECURSIVE_TRAINING_EXTRACTOR_CMDwith{prompt_file}/{repo_root}placeholders- otherwise exit
2(unavailable) — GRPO/trigger must fail, not claim success
Detailed Phase 8 handoff and loader behavior lives in references/phase8-and-loading.md.
Commands
Full training:
python .recursive/scripts/recursive-training-grpo.py --repo-root .
Incremental training after a specific run:
python .recursive/scripts/recursive-training-grpo.py --repo-root . --incremental --run-id <run-id>
Post-Phase 8 trigger:
python .recursive/scripts/recursive-training-phase8-trigger.py --repo-root . --run-id <run-id>
python .recursive/scripts/recursive-training-phase8-trigger.py --repo-root . --run-id <run-id> --auto
Read-only startup guidance:
python .recursive/scripts/recursive-training-sync.py --repo-root .
Canonical memory loading before a new run:
python .recursive/scripts/recursive-training-loader.py \
--repo-root . \
--query "<task description>" \
--files "<comma-separated paths>"
Optional MCP convenience layer:
python .recursive/scripts/recursive-training-mcp.py --repo-root .
Trigger patterns
Recognize these as training requests:
traintrainingextract memorieslearn from runstrain from the latest runincremental trainingsync memories/recursive-training
Default behavior:
- fewer than 2 completed runs: explain why extraction is skipped
- no explicit scope: default to full training
- explicit run or "incremental": use incremental mode
- "sync" or "what should I read": use
recursive-training-sync.py
Operator checklist
- Confirm the repo already has recursive-mode scaffolding.
- Confirm completed runs exist under
/.recursive/run/. - Run the trigger or grpo script with the intended scope.
- Verify updated items land under
/.recursive/memory/domains/and/.recursive/memory/training/. - Before the next run, read
/.recursive/memory/MEMORY.mdand call the loader with task context. - Treat loader output as advisory context; the canonical records stay in the memory plane.
Script surface
.recursive/scripts/recursive-training-grpo.py.recursive/scripts/recursive-training-grpo.ps1.recursive/scripts/recursive-training-extract.py.recursive/scripts/recursive-training-extract.ps1.recursive/scripts/recursive-training-phase8-trigger.py.recursive/scripts/recursive-training-phase8-trigger.ps1.recursive/scripts/recursive-training-sync.py.recursive/scripts/recursive-training-sync.ps1.recursive/scripts/recursive-training-loader.py.recursive/scripts/recursive-training-loader.ps1.recursive/scripts/recursive-training-mcp.py.recursive/scripts/recursive-training-mcp.ps1
Detailed references
references/memory-architecture.md— schema, evidence signals, grouping, extraction modes, and output contractreferences/phase8-and-loading.md— Phase 8 handoff, trigger behavior, loader timing, and integration patterns
Coverage Gate
- Canonical memory-store boundary documented
- Contrastive and winner-only extraction modes documented
- Subsystem-only grouping documented
- All-markdown run-folder input scope documented
- Phase 8 handoff and loader boundary documented
- Canonical command surface documented
- Reference docs linked for detailed extraction and loading behavior
- Script-only transport boundary preserved
Coverage: PASS
Approval Gate
- Skill defers to
/.recursive/RECURSIVE.mdfor overall workflow rules - Repository-local scope preserved
- No parameter-updating behavior introduced
-
/.recursive/memory/remains the only canonical store - Phase 8 capture vs training extraction boundary is explicit
- Loader remains the canonical retrieval path
- Pointer files remain bootstrap-managed, not sync-authored mirrors
Approval: PASS