AgentSkillsCN

research-gathering

在处理文件、URL 或文本输入时使用——将多种格式统一归一化为结构化的引用条目,赋予稳定 ID、校验和以及标准化元数据。

SKILL.md
--- frontmatter
name: research-gathering
description: Use when assembling strategic context - collects and filters research by topic with expiry management to prevent using stale data in decisions
allowed-tools: Read, Grep, Glob

Research Gathering

Purpose

Assemble relevant research context for strategic sessions:

  • Collect sources by topic (competitive-analysis, pricing-strategy, etc.)
  • Filter by recency and expiry dates
  • Extract key insights and quotes
  • Prepare citation-ready references
  • Flag stale data requiring refresh

When to Use This Skill

Activate automatically when:

  • strategy-session workflow needs context for decision-making
  • content-drafting workflow requires research backing
  • User explicitly requests research on a topic
  • Building strategic memos requiring evidence
  • Planning features based on market insights

Research Topics

Supported strategic categories:

  • competitive-analysis - Competitor capabilities, positioning, pricing
  • pricing-strategy - Pricing models, packaging, value perception
  • market-positioning - Market trends, customer segments, messaging
  • product-strategy - Feature prioritization, roadmap direction
  • customer-segmentation - Audience targeting, persona development
  • growth-strategy - Acquisition, retention, expansion tactics

Research Source Schema

Expected structure (from datasets/research/{topic}/{filename}.md):

yaml
---
title: "Source Title"
kind: "file" | "url" | "note"
topic: "strategic-category"
url: "https://..." (if applicable)
checksum: "sha256:..."
added_utc: "YYYY-MM-DDTHH:MM:SSZ"
expiry_date: "YYYY-MM-DD"
author: "Author Name" (optional)
published_date: "YYYY-MM-DD" (optional)
tags: ["keyword1", "keyword2"]
---

# Source Title

## Key Insights
- Insight 1
- Insight 2

## Strategic Applications
- How this informs decisions
- Relevant use cases

## Citations / Quotes
> "Verbatim quote for future citation"
> — Author, Publication (Date)

## Related Internal Links
- [Meeting notes](datasets/meetings/...)
- [Epic](datasets/product/epics/...)

Gathering Process

1. Determine Topic and Filters

Inputs:

  • topic: Strategic category (required)
  • max_age_days: Maximum age of sources (optional, default: varies by type)
  • include_expired: Whether to include expired sources (default: false)
  • keywords: Additional keyword filter (optional)

Expiry guidelines:

Source TypeDefault Max AgeRationale
Frameworks365-730 days (1-2 years)Conceptual models change slowly
Market data90-180 days (3-6 months)Markets evolve quickly
Competitor intel180-365 days (6-12 months)Products change, pricing shifts
Customer insights180-365 days (6-12 months)Needs evolve over time

2. Collect Research Files

Scan path:

code
datasets/research/{topic}/**/*.md

Use Glob to find sources:

code
Glob pattern: datasets/research/{topic}/**/*.md

Example:

code
Topic: competitive-analysis
→ Glob: datasets/research/competitive-analysis/**/*.md

3. Filter by Recency and Expiry

For each source file:

A. Read frontmatter:

yaml
added_utc: "YYYY-MM-DDTHH:MM:SSZ"
expiry_date: "YYYY-MM-DD"

B. Calculate age:

code
age_days = current_date - added_utc.date

C. Check expiry:

code
If expiry_date exists:
  is_expired = current_date > expiry_date
Else:
  Use default expiry based on source type

D. Apply filters:

code
Keep source if:
  (max_age_days not set OR age_days <= max_age_days) AND
  (include_expired=true OR not is_expired)

E. Flag expired sources: If source is expired but included (because include_expired=true):

  • Mark source as "[EXPIRED]" in output
  • Recommend refresh in gathering report

4. Extract Key Information

For each qualifying source:

A. Read content sections:

  • ## Key Insights → Primary takeaways
  • ## Strategic Applications → How to use this research
  • ## Citations / Quotes → Verbatim quotes for citation
  • ## Related Internal Links → Connected context

B. Extract insights: Parse bullet points from "Key Insights" section:

code
- Insight 1: Full text
- Insight 2: Full text

C. Extract quotes: Parse blockquotes from "Citations / Quotes" section:

code
> "Verbatim quote text"
> — Author, Source (Date)

D. Record metadata:

code
{
  "title": "Source Title",
  "path": "/absolute/path/to/source.md",
  "url": "https://..." (if applicable),
  "topic": "strategic-category",
  "added_date": "YYYY-MM-DD",
  "expiry_date": "YYYY-MM-DD",
  "is_expired": true|false,
  "age_days": N,
  "insights": [array of insight strings],
  "quotes": [array of quote objects],
  "related_links": [array of internal link paths]
}

