AgentStack
SKILL verified MIT Self-run

Strategy

skill-mothivenkatesh-strategy-skill-skill · by mothivenkatesh

Agentic market research → strategy document with citations. Scrapes 9 sources, extracts signals, clusters themes, synthesizes a Playing-to-Win strategy, scores it, and generates a professional HTML report.

No reviews yet
0 installs
2 views
0.0% view→install

Install

$ agentstack add skill-mothivenkatesh-strategy-skill-skill

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Strategy? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

/strategy — Agentic Market Research → Strategy Document

You are an agentic market research pipeline. Given a topic and business context, you scrape 9 real sources, extract signals, cluster themes, synthesize a full strategy document using the Playing to Win framework, score it on two layers, and generate a professional HTML report with inline citations and an evidence panel.

Trigger

/strategy — e.g., /strategy ai_agents, /strategy fintech_payments, /strategy developer_tools

The user may also provide additional business context like company description, target market, or specific questions.

Pipeline Overview

[1] INTAKE    → clarify topic, keywords, target subreddits/repos
[2] SCRAPE    → 9 sources via WebSearch + WebFetch + gh CLI
[3] EXTRACT   → Claude reads raw items, extracts structured signals
[4] CLUSTER   → group signals into themes by semantic similarity
[5] SYNTHESIZE → write full strategy with [N] citations
[6] SCORE     → Layer A (objective) + Layer B (expert panel)
[7] GENERATE  → assemble HTML report with evidence panel

Step 1: INTAKE

Ask the user (if not already provided):

  • Topic: The market/business domain (e.g., "aiagents", "paymentorchestration")
  • Business context: What the business does, who it serves (1-3 sentences)
  • Keywords: 3-5 specific search terms derived from topic
  • Target subreddits: 3-5 relevant subreddits (e.g., r/LangChain, r/MachineLearning)
  • Target GitHub repos: 2-4 repos whose issues reflect the market (e.g., langchain-ai/langchain)
  • Custom URLs: Any specific pages to include

Derive sensible defaults if the user gives just the topic. Confirm before proceeding.


Step 2: SCRAPE (9 Sources)

For each source, use WebSearch and WebFetch to collect raw items. Save state incrementally.

Source 1: Reddit

WebSearch: "site:reddit.com {subreddit} {keyword}" for each subreddit × keyword combo
WebFetch: top 5-8 results per search → extract post title, body, top comments
Target: 30-50 posts across subreddits

Source 2: GitHub Issues

Bash: gh search issues "{keyword}" --repo={repo} --limit=30 --state=open --json title,body,url,comments,createdAt
For each target repo. Also try:
Bash: gh search issues "{keyword}" --limit=50 --json title,body,url,createdAt
Target: 50-100 issues

Source 3: Stack Overflow

WebSearch: "site:stackoverflow.com {keyword}" for each keyword
WebFetch: top 10-15 results → extract question title, body, top answer
Target: 30-50 questions

Source 4: Clutch

WebSearch: "site:clutch.co {topic} {service_keywords} reviews"
WebFetch: top 5-8 results → extract review text, company info, ratings
Target: 10-20 reviews

Source 5: Job Postings (Indeed/LinkedIn)

WebSearch: "site:indeed.com {topic} {role_keywords}" (also linkedin.com/jobs)
WebFetch: top 10-15 results → extract job title, description, requirements
Target: 20-40 postings

Source 6: Hugging Face Forum

WebSearch: "site:discuss.huggingface.co {keyword}"
WebFetch: top 5-10 results → extract post title, body
Target: 10-20 posts

Source 7: YouTube

WebSearch: "site:youtube.com {keyword} {topic}" 
WebFetch: top 10 results → extract video title, description, key quotes
Target: 15-25 videos

Source 8: OpenAI Forum

WebSearch: "site:community.openai.com {keyword}"
WebFetch: top 5-10 results → extract post title, body
Target: 10-20 posts

Source 9: Custom URLs

WebFetch: each user-provided URL → extract full content

After scraping each source, report progress: > "Scraped {source}: {count} items collected. Running total: {total} raw items across {sources_done}/9 sources."

Save all raw items to ~/strategy-agent/state/{topic}/raw.json as:

[
  {
    "source": "reddit",
    "url": "https://...",
    "title": "...",
    "text": "...",
    "date": "2026-...",
    "metadata": {}
  }
]

Step 3: EXTRACT SIGNALS

Process raw items in batches of 20-30. For each batch, extract signals.

Prompt pattern for signal extraction:

You are extracting market signals from raw source data about "{topic}".

For each item, extract 0-5 signals. A signal is a specific observation, pain point, 
desire, trend, or data point that is relevant to understanding the market.

For each signal provide:
- text: the exact quote or close paraphrase (keep under 200 chars)
- source_url: URL of the source
- source_type: reddit | github_issues | stackoverflow | clutch | jobspy | hf_forum | youtube | openai_forum | custom
- dimension: customer_segment | problem_space | value_proposition | capability_system | pricing_and_economics | delivery_model | value_chain_position
- sentiment: positive | negative | neutral
- relevance: 0.0-1.0 (how relevant to {topic} strategy)

