$npx -y skills add Varnan-Tech/opendirectory --skill company-radarCompetitive intelligence orchestrator tracking companies across 8+ platforms (GitHub, Twitter, Reddit, HN, PH, YC Jobs) with heat scores and AI briefings.
| 1 | # Company Radar |
| 2 | |
| 3 | **Competitive intelligence orchestrator.** Takes company names, runs parallel research across 8+ platforms, scores each on a 0-100 heat scale, and produces a structured radar report with AI briefings. |
| 4 | |
| 5 | This is an orchestration skill. It delegates data collection to existing opendirectory micro-skills and coordinates their output --- it doesn't replace them. |
| 6 | |
| 7 | --- |
| 8 | |
| 9 | ## Architecture |
| 10 | |
| 11 | ``` |
| 12 | INPUT: Company name(s) / URL(s) |
| 13 | | |
| 14 | [1. Profile Phase] -- Web research to build company profiles |
| 15 | | |
| 16 | [2. Signal Collection] -- Parallel platform research (8 channels) |
| 17 | / | | | | | \ \ |
| 18 | GH TW RD HN PH YC WEB MEDIA |
| 19 | | |
| 20 | [3. Scoring Engine] -- 4-dimension heat score (0-100) |
| 21 | | |
| 22 | [4. AI Synthesis] -- Executive briefing generation |
| 23 | | |
| 24 | OUTPUT: Radar Report + Per-Company Deep Dives |
| 25 | ``` |
| 26 | |
| 27 | ### Signal Channels and Their Opendirectory Mappings |
| 28 | |
| 29 | | Channel | Opendirectory Skill | What It Detects | |
| 30 | |---|---|---| |
| 31 | | GitHub | `gh-issue-to-demand-signal` + web search | Stars, forks, commits, releases, shipping velocity | |
| 32 | | Twitter/X | `twitter-GTM-find-skill` | Tweets, mentions, engagement, founder activity | |
| 33 | | Reddit | `reddit-icp-monitor`, `reddit-post-engine` | Community sentiment, pain points, buzz | |
| 34 | | Hacker News | `hackernews-intel` | Story mentions, points, front-page signals | |
| 35 | | Product Hunt | `producthunt-launch-kit` | Launches, votes, maker activity | |
| 36 | | YC Jobs | `yc-intent-radar-skill` / `yc-jobs-scraper` | Job listings, hiring departments, growth signals | |
| 37 | | Web / Press | Tavily search + `competitor-pr-finder` | News, product announcements, funding | |
| 38 | | Pricing | `pricing-finder` | Pricing changes, tier updates, plan structure | |
| 39 | | Market Position | `map-your-market` | ICP, competitor landscape, messaging gaps | |
| 40 | |
| 41 | --- |
| 42 | |
| 43 | ## Common Mistakes |
| 44 | |
| 45 | | The agent will want to... | Why that's wrong | |
| 46 | |---|---| |
| 47 | | Run skills sequentially | All 8 signal channels are independent. Must run in parallel. | |
| 48 | | Hallucinate GitHub star counts or hiring numbers | Every data point must trace to a specific search result or skill output. No "approx 500 stars". | |
| 49 | | Skip the heat score computation | The radar report requires scored output, not just raw data dump. Heat score is the core differentiator. | |
| 50 | | Output incomplete reports because a skill failed | One failing channel does not block the full report. Score what you have, note gaps. | |
| 51 | | Use AI training knowledge for company descriptions | Every company description must come from live web research, not memory. | |
| 52 | | Forget to score activity levels from heat scores | Heat score has explicit thresholds: High (60+), Medium (30-59), Low (1-29), Dormant (0). | |
| 53 | |
| 54 | --- |
| 55 | |
| 56 | ## Step 1: Setup Check |
| 57 | |
| 58 | Check that required API keys are accessible for the channels the user's platform supports: |
| 59 | |
| 60 | ```bash |
| 61 | if [ -z "$TAVILY_API_KEY" ]; then echo "TAVILY_API_KEY: NOT SET -- required for web enrichment"; else echo "TAVILY_API_KEY: configured"; fi |
| 62 | if [ -z "$GITHUB_TOKEN" ]; then echo "GITHUB_TOKEN: not set -- GitHub API rate limited to 60 req/hr"; else echo "GITHUB_TOKEN: configured"; fi |
| 63 | ``` |
| 64 | |
| 65 | The specific skills being orchestrated have their own API key requirements. Check each skill's SKILL.md for details. Required for full operation: |
| 66 | - `TAVILY_API_KEY` -- web search and company enrichment (get at app.tavily.com) |
| 67 | - `GITHUB_TOKEN` -- GitHub API access (get at github.com/settings/tokens) |
| 68 | |
| 69 | If `TAVILY_API_KEY` is missing: stop and tell the user. Without it, company profiling and web enrichment cannot operate. |
| 70 | |
| 71 | --- |
| 72 | |
| 73 | ## Step 2: Parse Input |
| 74 | |
| 75 | Collect from the conversation: |
| 76 | - `companies`: list of company names/URLs to track (required, min 1, max 10 per run) |
| 77 | - `output_preference`: "full report" (default), "alert-only", "briefing-only", or "heat-score-only" (leaderboard table + scores only, no deep dives) |
| 78 | - `timeframe`: "realtime" (default) or "last-week" or "last-month" |
| 79 | |
| 80 | **If the user gives a single company name:** still run full radar pipeline. Single-company radars are valid -- get the full profile. |
| 81 | |
| 82 | **If more than 10 companies:** tell the user "Maximum 10 companies per radar scan. I'll run the first 10. Let me know if you want to swap any out." |
| 83 | |
| 84 | Ask if any companies have specific known handles: |
| 85 | - GitHub org name (if different from company name) |
| 86 | - Twitter handle |
| 87 | - YC batch (if YC company) |
| 88 | - Product Hunt slug |
| 89 | |
| 90 | This saves research time. If unknown, the profile phase will discover them. |
| 91 | |
| 92 | --- |
| 93 | |
| 94 | ## Step 3: Company Profile Phase |
| 95 | |
| 96 | For each company, build a basic profile before running platform research. |
| 97 | |
| 98 | ### Step 3a: Initial Web Enrichment |
| 99 | |
| 100 | For each company, run a Tavily search to discover: |
| 101 | |
| 102 | ```text |
| 103 | [company name] official website twitter github linkedin producthunt yc founders |
| 104 | ``` |
| 105 | |
| 106 | Extract from search results |