research/pulse/skills/pulse/SKILL.md
Multi-source recency research skill that takes the pulse of any topic across Reddit, Hacker News, the open web, and optionally X/Twitter within a configurable recent window (default 30 days). Forcing intake clarifies topic specificity, angle (trend/sentiment/problems/opportunities/comparison), time window, and platform scope before searching. Returns a synthesized briefing with citations, engagement metrics, and cross-platform pattern analysis. Triggers: 'pulse on [topic]', 'what's happening with [topic]', 'what are people saying about [topic]', 'current conversation about [topic]', 'take the pulse of [topic]', 'trending: [topic]', 'find me info on [topic]', or any variation requesting multi-source recency intelligence on a topic. Also use for competitor research, trend discovery, tool comparisons, and audience sentiment analysis.
npx skillsauth add alirezarezvani/claude-skills pulseInstall 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.
Portability: Works in both Claude Code CLI and Claude.ai. The optional X/Twitter phase requires browser automation and is skipped automatically if unavailable.
A recency-oriented research skill that synthesizes what people are saying about a topic across Reddit, Hacker News, the open web, and (optionally) X/Twitter — within a configurable time window. Output is a single coherent briefing with citations, engagement signals, and cross-platform pattern analysis. The skill captures the current conversation, not the canonical reference.
Explicit trigger phrases:
Also covers: competitor research with recency flavor, trend discovery, tool comparisons, audience sentiment analysis.
The following rules apply throughout the run. They are inherited from the research-pack convention and locked down by PR #657's cross-skill consistency audit.
[Background — not from search] and excluded from primary findings count.scripts/citation_tracker.py for the deterministic count.See references/research_pack_conventions.md for the canon and references/parallel_execution_discipline.md for the rate-limit rationale.
Dependency-ordered. Each question carries explicit "why I'm asking". Stop condition: max 4.
What's the topic? State it in 1–2 sentences — be specific. "AI" or "tech" will get you a vague survey; "self-hosted LLM deployment for small teams" or "Claude Code adoption among enterprise engineering orgs" will get you a useful answer.
Why I'm asking: Specificity dictates search quality. Vague topics produce vague briefings. If your topic is broad, I'd rather narrow it now than spend a search budget on noise.
Refuse mush. If the user says "AI", push back once: "What about AI — adoption, safety, capability, regulation, or comparison? Pick an angle." If the user still won't narrow after one push-back, deliver with the explicit "vague topic — survey level, not depth" caveat.
What angle matters most? Pick one:
- Trend — what's accelerating or decelerating
- Sentiment — what people feel about it
- Problems — pain points and complaints
- Opportunities — gaps and unmet needs
- Comparison — how it stacks up against alternatives
Why I'm asking: The angle dictates which sources weight more (Reddit for sentiment, HN for technical critique, Web for trend coverage) and how I rank the synthesis.
Forcing choice. Recommended default: trend, unless the topic obviously calls for a different angle.
Time window: 7 / 14 / 30 / 60 / 90 days? Default is 30.
Why I'm asking: 7 days catches breaking conversation; 90 days catches sustained narrative shift. Pick based on how recent the news matters.
Forcing choice with default.
Any platform to skip? By default I'll cover Reddit + Hacker News + open web, plus X/Twitter if browser automation is available. Skip any you don't care about.
Why I'm asking: Skipping a platform saves search budget. Reddit dominates sentiment; HN dominates technical critique; Web dominates breadth; X dominates breaking conversation. Skip what doesn't fit your angle.
Asked only if Q1 + Q2 suggest some platforms are clearly off-target (e.g., consumer sentiment topic → HN less useful). Otherwise default to "all platforms".
Stop condition: After Q4 (or earlier with dependency skips), commit and start Phase 1. Max 4 questions, never bundle.
Before any phase fires:
scripts/time_window_calculator.py --window <Nd>. Get back the Unix timestamp for created_at_i> (HN) and the t= parameter (hour|day|week|month|year|all) for Reddit.scripts/topic_slug_generator.py --topic "<topic>" --date $(date +%Y-%m-%d). Detect if ${RESEARCH_DIR}/pulse/<slug>-<date>.md already exists; if yes, append -v2 suffix or warn user.scripts/citation_tracker.py --action start --session pulse-<date>-<slug>. This file at ~/.pulse_sessions/<session>.json persists across the run.API: reddit.com/search.json (unauthenticated, public JSON).
Queries (sequential within Reddit, 1 q/sec):
sort=top&t=<window>&q=<topic> — top posts in windowsort=new&t=<window>&q=<topic> — new posts in window (catches breaking signal)<post-url>.json?limit=top) for the top 10–20 comments.Headers / rate limits. Reddit rate-limits by IP, not plan. Throttle to 1 q/sec. If response has X-Ratelimit-Remaining: 0 or returns 429, wait 3s, retry once. If still failing, fall back to subreddit-restricted search (r/<topic-subreddit>/search.json) or ?raw_json=1.
Record each query: citation_tracker.py --action record_sent --session NAME --query "...".
Record received counts: citation_tracker.py --action record_received --session NAME --count N.
API: Algolia HN search (hn.algolia.com/api/v1/).
Queries (sequential within HN, 1 q/sec):
search?query=<topic>&numericFilters=created_at_i><timestamp>&tags=story — stories in windowsearch?query=<topic>&numericFilters=created_at_i><timestamp>&tags=comment — comments in window (catches discussion signal)Failure handling. If HN returns empty: broaden the query (remove uncommon nouns); if still empty, drop the timestamp filter as last resort and label results "outside window".
HN bias note. HN skews technical / builder. Surface this in synthesis: "HN's voice is implementation-oriented; consumer sentiment will be under-represented here."
Tools: Available web search + fetch (e.g., WebSearch + WebFetch).
Query strategy (sequential within Web, 1 q/sec):
"<topic>" site:nytimes.com OR site:wsj.com OR site:wired.com OR site:theverge.com OR site:techcrunch.com after:<date>"<topic>" review <year> or "<topic>" "honest review" after:<date>"<topic>" problems OR complaints OR "worth it" after:<date>Fetch the top 3–5 URLs per query. Truncate at the body, skip cookie/nav markup.
Citation discipline. Every claim in the Web section must trace to a fetched URL. Do NOT cite from snippets alone; fetch first.
Run last. Reasons:
Interface (in priority order):
playwright or similar)Documented behavior:
If Phase 4 is skipped: include the section header
## X/Twitterwith bodySkipped — [reason: no browser automation / no Grok / no X API]. Do NOT pretend to have data.
After Phases 1–4 complete (or Phase 4 skipped), produce the synthesis:
sort=new vs sort=top).For each pattern, cite the source URLs that support it. Use citation_tracker.py --action record_cited --session NAME --url "..." per citation.
See references/cross_platform_synthesis.md for detection heuristics.
Save to file AND paste in chat:
File: ${RESEARCH_DIR}/pulse/<topic-slug>-<YYYY-MM-DD>.md (path from topic_slug_generator.py).
Format:
# [TOPIC] — Pulse (Last [N] Days)
*Generated: [DATE] | Angle: [Q2 choice]*
## TL;DR
[2-3 sentences max]
## Reddit
### Top Posts
- **[Title]** (r/sub) — [score, comments] — [summary] — [URL]
### What Reddit Is Saying
[Narrative paragraph]
## Hacker News
### Notable Stories
- **[Title]** — [points, comments] — [summary] — [URL]
### What HN Is Saying
[Narrative paragraph; note HN's technical/builder bias]
## Web
### Key Sources
- **[Title]** ([Publication]) — [takeaway] — [URL]
### What the Web Is Saying
[Narrative paragraph]
## X/Twitter (if available)
[Cleaned response, with handles/references preserved]
[Or: "Skipped — [reason]"]
## Cross-Platform Patterns
[Highest-confidence signals across sources]
## Key Takeaways
- [3-5 bullets]
## Content Angles (if applicable)
[2-3 specific angles supported by the data]
---
*Audit:* Queries sent: N (Reddit: a, HN: b, Web: c, X: d|skipped).
Sources received: M. Sources cited: K. Training knowledge: 0 ([Background] excluded from count).
| Failure | Behavior |
|---|---|
| Topic is too vague (Q1) | Refuse to start. Re-ask Q1 once with examples. After 1 push-back, deliver with "vague topic" caveat. |
| Reddit blocks / rate-limits | Try ?raw_json=1 or fall back to subreddit-restricted search. Honor 3s-retry. |
| HN returns empty | Broaden query, drop timestamp filter as last resort, label results "outside window". |
| Web search returns nothing useful | Note in output; don't fabricate sources. |
| Browser automation unavailable | Skip Phase 4 with documented note. |
| WebFetch times out | Use what loaded, mark the source as "truncated". |
| 3 consecutive failures across sources | Stop. Return what was collected with explicit "stopped early" note. Do NOT deliver empty file. |
| All sources fail | Return error with diagnostic info. Do NOT deliver empty file. |
| Script | Role |
|---|---|
| scripts/time_window_calculator.py | Compute Unix timestamps + Reddit t= parameter from window string (30d, 7d, etc.). Deterministic from datetime.now(). |
| scripts/citation_tracker.py | JSON-backed three-count audit log (sent / received / cited) at ~/.pulse_sessions/<session>.json. |
| scripts/topic_slug_generator.py | Filesystem-safe slug + duplicate-date detection for output paths. |
references/research_pack_conventions.md — Agent Integrity Rules canon (7+ sources: Google SRE, Reddit API docs, Algolia HN docs, exponential-backoff literature, citation discipline)references/cross_platform_synthesis.md — consensus / controversy / pain detection across platforms (7+ sources)references/parallel_execution_discipline.md — 1 q/sec rationale + plan-tier signals (7+ sources)Version: 1.0.0
Source spec: megaprompts/01-pulse-megaprompt.md
Build pattern: Path B (direct conversion). Re-grill with /cs:grill-with-docs if drift between spec and implementation surfaces.
tools
Code review automation for TypeScript, JavaScript, Python, Go, Swift, Kotlin, C#, .NET, Java, C, C++, Rust, Ruby, PHP, and Dart/Flutter. Analyzes PRs for complexity and risk, checks code quality for SOLID violations and code smells, generates review reports. Use when reviewing pull requests, analyzing code quality, identifying issues, generating review checklists.
tools
Use when planning, funding, scoping, or synthesizing enterprise research across workstreams — clinical study design, R&D program finance, market sizing/surveys, or product/user research. Triggers on "design this clinical study", "what sample size", "R&D budget", "burn rate", "capitalize or expense", "TAM SAM SOM", "market sizing", "survey design", "segment the market", "plan user interviews", "usability test", "synthesize research insights". Forks context to route to one of four Research-Operations sub-skills (clinical-research, research-finance, market-research, product-research) and returns a digest. Distinct from ra-qm-team (regulatory submission), finance (corporate close/valuation), research/grants (funding discovery), product-team (persona/journey/live experiments), and marketing-skill (campaign analytics).
development
Use when managing the money for an internal R&D program or portfolio — building a multi-period program budget with the F&A (indirect) split, tracking burn rate and runway against value-inflection milestones, or routing R&D cost items to a capitalize-vs-expense determination. Every budget output surfaces its assumptions block; capitalize-vs-expense is decision-support only and routes to a named finance owner — it never books an entry or decides accounting treatment. Distinct from finance/financial-analysis (corporate DCF, close, valuation) and research/grants (funding discovery — this manages money already won).
development
Use when planning and synthesizing product/user research as a method-and-repository discipline — selecting the right method for the goal (generative interviews vs usability test vs concept test vs validation), computing method-based saturation/sample size with an explicit confidence level, or synthesizing coded observations into insights while flagging single-source anecdotes. Never fabricates user insight; an insight requires recurrence across independent participants. Distinct from product-team/ux-researcher-designer (persona/journey artifacts), product-discovery (discovery-sprint planning), and experiment-designer (live A/B) — this is the research-ops method + insight-repository layer.