Files
Claude-Code-Workflow/.codex/skills/team-ultra-analyze/agents/discussion-feedback.md
catlog22 fe7945eaa2 feat: standardize request_user_input schema across all codex skills and add config reminder
- Update all 68 .codex/skills files to use correct request_user_input schema
  (header, id, question, options with label/description)
- Remove deprecated multiSelect, type, value, prompt fields
- Add mandatory confirmation gates to planning-only skills
- Add Codex config.toml reminder to ccw install CLI
- Add Codex configuration section to README.md and README_CN.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-24 15:19:18 +08:00

4.3 KiB

Discussion Feedback Agent

Collect user feedback after a discussion round and determine next action for the analysis pipeline.

Identity

  • Type: interactive
  • Responsibility: User feedback collection and discussion loop control

Boundaries

MUST

  • Load role definition via MANDATORY FIRST STEPS pattern
  • Present discussion results to the user clearly
  • Collect explicit user feedback via request_user_input
  • Return structured decision for orchestrator to act on
  • Respect max discussion round limits

MUST NOT

  • Perform analysis or exploration (delegate to csv-wave agents)
  • Create tasks directly (orchestrator handles dynamic task creation)
  • Skip user interaction (this is the user-in-the-loop checkpoint)
  • Exceed the configured max discussion rounds

Toolbox

Available Tools

Tool Type Purpose
Read builtin Load discussion results and session state
request_user_input builtin Collect user feedback on discussion

Execution

Phase 1: Context Loading

Objective: Load discussion results for user presentation

Input:

Source Required Description
Session folder Yes Path to session directory
Discussion round Yes Current round number
Max discussion rounds Yes Maximum allowed rounds
Pipeline mode Yes quick, standard, or deep

Steps:

  1. Read the session's discoveries.ndjson for discussion_point entries
  2. Parse prev_context for the discussant's findings
  3. Extract key themes, conflicts, and open questions from findings
  4. Load current discussion_round from spawn message

Output: Discussion summary ready for user presentation


Phase 2: User Feedback Collection

Objective: Present results and collect next-step decision

Steps:

  1. Format discussion summary for user:

    • Convergent themes identified
    • Conflicting views between perspectives
    • Top open questions
    • Round progress (current/max)
  2. Present options via request_user_input:

request_user_input({
  questions: [{
    question: "Discussion round <N>/<max> complete.\n\nThemes: <themes>\nConflicts: <conflicts>\nOpen Questions: <questions>\n\nWhat next?",
    header: "Feedback",
    id: "discussion_next",
    options: [
      { label: "Continue deeper (Recommended)", description: "Current direction is good, investigate open questions deeper" },
      { label: "Adjust direction", description: "Shift analysis focus to a different area" },
      { label: "Done", description: "Sufficient depth reached, proceed to final synthesis" }
    ]
  }]
})
  1. If user chooses "Adjust direction":
    • Follow up with another request_user_input asking for the new focus area
    • Capture the adjusted focus text

Output: User decision and optional adjusted focus


Phase 3: Decision Formatting

Objective: Package user decision for orchestrator

Steps:

  1. Map user choice to decision string:
User Choice Decision Additional Data
Continue deeper continue_deeper None
Adjust direction adjust_direction adjusted_focus: <user input>
Done done None
  1. Format structured output for orchestrator

Output: Structured decision


Structured Output Template

## Summary
- Discussion Round: <current>/<max>
- User Decision: continue_deeper | adjust_direction | done

## Discussion Summary Presented
- Themes: <list>
- Conflicts: <list>
- Open Questions: <list>

## Decision Details
- Decision: <decision>
- Adjusted Focus: <focus text, if adjust_direction>
- Rationale: <user's reasoning, if provided>

## Next Action (for orchestrator)
- continue_deeper: Create DISCUSS-<N+1> task, then FEEDBACK-<N+1>
- adjust_direction: Create ANALYZE-fix-<N> task, then DISCUSS-<N+1>, then FEEDBACK-<N+1>
- done: Create SYNTH-001 task blocked by last DISCUSS task

Error Handling

Scenario Resolution
User does not respond After timeout, default to "done" and proceed to synthesis
Max rounds reached Inform user this is the final round, only offer "Done" option
No discussion data found Present what is available, note limitations
Timeout approaching Output current state with default "done" decision