From autoconference
Core conference loop — spawns N parallel autoresearchers, runs 4-phase rounds (independent research, poster session, peer review, knowledge transfer), and produces synthesized results combining the best findings.
npx claudepluginhub wjgoarxiv/autoconference-skillThis skill is limited to using the following tools:
*Full orchestration protocol for the multi-agent research conference.*
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Processes PDFs: extracts text/tables/images, merges/splits/rotates pages, adds watermarks, creates/fills forms, encrypts/decrypts, OCRs scans. Activates on PDF mentions or output requests.
Share bugs, ideas, or general feedback.
Full orchestration protocol for the multi-agent research conference.
Before starting any conference, the Conference Chair MUST ask the user these questions. Do NOT assume defaults — present options and wait for the user's answer.
Ask: "How many researchers should participate in this conference?"
Present options:
If the user already specified count in conference.md, confirm it: "Your conference.md specifies N researchers. Proceed with this?"
Ask: "Should one of the researchers be a Devil's Advocate — deliberately pursuing contrarian strategies?"
Explain:
If the user says yes, assign one researcher the Devil's Advocate role (see ../../references/agent-prompts.md §Devil's Advocate).
Ask: "Do you want this conference to run overnight / unattended?"
If yes:
bash scripts/autoconference-loop.sh ./conference-dir/pause_every: never in the conference configbash scripts/check_conference.sh"If no:
pause_every: N so the user can review between roundsAsk: "How should researchers divide the search space?"
Present options:
If the user already specified this in conference.md, confirm it.
IMPORTANT: Do NOT start Phase 1 of Round 1 until ALL pre-flight questions are answered. If the user says "just use defaults," that counts as an answer — proceed with recommended defaults.
Use autoconference when:
Do NOT use when:
autoresearch-skill instead)Copy ../../assets/conference_template.md to start a new conference (or scaffold with python ../../scripts/init_conference.py). Key sections:
| Section | Purpose |
|---|---|
Goal | What to achieve (specific and measurable) |
Mode | metric (numeric optimization) or qualitative (reasoned judgment) |
Success Metric | Metric name, target, direction — metric mode only |
Success Criteria | Natural language description of "good" — qualitative mode only |
Researchers | count, iterations_per_round, max_rounds |
Search Space | Allowed and forbidden changes (inherited by all researchers) |
Search Space Partitioning | assigned (each researcher has a focus) or free (overlap allowed) |
Constraints | max_total_iterations, time_budget, researcher_timeout |
Current Approach | Baseline description |
Shared Knowledge | Auto-populated each round with validated findings |
Conference Log | Auto-maintained table by Conference Chair |
This is the master loop. Follow it exactly as the Conference Chair.
1. Read conference.md Parse all sections. If any required field is missing or invalid, stop and tell the user what needs fixing before proceeding.
2. Validate configuration
mode must be metric or qualitativecount must be >= 1Success Metric must have name, target, and directionSuccess Criteria must be non-emptymax_total_iterations and max_rounds must be positive integers3. Detect worktree need
If mode == metric AND researchers will make code changes → create per-researcher git worktrees (branches: conference/researcher-{ID}, plus conference/best). For prompt/config-only or qualitative mode, file-based isolation is sufficient. See ../../references/conference-protocol.md §5 for full worktree lifecycle.
4. Initialize output files
For each researcher {ID} in [A, B, C, ...] (up to count):
researcher_{ID}_log.md (empty with header)researcher_{ID}_results.tsv (header + baseline row)Create conference_results.tsv (header only) and conference_events.jsonl (empty).
Log conference.started event to JSONL.
5. Partition search space
strategy: assigned → read Researcher A/B/C Focus sections from conference.mdstrategy: free → all researchers receive the full search space6. Phase 1 — Spawn N Researcher agents in parallel
Spawn all N researchers simultaneously using the Agent tool with run_in_background: true. Log round.started event.
Each Researcher prompt MUST include (see ../../references/agent-prompts.md §Researcher for full contract):
free)iterations_per_round countWait for all researchers to complete (respect researcher_timeout). If a researcher crashes or times out, proceed with partial results from completed researchers; log status failed in conference_results.tsv. Re-spawn failed researchers next round from their last known good state.
After all researchers complete (or timeout), update conference_progress.png — a live multi-researcher convergence plot refreshed every round. Use the /scientific-visualization skill: read all researcher_*_results.tsv files, plot iteration number (x) vs metric value (y) with one line per researcher (Okabe-Ito palette), overlay a best-of-conference envelope, and mark the target threshold. Call rcparams() from ../../scripts/style_presets.py before plotting. Single-panel layout. Overwrite conference_progress.png each round.
7. Phase 2 — Spawn Session Chair (Haiku) to produce poster session Spawn one Session Chair agent. Prompt MUST include:
poster_session_round_{N}.mdLog round.poster_session event.
8. Phase 3 — Spawn Reviewer (Opus) for adversarial peer review Spawn one Reviewer agent. Prompt MUST include:
poster_session_round_{N}.mdpeer_review_round_{N}.mdvalidated | challenged | overturnedLog round.peer_review event.
9. Phase 4 — Knowledge Transfer
Read peer_review_round_{N}.md verdicts:
validated findings to the Shared Knowledge section in conference.mdconference/best branch (see ../../references/conference-protocol.md §5 for conflict resolution rules)conference_results.tsv rows for this round with peer_review_verdict valuesround.completed event with best metric and convergence status10. Check convergence
See ../../references/conference-protocol.md §2 for full convergence implementation. Also see convergence-guide.md in this directory for a focused convergence reference. Summary:
| Condition | Trigger |
|---|---|
| Metric mode: best metric unchanged for 2 consecutive rounds | CONVERGED |
| Qualitative mode: all outputs rated >= 8/10 for 2 consecutive rounds | CONVERGED |
max_total_iterations or max_rounds or time_budget hit | BUDGET STOP |
| All researchers at stuck Level 2+ simultaneously | STALLED → early synthesis |
max_rounds → signal ENDGAME to researchers in Step 611. Spawn Synthesizer (Opus) Spawn one Synthesizer agent. Prompt MUST include:
poster_session_round_*.md and peer_review_round_*.md filessynthesis.md and final_report.md../../assets/synthesis_template.md and ../../assets/report_template.md.12. Worktree cleanup (if worktree mode) Offer three options to the user:
conference/best into original branch13. Log completion
Log conference.completed event with links to synthesis.md and final_report.md. Report summary to user: rounds run, total iterations, final best metric/score, synthesis location.
conference.md # Config (updated: Shared Knowledge + Conference Log)
conference_results.tsv # Master conference-level TSV (all rounds, all researchers)
conference_progress.png # Live convergence plot (updated each round)
conference_events.jsonl # Append-only event log
researcher_A_log.md # Per-researcher detailed iteration logs
researcher_A_results.tsv # Per-researcher TSV
researcher_B_log.md
researcher_B_results.tsv
...
poster_session_round_1.md # Session Chair summary (one per round)
peer_review_round_1.md # Reviewer verdicts (one per round)
...
synthesis.md # Final synthesized output (Synthesizer)
final_report.md # Executive summary with full conference history
See ../../references/results-logging.md for TSV column schemas and JSONL event format.
Visualization: All conference visualizations (convergence plots, researcher heatmaps, synthesis diagrams) MUST use ../../scripts/style_presets.py. Call rcparams() before any plotting. See ../../references/visualization-guide.md for the 7 mandatory rules: white background, Okabe-Ito palette, DPI 600, no titles, colored legend text.
max_total_iterations — hard cap on total iterations across all researchers. Prevents runaway execution.max_rounds — hard cap on conference rounds.time_budget — wall-clock limit for the entire conference.researcher_timeout — per-researcher time limit (default: time_budget / researcher_count, or set explicitly). If exceeded, the researcher is marked failed and the conference proceeds with partial results.timeout 5m. Exit code 124 = timeout — revert and continue. Distinct from researcher_timeout (per-round level) vs per-experiment (per-iteration level).Forbidden Changes list is passed verbatim to every researcher's prompt.Per-researcher (inherited from autoresearch-skill):
Conference-level:
conference.stalled event and proceeds directly to SYNTHESIS (Step 11) without waiting for convergence.STALLED in conference_results.tsv. On the next round, it is re-spawned with a fundamentally different strategy derived from other researchers' Shared Knowledge.| Condition | Mode | Result |
|---|---|---|
| Best metric across all researchers unchanged for 2 consecutive rounds | Metric | CONVERGED |
| Reviewer rates all researcher outputs >= 8/10 for 2 consecutive rounds | Qualitative | CONVERGED |
max_total_iterations hit | Both | BUDGET STOP |
max_rounds hit | Both | BUDGET STOP |
time_budget hit | Both | BUDGET STOP |
| All researchers stuck Level 2+ simultaneously | Both | STALLED → early synthesis |
Full convergence implementation in ../../references/conference-protocol.md §2. See also convergence-guide.md in this directory.
When mode: qualitative, there is no numeric metric. Researchers use self-assessment as a proxy:
metric_valueThis is an acknowledged departure from autoresearch's Principle #2 (Mechanical Verification). The tradeoff enables broader research tasks (literature synthesis, hypothesis generation) at the cost of less reliable inner-loop evaluation. The adversarial Reviewer compensates by providing rigorous external judgment each round. See ../../references/conference-protocol.md §6.
Worktrees activate only when mode == metric AND researchers make code changes.
| Mode | Change type | Worktrees? |
|---|---|---|
| Metric | Code changes | Yes — each researcher gets own branch |
| Metric | Prompt/config only | No — file isolation is sufficient |
| Qualitative | Any | No — researchers produce analysis, not code |
Branch structure:
main (user's current branch)
├── conference/researcher-A ← per-researcher worktree
├── conference/researcher-B
├── conference/researcher-C
└── conference/best ← validated improvements cherry-picked here
Per-round lifecycle: create/reset from conference/best → research → cherry-pick validated → next round.
Use /worktree-dashboard to monitor researcher worktrees in real-time during a conference. The Reviewer agent uses /compare-worktrees for cross-worktree static analysis and behavioral comparison. Full lifecycle and conflict resolution in ../../references/conference-protocol.md §5.
Events are written to conference_events.jsonl (append-only JSONL). Format:
{"event": "conference.started", "timestamp": "2026-03-18T10:00:00Z", "payload": {"researchers": 3, "mode": "metric"}}
{"event": "round.completed", "timestamp": "2026-03-18T10:15:00Z", "payload": {"round": 1, "best_metric": 0.82}}
| Event | When |
|---|---|
conference.started | Conference Chair initializes |
round.started | Each round begins |
researcher.iteration | Researcher completes an iteration |
round.poster_session | Poster session complete |
round.peer_review | Peer review complete |
round.completed | Round finishes |
researcher.stuck | Researcher hits stuck Level 2+ |
conference.converged | Convergence detected |
conference.completed | Synthesis done |
External tools can tail -f conference_events.jsonl for real-time monitoring. See ../../references/results-logging.md §3 for full schema.