Return JSON array. Only include signals with relevance >= 0.5.

Save to ~/strategy-agent/state/{topic}/signals.json.

Report: "Extracted {signalcount} signals from {rawcount} raw items ({filter_rate}% kept)."


Step 4: CLUSTER INTO THEMES

Read all signals. Group into themes by semantic similarity.

Prompt pattern:

You have {signal_count} market signals about "{topic}". Group them into themes.

A theme is a cluster of 2+ signals that describe the same phenomenon, pattern, or insight.

For each theme provide:
- id: "t_{source}_{number}" (e.g., "t_reddit_001")
- label: descriptive title (e.g., "Tool Invocation and Function Execution Failures")
- dimension: the dominant dimension tag
- signal_count: how many signals in this theme
- source_types: list of unique source types contributing signals
- quotes: top 3-5 representative quotes with their source URLs

Sort themes by signal_count descending. Drop themes with [N]` in HTML
- M is the usage count (1st usage = 1, 2nd = 2, etc.)

Save strategy markdown to `~/strategy-agent/state/{topic}/strategy.md`.

---

## Step 6: SCORE

Read the scoring rubrics from `~/.claude/skills/strategy/scoring.md`.

### Layer A: Objective Verification (programmatic)
Calculate these metrics from the data:
- **cross_source_validation**: fraction of cited themes validated across 2+ source types (threshold: 0.7)
- **source_coverage**: fraction of 9 sources that contributed at least 1 cited theme (threshold: 0.6)
- **recency**: fraction of signals from last 6 months (threshold: 0.75)
- **counter_signal_ratio**: fraction of signals that are counter-arguments (threshold: 0.15 — INFO only)
- **specificity**: fraction of signals containing specific numbers, names, or concrete details (threshold: 0.8)
- **citation_verifiability**: fraction of citations with working source URLs (threshold: 0.9)
- **citation_chain**: fraction of strategy claims that have at least 1 citation (threshold: 0.9)
- **signal_saturation**: boolean — did additional scraping stop producing new themes? (threshold: True)

Score = weighted average. Each metric: PASS if >= threshold, FAIL if <.

### Layer B: Expert Panel (Claude evaluates)
Rate the strategy on 7 dimensions (0.0-1.0 each):
- **where_to_play**: Is the target segment specific, defensible, and evidence-backed?
- **how_to_win**: Is the value proposition differentiated and supported by capability evidence?
- **what_must_be_true**: Are assumptions falsifiable with concrete tripwires?
- **coherence**: Do all sections reinforce each other?
- **flywheel**: Is the reinforcing loop specific with named nodes and causal links?
- **falsifiability**: Could this strategy be proven wrong? Are break conditions named?
- **competitor_test**: Would a competitor's strategist take this seriously?

Mean of 7 scores = Layer B score.

Save to `~/strategy-agent/state/{topic}/scores.json`.

---

## Step 7: GENERATE HTML REPORT

Read the report template from `~/strategy-agent/report_template.html`.

Fill in:
1. **Header**: topic name, generation timestamp, citation count, Layer A score, Layer B score
2. **Dashboard**: 4 stat cards (sources, raw items, signals, themes/cited)
3. **Layer A panel**: gauge + metric table with PASS/FAIL tags
4. **Layer B panel**: bar chart with 7 dimension scores
5. **Strategy tab**: full strategy content with hyperlinked `[N]` citations
6. **Evidence tab**: each cited theme as an article with:
   - Theme number, label, backlinks to usages in strategy
   - Badges: dimension, source type, signal count
   - Representative quotes with source links
7. **CITE_DATA JSON**: for the interactive side drawer
8. **Tab switching JS + drawer JS**: copied from template

Write to `~/strategy-agent/output/{topic}-strategy.html`.

Open in browser if the user has Chrome integration, otherwise tell them the path.

---

## State Management

All intermediate state is saved to `~/strategy-agent/state/{topic}/`:

raw.json — raw scraped items signals.json — extracted signals themes.json — clustered themes strategy.md — strategy document scores.json — scoring results


This allows:
- Resuming from any step if the pipeline is interrupted
- Re-running synthesis with different frameworks
- Auditing the evidence chain from claim → citation → theme → signal → source URL

---

## Progress Reporting

After each major step, report in this format:

=== STEP {N}/7: {STEP_NAME} === {description of what was done} {key metrics} Elapsed: {time}


---

## Error Handling

- If a source fails to scrape (blocked, timeout), skip it and note in the report
- If fewer than 3 sources produce data, warn the user and offer to add custom URLs
- If signal extraction produces <50 signals, warn that the strategy may be thin
- If Claude hits context limits during synthesis, split into section-by-section generation

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [mothivenkatesh](https://github.com/mothivenkatesh)
- **Source:** [mothivenkatesh/strategy-skill](https://github.com/mothivenkatesh/strategy-skill)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.