Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Enhanced academic paper review response workflow with Agy/CLI collaborative analysis and multi-perspective discussion. Produces structured rebuttal documents with evidence-based strategies. Triggers on "rebuttal", "respond to reviewers", "review response", "审稿回复".
.claude/skills/catlog22-scholar-rebuttal-pro/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-17 | ✗→✓ | ▲ Improved | 309% | 0% |
| case-19 | ✗→✓ | ▲ Improved | 248% | 0% |
| case-20 | ✗→✓ | ▲ Improved | 4490% | 0% |
| case-05 | ✓→✗ | ▼ Worse | 372% | 0% |
| case-12 | ✓→✗ | ▼ Worse | 310% | 0% |
<required_reading> @~/.maestro/workflows/run-mode.md </required_reading>
Enhanced academic paper review response workflow combining Agy/CLI collaborative analysis with multi-perspective discussion. Produces structured, evidence-based rebuttal documents optimized for conference-specific requirements.
.workflow/codebase/ARCHITECTURE.md exists, read for project contextmaestro load --type spec --category coding — load coding conventionsmaestro search "academic writing research paper" --json — top 5 entries as prior context┌─────────────────────────────────────────────────────────────────┐
│ Scholar Rebuttal Pro Orchestrator (SKILL.md) │
│ → Pure coordinator: Execute phases, parse outputs, pass context │
│ → Run lifecycle: create/resume → phases → check → complete │
└───────────────────────┬─────────────────────────────────────────┘
│
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
│ Phase 1 │ │ Phase 2 │ │ Phase 3 │ │ Phase 4 │ │ Phase 5 │
│ Review │ │ Multi- │ │Strategy │ │Rebuttal │ │ Quality │
│ Parsing │ │Perspect │ │Formula │ │ Writing │ │Validat │
└─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘
reviewA discussion strategy rebuttal quality
nalysis Consensus Matrix Draft ScoreCollect workflow preferences via AskUserQuestion before dispatching to phases:
javascriptconst prefResponse = AskUserQuestion({ questions: [ { question: "是否跳过所有确认步骤(自动模式)?", header: "Auto Mode", multiSelect: false, options: [ { label: "Interactive (Recommended)", description: "交互模式,每阶段后确认" }, { label: "Auto", description: "跳过所有确认,自动执行" } ] }, { question: "论文内容来源?(用于策略制定时查找支撑证据)", header: "Paper Source", multiSelect: false, options: [ { label: "Provide Path", description: "指定论文 PDF/LaTeX 路径" }, { label: "Current Directory", description: "自动搜索当前目录" }, { label: "Review Only", description: "仅基于审稿意见回复" } ] }, { question: "目标会议类型?(影响模板和策略选择)", header: "Conference", multiSelect: false, options: [ { label: "ML Conferences", description: "NeurIPS/ICML/ICLR" }, { label: "CV Conferences", description: "CVPR/ECCV/ICCV" }, { label: "NLP Conferences", description: "ACL/EMNLP" }, { label: "Generic", description: "通用模板" } ] } ] }) // Derive workflowPreferences from user selection workflowPreferences = { autoYes: prefResponse["Auto Mode"] === "Auto", paperSource: prefResponse["Paper Source"], conferenceType: prefResponse["Conference"] }
workflowPreferences is passed to phase execution as context variable. Phases reference as workflowPreferences.autoYes, workflowPreferences.paperSource, etc.
When workflowPreferences.autoYes === true:
> ⚠️ COMPACT DIRECTIVE: Context compression MUST check TodoWrite phase status. > The phase currently marked in_progress is the active execution phase — preserve its FULL content. > Only compress phases marked completed or pending.
Run Setup (see run-mode.md):
└─ Birth packet injected run_id/run_dir? → use them, skip create.
Else self-start: maestro run create scholar-rebuttal-pro --session <YYYYMMDD-scholar-rebuttal-pro-{topic}> --intent "..."
(Optional --resume <run_id> → maestro run brief <run_id> to continue an existing Run.)
└─ output_base = {run_dir}/outputs
Input Parsing:
└─ Convert user input to structured format (reviewCommentsPath + paperPath + conferenceType)
Phase 1: Review Parsing & Classification
└─ Ref: phases/01-review-parsing.md
├─ Tasks attached: Parse reviewer comments structure → Classify comments using Agy CLI → Extract sentiment and key concerns → Generate review-analysis.json
└─ Output: reviewAnalysis, commentCategories, ${output_base}/review-analysis.json, ${output_base}/comment-classification.md
Phase 2: Multi-Perspective Discussion
└─ Ref: phases/02-multi-perspective-discussion.md
├─ Tasks attached: Author perspective: effective response strategies → Reviewer perspective: persuasive arguments → Expert perspective: technical accuracy and academic norms → Synthesize consensus strategies
└─ Output: discussionConsensus, strategicRecommendations, ${output_base}/discussion-log.md, ${output_base}/consensus-strategies.json
Phase 3: Strategy Formulation
└─ Ref: phases/03-strategy-formulation.md
├─ Tasks attached: Map comments to response strategies → Search paper content for evidence using CLI → Identify gaps requiring new experiments → Generate strategy matrix
└─ Output: strategyMatrix, evidenceMap, ${output_base}/strategy-matrix.md, ${output_base}/evidence-references.json
Phase 4: Rebuttal Writing
└─ Ref: phases/04-rebuttal-writing.md
├─ Tasks attached: Apply conference-specific template → Write point-by-point responses → Integrate evidence and citations → Optimize professional tone
└─ Output: rebuttalDraft, rebuttal.md, ${output_base}/rebuttal-draft-v1.md
Phase 5: Quality Validation
└─ Ref: phases/05-quality-validation.md
├─ Tasks attached: Check completeness (all comments addressed) → Assess professionalism and tone → Evaluate persuasiveness and evidence strength → Generate improvement recommendations
└─ Output: qualityScore, improvements, ${output_base}/quality-report.md, ${output_base}/improvement-suggestions.json
Run Closure (see run-mode.md):
└─ maestro run check {run_id} → repair any reported gate → maestro session done {run_id}
(Report success only after session done.)
Return:
└─ Summary with recommended next stepsPhase Reference Documents (read on-demand when phase executes):
| Phase | Document | Purpose | Compact | |-------|----------|---------|---------| | 1 | phases/01-review-parsing.md | Parse reviewer comments, classify by type (Major/Minor/Typo/Misunderstanding), extract key concerns using Agy CLI semantic analysis | TodoWrite 驱动 | | 2 | phases/02-multi-perspective-discussion.md | Simulate discussion from author, reviewer, and domain expert perspectives to develop consensus strategies | TodoWrite 驱动 + 🔄 sentinel | | 3 | phases/03-strategy-formulation.md | Select response strategies (Accept/Defend/Clarify/Experiment) based on discussion, analyze paper content for supporting evidence using CLI | TodoWrite 驱动 + 🔄 sentinel | | 4 | phases/04-rebuttal-writing.md | Generate structured rebuttal document using rebuttal-writer agent, apply conference-specific templates, optimize tone | TodoWrite 驱动 + 🔄 sentinel | | 5 | phases/05-quality-validation.md | Validate rebuttal quality using Agy CLI: completeness, professionalism, persuasiveness, generate improvement suggestions | TodoWrite 驱动 |
Compact Rules:
in_progress → 保留完整内容,禁止压缩completed → 可压缩为摘要Read() 恢复maestro delegate --to agy --mode analysis for semantic analysis tasksUser provides review comments in one of these formats:
reviews.txt, reviewer-comments.md, reviews.pdfOptional flag: --resume <run_id> to continue an existing Run.
The Run is the single source of truth (see run-mode.md). Resolve run_dir, then derive output_base:
javascript// If the birth packet injected run_id/run_dir, use them (do NOT create). // Else if --resume <run_id>: maestro run brief <run_id> → run_dir. // Else self-start: maestro run create scholar-rebuttal-pro --session <slug> --intent "..." // (slug: YYYYMMDD-scholar-rebuttal-pro-{topic}, ASCII-only, ≤64 chars) const output_base = `${run_dir}/outputs`; // all phase outputs land here const cleanArgs = $ARGUMENTS.replace(/--resume\s+\S+/, '').trim();
Convert to structured format:
javascriptconst structuredInput = { reviewCommentsPath: <path or inline text>, paperPath: workflowPreferences.paperSource === "Provide Path" ? <user-provided> : <auto-discovered>, conferenceType: workflowPreferences.conferenceType, autoMode: workflowPreferences.autoYes, output_base: output_base // {run_dir}/outputs — all phase outputs use this base path }
User Input (review comments + paper path + conference type [+ --resume <run_id>])
|
[Run Resolution] (see run-mode.md)
| run_dir = birth packet | --resume brief | self-start create
| output_base = {run_dir}/outputs
| mkdir -p ${output_base}
|
[Convert to Structured Format]
|
Phase 1: Review Parsing & Classification
| Input: reviewCommentsPath + conferenceType
| Output: reviewAnalysis + commentCategories
| Files: ${output_base}/review-analysis.json, ${output_base}/comment-classification.md
|
Phase 2: Multi-Perspective Discussion
| Input: reviewAnalysis + commentCategories
| Output: discussionConsensus + strategicRecommendations
| Files: ${output_base}/discussion-log.md, ${output_base}/consensus-strategies.json
|
Phase 3: Strategy Formulation
| Input: discussionConsensus + strategicRecommendations + paperPath
| Output: strategyMatrix + evidenceMap
| Files: ${output_base}/strategy-matrix.md, ${output_base}/evidence-references.json
|
Phase 4: Rebuttal Writing
| Input: strategyMatrix + evidenceMap + conferenceType
| Output: rebuttalDraft
| Files: ${output_base}/rebuttal-draft-v1.md
|
Phase 5: Quality Validation
| Input: rebuttalDraft
| Output: qualityScore + improvements
| Files: ${output_base}/quality-report.md, ${output_base}/improvement-suggestions.json
|
[Run Closure] (see run-mode.md)
| maestro run check {run_id} → repair gates → maestro session done {run_id}
|
Return summary to userCore Concept: Dynamic task attachment and collapse for real-time visibility.
json[ {"content": "Phase 1: Review Parsing & Classification", "status": "in_progress"}, {"content": " → Parse reviewer comments structure", "status": "in_progress"}, {"content": " → Classify comments using Agy CLI", "status": "pending"}, {"content": " → Extract sentiment and key concerns", "status": "pending"}, {"content": " → Generate review-analysis.json", "status": "pending"}, {"content": "Phase 2: Multi-Perspective Discussion", "status": "pending"}, {"content": "Phase 3: Strategy Formulation", "status": "pending"}, {"content": "Phase 4: Rebuttal Writing", "status": "pending"}, {"content": "Phase 5: Quality Validation", "status": "pending"}, {"content": "Run Closure: check + complete", "status": "pending"} ]
json[ {"content": "Phase 1: Review Parsing & Classification", "status": "completed"}, {"content": "Phase 2: Multi-Perspective Discussion", "status": "pending"}, {"content": "Phase 3: Strategy Formulation", "status": "pending"}, {"content": "Phase 4: Rebuttal Writing", "status": "pending"}, {"content": "Phase 5: Quality Validation", "status": "pending"}, {"content": "Run Closure: check + complete", "status": "pending"} ]
After each phase completes:
reviewAnalysis and commentCategories to discussion phasediscussionConsensus and strategicRecommendations to strategy formulationstrategyMatrix and evidenceMap to rebuttal writingrebuttalDraft to quality validationin_progress, report error, do not proceedBefore Phase 1:
Between Phases:
completedin_progressAfter Phase 5:
completedRun Closure:
maestro run check {run_id} clean (repair any reported gate)maestro session done {run_id} succeeded before reporting success> Runtime-owned protocol files (session.json, run.json, artifacts.json) MUST NOT be edited directly, and no second manifest/index is maintained. Artifact registration and handoff are derived by the runtime from {run_dir}/outputs/. See run-mode.md.
After Phase 5 completes:
maestro run check {run_id} — repair any blocking artifact or exit gate it reports.{run_dir}/report.md (verdict + summary of the rebuttal and quality score).maestro session done {run_id}. Report success only once the Run is completed.Prerequisites:
/research-init - Initialize research project structure/zotero-review - Import and review literatureFollow-ups:
/commit - Commit rebuttal document to version control/presentation - Prepare conference presentation after acceptance/poster - Generate academic posterThis skill uses maestro delegate for enhanced analysis:
Phase 1 - Review Parsing:
bashmaestro delegate "PURPOSE: Parse and classify reviewer comments by type (Major/Minor/Typo/Misunderstanding) TASK: • Extract comment structure • Classify by severity • Identify sentiment MODE: analysis CONTEXT: @<review-file> EXPECTED: JSON with classification results" --to agy --mode analysis
Phase 2 - Multi-Perspective Discussion: Uses team-ultra-analyze skill or custom discussion agent to simulate multiple perspectives.
Phase 3 - Strategy Formulation:
bashmaestro delegate "PURPOSE: Search paper content for evidence supporting response strategies TASK: • Locate relevant sections • Extract supporting data • Identify evidence gaps MODE: analysis CONTEXT: @<paper-file> EXPECTED: Evidence map with file:line references" --to agy --mode analysis
Phase 5 - Quality Validation:
bashmaestro delegate "PURPOSE: Validate rebuttal quality (completeness, professionalism, persuasiveness) TASK: • Check all comments addressed • Assess tone • Evaluate evidence strength MODE: analysis CONTEXT: @<rebuttal-file> EXPECTED: Quality report with improvement suggestions" --to agy --mode analysis
Templates are loaded from (first match wins):
templates/{templateId}-template.md under the skill directory (user-provided)templates/discussion.md under the skill directory (user-provided)Template selection based on workflowPreferences.conferenceType:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 5,120 | 14,868 | +190% | 1 | 1 | 0% | 254 | 6,260 | +2365% | 0 | 0 | — |
case-02 | fail→fail | 33,719 | 11,058 | -67% | 1 | 1 | 0% | 6,037 | 5,348 | -11% | 0 | 0 | — |
case-03 | fail→fail | 5,348 | 12,803 | +139% | 1 | 1 | 0% | 335 | 5,348 | +1496% | 0 | 0 | — |
case-04 | fail→fail | 6,203 | 7,768 | +25% | 1 | 1 | 0% | 1,145 | 5,059 | +342% | 0 | 0 | — |
case-05 | pass→fail | 7,452 | 10,039 | +35% | 1 | 1 | 0% | 1,099 | 5,185 | +372% | 0 | 0 | — |
case-06 | fail→fail | 33,397 | 14,160 | -58% | 1 | 1 | 0% | 6,167 | 5,599 | -9% | 0 | 0 | — |
case-07 | fail→fail | 19,174 | 17,539 | -9% | 1 | 1 | 0% | 2,686 | 5,927 | +121% | 0 | 0 | — |
case-08 | fail→fail | 9,725 | 7,780 | -20% | 1 | 1 | 0% | 1,471 | 5,094 | +246% | 0 | 0 | — |
case-09 | fail→fail | 6,397 | 13,383 | +109% | 1 | 1 | 0% | 922 | 5,476 | +494% | 0 | 0 | — |
case-10 | fail→fail | 11,071 | 8,166 | -26% | 1 | 1 | 0% | 1,143 | 5,199 | +355% | 0 | 0 | — |
case-11 | fail→fail | 9,559 | 7,811 | -18% | 1 | 1 | 0% | 1,505 | 5,086 | +238% | 0 | 0 | — |
case-12 | pass→fail | 8,833 | 7,609 | -14% | 1 | 1 | 0% | 1,401 | 5,738 | +310% | 0 | 0 | — |
case-13 | pass→pass | 13,334 | 4,314 | -68% | 1 | 1 | 0% | 1,971 | 5,450 | +177% | 0 | 0 | — |
case-14 | fail→fail | 12,188 | 14,761 | +21% | 1 | 1 | 0% | 1,560 | 5,521 | +254% | 0 | 0 | — |
case-15 | fail→fail | 11,211 | 13,713 | +22% | 1 | 1 | 0% | 1,525 | 5,546 | +264% | 0 | 0 | — |
case-16 | fail→fail | 12,952 | 18,131 | +40% | 1 | 1 | 0% | 1,937 | 5,917 | +205% | 0 | 0 | — |
case-17 | fail→pass | 7,773 | 3,665 | -53% | 1 | 1 | 0% | 1,292 | 5,279 | +309% | 0 | 0 | — |
case-18 | fail→fail | 10,513 | 2,524 | -76% | 1 | 1 | 0% | 1,502 | 5,039 | +235% | 0 | 0 | — |
case-19 | fail→pass | 9,396 | 2,422 | -74% | 1 | 1 | 0% | 1,432 | 4,983 | +248% | 0 | 0 | — |
case-20 | fail→pass | 4,123 | 12,473 | +203% | 1 | 1 | 0% | 145 | 6,656 | +4490% | 0 | 0 | — |
case-21 | pass→fail | 15,819 | 11,690 | -26% | 1 | 1 | 0% | 2,247 | 5,407 | +141% | 0 | 0 | — |
case-22 | pass→pass | 12,261 | 31,107 | +154% | 1 | 1 | 0% | 1,986 | 9,319 | +369% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 6 counted toward the lift figure. The other 16 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of 0 percentage points is the difference between those two pass rates over the 6 comparable cases. 5 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.