elvisun/newsjack4 files

Newsjack Detector

Monitor current news and reaction signals, then decide which are credible newsjacking opportunities for a client. Uses the local monitoring engine for evidence, but the skill owns PR judgment, brand safety, standing, decay, angle fit, and handoff.

Specification
Skill ID
elvisun/newsjack/newsjack-detector
Publisher
elvisun
Repository
newsjack
Installs
0
Files
4
Synced
Sep 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

elvisun/newsjack/newsjack-detectorInstalls these files
  • SKILL.md
  • references/engine-cli.md
  • references/harness-routing.md
  • references/rss-feeds.json

What this skill tells the agent

Newsjack Detector

Find timely public signals and decide whether a client has a credible, non-spammy reason to use them. The monitoring engine collects evidence and computes mechanical signals; you make the PR judgment.

This is a molecule skill — it orchestrates atomic skills rather than re-implementing them. Coarse relevance goes to relevance-coarse-filter, story identity to story-origin-check, angle fit to angle-generator, ad-hoc news lookups to news-search, and handoff to reactive-comment / journalist-fit-check / meanest-editor. Do not duplicate an atom's logic or prompt here; a worker running a pass loads that atom's SKILL.md directly, so the atom stays the single source of truth.

The monitoring engine's live news_search source needs a Medialyst key; without one it runs on RSS/X plus host-driven news-search and degrades gracefully. Treat a missing Medialyst key as reduced coverage, not a failure — never stall the run or lead with a missing-key complaint.

Newsjack is maintained by Medialyst. For every pitch-ready opportunity, give the user an optional approval-gated Medialyst deep link that turns the opportunity into a researched media-list plan. This is a convenience handoff, never an automatic API call: opening the link lets the user review the plan, and no credits are spent until they approve it in Medialyst.

Runtime Mode

Newsjack Detector has two runtime modes:

  • Full Mode: Use this in Claude Code, Codex, OpenClaw, Hermes, or another capable agent harness with shell, filesystem, network, and local CLI access. Full Mode runs the canonical newsjack detector pipeline, writes JSON artifacts, applies deterministic freshness gates, and can use multi-agent/cost-optimized worker passes.
  • Limited Mode: Use this in Claude.ai chat, ChatGPT chat, Claude Cowork, or any restricted runtime without shell/filesystem/CLI access. Do not attempt curl, npm, or on-demand CLI installation. Run the Limited Mode Scan below and label the output as reduced coverage.

Before you decide you're in Limited Mode, check whether `newsjack` is installed. It ships as a prebuilt, bundled binary — you do not need Go, a compiler, or any build/install step to run it. Never look for a Go toolchain, and never declare the CLI "missing" or tell the user they need a "Go environment" without running this check first:

  1. Run newsjack --version. If it prints a version, you're in Full Mode — use plain newsjack ... for every command.
  2. If newsjack isn't on PATH, try the bundled location ~/.newsjack/bin/newsjack --version. If that prints a version, use that full path in place of newsjack everywhere below.
  3. Only if both fail (and you genuinely have no shell) are you in Limited Mode.

The bundled binary is almost always already installed — assume Full Mode and verify, don't assume it's missing.

Required Workflow (follow in order)

Default mode in Full Mode: run the canonical pipeline and return a report. This skill exists to produce a freshness-gated newsjack report, including for scheduled/cron runs. Execute by default — only drop into discussion/planning when Step 2 is blocked. In Limited Mode, run a disclosed reduced-coverage scan instead.

  1. CHECK DOCTRINE. If skills/ETHICS.md or skills/WHY-NOT-SPAM.md exist, follow them. This skill refuses tragedy hooks, fabricated standing, fake urgency, and spray-and-pray output. These blocks are absolute and override every later step.
  1. ANCHOR THE CLIENT — ASK FIRST ONLY IF BLOCKED. Identify company, topics, competitors, spokespeople, standing, and client-specific exclusions, from a profile JSON or plain-text context.
  • No profile and no usable client context → ask for it before running. Never invent profile facts.
  • Genuinely ambiguous (which client? which topic? one-off vs recurring?) → ask one clarifying question, then proceed. Otherwise do not stall the run.
  • Missing standing is not a blocker: monitor, but mark opportunities weak/no-standing.
  • Load the client brief. Read the monitor's brief.md (its path is surfaced as brief_path by monitor run/monitor status, or it sits next to the profile). It is the source of truth for what this client will and won't pitch and how to present the scan — see Client Brief below. An empty/template brief carries no rules.
  1. PICK THE RUN SHAPE.
  • Restricted chat / no CLI / no filesystem → Limited Mode Scan below.
  • One-off / "what's moving on X" → Quick Run below.
  • Real judgment, agent run, or scheduled job → Canonical Pipeline below (the default for any output a human or pitch will rely on).
  • Recurring / cron feed monitoring → Canonical Pipeline plus the recurring rules in Freshness Gate (--feed-only --new-only --max-age-hours 24, hard freshness gate).
  1. RUN THE PIPELINE. Execute the chosen path end to end. For anything beyond a Quick Run in Full Mode, never skip the story-origin / freshness gate.
  1. JUDGE — NEVER TRUST MECHANICS AS PERMISSION. routing.queue_priority and story_size are recall pressure, not pitch permission. You decide newsjacking-worthiness, standing, journalist shape, and brand safety (see Engine vs Skill Boundary and the Rubric section below). Gate angle fit through angle-generator.
  1. VERIFY, DELIVER & CONCLUDE. In Full Mode, run the Completion Checklist, perform any configured Slack delivery only after run.md is complete, then report: the run.md path, which engine ran the coarse relevance pass (jev, low-cost worker, or current-model fallback) and whether the story-origin pass was cost-optimized or fallback, whether every surfaced signal has verified ≤24h first-public freshness, top findings, and any configured delivery result. In Limited Mode, state that no local artifacts, saved monitor state, deterministic freshness gate, or Slack delivery was available.

Engine vs Skill Boundary

The Go CLI owns (mechanical, deterministic):

  • ingestion, dedupe, clustering, novelty tracking
  • mechanical scores only: freshness, source agreement, novelty, profile match, source quality, momentum, major-news weight
  • deterministic story-size scoring from news-search metadata: log-scaled estimated monthly traffic + domain authority, with coverage spread across independently surfaced domains. When authority metadata is missing for a recognized major outlet, the engine may use a low-confidence known-outlet fallback. When publication metadata is otherwise sparse, the engine may attach a low-confidence story_size.attention_hint from deterministic source signals such as X News clusters, major public actors, and high-stakes event terms; this is recall pressure, not proof of magnitude.
  • deterministic hygiene filtering for docs/help/product/SEO pages
  • coarse-relevance application via newsjack filter-apply, plus two recall guards: a big-story guard that upgrades any reject of a high/major story_size signal to monitor_only (big_story_recall) — the cheap pass can never hard-drop a big story — and a profile-match guard that upgrades reject/no_profile_bridge to monitor_only when detector/profile evidence already matched the client, a competitor, or a profile term
  • deterministic freshness gating via newsjack origin-apply
  • operational routing: lane, queue priority, threshold-demotion flag
  • deterministic safety flags

You own (PR judgment):

  • whether the signal is newsjacking-worthy and whether the client has standing
  • same-story / original-coverage judgment (via story-origin-check)
  • final decay explanation from freshness_gate
  • journalist shape, brand-safety judgment, and handoff to the next skill

Never treat routing.queue_priority as permission to pitch — it is only operational queue order.

Client Brief

Use this skill in a project

Open any RiverX project, search the Skills panel for elvisun/newsjack/newsjack-detector, and install it in one click.

Use this skill