npx skills add ...
npx skills add samber/developer-relations-skills --skill devrel-radar
Builds a personalised, time-budgeted watch list of developer-relations information sources - DevRel podcasts, newsletters, practice hubs, peer communities, conference calendars, ecosystem data reports and practitioners worth following - plus the routine that keeps it verified and fresh. Use whenever a developer advocate, community manager, DevRel lead or OSS maintainer asks for a DevRel radar, how to stay current on developer relations, which DevRel podcasts, newsletters or Slack communities deserve their time, which developer conferences to attend or speak at, who to follow in DevRel, or to refresh a radar built earlier - even if they only say they feel out of the loop. Not for tracking a rival vendor - use samber/developer-relations-skills@devrel-competitor-analysis.
npx skills add samber/developer-relations-skills --skill devrel-radar
You are a curator of the developer-relations information ecosystem. Your deliverable is a personalised watch list that fits the user's weekly time budget, plus the routine that keeps it alive.
Design against two failures:
references/sources.md records the rest of that audit.A source can publish weekly and still no longer be the thing the user remembers.
None of these methods is native to DevRel - they come from education theory, curation practice, digital literacy and library science. Name them only if the user asks why the list is short or personal; the substance matters more than the labels.
Ask these one at a time. Wait for each answer before the next. Offer the options as written.
Memory: Store a few info about the current task or project context. When memory lives in a file, use devrel-context.md; if a different memory system is in use, rely on that instead. Separate task info in different sections. Remove finished tasks. Add a date to a task; no date for general project context. Some interview responses may differ between 2 tasks.
2. "Which pillars do you actually own? Name all that apply." - advocacy (speaking, content, feedback loop), developer marketing (reach, technical SEO, launches), enablement (docs, SDKs, quickstarts, support), community (platforms, champions, contributors). This answer anchors the coverage requirement below.
3. "How much time per week can you realistically spend staying current?" - (a) under 30 min, (b) 30-60 min, (c) 60-120 min, (d) 2+ hours.
4. "Are you catching up before a specific moment - a first DevRel role, a new ecosystem, a launch, a conference season - or building a standing weekly habit?" - (a) catching up, (b) standing habit.
5. "Which mediums do you actually consume? Pick up to two." - (a) audio, (b) text, (c) video, (d) live community.
6. "Which of those are ruled out entirely - no commute or gym time for audio, a paywall you won't pay, a community or conference you can't expense or can't join?"
7. "Which developer ecosystem are you in?" - e.g. cloud-native/Kubernetes, AI/LLM tooling, web/frontend, data, security, embedded. Ecosystem sources sit next to practice sources, never instead of them.
8. "Who buys and who adopts?" - (a) B2B devtool, bottom-up adoption, (b) B2B enterprise platform, top-down deals, (c) consumer, indie, or education-facing developer product. See B2B and B2C scope.
9. "Do you need to speak, sponsor or organise events this year?" - (a) no, (b) submitting talks, (c) sponsoring or hosting. A yes turns the event calendar from optional to core.
Questions 3, 4, 6 and 9 exist because DevRel's source types diverge sharply on attention cost, on how fast they pay back, and on what they buy - the ordering in step 7 of the workflow cannot be picked for the user without them. Ask them here, in the interview, never beside the ranking. Don't ask for a delivery date: a radar has no deliverable, and question 4 already carries what a deadline would have told you.
Carry at least one verified-active source per pillar the user owns, and none for pillars they don't. A community-heavy list handed to a docs owner is a failed deliverable, not a partial one.
Map candidates with the Pillar column in references/sources.md. Where a pillar has no strong practice source, fill it from the field's evergreen references (a docs framework, a maintainer guide) and say plainly that it's a reference work, not a feed.
Add the data family for any user who has to justify budget or headcount: annual ecosystem surveys and open community-health metrics are how DevRel argues impact upward, which makes them a first-class source category here rather than background reading.
Most of the field's sources are B2B devtool sources - that is where the money and the podcasts are. Say so rather than implying neutrality.
references/sources.md covers the B2B population densely and this one thinly, so tell the user that gap exists instead of padding the list.Attach a "what they're selling" flag to every entry: agency, tool vendor, course or community, conference, platform-official, foundation, or independent media. Disclose the incentive; never filter conflicted sources out - that would empty the list, since almost every strong DevRel voice runs an agency, a startup or a paid community.
One exception exists: the Developer Relations Foundation (dev-rel.org, hosted by the Linux Foundation) is the field's only vendor-neutral practice body. Give a user who distrusts vendor content that entry first, and say why it is the exception.
Video platforms return a consent redirect to any automated check - every channel fetched in this skill's audit did - so a channel cannot be verified the way a feed can. When the user picked video: recommend a fetchable conference-talk archive instead, or name a channel only when a companion surface (the creator's own site, a conference programme) corroborates it, labelled "channel itself unobserved". Never fill the gap with a plausible channel name.
Load references/sources.md and references/people-to-follow.md. Note the snapshot date in each header - if it is more than ~6 months old (a self-set threshold, like the freshness windows below), tell the user the list needs re-verification before you rely on it.
Filter candidates by the interview answers: pillars, mediums, ecosystem, segment, event intent.
Delete, don't demote. Drop outright every source question 6 ruled out:
Name each deletion in the output (e.g. "dropped: paid practitioner community - no budget"). A ruled-out source parked at the bottom of a list silently returns as scope at the next refresh.
This is not the bench: the bench holds verified sources the budget merely couldn't fit, and those stay.
Enforce pillar coverage, then check the balance: at least one source about the practice itself, not only about the user's technology. An ecosystem-only radar makes a strong engineer and a weak advocate.
Run the freshness and ownership check (below) on every surviving candidate. A source enters the list only after it passes, or the user accepts it as knowingly unverified.
Cost each candidate as an order of magnitude of attention, never a precise figure:
Halve any audio that rides on time already spent - commute, exercise - because that is not attention the user has to find.
Rank by efficiency: value returned per attention-minute, never by cheapness or audience size. State value as the outcome bought, never as an adjective. The axes disagree; read all three:
podcasts > community participation > video > newsletter == blog skim > annual data report - conferences sit off this line.community == conferences > podcasts > annual data report > newsletters == blogs > videoannual data report > newsletters == blogs > community skim > podcasts > videoWhy each rung lands where it does:
newsletters == blogs: a real tie on both axes - same skim cost, same good, what happened, in text quotable in a planning doc. Break it by pillar fit, never by which is better known.community == conferences: ties on value because they buy the identical good, a question answered against the user's own situation plus the discovery that renews the list - one continuous, one concentrated once a year.Within a medium: pillar fit > role fit > durability. A named individual behind the content, institutional backing, and cross-surface recurrence (the same person as podcast host, speaker and hub author) all outrank audience size. Never rank by follower or subscriber count - most of them are unobservable in this field anyway.
Name what this order starves. Long-form - podcasts, conference talks, conferences themselves, peer communities - sits top on value and at the bottom of the efficiency line, or off it entirely in the case of conferences, so a budget filled strictly top-down by ratio never buys any of it and the user ends up current on everything and understanding nothing. Long-form is where a practitioner's reasoning is visible: text mostly reports the conclusion, and DevRel's hardest calls - what to open-source, what to stop measuring, when a community is dying - are reasoning, not news.
Promote it anyway when any of these hold:
The reserved community slot in step 9 is the standing floor for this - a floor, not a reward for winning the ratio.
Fill the budget. Convert each kept candidate's magnitude to a minutes-per-week number only now, for this arithmetic, and spend down to ~90%. Reserve the last ~10% for one peer community - communities are where new sources surface, which is how the list renews itself.
Stop when the budget is spent even if strong sources remain, and name 2-3 of them as "bench" substitutes. When the budget is under ~60 min/week, add a budget compressor first: one daily developer-news site or weekly roundup that substitutes for following several vendor blogs individually.
The ordering in step 7 never depends on those minute figures - they exist only to stop the list overflowing, so a user who disputes a number should change it and keep the order. (The 90/10 split, the bench count and the compressor threshold are self-set; see Measurement.)
Re-rank against what you already know about this user, and say which fact moved which source:
The order is a default, not a law: it is calibrated for a time-poor practitioner who reads, and it shifts with the interview and with who executes it. A solo maintainer (Q1e) gets more per minute from ecosystem release notes and maintainer handbooks than from program-strategy newsletters, and a DevRel lead (Q1d) gets the reverse.
Add an event line only when question 9 was a yes: one CFP target and one attend-or-sponsor candidate, each with a confirmed date and a confirmed organiser.
Present the list section by section in the output shape below and ask the user to confirm or swap entries before finalising. If your harness has persistent memory, record the interview answers, the deletions from step 3, the final list and the verification dates so the refresh routine can diff against them.
Verify before recommending. A homepage's cadence claim is aspirational until a dated item confirms it. If you can browse or fetch the web, for each source:
The freshness windows above (~3 months active, ~6 months stale) are a self-set baseline, not an industry standard. Widen them for annual surveys and quarterly reports; tighten them for a daily news site.
If you cannot browse the web at all: deliver the list from references/sources.md with each entry's recorded status and date, and state clearly that you could not re-verify. Hand the user the manual check:
If your harness supports scheduled routines, install a quarterly refresh - quarterly is this skill's own default cadence, not a published standard. Otherwise tell the user to set a recurring reminder ("Refresh my DevRel radar - quarterly") and rerun this skill when it fires.
Deliver one watch-list artifact. Open its header with what this is not: a curated reading list verified on one date, not a monitoring service - nothing here alerts the user when a source dies; the refresh routine does, when they run it. Date-stamp the header with the role, pillars owned, ecosystem, time budget and verification date.
Group by consumption rhythm:
Per entry, include:
Order the entries inside each section by efficiency, highest ratio first, and say so in the header rather than leaving it implied by row order.
Close with totals:
See references/watch-list-example.md for a worked example and a negative example.
Offer, as an optional second artifact, the subscribable form of the same list: an OPML file of every feed-bearing entry, importable into any feed reader. A watch list the user has to re-type into a reader gets read once.
Invocation examples:
At delivery, the pass bar is:
At each quarterly refresh, additionally check that the user consumed at least two-thirds of the entries and that no listed source changed owner without the entry being updated. If any check fails, revise - re-verify, trim, or swap from the bench - and re-present until all pass.
These numeric baselines are all self-set, chosen because a list the user does not finish is a list they will abandon:
Move them if the user's own consumption data disagrees. Moving them never moves the ordering: the ranking is built on orders of magnitude, and the minutes only decide where the list stops.