Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 10 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,15 @@
<br />

<div align="center">
<img src="https://readme-typing-svg.demolab.com?font=Fira+Code&size=20&duration=3000&pause=800&color=58A6FF&center=true&vCenter=true&width=620&height=50&lines=55+Agent+Skills;Works+with+Claude%2C+Codex%2C+Gemini+CLI;Agent+Skills+for+Founders+Who+Hate+Marketing;Install+in+seconds.+No+setup+required." alt="Typing SVG" />
<img src="https://readme-typing-svg.demolab.com?font=Fira+Code&size=20&duration=3000&pause=800&color=58A6FF&center=true&vCenter=true&width=620&height=50&lines=59+Agent+Skills;Works+with+Claude%2C+Codex%2C+Gemini+CLI;Agent+Skills+for+Founders+Who+Hate+Marketing;Install+in+seconds.+No+setup+required." alt="Typing SVG" />
</div>

<br />

<div align="center">

[![npm version](https://img.shields.io/npm/v/@opendirectory.dev/skills.svg?style=flat-square)](https://www.npmjs.com/package/@opendirectory.dev/skills)
[![Skills](https://img.shields.io/badge/skills-58-blue.svg?style=flat-square)](skills/)
[![Skills](https://img.shields.io/badge/skills-59-blue.svg?style=flat-square)](skills/)
[![Stars](https://img.shields.io/github/stars/Varnan-Tech/opendirectory?style=flat-square&color=yellow)](https://github.com/Varnan-Tech/opendirectory/stargazers)
[![Contributors](https://img.shields.io/github/contributors/Varnan-Tech/opendirectory?style=flat-square&color=orange)](https://github.com/Varnan-Tech/opendirectory/graphs/contributors)
[![Agents](https://img.shields.io/badge/agents-7-blueviolet.svg?style=flat-square)](#quick-start)
Expand All @@ -40,7 +40,7 @@ Or list all skills:
```bash
npx "@opendirectory.dev/skills" list
```
*56 specialized skills across GTM, growth, and developer tooling*
*59 specialized skills across GTM, growth, and developer tooling*

### 2. Pick your agent
```bash
Expand Down Expand Up @@ -230,11 +230,11 @@ Run these commands inside Claude Code:

## All Skills

58 skills across GTM, growth automation, technical marketing, and developer tooling.
59 skills across GTM, growth automation, technical marketing, and developer tooling.

<!-- SKILLS_LIST_START -->

<summary><b>58 skills across 8 categories</b> — click to expand</summary>
<summary><b>59 skills across 8 categories</b> — click to expand</summary>
<br>

<table>
Expand Down Expand Up @@ -376,6 +376,11 @@ Run these commands inside Claude Code:
<td>Give this skill a competitor's App Store or Google Play URL. It collects their public low-star reviews, detects where their store description's claims break against real complaints, and outputs a one-session brief: ranked complaint clusters, a broken promise map, landing page headline variants, and ad copy you can use tomorrow.</td>
<td><code>1.0.0</code></td>
</tr>
<tr>
<td><a href="skills/company-radar"><code>company-radar</code></a></td>
<td>Competitive intelligence orchestrator for opendirectory. Takes company names, researches them across 8+ platforms in parallel, computes a 0-100 heat score, and outputs structured radar reports with AI briefings.</td>
<td><code>1.0.0</code></td>
</tr>
<tr>
<td><a href="skills/competitor-pr-finder"><code>competitor-pr-finder</code></a></td>
<td>Give it your product URL. It finds your top 5 competitors, researches every press mention, podcast appearance, and community post across all of them, and tells you exactly which channels to pitch -- with the journalist's name, the angle that got your competitors featured, and a ready-to-send cold pitch for your product.</td>
Expand Down
12 changes: 12 additions & 0 deletions packages/cli/registry.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,18 @@
"version": "0.0.1",
"path": "skills/cold-email-verifier"
},
{
"name": "company-radar",
"description": "Competitive intelligence orchestrator tracking companies across 8+ platforms (GitHub, Twitter, Reddit, HN, PH, YC Jobs) with heat scores and AI bri...",
"tags": [
"Social Media",
"AI",
"Developer Tools"
],
"author": "OpenDirectory",
"version": "1.0.0",
"path": "skills/company-radar"
},
{
"name": "competitor-pr-finder",
"description": "Give it your product URL or description.",
Expand Down
18 changes: 13 additions & 5 deletions scripts/update-readme.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ function detectCategoryFromContent(name: string, description: string): string {
if (/^(vid-|graphic-|blog-cover-image)/.test(n)) return 'Visual & Media';
if (/^(email-newsletter|cook-the-blog|noise2blog|human-tone|linkedin-post|tweet-thread|noise-to-linkedin|newsletter)/.test(n)) return 'Content';
if (/^(producthunt|show-hn|oss-launch|brand-alchemy|product-update-logger)/.test(n)) return 'Launch';
if (/^(hackernews|reddit-icp|reddit-post|npm-downloads|yc-intent|twitter-gtm|sdk-adoption|gh-issue|map-your-market|competitor-pr|google-trends|meta-ads|meta-tribe)/.test(n)) return 'GTM Intelligence';
if (/^(hackernews|reddit-icp|reddit-post|npm-downloads|yc-intent|twitter-gtm|sdk-adoption|gh-issue|map-your-market|competitor-pr|google-trends|meta-ads|meta-tribe|company-radar)/.test(n)) return 'GTM Intelligence';
if (/^(outreach-sequence|cold-email)/.test(n)) return 'Outreach';
if (/^(pricing-|position-me|meeting-brief|linkedin-job-post|where-your-customer|vc-)/.test(n)) return 'Research';
if (/^(kill-the-standup|dependency-update|docs-from-code|pr-description|explain-this-pr|claude-md|llms-txt|schema-markup)/.test(n)) return 'Developer Tools';
Expand Down Expand Up @@ -251,21 +251,29 @@ function updateReadme() {

// Sync all hardcoded skill counts
updatedContent = updatedContent.replace(
/\d+\+pre-built\+AI\+Agent\+Skills/,
/\d+\+pre-built\+AI\+Agent\+Skills/g,
`${skills.length}+pre-built+AI+Agent+Skills`
);
updatedContent = updatedContent.replace(
/\/badge\/skills-\d+-blue/,
/\/badge\/skills-\d+-blue/g,
`/badge/skills-${skills.length}-blue`
);
updatedContent = updatedContent.replace(
/Explore our growing library of \d+ specialized skills/,
/Explore our growing library of \d+ specialized skills/g,
`Explore our growing library of ${skills.length} specialized skills`
);
updatedContent = updatedContent.replace(
/\d+ skills across GTM/,
/\d+ skills across GTM/g,
`${skills.length} skills across GTM`
);
updatedContent = updatedContent.replace(
/lines=\d+\+Agent\+Skills/g,
`lines=${skills.length}+Agent+Skills`
);
updatedContent = updatedContent.replace(
/\d+ specialized skills across GTM/g,
`${skills.length} specialized skills across GTM`
);

fs.writeFileSync(README_PATH, updatedContent, 'utf-8');

Expand Down
162 changes: 162 additions & 0 deletions skills/company-radar/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
# Company Radar

Competitive intelligence orchestrator for opendirectory. Takes company names, researches them across 8+ platforms in parallel, computes a 0-100 heat score, and outputs structured radar reports with AI briefings.

---

## Install

```bash
npx "@opendirectory.dev/skills" install company-radar --target claude
```

### Video Tutorial
Watch this quick video to see how it's done:

https://github.com/user-attachments/assets/ee98a1b5-ebc4-452f-bbfb-c434f2935067

### Step 1: Download the skill from GitHub
1. Copy the URL of this specific skill folder from your browser's address bar.
2. Go to [download-directory.github.io](https://download-directory.github.io/).
3. Paste the URL and click **Enter** to download.

### Step 2: Install the Skill in Claude
1. Open your **Claude desktop app**.
2. Go to the sidebar on the left side and click on the **Customize** section.
3. Click on the **Skills** tab, then click on the **+** (plus) icon button to create a new skill.
4. Choose the option to **Upload a skill**, and drag and drop the `.zip` file (or you can extract it and drop the folder, both work).

> **Note:** For some skills (like `position-me`), the `SKILL.md` file might be located inside a subfolder. Always make sure you are uploading the specific folder that contains the `SKILL.md` file!


## What It Does

Given a list of companies to track, Company Radar:

1. **Builds a profile** for each company (domain, social handles, founders, YC batch)
2. **Scans 8 channels in parallel** — GitHub, Twitter/X, Reddit, Hacker News, Product Hunt, YC Jobs, Web/Press, Pricing
3. **Computes a heat score** (0-100) across 4 dimensions: Authority, Shipping, Social, Growth
4. **Generates an AI executive briefing** per company and a landscape-level summary
5. **Outputs a structured radar report** with leaderboard, deep dives, and alerts

---

## Files

| File | Purpose |
|---|---|
| `SKILL.md` | Main orchestration skill — entry point for the AI agent |
| `README.md` | Install and usage docs |
| `scripts/heat-score-calc.mjs` | Standalone heat score engine — run on collected signal data |
| `references/heat-score-methodology.md` | Full scoring formulas and examples |
| `references/radar-report-template.md` | Report output structure |
| `references/company-profile-format.md` | Company data schema |
| `references/skill-integration-map.md` | How to call each opendirectory skill for channel data |

---

## Prerequisites

- **opencode** with the opendirectory skill set installed
- The following skills available in your opendirectory config:
- `reddit-icp-monitor` (optional; falls back to Tavily)
- `twitter-GTM-find-skill` (optional; falls back to Tavily)
- `hackernews-intel` (optional; falls back to HN Algolia)
- `yc-jobs-scraper` (required for YC job signals)
- `producthunt-launch-kit` (optional; falls back to Tavily)
- `competitor-pr-finder` (optional)
- `map-your-market` (optional, for landscape analysis)
- **Tavily API key** (for web search fallbacks)
- **GitHub CLI** (`gh`) installed and authenticated (for GitHub signal collection)

---

## Usage

### Basic Radar Run

```text
/company-radar

Companies to track: Vercel, Netlify, Railway
```

The skill walks through all steps: Parse input → Build profiles → Collect signals (parallel) → Heat score via `scripts/heat-score-calc.mjs` → Generate briefing → Assemble report

### Using the Heat Score Script Directly

After collecting signal data, you can run the scorer standalone:

```bash
# From the skill directory
node scripts/heat-score-calc.mjs --file signals.json

# Or pipe raw JSON
cat signals.json | node scripts/heat-score-calc.mjs
```

Input is a JSON file with `companies[]` containing signal data. Output is scored JSON with per-dimension breakdowns and auto-generated alerts.

### Quick Heat Score Only

```text
/company-radar

Companies to track: Supabase
Mode: heat-score-only
Comment thread
farizanjum marked this conversation as resolved.
```

Returns just the heat score with minimal context -- no full report.

### Recurring Radar

```text
/company-radar

Companies: Vercel, Netlify, Railway, Supabase
Schedule: daily
```

Runs the radar and compares scores with the previous run to show deltas.

---

## Output

The skill produces a single structured markdown report containing:

- **Executive Summary** -- landscape-level synthesis, ranked companies, key alerts
- **Heat Score Leaderboard** -- table of all tracked companies sorted by score
- **Per-Company Deep Dives** -- full signal detail per channel, heat score breakdown, AI executive briefing
- **Alerts Summary** -- notable signals grouped by severity
- **Data Quality Notes** -- which channels returned data per company

---

## Heat Score Dimensions

| Dimension | Max | Measures |
|---|---|---|
| Authority | 25 | GitHub stars/forks, Product Hunt validation |
| Shipping | 25 | Commit velocity, release frequency, recency |
| Social | 25 | Twitter, Reddit, HN, YouTube activity |
| Growth | 25 | Hiring volume, sentiment, traction indicators |

Total: **0-100**

Activity levels: **High** (60+), **Medium** (30-59), **Low** (1-29), **Dormant** (0)

---

## Customization

### Add a New Channel

1. Add the signal formulas to `references/heat-score-methodology.md`
2. Add the skill mapping to `references/skill-integration-map.md`
3. Add the data fields to the report template in `references/radar-report-template.md`
4. Update the orchestration flow in `SKILL.md` Step 4

### Adjust Scoring Weights

Edit the formula tables in `SKILL.md` Steps 5-8 and `references/heat-score-methodology.md`. Each dimension caps at 25 points max.
Loading
Loading