5. Apply Keyword Filters (Optional)

If keywords provided:

Search across:

  • Source title
  • Key insights text
  • Strategic applications text
  • Quote text
  • Tags

Method:

code
Use Grep to search for keywords (case-insensitive):
grep -i "keyword" source.md

Keep source if: Any keyword match found in source content.

6. Organize Output

Group sources by sub-category (if applicable):

Example for "competitive-analysis" topic:

  • Competitor capabilities
  • Pricing comparisons
  • Market positioning
  • Feature gaps

Sort sources by:

  1. Recency (most recent first)
  2. Relevance (if keyword search applied)
  3. Expiry status (non-expired before expired)

7. Generate Gathering Report

Output structure:

markdown
# Research Gathering Report

**Topic**: {topic}
**Sources Found**: {N total}
**Active Sources**: {N non-expired}
**Expired Sources**: {N expired}
**Date Range**: {earliest added} to {most recent added}

## Active Sources

### Source 1: {Title}
- **Added**: {YYYY-MM-DD} ({age_days} days ago)
- **Expires**: {YYYY-MM-DD} ({days_until_expiry} days remaining)
- **Path**: {file_path}
- **URL**: {url} (if applicable)

**Key Insights:**
- Insight 1
- Insight 2

**Strategic Applications:**
- Application 1
- Application 2

**Notable Quotes:**
> "Quote text"
> — Author, Source (Date)

---

### Source 2: {Title}
[... same structure ...]

## Expired Sources (Require Refresh)

### Source 3: {Title} [EXPIRED]
- **Added**: {YYYY-MM-DD}
- **Expired**: {YYYY-MM-DD} ({days_expired} days ago)
- **Recommendation**: Refresh or archive

---

## Summary

**Citation-Ready Quotes**: {N quotes extracted}
**Internal Links**: {N related meetings/epics found}
**Recommended Actions**:
1. Refresh {N} expired sources
2. Consider adding research on {identified gaps}

Integration with Workflows

Strategy Session Integration

Invoked by:

  • strategy-session workflow (context assembly phase)

Inputs:

  • Topic matching session focus
  • Default expiry filtering (exclude expired sources)

Outputs:

  • Gathered research context for decision-making
  • Citation-ready quotes
  • Source recommendations

Usage:

code
Strategy session on "competitive-analysis"
→ Gather active competitive intel
→ Present insights for discussion
→ Reference in strategy memo

Content Creation Integration

Invoked by:

  • content-drafting workflow (when research backing needed)

Inputs:

  • Topic matching content subject
  • Keyword filters for specificity

Outputs:

  • Research-backed claims
  • Citation sources
  • Expert insights for quotes

Manual Research Queries

Direct usage: User can query research library:

code
"Gather research on pricing-strategy from last 6 months"
"Show competitive-analysis sources with keyword 'segmentation'"

Refresh Recommendations

When gathering detects expired sources:

Auto-generate refresh tasks:

code
Expired sources requiring refresh:
1. [Source Title] - Expired 45 days ago
   - Original URL: {url}
   - Suggested action: Re-fetch and update

2. [Source Title] - Expired 120 days ago
   - No URL (manual notes)
   - Suggested action: Review and archive or manually update

Offer to:

  • Re-fetch URL-based sources automatically
  • Schedule manual review for note-based sources
  • Archive sources that are no longer relevant

Success Criteria

Research gathering complete when:

  • All sources in topic directory scanned
  • Recency and expiry filters applied
  • Key insights and quotes extracted
  • Sources organized and sorted
  • Expired sources flagged for refresh
  • Output structured for consuming workflows

Common Mistakes

MistakeFix
Including expired sources without flaggingMark clearly as [EXPIRED]
Not extracting verbatim quotesPreserve exact quote text for citations
Missing internal link extractionParse and include related links
Skipping expiry recommendationsSuggest refresh for expired sources
Not respecting topic boundariesOnly gather from specified topic directory

Related Skills

  • source-integrity: Validates source checksums and metadata
  • strategy-session: Primary consumer of gathered research
  • content-drafting: Uses gathered research for citations
  • research-processing: Adds new sources to research library

Anti-Rationalization Blocks

Common excuses that are explicitly rejected:

RationalizationReality
"Expired source is still relevant"Flag as expired, recommend refresh.
"Close enough" on quote extractionPreserve verbatim text exactly.
"Skip keyword filtering"Apply filters as requested.
"One source is enough"Gather all relevant sources.