From claude-ecosystem
Scans Twitter/X feeds from Anthropic/Claude Code team members for actionable insights on features/updates, tracks state, generates reports using browser automation.
npx claudepluginhub melodic-software/claude-code-plugins --plugin claude-ecosystemThis skill is limited to using the following tools:
Monitor Twitter/X feeds from Anthropic and Claude Code team members to catch new features, updates, and insights before official documentation is updated.
Captures writing style profiles from X users' posts, tracks user pools, scans social intelligence, and drafts style-matched content. Triggers on style capture, voice drafting, trend scanning, or user tracking requests.
Provides X/Twitter content strategy guidance: generates tweets/threads with hooks, reviews content performance, analyzes accounts, offers growth and monetization tips from top creators and algorithm data.
Generates digest of recent feed activity by grouping entries, suggesting sources, and computing knowledge structure. Invoke /radar for ambient intelligence from monitored feeds.
Share bugs, ideas, or general feedback.
Monitor Twitter/X feeds from Anthropic and Claude Code team members to catch new features, updates, and insights before official documentation is updated.
Parse the user's argument to determine the subcommand:
| Argument Pattern | Subcommand |
|---|---|
scan, scan --accounts critical, scan --depth deep | Scan Feeds |
report, report --since 2026-02-01, report --save | Generate Report |
apply | Apply Insights |
refresh-accounts | Refresh Accounts |
discover-accounts | Discover Accounts |
status | Show Status |
migrate | Data Maintenance |
compact | Data Maintenance |
| (no argument) | Default to scan --accounts critical --depth shallow |
Before any operation, ensure the data directory is initialized:
CLAUDE_PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}" python "plugins/claude-ecosystem/skills/social-intelligence/scripts/state_manager.py" init
| Flag | Default | Options |
|---|---|---|
--accounts | critical | critical, high, all |
--depth | shallow | shallow, deep |
Read these config files:
plugins/claude-ecosystem/skills/social-intelligence/config/accounts.json -- Monitored accountsplugins/claude-ecosystem/skills/social-intelligence/config/scan-config.json -- Scan parameters, keywords, area mappingsIf accounts.json has an empty accounts array, prompt the user:
No accounts configured. Run
/claude-ecosystem:social-intelligence refresh-accountsfirst to populate the account list from your X following list.
Based on --accounts flag:
critical: Only accounts with priority == "critical"high: Accounts with priority in ["critical", "high"]all: All accountsFor each filtered account, check when it was last scanned:
CLAUDE_PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}" python "plugins/claude-ecosystem/skills/social-intelligence/scripts/state_manager.py" last-scanned "@handle"
If last_scanned is within the last 2 hours for shallow scans (or 30 minutes for deep scans), skip that account and note it in the summary. This prevents redundant scanning.
Before delegating to the scanner agent, load the required MCP tools:
Use ToolSearch to load:
- mcp__claude-in-chrome__tabs_context_mcp
- mcp__claude-in-chrome__tabs_create_mcp
- mcp__claude-in-chrome__navigate
- mcp__claude-in-chrome__get_page_text
- mcp__claude-in-chrome__javascript_tool
- mcp__claude-in-chrome__read_page
Spawn the claude-ecosystem:x-feed-scanner agent (subagent_type: general-purpose) with:
{
"accounts": [filtered account list with profile URLs],
"depth": "shallow|deep",
"max_posts_per_account": 20,
"max_scroll_attempts": 3,
"navigation_delay_ms": 2500,
"known_post_ids": [list from dedup-check-batch],
"since_date": "ISO timestamp of oldest desired post"
}
Important: The agent must use the claude-in-chrome MCP tools to:
tabs_context_mcp to check browser statetabs_create_mcp to open a dedicated scan tabnavigate to profile, wait, get_page_text to extract contentjavascript_tool for scroll pagination and post ID extractionCollect all post IDs from the scanner output and check them in a single pass:
CLAUDE_PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}" python "plugins/claude-ecosystem/skills/social-intelligence/scripts/state_manager.py" dedup-check-batch post_id_1 post_id_2 post_id_3
The response includes new_ids (not yet stored) and existing_ids (already in index). Filter to new posts only.
Spawn the claude-ecosystem:intelligence-analyst agent (subagent_type: general-purpose) with:
The agent classifies posts, scores relevance, extracts insights, and maps to plugin areas.
Write results using state_manager.py append:
# Log the scan run
CLAUDE_PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}" python "plugins/claude-ecosystem/skills/social-intelligence/scripts/state_manager.py" append scan-log.jsonl '{"scan_id":"scan-YYYYMMDD-HHMMSS","timestamp":"...","accounts_scanned":N,...}'
# Write each analyzed post
CLAUDE_PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}" python "plugins/claude-ecosystem/skills/social-intelligence/scripts/state_manager.py" append posts-index.jsonl '{"post_id":"...","author_handle":"...","text":"...","relevance_score":0.92,...}'
# Write each insight
CLAUDE_PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}" python "plugins/claude-ecosystem/skills/social-intelligence/scripts/state_manager.py" append insights-log.jsonl '{"insight_id":"insight-{seq}","summary":"...","status":"pending_review",...}'
For each successfully scanned account, update the last_scanned timestamp:
CLAUDE_PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}" python "plugins/claude-ecosystem/skills/social-intelligence/scripts/state_manager.py" last-scanned "@handle" "2026-02-15T14:30:00Z"
Display a concise summary to the user:
## Scan Complete
**Accounts scanned:** 5 | **Posts found:** 47 | **New posts:** 8 | **Relevant:** 3
### Key Findings
1. [@borischerny] New hook event type announced (score: 0.92, feature_announcement)
> "Just shipped support for a new SessionPause hook event..."
[View on X](https://x.com/borischerny/status/1893456789012345678)
### Pending Insights (1)
- **insight-42**: New SessionPause hook event (confidence: 0.85)
- Areas: hook-management, claude-code-observability
- Action: Update hook documentation
Run `/claude-ecosystem:social-intelligence report` to see full details.
| Flag | Default | Options |
|---|---|---|
--since | (all time) | Any ISO date YYYY-MM-DD |
--status | all | pending, all, new, analyzed, actioned, dismissed |
--format | markdown | markdown, json |
--save | (off) | When present, saves report to .claude/social-intelligence/reports/ |
Run the report generator:
CLAUDE_PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}" python "plugins/claude-ecosystem/skills/social-intelligence/scripts/generate_report.py" --since "YYYY-MM-DD" --status "pending" --format markdown --save
Display the output directly to the user. If --save is used, confirm the saved file path.
Read pending insights, execute suggested actions, and update insight status.
CLAUDE_PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}" python "plugins/claude-ecosystem/skills/social-intelligence/scripts/state_manager.py" read insights-log.jsonl --status pending_review
Display pending insights with their suggested actions and ask user to select which to apply.
For each approved insight:
action_suggested (e.g., update documentation, create issue, modify skill)actions-log.jsonl:CLAUDE_PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}" python "plugins/claude-ecosystem/skills/social-intelligence/scripts/state_manager.py" append actions-log.jsonl '{"action_id":"action-{seq}","insight_id":"...","action_type":"...","description":"...","status":"completed","timestamp":"..."}'
CLAUDE_PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}" python "plugins/claude-ecosystem/skills/social-intelligence/scripts/state_manager.py" update insights-log.jsonl insight_id "insight-42" '{"status":"actioned"}'
Navigate to the user's X following list and extract account handles to populate accounts.json.
Load claude-in-chrome tools via ToolSearch (same as scan step 3).
Read the following_list_url from accounts.json, then:
tabs_create_mcp -- Open a new tabnavigate to the following list URLget_page_text -- Extract the page contentjavascript_tool -- Scroll to load more accounts if neededFrom the page text, extract X handles (patterns like @username).
For each extracted handle, attempt to classify priority:
criticalhighmediumlowNote: Priority classification may need manual refinement. Present the list to the user for review before saving.
After user confirmation, update plugins/claude-ecosystem/skills/social-intelligence/config/accounts.json:
last_refreshed timestampSearch X for new Anthropic/Claude Code-related accounts not yet in the monitored list. Uses X search to find people actively tweeting about Claude Code.
Load claude-in-chrome tools via ToolSearch (same as scan step 3).
Read discover_searches from accounts.json for pre-configured search queries:
[
{"query": "\"claude code\" from:verified", "description": "Find verified accounts tweeting about Claude Code"},
{"query": "\"anthropic\" \"claude\" engineer OR developer", "description": "Find Anthropic engineers discussing Claude"},
{"query": "\"claude code\" shipped OR launched OR released", "description": "Find accounts announcing Claude Code features"},
{"query": "\"@anthropicai\" claude code tip OR trick OR feature", "description": "Find accounts sharing Claude Code tips that mention Anthropic"}
]
For each search query:
tabs_create_mcp -- Open a new tab (reuse for subsequent searches)navigate to https://x.com/search?q={encoded_query}&f=user for people search, then also &f=live for recent tweetsget_page_text -- Extract search resultsnavigation_delay_ms between navigationsFrom search results, extract:
@username)Filter out accounts already in accounts.json.
Auto-classify priority based on bio/content signals:
| Signal | Priority |
|---|---|
| Bio contains "claude code" AND ("anthropic" OR "@anthropic") | critical |
| Bio contains "anthropic" AND (engineer OR developer OR research) | high |
| Bio contains "anthropic" (any role) | high |
| Tweets frequently about Claude Code (3+ results) | medium |
| Single mention or retweet | low |
Display discovered accounts to the user:
## Discovered Accounts
Found 7 new accounts not yet monitored:
### Suggested Critical
- **@newengineer** - "Building Claude Code at Anthropic"
### Suggested High
- **@anthropicdev** - "Software engineer at Anthropic"
### Suggested Medium
- **@aidevtips** - Tweets about Claude Code frequently
### Suggested Low
- **@techblogger** - One tweet about Claude Code
Add all suggested? Or select specific accounts to add?
After user confirmation, add selected accounts to accounts.json with "source": "discovered" tag.
Users can also pass a custom search query:
/claude-ecosystem:social-intelligence discover-accounts "agent SDK anthropic"
This runs a single X search with the provided query and follows the same extract/classify/review flow.
Display scan history and data statistics.
CLAUDE_PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}" python "plugins/claude-ecosystem/skills/social-intelligence/scripts/state_manager.py" stats
Parse the JSON output and display:
## Social Intelligence Status
**Data directory:** .claude/social-intelligence/data/
**Current sequence:** 42
| File | Entries | Size | Newest | Oldest |
|------|---------|------|--------|--------|
| scan-log.jsonl | 5 | 2.1 KB | 2026-02-15T14:30:00Z | 2026-02-10T09:00:00Z |
| posts-index.jsonl | 127 | 45.3 KB | 2026-02-15T14:30:05Z | 2026-02-10T09:01:00Z |
| insights-log.jsonl | 8 | 3.2 KB | 2026-02-15T14:31:00Z | 2026-02-10T09:15:00Z |
| actions-log.jsonl | 2 | 0.8 KB | 2026-02-14T16:00:00Z | 2026-02-11T10:30:00Z |
**Orphaned batch files:** 0
**Orphaned lock files:** 0
Normalize all existing JSONL data to v2 schema and deduplicate:
CLAUDE_PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}" python "plugins/claude-ecosystem/skills/social-intelligence/scripts/state_manager.py" migrate
This command:
content_text -> text, relevance_category -> category, etc.)url fields from author_handle + post_idpost_id to {handle}-{numeric_id} formatinsight_idRemove duplicates from a specific file:
CLAUDE_PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}" python "plugins/claude-ecosystem/skills/social-intelligence/scripts/state_manager.py" compact posts-index.jsonl
CLAUDE_PROJECT_DIR="${CLAUDE_PROJECT_DIR:-$(pwd)}" python "plugins/claude-ecosystem/skills/social-intelligence/scripts/state_manager.py" compact insights-log.jsonl
| Variable | Default | Purpose |
|---|---|---|
CLAUDE_X_SCAN_DEV_ROOT | (unset) | Dev mode: override data directory |
CLAUDE_X_SCAN_DEPTH | shallow | Default scan depth |
CLAUDE_X_SCAN_THRESHOLD | 0.4 | Relevance score threshold |
When CLAUDE_X_SCAN_DEV_ROOT is set, all data writes go to {DEV_ROOT}/.claude/social-intelligence/data/ instead of the project directory.
All state is stored in {project}/.claude/social-intelligence/data/ (gitignored):
| File | Purpose | Dedup Key |
|---|---|---|
.seq | Monotonic sequence counter | N/A |
scan-log.jsonl | Scan activity log | scan_id |
posts-index.jsonl | Processed posts | post_id (numeric suffix) |
insights-log.jsonl | Extracted intelligence | insight_id |
actions-log.jsonl | Actions taken | action_id |
Reports are saved to {project}/.claude/social-intelligence/reports/ when --save is used.
This skill follows the anti-duplication principle:
docs-management at runtimeResearch needed: Scheduling can be added later. Potential approaches:
- Windows Task Scheduler + headless
claude -pwith this skill as prompt- SessionStart hook with time-since-last-scan check
- Cron job (Unix) or Task Scheduler (Windows) invoking Claude CLI
Key constraint:
claude-in-chromerequires Chrome to be running with the extension active. Research via MCP (perplexity) for best practices on scheduling Claude Code tasks.