plugins/base/skills/socratic-duel-run/SKILL.md
Run Socratic Duel through two participant subagents while the launcher only coordinates and reports.
npx skillsauth add rp1-run/rp1 socratic-duel-runInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
§ROLE: Subagent-only Socratic Duel launcher.
§OBJ
rp1-base:socratic-duel-participant agents with distinct participant names.§BOUNDARY
--close-run outcome emits.§CTX
RUN_ID, projectRoot, workRoot, codeRoot, resolved arguments.CURRENT_HOST: claude-code, codex, gh-copilot, opencode, amp, else unknown; default codex.TARGET_PATH: required absolute readable .md or .markdown source path.TOPIC: optional. If blank, read the source document and use the first Markdown heading as EFFECTIVE_TOPIC, falling back to source filename stem.MODEL_ID: pass through unchanged; if unknown, keep unknown-model.stateDiagram-v2
[*] --> preparing
preparing --> invalidated : invalid_input
preparing --> waiting_for_participant : agents_launched
waiting_for_participant --> debating : participants_active
waiting_for_participant --> closing : terminal_seen
waiting_for_participant --> invalidated : orchestration_failure
debating --> debating : participant_turn
debating --> closing : terminal_seen
debating --> invalidated : orchestration_failure
closing --> completed : accepted_or_dissent_or_timeout
closing --> invalidated : validation_failed
completed --> [*]
invalidated --> [*]
§EMIT
Launcher state entry:
rp1 agent-tools emit --harness $CURRENT_HOST \
--workflow socratic-duel-run \
--type status_change \
--run-id {RUN_ID} \
--step {CURRENT_STATE} \
--data '{"status":"running","target":"{TARGET_PATH}","topic":"{EFFECTIVE_TOPIC}"}'
Launch progress:
rp1 agent-tools emit --harness $CURRENT_HOST \
--workflow socratic-duel-run \
--type status_change \
--run-id {RUN_ID} \
--step preparing \
--unit orchestrator:launch \
--data '{"status":"running","event":"launching_participants","target":"{TARGET_PATH}","topic":"{EFFECTIVE_TOPIC}"}'
Waiting progress:
rp1 agent-tools emit --harness $CURRENT_HOST \
--workflow socratic-duel-run \
--type status_change \
--run-id {RUN_ID} \
--step waiting_for_participant \
--unit orchestrator:waiting \
--data '{"status":"waiting","event":"waiting_for_participant_closure","target":"{TARGET_PATH}","topic":"{EFFECTIVE_TOPIC}"}'
Orchestration failure only:
rp1 agent-tools emit --harness $CURRENT_HOST \
--workflow socratic-duel-run \
--type status_change \
--run-id {RUN_ID} \
--step invalidated \
--close-run \
--unit orchestrator:waiting \
--data '{"status":"failed","outcome":"INVALIDATED","message":"{failure_reason}","target":"{TARGET_PATH}","topic":"{EFFECTIVE_TOPIC}"}'
§PROC
preparing
preparing.TARGET_PATH: absolute, readable, .md or .markdown.invalidated with --close-run; stop.EFFECTIVE_TOPIC from TOPIC, first source heading, or filename stem.orchestrator:launch.launch participants
RUN_ID, TARGET_PATH, EFFECTIVE_TOPIC, MODEL_ID, workRoot, and codeRoot.Socratic Duel Participant ASocratic Duel Participant B{% dispatch_agent "rp1-base:socratic-duel-participant", background %} RUN_ID={RUN_ID} TARGET_PATH={TARGET_PATH} TOPIC={EFFECTIVE_TOPIC} PARTICIPANT_NAME=Socratic Duel Participant A MODEL_ID={MODEL_ID} WORK_ROOT={workRoot} CODE_ROOT={codeRoot} WORKFLOW=socratic-duel-run {% enddispatch_agent %}
{% dispatch_agent "rp1-base:socratic-duel-participant", background %} RUN_ID={RUN_ID} TARGET_PATH={TARGET_PATH} TOPIC={EFFECTIVE_TOPIC} PARTICIPANT_NAME=Socratic Duel Participant B MODEL_ID={MODEL_ID} WORK_ROOT={workRoot} CODE_ROOT={codeRoot} WORKFLOW=socratic-duel-run {% enddispatch_agent %}
waiting_for_participant
orchestrator:waiting.completed or invalidated run stateINVALIDATED with --close-run.report
terminal:true or the run is visibly terminal.debate_path, outcome, duel_id, and participant names.INVALIDATED, include the participant-provided reason.§OUT
## Socratic Duel Run Complete
**Outcome**: {terminal_outcome}
**Debate Artifact**: `{debate_path}`
**Duel ID**: `{duel_id}`
**Participants**: Socratic Duel Participant A, Socratic Duel Participant B
**Closure**: Participant-owned
§DONT
{TARGET_PATH}.{debate_path}.rp1 agent-tools socratic-duel claim-lock, refresh-lock, or release-lock.ACCEPTED_CONSENSUS, DISSENT, MAX_TURNS, TIMEOUT, or INVALIDATED.tools
Plan and execute splitting a large PR or branch into a reviewable stacked PR sequence.
documentation
Ask about rp1 capabilities, discover skills, and get workflow guidance.
tools
Generate an evidence-grounded markdown walkthrough for a pull request.
development
Run a bounded, evidence-driven two-agent debate into a separate rp1 debate artifact with backend locks only.