Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsBlogPro
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges
  • Chrome Extension
  • Skill Manager

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Research Methodology

ASecurity

Unified research pipeline for AI agents — 5-phase (Plan→Source→Curate→Analyze→Output) with state-tracking, saturation detection, anti-hallucination guards, PIVOT/REFINE logic, and QCE output. Invoke when user says "研究 X", "研究一下", "深入了解", "调研", "landscape", "对比研究", "deep research", or similar multi-source synthesis tasks.

3 stars
0 votes
0 copies
0 views
Added 10/6/2026
ai-agentsgobashrailsgit

Works with

claude codecli

Security Analysis

A100/100

Pro scans all 12 files and shows the line behind each finding

Scanned 10/6/2026

$npx -y skills add Sheldon-92/TAD --skill research-methodology --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Research Methodology?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Research Methodology
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/sheldon-92-research-methodology/badge)](https://www.skillsdirectory.com/skills/sheldon-92-research-methodology)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
Files
SKILL.md
---
name: research-methodology
description: Unified research pipeline for AI agents — 5-phase (Plan→Source→Curate→Analyze→Output) with state-tracking, saturation detection, anti-hallucination guards, PIVOT/REFINE logic, and QCE output. Invoke when user says "研究 X", "研究一下", "深入了解", "调研", "landscape", "对比研究", "deep research", or similar multi-source synthesis tasks.
keywords: ["研究", "research", "调研", "landscape", "对比研究", "deep research", "分析", "综述", "竞品", "市场调研", "技术调研"]
type: orchestration-router
---

# Research Methodology Capability Pack v1.0

**CONSUMES**: User research question + optional existing context
**PRODUCES**: QCE-structured research report + extracted AC list + `.research/` session artifacts

> This file is the **orchestration router**. Phase logic lives in `references/*.md` — load the relevant reference file when entering each phase. Do NOT implement all logic inline here.

---

## Step 0: System Preflight + Session Management

Before starting any research:

### 0.1 NotebookLM Availability Check
```
notebooklm_bin="$HOME/.tad-notebooklm-venv/bin/notebooklm"
```
- If `test -x "$notebooklm_bin"` → **FULL MODE**: all 5 phases + 4-layer anti-hallucination
- If check fails → **DEGRADED MODE**: announce "⚠️ NotebookLM not available. Running in degraded mode (WebSearch only). For full capability: bash .tad/cross-model/setup-notebooklm.sh" and continue with per-phase fallbacks defined in references/sourcing.md and references/analysis.md

### 0.2 Concurrent Session Guard (FR11)
Check if `.research/research-state.yaml` exists:

**If NOT found** → fresh session, create `.research/` directory, proceed to Phase 1.

**If found** → read `phase` field:
- If `phase == complete` → archive to `.research/sessions/{session_id}/`, start fresh
- If `phase != complete` → this is an active session. Use AskUserQuestion:
  - Question: "已有进行中的研究 '{topic}'(当前阶段: {phase})。怎么处理?"
  - Options: "恢复现有研究" / "归档并开始新研究" / "取消"
  - If resume → proceed to 0.3 (crash recovery validation)
  - If archive → move state to `.research/sessions/{session_id}/`, start fresh
  - If cancel → return to standby

### 0.3 Crash Recovery Validation (FR10)
Only runs when resuming an existing session:
- Stale check: if `updated` timestamp > 7 days ago → AskUserQuestion "发现 7 天前的未完成研究 '{topic}'。恢复还是重新开始?"
- Notebook validation (FULL MODE only): run `"$notebooklm_bin" source list -n {notebook_id}` — if fails → warn "笔记本 {notebook_id} 不可访问,将跳过 NotebookLM 步骤" and downgrade to DEGRADED MODE for this session
- Announce: "恢复研究: '{topic}', 当前阶段: {phase}" → enter that phase directly

### 0.4 Session Budget Guardrails (NFR6)
Default limits (user can override via AskUserQuestion when limit reached):
- Max ask rounds per session: **10** (includes REFINE re-asks and PIVOT new-angle asks — every `notebooklm ask` call increments `analyze.ask_rounds`)
- Max sources per notebook: **100**
- Max PIVOTs per session: **3** (cross-question total; after 3 PIVOTs, end session with PARTIAL output and document remaining gaps)

**Concurrent session note**: `.research/research-state.yaml` is a single-writer file. If two Claude Code sessions start researching simultaneously, the last writer wins. Always check §0.2 at session start and look for mismatched `session_id` or `topic` in the state file — if the file's `topic` doesn't match the current request, treat as concurrent session conflict and present §0.2 options.

---

## Phase 1: PLAN

**State**: `phase: plan`
**Reference**: `references/planning.md`

Load `references/planning.md` for detailed protocols. Summary:

1. **Decompose** research question into a problem tree (≥3 sub-questions)
2. **Define** source strategy (GitHub-First by default; see references/sourcing.md)
3. **Define** success criteria ("能回答完整决策树" is a valid form)
4. **Check dead-end registry**: before finalizing question tree, scan `.research/dead-ends.yaml` for each sub-question. Dead-end schema:

```yaml
dead_ends:
  - id: "DE-001"
    question: "What tools exist for automated grounded theory coding?"
    scope: "exact"          # exact | fuzzy
    reason: "No CLI tools found; all solutions are GUI-only SaaS"
    contradicting_evidence: "ASReview exists but is active-learning, not grounded theory"
    recorded_at: "2026-05-08"
    session_id: "RS-20260508-001"
    ttl_days: 90
    overridable: true
```
  - If match found AND not expired (recorded_at + ttl_days > today) AND overridable=true → AskUserQuestion "此问题曾标记为死胡同: {reason}。要继续研究吗?"
  - If not overridable → skip that question, note in plan

5. **Initialize** `.research/research-state.yaml` (template in §4 of this file)

**GATE H1**: Use AskUserQuestion — "请审查研究计划:\n[问题树]\n[来源策略]\n[成功标准]\n批准还是修改?"
- Options: "批准,继续 SOURCE" / "修改问题树" / "修改来源策略"
- On approval: write `plan.gate_h1: approved` to state file → proceed to Phase 2

---

## Phase 2: SOURCE

**State**: `phase: source`
**Reference**: `references/sourcing.md`

Load `references/sourcing.md` for GitHub-First strategy details.

**FULL MODE**:
1. Execute GitHub-First sourcing (awesome-lists → company repos → tool repos → docs → articles)
2. Add sources to NotebookLM: `"$notebooklm_bin" source add -n {notebook_id} "{url}"`
3. Track: update `source.total_added` in state file
4. Source budget: if total_added approaches 100 → AskUserQuestion before adding more

**DEGRADED MODE**:
1. Execute WebSearch (≥3 queries per sub-question from problem tree)
2. Save results in context (no notebook) — note source URLs for manual citation in Phase 5
3. Layer 1 anti-hallucination: use WebFetch to confirm each URL returns HTTP 200

*No human gate after SOURCE — automated phase.*

---

## Phase 3: CURATE

**State**: `phase: curate`
**Reference**: `references/quality-control.md`

Load `references/quality-control.md` for tier criteria and cleanup protocols.

**FULL MODE**:
1. Clean error sources (those that failed to import)
2. Deduplicate (same URL added multiple times)
3. Score each source: T1 (official/academic) / T2 (industry) / T3 (community)
4. Run: `bash scripts/source-quality.sh .research/research-state.yaml`
   - Exit 0 (T1 ratio ≥ 0.30) → proceed
   - Exit 1 (T1 ratio < 0.30) → recommend adding T1 sources, AskUserQuestion to continue anyway
5. Update state: `curate.tier1_count`, `tier2_count`, `tier3_count`, `tier1_ratio`

**DEGRADED MODE**: N/A (no notebook to curate — skip to Phase 4)

**GATE H2**: Use AskUserQuestion — "来源质量报告:T1={N} T2={N} T3={N} (T1 占比 {ratio}%)。继续分析还是先补充 T1 来源?"
- Options: "继续分析" / "先补充来源再继续"
- On approval: write `curate.gate_h2: approved` → proceed to Phase 4

---

## Phase 4: ANALYZE

**State**: `phase: analyze`
**Reference**: `references/analysis.md`

Load `references/analysis.md` for ask loop, CRAG, and PIVOT/REFINE protocols.

**FULL MODE**:
1. Generate baseline report: `"$notebooklm_bin" summary --topics -n {notebook_id}`
2. Run ask loop — for each sub-question in problem tree:
   - Ask: `"$notebooklm_bin" ask -n {notebook_id} "{question}"`
   - Extract claims (### Claim: blocks) and count NEW findings vs prior rounds
   - Update `analyze.new_findings_per_round[]` in state file
   - Run saturation check: `bash scripts/saturation-check.sh .research/research-state.yaml`
     - `SATURATED` → stop loop, proceed to Phase 5
     - `DIMINISHING` → AskUserQuestion "研究收敛中 — 继续还是进入 OUTPUT?"
     - `CONTINUE` → next question
   - Check for gap signals (see references/analysis.md for CRAG patterns)
   - Apply PIVOT/REFINE decision tree (see references/analysis.md)
3. Round budget: if ask_rounds reaches 10 → AskUserQuestion "已完成 10 轮问答。继续还是进入 OUTPUT?"

**DEGRADED MODE**:
1. Execute WebSearch synthesis for each sub-question
2. Synthesize findings in context (no cross-source NotebookLM ask)
3. Layer 2 anti-hallucination: agent must include exact quote from source (not paraphrased)

*No human gate — automated, but PIVOT decisions require user confirmation (see references/analysis.md).*

---

## Phase 5: OUTPUT

**State**: `phase: output` → `complete`
**Reference**: `references/output.md`

Load `references/output.md` for QCE format spec and AC extraction rules.

1. Generate QCE report to `.research/report.md` (project-level, not session dir)
2. Extract ACs to `.research/acs.md` (project-level, not session dir)
3. Update dead-end registry: add entries for any Claim with confidence=low and zero contradicting evidence
4. Update state: `output.qce_report_path: .research/report.md`, `output.extracted_acs_path: .research/acs.md`

**GATE H3**: Use AskUserQuestion — "研究完成。请审查报告和 AC 列表。"
- Options: "批准,归档研究" / "需要补充某个方向" / "需要修改输出"
- On approval (archive only on user approval — do NOT archive before gate):
  1. `mkdir -p .research/sessions/{session_id}/`
  2. Move: `.research/report.md` → `.research/sessions/{session_id}/report.md`
  3. Move: `.research/acs.md` → `.research/sessions/{session_id}/acs.md`
  4. Move: `.research/research-state.yaml` → `.research/sessions/{session_id}/research-state.yaml` (update phase: complete first)
  5. Update moved state copy: set `phase: complete`, `output.qce_report_path` and `output.extracted_acs_path` to final session paths

---

## §4: State File Template

Create at `.research/research-state.yaml` on session start:

```yaml
session_id: "RS-{YYYYMMDD}-{001}"
topic: "{research question}"
phase: "plan"  # plan | source | curate | analyze | output | complete
notebook_id: null  # set after NotebookLM notebook creation
mode: "full"  # full | degraded
created: "{ISO timestamp}"
updated: "{ISO timestamp}"

plan:
  question_tree: []
  source_strategy: "github-first"
  success_criteria: ""
  gate_h1: pending  # pending | approved | rejected

source:
  total_added: 0
  errors_cleaned: 0
  sources_healthy: 0

curate:
  tier1_count: 0
  tier2_count: 0
  tier3_count: 0
  tier1_ratio: 0.0
  gate_h2: pending  # pending | approved | rejected

analyze:
  ask_rounds: 0
  new_findings_per_round: []  # [12, 8, 6, 4, 1, ...]
  saturation_reached: false
  pivots: []
  refines: []
  # refine entry: {round: N, reason: "gap in X"}
  # pivot entry: {round: N, old_angle: "...", new_angle: "..."}

output:
  qce_report_path: ""
  extracted_acs_path: ""
  gate_h3: pending  # pending | approved | rejected
```

---

## §5: Anti-Hallucination Summary

| Layer | Mechanism | FULL MODE | DEGRADED MODE |
|-------|-----------|-----------|---------------|
| 1 | URL existence | NotebookLM source add validates | WebFetch + HTTP 200 check |
| 2 | Citation traceability | NotebookLM citations native | Agent includes exact quote |
| 3 | QCE structure | Contradictory evidence required | Same |
| 4 | Dead-end registry | Prevents citing refuted findings | Same |

---

## §6: Routing Priority (NFR1)

This pack's keywords are a **strict superset** of research-notebook and research-github SKILL keywords. When CLAUDE.md research routing triggers, this pack takes priority.

Trigger keywords: 研究, 调研, 研究一下, 深入了解, landscape, 对比, 对比研究, 比较, 分析市场, 深度调查, deep research, investigate, research, survey, systematic review, 行业分析, 技术调研, 竞品分析, 找一下, 了解一下, 看看有什么, 有哪些工具

After this pack is validated in ≥1 real project, mark research-notebook and research-github SKILLs as deprecated per NFR1 deprecation plan.

Attribution

Sheldon-92Sheldon-92
View sourceSee grades on GitHubMore from Sheldon-92 →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Terse caveman voice: answer first, fluff gone, every technical fact kept. Use for /caveman, "caveman mode", "talk like caveman", "be brief", "less tokens". Stays on until "stop caveman" or "normal mode".

1100021 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

698621 votes

Writing Skills

Create and manage Claude Code skills in HASH repository following Anthropic best practices. Use when creating new skills, modifying skill-rules.json, understanding trigger patterns, working with hooks, debugging skill activation, or implementing progressive disclosure. Covers skill structure, YAML frontmatter, trigger types (keywords, intent patterns), UserPromptSubmit hook, and the 500-line rule. Includes validation and debugging with SKILL_DEBUG. Examples include rust-error-stack, cargo-dep...

3931 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3421 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Amp, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Grok Build, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

741 votes
View all in ai-agents →