From valency
Use when the user asks who a researcher should be talking to that they aren't already, wants to find new potential collaborators outside an existing network, asks 'who else is doing this work', 'who should X meet', 'who are the new faces in this field', or wants to expand a researcher's collaboration network beyond their current circle. Triggers on requests to find recent, relevant researchers who are NOT in an author's existing coauthor list. Also invokable as /valency:fresh-collaborators <author_name>.
How this skill is triggered — by the user, by Claude, or both
Slash command
/valency:fresh-collaboratorsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Find researchers doing recent (last 12–18 months), thematically relevant work who are **not** in the focal author's existing coauthor network. Useful for expanding a researcher's collaborator pool, suggesting first-author candidates for new projects, or surfacing people for an upcoming conference / visit.
Find researchers doing recent (last 12–18 months), thematically relevant work who are not in the focal author's existing coauthor network. Useful for expanding a researcher's collaborator pool, suggesting first-author candidates for new projects, or surfacing people for an upcoming conference / visit.
The user provides an author name (e.g., "David W. Hogg", "Karl Friston").
Optional: a number of months for the recency window. If not specified, default to 18 months.
Date discipline: Compute the cutoff date as today - <window_months>, formatted as YYYY-MM-DD. Use this cutoff string consistently in Step 5.
Call get_author_profile with:
author (string): the author nameIf no results are found, tell the user the author was not found. Stop here.
Note from this result:
resolved_nameCall find_coauthors with:
author (string): the resolved name from Step 1limit (integer): 100Build the exclusion set: a set of normalized names containing every coauthor_norm from this result, plus the focal author's resolved_name itself.
Note: 100 is the maximum the tool accepts and represents the focal author's strongest collaborators. People who have co-authored only one or two papers may still slip through as "fresh" — that is acceptable, since one-paper coauthors are weak ties and reconnecting with them is also useful.
Call search_by_author with:
author (string): the resolved namelimit (integer): 10sort_by (string): "relevance"strict_mode (string): "fuzzy"The default relevance sort orders by recency. These 10 papers represent the author's current intellectual direction.
From the Step 3 papers, identify 2 to 4 distinct themes that characterize the author's recent work. A theme is a short natural-language phrase (5–12 words) suitable as a semantic search query — not a category code.
Construct themes by reading the recent paper titles and abstracts. For each theme, you should be able to point to at least two of the recent papers as evidence. If the recent papers cluster tightly, 2 themes is fine; if they span disparate topics, use up to 4.
Examples of well-formed themes:
Bad themes (too narrow or too broad):
For each theme from Step 4, call semantic_search_papers with:
query (string): the theme phrasestart_date (string): the cutoff date computed in the Date discipline section, YYYY-MM-DDlimit (integer): 25sort_by (string): "relevance"include_abstract (boolean): falsePassing start_date restricts the server-side similarity search to papers published on or after the cutoff, so every result is recent by construction — no in-memory date filtering needed.
If a theme returns fewer than 5 papers, that theme is too narrow or the corpus is too sparse for the recency window. Note this in the output but do not stop.
For each surviving paper, inspect its authors list. Drop any paper for which any author in the list (after normalization — lowercase, strip extra whitespace) appears in the exclusion set built in Step 2.
This removes papers by the focal author themselves, by their direct collaborators, and by anyone in the top-100 coauthor network. What remains is, by construction, "fresh."
For each remaining paper, identify the first author as the primary "fresh face" candidate (other authors are noted but secondary). For each unique first author across all surviving papers:
Junior/senior heuristic. Without making additional tool calls, infer junior vs senior from signals available in the paper records: number of papers in the result set (1 = likely junior; many = likely established), position of the focal-author-adjacent name in the author list, and seniority cues from coauthors. Tag each candidate [junior], [senior], or [unclear].
Theme attribution. Tag each candidate with which theme(s) surfaced them. Candidates surfaced by multiple themes are stronger matches and should be ranked higher.
Deduplicate. If the same first author appears via multiple papers, merge into a single entry and list all surfacing papers.
A short block:
A ranked list of fresh-face candidates. Rank by: (a) number of distinct themes that surfaced them, then (b) similarity scores of their surfacing papers.
For each candidate:
[junior|senior|unclear]Show the top 10 candidates. If fewer than 10 survived, show all of them.
For each theme from Step 4, report the number of papers returned by the date-restricted search and the number that survived exclusion filtering. This helps the user see which themes are crowded (lots of fresh activity) vs sparse (no one is doing this).
/valency:profile <fresh_face_name> — for a deeper look at any candidate/valency:similar <surfacing_paper_id> — to find more work in that vein/valency:reading-list <focal_author> — for the what to read alongside the who to meetnpx claudepluginhub valency-oss/valency-claude-plugin --plugin valencyCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.