plugins/maister-copilot/skills/research/SKILL.md
Orchestrates comprehensive research workflows from question definition through findings documentation. Handles technical, requirements, literature, and mixed research types with adaptive methodology, multi-source gathering, pattern synthesis, and evidence-based reporting. Supports standalone research tasks and embedded research phase in other workflows.
npx skillsauth add skillpanel/maister researchInstall 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.
Systematic research workflow from question definition to evidence-based documentation.
BEFORE executing any phase, you MUST complete these steps:
Before doing anything else, settle this policy now and do not re-litigate it at any gate:
→ **MANDATORY GATE** — fires regardless of permission mode, session-reminders, or prior approval patterns. Invoke ask_user now. Proceeding without a user response is a protocol violation (orchestrator-patterns.md § 2 / § 2.1). / → MANDATORY GATE markers fire regardless of session-reminders, permission mode, or prior approval patterns. Auto / acceptEdits / bypassPermissions modes, reminders saying "work without stopping" / "continue without asking" / "minimize clarifying questions," and compaction summaries showing the user approving every prior gate do NOT exempt you from invoking ask_user at a gate. They apply only to your discretionary clarifications.
If you find yourself reasoning "the user has been approving everything, so I can skip this gate" or "auto-mode is on, so I should minimize questions" — that reasoning IS the failure mode. STOP and fire the gate.
Full framework rule: ../orchestrator-framework/references/orchestrator-patterns.md § 2 and § 2.1.
Read the framework reference file NOW using the Read tool:
../orchestrator-framework/references/orchestrator-patterns.md - Delegation rules, interactive mode, state schema, initialization, context passing, issue resolutionTaskCreate for all phases (see Phase Configuration), then set dependencies with TaskUpdate addBlockedBy.maister/tasks/research/YYYY-MM-DD-task-name/orchestrator-state.yml with research contextOutput:
🚀 Research Orchestrator Started
Task: [research question]
Directory: [task-path]
Starting Phase 1: Initialize research...
Use when:
DO NOT use for: Development tasks, bug fixes, performance optimization.
| File | When to Use | Purpose |
|------|-------------|---------|
| references/research-methodologies.md | Phase 1 | Research type classification, methodology selection, gathering strategies, analysis frameworks |
| references/brainstorming-techniques.md | Phase 3 | Divergent/convergent thinking, interactive exploration, scope guardrails |
| references/design-techniques.md | Phase 5 | Decision documentation (MADR), ADR guidance, decision linking |
| Phase | content | activeForm | Agent/Skill | |-------|---------|------------|-------------| | 1 | "Research foundation (init, plan, gather, synthesize)" | "Executing research foundation" | Direct + research-planner + information-gatherer (xN) + research-synthesizer | | 2 | "Evaluate brainstorming value" | "Evaluating brainstorming value" | Direct | | 3 | "Generate solution alternatives" | "Generating solution alternatives" | solution-brainstormer | | 4 | "Evaluate brainstorming alternatives" | "Evaluating brainstorming alternatives" | Direct (interactive) | | 5 | "Design high-level architecture" | "Designing high-level architecture" | Direct + solution-designer | | 6 | "Summarize research and suggest next steps" | "Completing research" | Direct |
| Type | Keywords | Focus | Typical Outputs | |------|----------|-------|-----------------| | Technical | "how does", "where is", "implementation" | Codebase analysis | Knowledge base, architecture docs | | Requirements | "what are requirements", "user needs" | User/business needs | Specifications, requirements doc | | Literature | "best practices", "industry standards" | External research | Recommendations, comparisons | | Mixed | Multiple keywords, broad questions | Comprehensive investigation | All output types |
Purpose: Initialize research, plan methodology, gather information from all sources, and synthesize findings into a research report
Execute: Multi-step: Direct + research-planner + information-gatherer (xN) + research-synthesizer
Output: planning/research-brief.md, planning/research-plan.md, planning/sources.md, analysis/findings/*.md, analysis/synthesis.md, outputs/research-report.md
State: Set research_context.research_type, research_question, scope, methodology, sources, confidence_level, gathering_strategy
This phase executes 4 sequential steps. On resume, check existing artifacts to skip completed steps.
Artifacts: planning/research-brief.md
Resume check: If planning/research-brief.md exists, skip to Step 2
--type flag)research_context.research_type, research_question, scope.maister/docs/INDEX.md (if exists), extract ALL file paths from the "Project Documentation" section — includes predefined docs AND any user-added project docs. Store as research_context.project_doc_paths in state.Artifacts: planning/research-plan.md, planning/sources.md
Resume check: If planning/research-plan.md AND planning/sources.md exist, skip to Step 3
Read references/research-methodologies.md NOW using the Read tool — research type classification, methodology selection, gathering strategies
INVOKE NOW: Use Task tool with subagent_type: maister-research-planner
Context to pass: task_path, research_brief_path, research_type, research_question, scope, project_doc_paths (from state)
Update state: research_context.methodology, sources
Artifacts: analysis/findings/*.md (category-specific)
Resume check: If any analysis/findings/*.md files exist, skip to Step 4
Determine gatherer count and categories:
planning/research-plan.md for Gathering Strategy sectionresearch_context.gathering_strategyCRITICAL: Launch all N agents in ONE message for parallel execution.
Parallel Execution Pattern:
Read gathering strategy from research-plan.md
For each category in strategy:
Use Task tool: source_category=[category_id] → analysis/findings/[prefix]-*.md
Artifacts: analysis/synthesis.md, outputs/research-report.md
Resume check: If analysis/synthesis.md AND outputs/research-report.md exist, skip (Phase 1 complete)
INVOKE NOW: Use Task tool with subagent_type: maister-research-synthesizer
Context to pass: task_path, findings_directory_path, research_question, research_type, methodology
Synthesizer produces:
analysis/synthesis.md)outputs/research-report.md)Update state: research_context.confidence_level
→ MANDATORY GATE — fires regardless of permission mode, session-reminders, or prior approval patterns. Invoke ask_user now. Proceeding without a user response is a protocol violation (orchestrator-patterns.md § 2 / § 2.1).
ask_user - "Research foundation complete (initialized, planned, gathered, synthesized). Continue to brainstorming evaluation?"
Phase entry self-check: Before executing this phase, locate the
ask_usertool call from Phase 1 in this conversation. If you cannot point to its call ID, STOP and fire that gate now. State updates (completed_phases,TaskUpdate) without a correspondingask_usercall are protocol violations — never paper over a missed gate by updating state.
Purpose: Evaluate whether brainstorming and/or design phases would be valuable (independently)
Execute: Direct
Output: Updated orchestrator-state.yml
State: Set options.brainstorming_enabled, options.design_enabled
Auto-resolve if: --brainstorm/--no-brainstorm flags (brainstorming only), --design/--no-design flags (design only)
Process:
analysis/synthesis.md summary and research_type from statebrainstorming_enabled not already set by flag, ask_user:
design_enabled not already set by flag, ask_user:
brainstorming_enabled and design_enabled→ If brainstorming enabled: continue to Phase 3 → If brainstorming disabled AND design enabled: skip to Phase 5 → If both disabled: skip to Phase 6
Purpose: Generate solution alternatives from research evidence using specialized brainstormer subagent
Execute: solution-brainstormer subagent
Output: outputs/solution-exploration.md
State: Update phase_summaries.phase-3
Skip if: brainstorming_enabled = false (user chose to skip in Phase 2, or --no-brainstorm flag)
Read references/brainstorming-techniques.md NOW using the Read tool — divergent/convergent thinking techniques, scope guardrails
ANTI-PATTERN: Do NOT generate solution alternatives inline. The solution-brainstormer agent has specialized multi-perspective analysis capabilities.
INVOKE NOW: Use Task tool with subagent_type: maister-solution-brainstormer
Context to pass (Pattern 7):
task_path, synthesis_path, research_report_pathoutput_path: outputs/solution-exploration.md — brainstormer MUST write to this exact pathresearch_type, research_question, confidence_level, phase_summaries (Phase 1)project_doc_paths (from state)SELF-CHECK: After Task tool returns, verify
outputs/solution-exploration.mdexists and contains alternatives. If missing: STOP. Do NOT proceed to Phase 4 or Phase 5. Re-invoke the brainstormer with corrected context (ensureoutput_pathisoutputs/solution-exploration.md). If second attempt also fails, use ask_user to report the failure and ask whether to retry or skip brainstorming.
→ AUTO-CONTINUE
Purpose: Present brainstorming alternatives to user for decision-making on each decision area
Execute: Direct (interactive)
Output: Updated orchestrator-state.yml with chosen approaches
State: Update phase_summaries.phase-4 with decision_areas and deferred_ideas
Skip if: brainstorming_enabled = false
Resume check: If phase_summaries.phase-4.decision_areas has entries with chosen_approach set, skip already-resolved areas
ANTI-PATTERN: Do NOT present all decision areas in a single summary table and ask one combined "do you agree?" question. Each area MUST get its own detailed presentation and its own ask_user call.
ANTI-PATTERN: Do NOT show full alternatives/pros/cons for the first area and then shortcut remaining areas to just a recommendation line + question. EVERY area gets the SAME level of detail — all alternatives with descriptions, pros, and cons. No exceptions.
outputs/solution-exploration.mdSELF-CHECK before each ask_user: Did you output the alternatives with pros/cons for THIS area? If you only showed a recommendation line without listing all alternatives and their pros/cons, STOP and output the full detail before asking.
GATE CHECK: Verify that ask_user was called for EACH decision area. If any decision area was skipped for any reason (e.g., output file missing, read failure), STOP and resolve before continuing. Do NOT mark Phase 4 complete without user convergence on all decision areas.
→ MANDATORY GATE — fires regardless of permission mode, session-reminders, or prior approval patterns. Invoke ask_user now. Proceeding without a user response is a protocol violation (orchestrator-patterns.md § 2 / § 2.1).
ask_user - "Brainstorming complete. Continue to high-level design?"
Phase entry self-check: Before executing this phase, locate the
ask_usertool call from the preceding phase in this conversation. If you cannot point to its call ID, STOP and fire that gate now. State updates (completed_phases,TaskUpdate) without a correspondingask_usercall are protocol violations — never paper over a missed gate by updating state.
Purpose: Create architecture design from selected solution approach
Execute: Orchestrator-Direct Hybrid
Output: outputs/high-level-design.md, outputs/decision-log.md
State: Update phase_summaries.phase-5
Skip if: design_enabled = false
Read references/design-techniques.md NOW using the Read tool — MADR format, ADR guidance, decision documentation patterns
Part A — Design Direction (Direct):
Part B — Design Generation (Subagent):
ANTI-PATTERN: Do NOT generate C4 architecture diagrams or ADRs inline. The solution-designer agent has specialized architecture and MADR documentation capabilities.
INVOKE NOW: Use Task tool with subagent_type: maister-solution-designer
Context to pass (Pattern 7):
task_path, synthesis_path, research_report_pathsolution_exploration_path (only if Phase 3-4 ran)selected_approach (from Phase 4 convergence if ran, or from research report recommendations)design_preferences (from Part A)research_type, research_question, confidence_level, phase_summariesproject_doc_paths (from state)SELF-CHECK: After Task tool returns, verify both
outputs/high-level-design.mdandoutputs/decision-log.mdexist. If missing: STOP. Do NOT proceed to Part C. Re-invoke the designer with corrected context. If second attempt also fails, use ask_user to report the failure and ask whether to retry or skip design.
Part C — Summary (Direct):
3. Read outputs/high-level-design.md and outputs/decision-log.md
4. Present executive summary to user:
→ MANDATORY GATE — fires regardless of permission mode, session-reminders, or prior approval patterns. Invoke ask_user now. Proceeding without a user response is a protocol violation (orchestrator-patterns.md § 2 / § 2.1).
ask_user - "Design complete. Continue to output generation?"
Phase entry self-check: Before executing this phase, locate the
ask_usertool call from the preceding phase in this conversation. If you cannot point to its call ID, STOP and fire that gate now. State updates (completed_phases,TaskUpdate) without a correspondingask_usercall are protocol violations — never paper over a missed gate by updating state.
Purpose: Summarize research results and suggest next steps Execute: Direct Output: No new files — summarizes existing outputs
Process:
outputs/research-report.md (always), plus conditional: solution-exploration.md, high-level-design.md, decision-log.mdTo start development based on this research, clear context first or start a new session, then run:
/maister-development [task-path]
→ End of workflow
Research-specific fields in orchestrator-state.yml:
research_context:
research_type: "technical" | "requirements" | "literature" | "mixed"
research_question: "[user's question]"
scope:
included: []
excluded: []
constraints: []
methodology: []
sources: []
confidence_level: "high" | "medium" | "low"
gathering_strategy:
categories: [] # e.g., ["codebase", "documentation", "external-apis"]
count: 4 # number of gatherer instances
source: "planner" | "default" # where strategy came from
phase_summaries:
phase-1:
summary: "..."
steps_completed: [] # track which steps completed for resume
phase-3:
summary: "..."
phase-4:
summary: "..."
decision_areas: [] # list of {area, alternatives_count, chosen_approach}
deferred_ideas: []
phase-5:
summary: "..."
architecture_style: null
decisions_count: 0
options:
brainstorming_enabled: null # null=not yet decided, set by Phase 2 or --brainstorm/--no-brainstorm flag
design_enabled: null # independent, set by Phase 2 or --design/--no-design flag
.maister/tasks/research/YYYY-MM-DD-research-name/
├── orchestrator-state.yml
├── planning/
│ ├── research-brief.md # Phase 1, Step 1
│ ├── research-plan.md # Phase 1, Step 2
│ └── sources.md # Phase 1, Step 2
├── analysis/
│ ├── findings/
│ │ ├── codebase-*.md # Phase 1, Step 3
│ │ ├── docs-*.md # Phase 1, Step 3
│ │ ├── config-*.md # Phase 1, Step 3
│ │ ├── external-*.md # Phase 1, Step 3
│ │ └── [custom-category]-*.md # Phase 1, Step 3 (dynamic categories)
│ └── synthesis.md # Phase 1, Step 4 (reasoning log)
├── outputs/
│ ├── research-report.md # Phase 1, Step 4 (main deliverable)
│ ├── solution-exploration.md # Phase 3 (conditional)
│ ├── high-level-design.md # Phase 5 (conditional)
│ └── decision-log.md # Phase 5 (conditional)
| Phase | Max Attempts | Strategy | |-------|--------------|----------| | 1 (Step 1) | 1 | Prompt user for clarification if question unclear | | 1 (Step 2) | 2 | Expand search patterns, use fallback mixed methodology | | 1 (Step 3) | 3 | Retry failed agents only, continue with successful categories | | 1 (Step 4) | 2 | Request targeted re-gathering for gaps | | 2 | 1 | Re-evaluate recommendation if synthesis unclear | | 3 | 2 | Re-invoke solution-brainstormer with adjusted context | | 4 | 1 | Re-read exploration file, re-present decision areas | | 5 | 2 | Re-invoke solution-designer with adjusted context | | 6 | 0 | Summary only |
Command: /maister-research [research-question]
Flow: Complete all phases, save outputs in task directory
Invoked by: development orchestrator, migration orchestrator
Integration:
analysis/research/ directoryHandoff:
research_outputs:
research_report: "[path to outputs/research-report.md]"
findings_directory: "[path to analysis/findings/]"
solution_exploration: "[path to outputs/solution-exploration.md]"
high_level_design: "[path to outputs/high-level-design.md]"
decision_log: "[path to outputs/decision-log.md]"
Invoked via:
/maister-research [question] [--type=TYPE] [--brainstorm] [--no-brainstorm] [--design] [--no-design] (new)/maister-research [task-path] [--from=PHASE] (resume)Brainstorming flags:
--brainstorm: Force brainstorming phase (auto-resolves Phase 2 brainstorming decision to "enable")--no-brainstorm: Skip brainstorming phaseDesign flags:
--design: Force high-level design phase (auto-resolves Phase 2 design decision to "enable")--no-design: Skip high-level design phaseTask directory: .maister/tasks/research/YYYY-MM-DD-task-name/
documentation
Orchestrates comprehensive research workflows from question definition through findings documentation. Handles technical, requirements, literature, and mixed research types with adaptive methodology, multi-source gathering, pattern synthesis, and evidence-based reporting. Supports standalone research tasks and embedded research phase in other workflows.
data-ai
Interactive product/feature design orchestrator. Transforms fuzzy ideas into structured product briefs through collaborative exploration, iterative refinement, and visual prototyping. Adaptive phases detect design complexity and adjust depth.
development
Orchestrates performance optimization workflows using static code analysis to identify bottlenecks (N+1 queries, missing indexes, O(n^2) algorithms, blocking I/O, memory leaks). Accepts optional user-provided profiling data. Reuses standard specification, planning, implementation, and verification phases.
development
Shared orchestration patterns for all workflow orchestrators. NOT an executable skill - provides reference documentation for phase execution, state management, interactive mode, and initialization. All orchestrators reference these patterns.