From bf3fd69d2c93f699b6e1799951440f0f063cde6b Mon Sep 17 00:00:00 2001 From: Affaan Mustafa Date: Thu, 2 Apr 2026 02:51:24 -0700 Subject: [PATCH] refactor: extract social graph ranking core --- AGENTS.md | 4 +- README.md | 6 +- README.zh-CN.md | 2 +- WORKING-CONTEXT.md | 1 + docs/zh-CN/AGENTS.md | 4 +- docs/zh-CN/README.md | 6 +- manifests/install-modules.json | 1 + skills/connections-optimizer/SKILL.md | 2 + skills/lead-intelligence/SKILL.md | 46 ++------ skills/social-graph-ranker/SKILL.md | 154 ++++++++++++++++++++++++++ 10 files changed, 180 insertions(+), 46 deletions(-) create mode 100644 skills/social-graph-ranker/SKILL.md diff --git a/AGENTS.md b/AGENTS.md index 9f8dcbb9..51993f66 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,6 +1,6 @@ # Everything Claude Code (ECC) — Agent Instructions -This is a **production-ready AI coding plugin** providing 36 specialized agents, 150 skills, 68 commands, and automated hook workflows for software development. +This is a **production-ready AI coding plugin** providing 36 specialized agents, 151 skills, 68 commands, and automated hook workflows for software development. **Version:** 1.9.0 @@ -146,7 +146,7 @@ Troubleshoot failures: check test isolation → verify mocks → fix implementat ``` agents/ — 36 specialized subagents -skills/ — 150 workflow skills and domain knowledge +skills/ — 151 workflow skills and domain knowledge commands/ — 68 slash commands hooks/ — Trigger-based automations rules/ — Always-follow guidelines (common + per-language) diff --git a/README.md b/README.md index 31a742a5..fdddf3f9 100644 --- a/README.md +++ b/README.md @@ -225,7 +225,7 @@ For manual install instructions see the README in the `rules/` folder. When copy /plugin list everything-claude-code@everything-claude-code ``` -**That's it!** You now have access to 36 agents, 150 skills, and 68 legacy command shims. +**That's it!** You now have access to 36 agents, 151 skills, and 68 legacy command shims. ### Multi-model commands require additional setup @@ -1120,7 +1120,7 @@ The configuration is automatically detected from `.opencode/opencode.json`. |---------|-------------|----------|--------| | Agents | PASS: 36 agents | PASS: 12 agents | **Claude Code leads** | | Commands | PASS: 68 commands | PASS: 31 commands | **Claude Code leads** | -| Skills | PASS: 150 skills | PASS: 37 skills | **Claude Code leads** | +| Skills | PASS: 151 skills | PASS: 37 skills | **Claude Code leads** | | Hooks | PASS: 8 event types | PASS: 11 events | **OpenCode has more!** | | Rules | PASS: 29 rules | PASS: 13 instructions | **Claude Code leads** | | MCP Servers | PASS: 14 servers | PASS: Full | **Full parity** | @@ -1229,7 +1229,7 @@ ECC is the **first plugin to maximize every major AI coding tool**. Here's how e |---------|------------|------------|-----------|----------| | **Agents** | 36 | Shared (AGENTS.md) | Shared (AGENTS.md) | 12 | | **Commands** | 68 | Shared | Instruction-based | 31 | -| **Skills** | 150 | Shared | 10 (native format) | 37 | +| **Skills** | 151 | Shared | 10 (native format) | 37 | | **Hook Events** | 8 types | 15 types | None yet | 11 types | | **Hook Scripts** | 20+ scripts | 16 scripts (DRY adapter) | N/A | Plugin hooks | | **Rules** | 34 (common + lang) | 34 (YAML frontmatter) | Instruction-based | 13 instructions | diff --git a/README.zh-CN.md b/README.zh-CN.md index 5e652b44..39bda158 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -106,7 +106,7 @@ cp -r everything-claude-code/rules/perl ~/.claude/rules/ /plugin list everything-claude-code@everything-claude-code ``` -**完成!** 你现在可以使用 36 个代理、150 个技能和 68 个命令。 +**完成!** 你现在可以使用 36 个代理、151 个技能和 68 个命令。 ### multi-* 命令需要额外配置 diff --git a/WORKING-CONTEXT.md b/WORKING-CONTEXT.md index f3de5a9a..7fb24edc 100644 --- a/WORKING-CONTEXT.md +++ b/WORKING-CONTEXT.md @@ -110,3 +110,4 @@ Keep this file detailed for only the current sprint, blockers, and next actions. - 2026-04-01: Added `brand-voice` as the canonical source-derived writing-style system and wired the content lane to treat it as the shared voice source of truth instead of duplicating partial style heuristics across skills. - 2026-04-01: Added `connections-optimizer` as the review-first social-graph reorganization workflow for X and LinkedIn, with explicit pruning modes, browser fallback expectations, and Apple Mail drafting guidance. - 2026-04-01: Added `manim-video` as the reusable technical explainer lane and seeded it with a starter network-graph scene so launch and systems animations do not depend on one-off scratch scripts. +- 2026-04-02: Re-extracted `social-graph-ranker` as a standalone primitive because the weighted bridge-decay model is reusable outside the full lead workflow. `lead-intelligence` now points to it for canonical graph ranking instead of carrying the full algorithm explanation inline, while `connections-optimizer` stays the broader operator layer for pruning, adds, and outbound review packs. diff --git a/docs/zh-CN/AGENTS.md b/docs/zh-CN/AGENTS.md index 1b7ea182..7ad9e991 100644 --- a/docs/zh-CN/AGENTS.md +++ b/docs/zh-CN/AGENTS.md @@ -1,6 +1,6 @@ # Everything Claude Code (ECC) — 智能体指令 -这是一个**生产就绪的 AI 编码插件**,提供 36 个专业代理、150 项技能、68 条命令以及自动化钩子工作流,用于软件开发。 +这是一个**生产就绪的 AI 编码插件**,提供 36 个专业代理、151 项技能、68 条命令以及自动化钩子工作流,用于软件开发。 **版本:** 1.9.0 @@ -147,7 +147,7 @@ ``` agents/ — 36 个专业子代理 -skills/ — 150 个工作流技能和领域知识 +skills/ — 151 个工作流技能和领域知识 commands/ — 68 个斜杠命令 hooks/ — 基于触发的自动化 rules/ — 始终遵循的指导方针(通用 + 每种语言) diff --git a/docs/zh-CN/README.md b/docs/zh-CN/README.md index aa1f5b64..6c82da88 100644 --- a/docs/zh-CN/README.md +++ b/docs/zh-CN/README.md @@ -209,7 +209,7 @@ npx ecc-install typescript /plugin list everything-claude-code@everything-claude-code ``` -**搞定!** 你现在可以使用 36 个智能体、150 项技能和 68 个命令了。 +**搞定!** 你现在可以使用 36 个智能体、151 项技能和 68 个命令了。 *** @@ -1096,7 +1096,7 @@ opencode |---------|-------------|----------|--------| | 智能体 | PASS: 36 个 | PASS: 12 个 | **Claude Code 领先** | | 命令 | PASS: 68 个 | PASS: 31 个 | **Claude Code 领先** | -| 技能 | PASS: 150 项 | PASS: 37 项 | **Claude Code 领先** | +| 技能 | PASS: 151 项 | PASS: 37 项 | **Claude Code 领先** | | 钩子 | PASS: 8 种事件类型 | PASS: 11 种事件 | **OpenCode 更多!** | | 规则 | PASS: 29 条 | PASS: 13 条指令 | **Claude Code 领先** | | MCP 服务器 | PASS: 14 个 | PASS: 完整 | **完全对等** | @@ -1208,7 +1208,7 @@ ECC 是**第一个最大化利用每个主要 AI 编码工具的插件**。以 |---------|------------|------------|-----------|----------| | **智能体** | 36 | 共享 (AGENTS.md) | 共享 (AGENTS.md) | 12 | | **命令** | 68 | 共享 | 基于指令 | 31 | -| **技能** | 150 | 共享 | 10 (原生格式) | 37 | +| **技能** | 151 | 共享 | 10 (原生格式) | 37 | | **钩子事件** | 8 种类型 | 15 种类型 | 暂无 | 11 种类型 | | **钩子脚本** | 20+ 个脚本 | 16 个脚本 (DRY 适配器) | N/A | 插件钩子 | | **规则** | 34 (通用 + 语言) | 34 (YAML 前页) | 基于指令 | 13 条指令 | diff --git a/manifests/install-modules.json b/manifests/install-modules.json index c51cc64d..4c661f45 100644 --- a/manifests/install-modules.json +++ b/manifests/install-modules.json @@ -287,6 +287,7 @@ "skills/investor-materials", "skills/investor-outreach", "skills/lead-intelligence", + "skills/social-graph-ranker", "skills/market-research" ], "targets": [ diff --git a/skills/connections-optimizer/SKILL.md b/skills/connections-optimizer/SKILL.md index b4e0668c..243dc225 100644 --- a/skills/connections-optimizer/SKILL.md +++ b/skills/connections-optimizer/SKILL.md @@ -42,6 +42,7 @@ If the user does not specify a mode, use `default`. - `x-api` for X graph inspection and recent activity - `lead-intelligence` for target discovery and warm-path ranking +- `social-graph-ranker` when the user wants bridge value scored independently of the broader lead workflow - Exa / deep research for person and company enrichment - `brand-voice` before drafting outbound @@ -182,6 +183,7 @@ Drafts ## Related Skills - `brand-voice` for the reusable voice profile +- `social-graph-ranker` for the standalone bridge-scoring and warm-path math - `lead-intelligence` for weighted target and warm-path discovery - `x-api` for X graph access, drafting, and optional apply flows - `content-engine` when the user also wants public launch content around network moves diff --git a/skills/lead-intelligence/SKILL.md b/skills/lead-intelligence/SKILL.md index 20e9bb56..d9cab069 100644 --- a/skills/lead-intelligence/SKILL.md +++ b/skills/lead-intelligence/SKILL.md @@ -89,11 +89,12 @@ x_search = search_recent_tweets( For each scored target, analyze the user's social graph to find the warmest path. -### Algorithm +### Ranking Model 1. Pull user's X following list and LinkedIn connections 2. For each high-signal target, check for shared connections -3. Rank mutuals by: +3. Apply the `social-graph-ranker` model to score bridge value +4. Rank mutuals by: | Factor | Weight | |--------|--------| @@ -103,47 +104,20 @@ For each scored target, analyze the user's social graph to find the warmest path | Industry alignment | 15% — same vertical = natural intro | | Mutual's X handle / LinkedIn | 10% — identifiability for outreach | -### Weighted Bridge Ranking +Canonical rule: -Treat this as the canonical network-ranking stage for lead intelligence. Do not run a separate graph skill when this stage is enough. +```text +Use social-graph-ranker when the user wants the graph math itself, +the bridge ranking as a standalone report, or explicit decay-model tuning. +``` -Given: -- `T` = target leads -- `M` = your mutuals / existing connections -- `d(m, t)` = shortest hop distance from mutual `m` to target `t` -- `w(t)` = target weight from signal scoring - -Compute the base bridge score for each mutual: +Inside this skill, use the same weighted bridge model: ```text B(m) = Σ_{t ∈ T} w(t) · λ^(d(m,t) - 1) -``` - -Where: -- `λ` is the decay factor, usually `0.5` -- a direct connection contributes full value -- each extra hop halves the contribution - -For second-order reach, expand one level into the mutual's own network: - -```text -B_ext(m) = B(m) + α · Σ_{m' ∈ N(m) \\ M} Σ_{t ∈ T} w(t) · λ^(d(m',t)) -``` - -Where: -- `N(m) \\ M` is the set of people the mutual knows that you do not -- `α` is the second-order discount, usually `0.3` - -Then rank by response-adjusted bridge value: - -```text R(m) = B_ext(m) · (1 + β · engagement(m)) ``` -Where: -- `engagement(m)` is a normalized responsiveness score -- `β` is the engagement bonus, usually `0.2` - Interpretation: - Tier 1: high `R(m)` and direct bridge paths -> warm intro asks - Tier 2: medium `R(m)` and one-hop bridge paths -> conditional intro asks @@ -152,6 +126,8 @@ Interpretation: ### Output Format ``` + +If the user explicitly wants the ranking engine broken out, the math visualized, or the network scored outside the full lead workflow, run `social-graph-ranker` as a standalone pass first and feed the result back into this pipeline. MUTUAL RANKING REPORT ===================== diff --git a/skills/social-graph-ranker/SKILL.md b/skills/social-graph-ranker/SKILL.md new file mode 100644 index 00000000..ca82b498 --- /dev/null +++ b/skills/social-graph-ranker/SKILL.md @@ -0,0 +1,154 @@ +--- +name: social-graph-ranker +description: Weighted social-graph ranking for warm intro discovery, bridge scoring, and network gap analysis across X and LinkedIn. Use when the user wants the reusable graph-ranking engine itself, not the broader outreach or network-maintenance workflow layered on top of it. +origin: ECC +--- + +# Social Graph Ranker + +Canonical weighted graph-ranking layer for network-aware outreach. + +Use this when the user needs to: + +- rank existing mutuals or connections by intro value +- map warm paths to a target list +- measure bridge value across first- and second-order connections +- decide which targets deserve warm intros versus direct cold outreach +- understand the graph math independently from `lead-intelligence` or `connections-optimizer` + +## When To Use This Standalone + +Choose this skill when the user primarily wants the ranking engine: + +- "who in my network is best positioned to introduce me?" +- "rank my mutuals by who can get me to these people" +- "map my graph against this ICP" +- "show me the bridge math" + +Do not use this by itself when the user really wants: + +- full lead generation and outbound sequencing -> use `lead-intelligence` +- pruning, rebalancing, and growing the network -> use `connections-optimizer` + +## Inputs + +Collect or infer: + +- target people, companies, or ICP definition +- the user's current graph on X, LinkedIn, or both +- weighting priorities such as role, industry, geography, and responsiveness +- traversal depth and decay tolerance + +## Core Model + +Given: + +- `T` = weighted target set +- `M` = your current mutuals / direct connections +- `d(m, t)` = shortest hop distance from mutual `m` to target `t` +- `w(t)` = target weight from signal scoring + +Base bridge score: + +```text +B(m) = Σ_{t ∈ T} w(t) · λ^(d(m,t) - 1) +``` + +Where: + +- `λ` is the decay factor, usually `0.5` +- a direct path contributes full value +- each extra hop halves the contribution + +Second-order expansion: + +```text +B_ext(m) = B(m) + α · Σ_{m' ∈ N(m) \\ M} Σ_{t ∈ T} w(t) · λ^(d(m',t)) +``` + +Where: + +- `N(m) \\ M` is the set of people the mutual knows that you do not +- `α` discounts second-order reach, usually `0.3` + +Response-adjusted final ranking: + +```text +R(m) = B_ext(m) · (1 + β · engagement(m)) +``` + +Where: + +- `engagement(m)` is normalized responsiveness or relationship strength +- `β` is the engagement bonus, usually `0.2` + +Interpretation: + +- Tier 1: high `R(m)` and direct bridge paths -> warm intro asks +- Tier 2: medium `R(m)` and one-hop bridge paths -> conditional intro asks +- Tier 3: low `R(m)` or no viable bridge -> direct outreach or follow-gap fill + +## Scoring Signals + +Weight targets before graph traversal with whatever matters for the current priority set: + +- role or title alignment +- company or industry fit +- current activity and recency +- geographic relevance +- influence or reach +- likelihood of response + +Weight mutuals after traversal with: + +- number of weighted paths into the target set +- directness of those paths +- responsiveness or prior interaction history +- contextual fit for making the intro + +## Workflow + +1. Build the weighted target set. +2. Pull the user's graph from X, LinkedIn, or both. +3. Compute direct bridge scores. +4. Expand second-order candidates for the highest-value mutuals. +5. Rank by `R(m)`. +6. Return: + - best warm intro asks + - conditional bridge paths + - graph gaps where no warm path exists + +## Output Shape + +```text +SOCIAL GRAPH RANKING +==================== + +Priority Set: +Platforms: +Decay Model: + +Top Bridges +- mutual / connection + base_score: + extended_score: + best_targets: + path_summary: + recommended_action: + +Conditional Paths +- mutual / connection + reason: + extra hop cost: + +No Warm Path +- target + recommendation: direct outreach / fill graph gap +``` + +## Related Skills + +- `lead-intelligence` uses this ranking model inside the broader target-discovery and outreach pipeline +- `connections-optimizer` uses the same bridge logic when deciding who to keep, prune, or add +- `brand-voice` should run before drafting any intro request or direct outreach +- `x-api` provides X graph access and optional execution paths